Non weekly post

So every week I’ve been thinking – I should do a weekly post! I’ve written them in my mind more than once.

 

About two and a half weeks ago – I started working on Void Destroyer 2. Its coming along nicely – but the initial few days were very rough, and the following week was only slightly less rough.

First off – I copied and pasted Void Destroyer’s code into a new project, then started working from there. Several times I deleted the pasted code and re-created it. At one point I even thought about re-organizing Void Destroyer’s code to fit better for Void Destroyer 2. Then abandoned that – I don’t want to risk impacting the – finally stable Void Destroyer. It was like pulling teeth.

At one point – in the new copied Void Destroyer 2 project – I got as far as to create a copy/paste of tactical mode code, then removing nearly everything in it, leaving a basic shell of the camera system and a few other items. It barely functioned and that frustrated me a lot. I felt like – “man… this should really be working smoothly like the older systems!” I then abandoned this path – but had the foresight to back it up. Which is good – because my other copy/pastes I deleted and decided to go back to that backup. That’s what I’ve been working off ever since.

 

The difficulty I found was this – Void Destroyer – is a very nicely (to me anyway) organized and complete project. It is good at what it does – a mission/script based game. Void Destroyer 2 is going to be a different beast – and the differences and specific items that it needed didn’t exist in the old code, or were in – soon to be incompatible spots. It created this sort of a fevered feedback loop where I thought – no this doesn’t belong here, but it can’t function until this other thing is put into place. and that thing needs another item. Basically a – if you don’t know what to do – don’t do anything type of a situation.

 

To get past this – I decided to ignore the old code – and just have the stripped down copy of tactical mode function with a camera. I added a 2D grid to see the camera move. Then I added a sun, then a base, then a ship, and then attached the camera to the ship. For over a week it was just  a very basic 2D type thing – no integration with the “game” at all. That came slowly and in tiny steps.

 

It sort of works now – I have an “overworld map” (the copy of the stripped down tactical mode code). Via this overworld map – I can move the player ship from area of space to another – something that Void Destroyer couldn’t do. I can see bases generating ships, asteroid fields spawning pirates – these are very basic objects, and the map itself is 2D (for simplicity – just like we have a 2D map of our Earth – even though our planet is not a 2D object). These simple objects (ships/bases) are then sent over to the “old” Void Destroyer code – which generates the more “advanced” ships/bases that can engage in combat/etc. When the player travels near them – or when a pirate ship “attacks” the player.

 

It is a bit funny – because – I have this beast of a game under the hood – and now I’m communicating with it via this more basic interface/system. In a way it is very easy – in the “overworld map” things are simple (there no physics in the overworld map – because maps don’t tend to worry about mountains when going from point A to point B) – and in the “local space” – I already have Void Destroyer’s code to handle things. Its like I’m putting the icing on the cake.

 

I keep reminding myself – forget about the complex – keep it simple now. And that helps a lot. For example – I imagine a much more elaborate interface for buying ships (potentially even the player going into first person mode) – but for now I just added a simple list view.

I also keep wanting to create a video demoing this – but I’ve decided to delay this until it looks a lot more polished. I didn’t give a lot of attention to smooth/seamless transitions – so I’ll spend time on that before I create a video.

Settling in to the new normal

So shortly after the game’s release – I quit my job “day job”. Or as I like to say – I fired myself.

 

To recap – prior to going on Steam’s Early Access (a year ago) my day job was that of a “IT Manager.” A few months after Early Access I asked my employer if I could work part time, and my boss agreed (I might have quit the day job if this wasn’t the outcome) – so I had two additional days to work on Void Destroyer – Mondays and Fridays.

 

Now that Void Destroyer is officially released – and the release went well - I have now quit the part time – and am now a full time game developer. Pretty awesome huh? Well I have more to write about the topic, so I’ll cut that aspect short here.

 

But what I’ll mention is that I’m settling into the new normal. The “wake up and go to work, sit at a desk then go home” aspect of my life is fading, and how I live now is starting to feel normal. I wake up whenever I want (usually 7:30am).  I cook dinner on Thursdays – timing it precisely for when my wife gets home from her job. I go to the gym at around 2pm. I drive in a week about the same amount of miles as I used to drive a day. I take naps!

 

And of course – I work on Void Destroyer.

 

Life is good! Now to make this last.

Release came and went

So its a little bit over a week, meaning that everything pretty much calmed down.

Now I have to calm down. I’m having a bit of a hard time returning to normal, because during the spike it was so easy to be focused when there were non stop issues to be dealt with and questions to be answered. I’m getting there, but now have to work on focus.

The release went really well – was it better than I expected? I dreamed of the sun and moon, and what I got was very nice, still remaining on solid earth. There was nearly no media coverage, big sites didn’t cover the game, I think this was to be expected, but I had hopes for much more. Still the game sold really well, at one point I was in the top 20 on Steam. It was up against giants with million dollar budgets. How awesome is that?

It felt great to see positive reviews and comments from players. Its hard developing a game – you don’t exactly know if its good – to anyone besides you. Sometimes a review will get the idea – and you go – Yes! That’s what I was going for! This person gets it!

For the most part players were very happy to have found the game, and that was incredibly gratifying. I’m very happy with that outcome. Thanks gamers, I hope you know how much I appreciate you.

There were critical – or better put negative reviews. I tried to approach them with the idea that both me and the person writing it – have the same goal. A player bought a game that they want to enjoy, and I made a game that I want the player to enjoy. So in cases where I didn’t understand the problem I tried to understand it. In cases that I could help the player, I tried to help the player. Every time that this yielded a positive outcome – that’s a huge success. In a way its great that I’m small enough to be able to address players in person.

Players often remarked how – out of the norm – it is that I was so active on the forums. But why should this be odd? While the game isn’t my life – it is a big part.

Not only did I get big amounts of enjoyment out of talking about the game and helping players, but I know that this surge of activity won’t last, so I might as well enjoy it at its peak.

When I think back at the amount of work I did the past few weeks – it was incredible. At some points my spine hurt from sitting – not my back/muscles – but the actual bones in my spinal column. They hurt from the constant contact with a chair. I then added some pillows between me and it. This helped for a little bit and I then had to resort to kneeling on pillows – then my knees started hurting. After a good night’s rest and a bit less activity, everything went back to normal more or less.

Other than the above physical aspects – I can’t say anything particularly negative. Though if I had to do it over again – I would have seriously investigated hiring some kind of marketing. I was doing both – while my efforts would have probably been best fixing issues. Writing emails to YouTube channels and Media outlets – after midnight and being very fuzzy brained isn’t the greatest combo.

When I re-read some of the emails and thought I sounded like a 5 year old (no offense intended to my 5 year old readers).

Here’s kind of how some of my emails sounded – when I read them back to myself:

Hello. 

My name is Paul and I am 5 years old.

I made a game. It is a good game. It has space ships.

Please play my game.

Thanks!

Only with many more spelling errors. Fun times!

There were bugs, scripting issues, and oversights. Every time there was a crash bug found I cringed… oh man how embarrassing… I then rushed to fix it and felt great. Only to get the news of another. Still Early Access did help a lot – there were repeated issues that were easier to deal with.

 

Ok, I think I wrote enough, there’s so much more to say and tell, but for now let’s leave it at this.

Pretty Calm Now

Last night and this morning was brutal – I felt sure that I wasn’t ready and that the game was crap. I fought with the sound engine – and although I improved a few issues, it overall won and I’ll ship with some sound pops.

This morning – a crash bug on exiting the game (of all things popped out). This is the height of embarrassment… Debug mode in the compiler couldn’t reproduce the problem. I had to do it the old school way of putting logs and seeing where the game crashes and compare it to the log. Did it trigger this section? No… keep trying, yes.. ok where in this section, took about an hour. Found the bug and fixed it, and the rest of the day was great, seemingly no issues.

I played a bunch of missions and fixed up some difficulty issues – though I might have made it too difficult, this is hard to say as I get better and better at my own game and introduce more and more tools (weapons, abilities, ways of controlling ships, strategies) – that I then use in game. Anyway I hope that this isn’t the case. The good thing is that I modified the late game, so by then players should be pretty good as well.

 

While playing – I got to enjoy the game at its best, giving ample opportunities to use both ship and tactical mode – while enjoying the newest music tracks.

I feel pretty good so let’s just leave it at that.

 

Now I can’t find the post button on this thing…

Still can’t find it… what the hell…

Going to read this in the future and laugh.

Insanity

I keep working while I can tell that my coding ability is way down (due to tiredness), I worry about introducing new bugs while fixing small issues. I scan the code several times to proof read it and look for potential issues and don’t understand it. Any kind of a noise or distraction completely eliminates my focus, causing a pause to recover.

 

I alternate between thinking that the game is ready to thinking that it isn’t, to thinking that it will never be ready, to thinking that its ready, then questioning why I made such a complex game as my first, thinking that its impossible for one person to do this, then thinking that people have done it so it must be possible. Thinking that while player A may never encounter a problem, player B might constantly find issues. Thinking of all the game’s features that I haven’t used in a while, what horrors lurk there?

 

 

Frustrations

Its been a while since I posted, there’s been loads of topics that I didn’t cover.

Secondary weapons, finalizing the GUI, finishing the story, improving arena mode and adding skirmish mode. Writing up and adding the Guide.

But what’s closest on my mind is preparing for release. So I’ll write up a few lists…

 

Frustrations:

  • Typos in trailer
  • Erratic movements when I record – why don’t I slow down a bit?
  • Windows Movie Maker crashes – still where would I be without it?
  • Marketing assets
  • Every single site wants their own dimensions
  • When making them – nearly all my existing assets didn’t (initially) work in some particular way
  • Can’t fall asleep (nights)
  • Can’t stay asleep (mornings)
  • Short temper
  • Feeling of not enough time
  • Constantly checking Steam’s upcoming releases – who will I be up against?
  • Typos in emails to media/YouTube channels (I shouldn’t be doing those at late at night)
  • Looking for website templates – having to click on the commercial license button – seeing sticker shock (they lure you in with $25 license for non-commercial)
  • Tense up for a moment due to some stress – here comes the back pain

 

Stuff that calms me down:

  • I made a game! – stuff of dreams thought
  • Recording game play for trailers – and thinking – hey its pretty good
  • Watching new trailers – with epic music
  • Talking with a player while they narrate what section of the story game they are on – thankful it works!
  • Positive feedback on release plan announcement (both KS and Steam)
  • Finding a cool/simple template for the website – that’s donation based, sending a donation and getting thanks from the author
  • Managing to sleep a little bit
  • Knowing I can’t really control much of anything – up to Steam audience
  • Making lists

 

 

 

 

Dogfights

As I mentioned in the last update – I’ve added a bunch of instant action scenarios. I’ve been meaning to do this for a long time but didn’t have quite concrete direction in my mind. Via talking to players the idea crystallized – dogfights.

I hear feedback that some prefer the RTS aspect, or that they prefer the “first person” aspect, but don’t get a chance to pilot ships due to needing to be in tactical mode. My response is – play how you enjoy the game – not how you perceive it to be most efficient. This I believe that players are often “guilty” of doing and I have to admit that I do this too. In Void Destroyer I say that It is ok if some of your ships die – you can re-build them, that’s the great thing about games, no one is getting hurt.

I happen to think that Void Destroyer has the best space combat around – this might be a bit on the crazy side (considering my non-existent team and budget), but I truly believe it, though I admit that I probably brain washed myself over the years. This feedback is often on my mind and I think it is a waste for players not to get a healthy dose of this aspect of the game. So I decided to do a very simple thing – give players a quick and easy way to enjoy dogfights in Void Destroyer via instant action scenarios.

I believe I mentioned this before – the beauty of instant action scenarios is that they can be exactly configured – and I as the designer can know exactly what the player will have and what the player will face. Versus – in the “story” mode of Void Destroyer – the player is free to decide on their fleet and can lose and gain ships along the way depending on the fortunes of battle. So it is a great thing that both of these design choices are present in the project.

So these new instant action scenarios lean heavily towards ship to ship combat – especially fighters. For example – in one of the earlier ones your task is to protect the command ship – Wardrum. In the “story” mode of the game – this would be much harder to pull off – because the player can simply fly the Wardrum out of danger. But here the player can only pilot fighters, the Wardrum stays put and isn’t something that can be manipulated. The loss of player control gives me greater options – and gives the player a more focused experience, so the player can enjoy dogfights without having to worry about fleets.

Other cool aspects, one of them is that via contorting the player and enemy ships – some of the factions that don’t have larger class ships – aren’t push overs – now that the player doesn’t have a swarm of frigates in the fight.

Another great aspect is that I can be a bit more brutal – for example I can swarm the command ship with (many more) hull crushing drones – because the scenario is optional and not required to continue on the story of the game. Beating it can be its own reward – a source of pride – and the player is allowed to continue playing the scenario even if the command ship is destroyed – something that would usually result in the game being over in the “story” mode. The player can still enjoy the ship to ship combat until either all enemies, or all friendly ships are no more.

 

Happenings – and big changes – Pt2

I hit a bit of a wall with the “Hub” mission – it is a beast, but great things resulted from wrestling with it. For one – I fairly recently – added a “resource request’ system, where the player can request resources from friendly bases. This system only worked with “in sector” bases. It was added to help with the Hub mission and missions after it where the player has access to multiple friendly bases (through conquest!), but the Hub mission needed this system to work with “out of sector” bases as well. Adding that felt “complete” – it didn’t make much sense that you had bases that could build ships and send them through a gate to you, but not send a transport ship carrying an ore pod, so now you can.

The next big change is the ability for the player to define ship’s “posture” (as I call it internally in code). This is a fairly simple system which mostly determines ranges at which ships target enemy ships. Simple, but very powerful, for example if you set the distance to be very short or non-existent then ships will stand still (or in formation) and ignore enemies. Normally that would lead to death – but in a few missions it can be much better tactically to stand your ground rather than rush ahead into enemy defenses and ships. In a few missions in particular not being able to do have ships stand still would be greatly frustrating, they were too independent in seeking out targets.

So the three “postures” that I’ve made available to the player are (names pending):

 

HOLD – ships generally ignore enemy ships, but turrets still respond to enemies and fire

ENGAGE – the default posture, ships engage other ships in “combat range” (which is usually defined as a bit further than weapons range)

SEARCH AND DESTROY – ships will scour the entire map for enemy ships and engage

 

So these basic three give a lot of power, tactics and control to the player. For example search and destroy can be extremely useful towards the end of a mission where you basically defeated the enemy and want to mop up. It can also be very useful when you have several battles happening all over the area, and don’t want to micro manage your ships, instead you want them to seek out targets. This can also give you the opportunity to dogfight or manually pilot, knowing that your forces are engaging enemies on their own.

These highlight the several ways that the player can control their ships in the game. They can directly pilot, they can issue commands to a ship or group or ships, or they can say – have at it. Each level decreasing fine control – and each level having its own merits.

There is a bit of a story of how search and destroy came about – originally I gave it to enemy ships. Often in the game there are mission scripts that wait for enemy ships to be destroyed. This means that it is important for enemy ships to bravely seek out combat and die. Otherwise an enemy ship might be sitting still in some far corner of the map and the player is left waiting for the next leg of the story being blocked by some wayward ship. So search and destroy was given to enemy ships so that’d bravely throw themselves at the player – wherever they are.

The need for this became apparent for me during a play through where a physics glitch pushed a ship into the outer edges. I then added the search and destroy posture and the enemy ship rejoined the fight. I originally didn’t intend to give this to the player – but right after I did – it became apparent how great this is, I use it and enjoy it often in my play thoughts and tests. In terms of mission scripts, I often use it to

 

The other big news is that I decided to do something about instant action scenarios. I’ve been planning them in my head and finally got down to writing them. Some are fairly simple and others are fairly complex, but they work in a bunch of ways with the strengths and uniqueness of the game. Going to do an update later to talk about them in more detail.

Happenings – and big changes

I polished the “alternate” paths to the story line I talked about in the last post. They weren’t as bad as I thought, I had to decide where to force certain things and where to keep them open ended. I do my best to hide these things from the player in – hopefully – clever as I can be ways.

For example – it would be very hard for the player to destroy a ship, a ship that I need to be alive for the next few steps of the story, then the player can either wait a bit then destroy it or destroy it right away. So anyway the “clever” trick I do is to make the ship immortal. Ok before you start rolling your eyes – what I also do is allow the player to damage it up to a certain point. Still rolling your eyes? The final clever aspect is reducing the amount of damage it takes. Setting the ship to be immortal ensures that it will be still alive, but setting the damage reduction hopefully keeps the immersion of – you can do anything – intact – while increasing tension – ooh the ship is so tough!  Once the ship does what I need it to do in the story I set it back to normal. So I am sure that it will do steps 123, and then leave 456 up to the player.

After a bit of polish – I added another mission to the game – this one has what I believe to be a very unique fight. It’s different from all the other fights in the game because it doesn’t have the usual swarms of ships or fleets versus fleets deciding who wears the space pants better. The battle has a different flow and at the end of it I hope that the player feels like an absolute warrior. I’m very proud of that section of the new mission.

However – the segment following that was fairly similar to previous encounters – swarms of ships, I toss in a bit of variety in there, but it feels off, still its place in the game might dictate how it should be and there’s not much to do to change it.

———-

With the new mission added – the game needed its final mission and I have a pretty clear idea what it is. Although I was very excited and happy about this – I really didn’t feel like working on it. Having played the earlier missions I kept seeing issues that I wanted to resolve, change, polish, etc. So I decided to do a run through the game from the beginning (something I haven’t done in a while).

I decided to go through the game and treat every mission as final. If I see an issue – I fix it – versus leaving it for later as I sometimes did before. That is the goal – and for the most part I believe I succeeded.

There’s been a tremendous amount of tiny, small and big changes over the past few days. It’s actually a bit scary. Tiny ones like changing which music plays, moving a camera in a cutscene a bit to the right (due to having scaled up an object [months before] and that now obscuring where I wanted the camera to look). Small ones like changing the number of ships in a map and huge ones – like changing the way bases build ships.

Having played and worked on the later missions – I realized that ships build too slowly. Often I wouldn’t want to build fighters because it would mean having them take up a slot to build a frigate or larger ship. To put it into a perspective – rebuilding a wing of 20 fighters would take 10 minutes, that is 10 minutes of not being able to build another ship. So the solution that I decided to take is to allow bases to always have a slot to build fighters – so a base can build a fighter and a non-fighter class ship. This basically means that building fighters is a given in bases (stations still have the same limitation as before – one ship at a time).  Still the 10 minute aspect remained – though now you could build a fighter and another ship – it would still take 10 minutes to build that wing of 20. So I reduced fighter build times, and kept going and did the same to corvettes and frigates. I looked at enemy ship build times and adjusted those as well.

This has the aspect of affecting enemy bases as well – something I decided was only fair. This means that enemy bases attack more frequently. This is a bit scary – worrying about players new to the game. But the aspect of them being able to build ships fast should take care of that – and result in more action and space combat. Either way this is necessary for the end game, so it had to be done.

There have been a lot of other changes, and now I’m close to the 1/2 way point of the game – today I added functionality to get resources via gates. I’ve fixed numerous tiny issues and put in numerous improvements, I’m feeling very optimistic about the game – that I will be very proud of it for years to come. As always there is a long way to go.

The grind

So last week I wrote about the grind, and during it – I was having thoughts of why I went down the “story/mission” path and how instead I could be happily coding additional features of sandbox game play. These thoughts are fairly useless because the path is set and sandbox game play is something to look forward to in the future. Even more useless considering that I have to power through these moments versus thinking what I might have done wrong or better – in hindsight.

 

Well last Monday the grind started clearing up when the mission finally tarted taking form. The many elements and goals of this particular mission started coming together. To give you an example – for the player – there are two new build able stations, two new destroyer class ships and new command ship upgrades. These come at a cost of intense battles, retreats, and advances. That’s even not mentioning a few other surprises.

As usual it got me pretty excited and happy. I think this is one of the best missions yet. It has this (particularly) neat moment that I hope is very memorable – and the post moment big battle and (hopefully) victory even more so. I was so excited by the battle that I asked my sound designer for a new music track – so that the player feels that bit more excitement via a new musical piece. The battle was so intense that even though I lost the Mark 13 – a ship that I’ve been carefully keeping alive in my fleet – I didn’t reload the game as usual to try to protect it via another try, she died in a worthy battle.

 

So what’s left to do before another iteration – I have to seriously work on some potential alternate paths that might form. For example – the player receives A from B – but what if B has been destroyed? That sort of thing. There are surprisingly a few of them.

 

Even better news is that I have the game’s ending fairly well defined in my mind.