The Road to Early Access Part 5

The first batch of Steam keys for Kickstarter backers have been delivered. The Steam store page is looking more and more complete, many bugs and issues have been recently fixed. Some bugs – funnily enough – cropped up to the surface while I was working on new game play trailers. Fun times.

The Road to Early Access Part 4

Seeing the light at the end of the tunnel.

Early in the week I was battling some major burn out due to the 4 day weekend of binge coding the week before. There were a bunch of bugs and issues to sort out with the new changes to hangars and ships carrying objects that were worked on and solved. That felt good and the burn out went away as they were fixed. I then continued working on the early game. I tried to look at what’s missing, what’s lame and what doesn’t quite make sense from the world’s perspective.

For example – early in the game there is a pirate attack that for game play purposes mainly serves as a combat tutorial. But for the world building/setting purposes the pirates should have a reason for the attack. Otherwise their actions are strange and would toss the player out of the game world and instead think of the game’s designers as lazy or incompetent. So to give the world more sense I added some loot for them to steal and since I worked on transport ship AI, this was a great spot to use the new AI and logic additions. Here’s the fun part this small thought, leads to other aspects that needed thinking about. What happens when the pirate succeeds in grabbing the loot? What happens if the pirate escapes? What happens if the player follows the pirate? In a dynamic and somewhat open ended game such as Void Destroyer there are a bunch of possibilities, especially considering luck and player skill. So these alternate paths were considered and added. I’m hoping to add in some more branching, with some branches leading to dead ends – going with the idea that making choices have consequences will have the impact that the “right” choices have more meaning.

 

So I’m very close for final polish, play testing then tossing the newest additions onto Steam.

The Road to Early Access Part 3

Early this past week I finally solved a crash bug that had me worried for a while.  Turns out it was a simple save game bug. It had me worried because at different times I thought it was a – hard drive issue (my hard drive failing), a memory issue, and/or some random instability. For the memory issue I thought that maybe I was sending too much data from memory to the save game file, so I cleaned up a bunch of code to make save game files less verbose. This – didn’t fix the issue but made a difference in the crash, so I thought I was on the right track. I then changed the way save game files – saved – instead of buffering and then writing the data to the hard drive (when the buffer decided to do so), I had them write the data as soon as new data was in the buffer. This again had an effect on the crash, but didn’t solve it, however it crashed at the same exact point in the save game file writing process so it led me to the actual problem, and moments later it was solved – it had to do with rally points.

————-

The rest of the week was spent on the first 5 minutes of the game. But the impact will be felt through out. First off spending time on the very early beginning of a game is very important because – that’s a guaranteed everyone will go through. Including game reviewers. The changes help flesh out the setting of the game. There is more activity and goings on. The asteroid field setting gets a show case.

The changes are these – previously there was a hangar platform that would launch drones to pick up ore rocks, when the drones returned (with the ore rocks) to the platform, the “ore” would be transferred to the base. This was “invisible” – the new change has the platform launch a cargo pod, which then gets picked up by a transport ship (which the AI base builds based on need) and the cargo pod then gets delivered to the base. Ships picking up ore rocks and cargo pods – had a glaring issue – I would cheat and create “ghost” objects (visual only objects) instead of physical objects when a cargo pod was picked up (the physical side would vanish from the game). Although this looked ok – the ghost object wouldn’t respond to collisions – so you couldn’t damage it. This was mostly ok – except when I wanted for huge rocks to be moved – after all those mining platforms need to be near rocks to mine them, and they had to have gotten there somehow right? Again adding to the setting of the game. So now ore rocks and cargo pods are physical objects. This meant a bunch of changes and struggles, but thanks to the 4 day Thanksgiving weekend, this is mostly done – and I’m very happy. It will become a major feature of the game – especially – because anything that the AI can do – so can the player. So we’ll have to create situations where the players has to drag (or command his forces) to drag ore rocks, cargo pods, and – yep even other ships :)

 

 

The Road to Early Access Part 2

Looks like I skipped last week’s update. Here’s what’s been going on – a lot of prep for Steam’s early access. I’m trying to make it the best early launch as I can so I’m thinking of small improvements.

Fixing glaring issues that have been here for a long time – for example ship switching via the V and B keys now takes distance to nearby ships into account. So does target nearest enemy target (T key) it will cycle nearby targets starting with the nearest.

Adding more visual polish – lots of HUD work and some special effects.

Speaking of HUD improvements – new methods of telling the player that their ship (or the command ship) is taking damage.

Adding in crash prevention – crashes have been a good thing overall for Void Destroyer – they mean an easy way to see that something is wrong, but for Early Access gamers I’d rather avoid putting them through my mistakes so I’m putting in crash detection/prevention. I’m making this a toggle so that I can disable the detection for my own debugging builds

Bunch of AI stuff – formations becoming a bit more intelligent.

 

Also I’m working on story content – there is going to be a new mini boss early in the game, and I’m hoping for a improvement on the long slog before capturing the first base and adding in some more “life” to the universe. Ships doing their own thing.

 

 

————

I forgot a very important thing that happened. I updated many of the libraries/engines that combine to form Void Destroyer’s “game engine.” So the latest physics engine – Bullet Physics. For the GUI (CEGUI) I initially went to the latest but discovered some changes that would delay me a bit too much so while we jumped a few years ahead in features and bug fixes, we aren’t on the latest and greatest. Latest stable rendering engine – Ogre.  In addition I updated the project to use Visual Studio 2012 (previously on 2008). Overall this isn’t a hard thing to do, there are documentations and forum posts of people that went ahead of me, but taken together it is a fairly involved and stressful process. Stressfull because at certain points the game doesn’t build (aka work) with many errors and oversights on my part. Now trouble shooting can be very easy if there is one thing to fix, but when there are multiple it can become complicated and overwhelming. So I also switched to a new PC (Windows 8.1) to have my old workstation remain unchanged (after trying to do the update on the old PC and freaking out since the game wasn’t building) while I’m working on the new.

So long story short it is done – though it took about half a week and a weekend – all told. Some “funny” issues were the new PC constantly crashing (bad memory chips – brand new – but a apparently really cheap and unreliable brand), not to mention my constant – I’m using the wrong keyboard (there now being two one for the old and one for the new – I didn’t buy a KVM) dilemma. The new PC is a nice upgrade to the old – but I still haven’t had a chance to load a game on it and take it for a spin, I’m not sure when I will have the time.

Greenlit! – The road to Early Access

Well – what I’ve been hoping, dreaming and stressing about happened. Void Destroyer has been approved towards becoming released on Steam. One of these days I have to write up a Kickstarter postmortem. I hope it ends up good reading.

 

Have to cut this short since its been a long week and weekend. The focus now is prepping for Steam’s Early Access – this means that I have to create a version of the game that will be scrutinized far more than it has up to date. Kickstarter backers are motivated by helping a project, so will some of the audience I hope to find on Steam, but Steam’s audience (I suspect) is a bit more motivated by playing the game and enjoying it. So I’ll have to add in value and polish. Things that have been planned to be added towards “commercial release” – which has now been pushed up in schedule. This is a great opportunity that I should try my hardest to maximize. It is essentially a chance at releasing twice, and projects tend to get the most attention when they are released, with early access it is another chance to be on Steam’s front  page.

 

The cool thing is that with a few lines of C++ code Void Destroyer now connects to Steam and I get a pop up stating that fact whenever I run the game to test or check out a new addition or the status of a bug. Seeing that message is another layer of motivation.

Iteration 18 – released – and work towards 19

I missed last week’s update and now I’m drawing a blank… so I’ll just keep it very short. There were many crash bugs, there was a lots of needed polish and finally late last week iteration 18 was released.

Right after releasing iteration 18 I took a look at some new effects code from the effects contractor – the goal was to enhance the “Sun” – it did do so but had a limitation – if the player’s camera was too far from the sun the effect has a negative effect on the sun visual. But then I noticed a subtle glow… and the effect had a unforeseen (by me) bonus – a cool “general glow” effect. Really like the extra polish this has on the game. Very excited about it.

In a lot of ways iteration 18 is incomplete – most of them having to do with formations. Iteration 19 should fix most of that. I started last week doing some enhancements to tactical mode, stuff that I should have been in 18 but I didn’t want to delay any longer. So now things like – double clicking a turret to select them all, and the ability to click on the “model” image (on the lower right hand corner) being the same as selecting the object itself – for use in double clicking. Also I’ve updated the base manage gui – with a list of bases – just like the shipyard has a list of shipyards. Minor – yet obvious things like that.  Then I started to finally address ships traveling through gates – out of the sector. These are almost always player ships – and before the changes they would get lost if the game was saved and loaded. I added them to the save/load system and am very happy for it.

 

And finally the late weekend came and the main focus of iteration 19 – AI polish and enhancements. I ran through a lot of “attack patterns” and “attack nodes” – basically combat ships have a “attack nodes” that has one or more “attack patterns” – I’ve added a bunch of new ones and added code for the combat AI to more intelligently pick and use them, and in some cases fixed bugs that prevented the AI from using existing ones.  So fighters and corvettes should display some new maneuvers and intelligence. Frigates will be more mobile in combat and ships that collision weapons should smack into other objects in a improved way.

Once I’m done with this – I’ll have to tackle issuing orders and giving the player better control over ships using the gravity drive – I’m looking forward to this very much.

 

As I was running out of weekend time – I also re-added “projectile life expiration” particles – little explosions when a projectile runs out of its “life timer” – and would previously just disappear, now there’s a little blip of an explosion – this is optional as there is a tiny performance penalty.

 

Speaking of performance – I’m basically at the point of needing an updated PC – the funny thing is that the need is for making videos of the project – I don’t want to advertise the game running below 60fps and with the new effects we are headed that way.

Road To Iteration 18 – Part 3

This week was spent on polish towards Iteration 18. Each one of the days I thought I’d be getting very close to releasing only to find more and more things to do, fix, improve and test.

 

When I started wanting to finish up the new story content I realized that I couldn’t bring myself to just have it be another sector in space like the rest so I wanted to add in some variety via “dust clouds.” A sector wide “nebula” – and I fairly quickly added that system in place. The cool thing about this variant of dust clouds (there was an older variant that I didn’t use much) is that it is highly and easily moddable and you can stack a dust cloud on top of another dust cloud (as many times as you want) so create a layered sort of nebula/dusty environment. I think it looks pretty cool – I’m very happy with it. The goal is to not have the game be so mechanical – which I think is a result of the programmer (aka me) doing much of the design.

Speaking of not having the game be so mechanical, I spent a good amount of time on using the newly acquired (via Kickstarter funds) consulting help towards tactical mode visual enhancements. I’m happy to say that tactical mode looks much closer to the final vision. Still a bunch of work to do, but I think it is a huge improvement.

The weekend was spent on finishing up the story content, working on the cutscene, prepping the installer and finally bug testing. So many bugs! I lose track of how many crash bugs, but each one I fix is one less that a player will have to deal with. Still I think that iteration 18 will be one of the buggiest, the new formation and rally systems are fairly complex additions to the game, they go across the board in their effects. Plus the tactical mode ui improvements – are hard to test given that they span the entire mode – meaning that there are a lot of combinations of actions that a player could do that might trigger a bug.

 

Hopefully iteration 18 will be released early this week and I can then move onto focusing on iteration 19 – whose goal is to vastly improve the AI. A part will be to make new formation system much more solid, another part will be to make AI ships much better at avoiding collisions and path finding, and a third leg will be on combat maneuvers and general AI intelligence. Exciting stuff!

Road To Iteration 18 – Part 2

Pretty tired at the moment, so I’ll probably skip a few things.

 

During the week I worked on the rally system (lots of improvements there) and more Tactical mode polish. Meanwhile a special effects artist sent me over some neat effects and I did some experiments with them. I’m looking forward to unveiling them in the near future and to getting even more effects. This is a great opportunity afforded via Kickstarter funds.

During the weekend I spent time on new content, bug fixes, on the new effects, on dust clouds, and even on the HUD via some new art - hoping to be able to say that it has reached a release ready state soon.

 

Iteration 18 should be ready this week.

Road to iteration 18

Kind of a late update… usually I try to do this late Sunday night, but it is now late Tuesday night.

The last week was pretty bad, there were several factors – I guess it might be interesting to some reader to know that there is a human being at the end of this – or maybe it is completely boring – anyway last Monday I visited the dentist for a crown after a root canal. Took very long since nowadays they literally 3D scan your mouth and then carve up a tooth out of a ceramic block – on site. Either way I was burned out, so Monday was out.

Tuesday I spent fighting a crash bug that cropped up when formations were disbanded/deleted. Pretty silly bug, took forever to find, but as usual I was very happy to have fixed. Some bad news on Wednesday – the HUD/GUI artist that was working with me has had a string of unfortunate events and can’t reasonably deliver for the project. This actually reminds me that I’m very lucky to be able to work on this project, given how much “free” time it requires. A reminder that not everyone is as lucky as I am and that is something I shouldn’t forget when I feel down or burned out of what not.

Wednesday – at my “day job” once a year a bit of a shake up happens and the office crew (which I’m part off) has to go to the warehouse and count inventory. This is unfortunately extremely exhausting (since it often involves physically lifting often heavy material), mind numbing and a bunch of other negative aspects. So the rest of the week was spent like that and when I got home later than usual I tried to focus on little things and surprisingly got a bunch of things done – mainly little improvements to tactical mode. It is not as rigid as it was before and hopefully much more user friendly. I should create a post just on this, or maybe a video.

Weekend - I wanted something quick and easy so I wanted to create a “rally” system. Where the player would first select a base or a shipyard then right click on the map and have ships go to that spot on launch from the shipyard. This was easy, and I fairly quickly set this up (in terms of basic functionality) and then I thought – hmm why not integrate the new formation system? This is where things took a turn for the worse. I spent a lot of time (practically all of Sunday) trying to jam the formation system into the rally system. I kept writing code, deleting it, restoring from a backup of previous code, etc etc. I finally gave up Sunday night and decided to keep the code separate. A few moments ago I setup a fairly decent rally system, so at least that’s that.

 

So what’s next? I want to put out Iteration 18 soon – I have to add in saving/loading to the formation system and the rally system, do a bunch of bug tests, finish up new story content for the Kickstarter Beta backers and then release. So seemingly a bunch of work, hopefully it will go smooth :)

In other news – I’ve started contracting out “graphics/effects” programming work. This is an area where I struggle a lot so I thought contracting this work out would be more efficient, so far some promising developments. This will also mean that I’ll learn a bit so overall should be a huge win for the project.

Formations #2

 

The past week and weekend was spent on formations. Its funny because a while back I was worried about the math (with me not being great in matH0 involved and the specifics of ships forming up, but that aspect turned out to be very easy. The harder aspect became management, leaving a formation, creating a new leader, etc etc.

This aspect became very complicated – because there are many ways that a ship leaves a formation. Though dying, through being promoted to a leader (at which point the ship isn’t [in code] a part of a formation), when a formation “rebalances” itself (meaning that ships re-organize themselves to be closer to proper [nearest] formation positions) ships can leave and then rejoin a formation.  Because the code wasn’t all the way thought out (my bad) this led to infinite loops. A few bits of code later they went away. The GUI and how formations worked on that side also took a bit of thought and doing – but overall things work. What’s left is having formations save/load across games, cleanups and a lot of tests. I’m a bit afraid that Iteration 18 will be fairly buggy.

Now that formations are soon to be mostly completed, this will allow for a across the board AI improvements, since formations are going to be a big part, AI is basically mostly completed as far as major features. The future goal will be to make it more obedient.

Almost forgot – another item added is “SPROG” fire mode – it is an add-on to turret/weapon control in Command mode – with it you can control all turrets in a formation from the lead ship’s Command mode – making an overwhelming amounts of firepower directed at the player’s cursor possible. It is funny because I’m not sure how useful of a feature this is – but I’m sure that its cool and unique.