This is the post-mortem of my third video game Obliterator, a 2D, top-down, space arcade game. The game took two years to make, part-time, and really expanded my skills and confidence.
The space-theme video games I played when I was young in the 1980s continue to mean a lot to me. I miss them and wanted to feel that sense of openness and wonder again, without the overt aggressivenes, lumpy militariness, and tedious management of modern space games.
Following the fun time I had during Ludum Dare 33 in August 2015 I was driven to create one of the ideas I had for that game jam, that of a simple spaceship propelling itself around a star system killing things. I felt the concept was simple and strong and thought I could develop it within a couple of months. I knew it would be a learning curve as well as having to get messy with the physics system in Unity properly.
I am a part-time game designer and had been using Unity for 9 months before starting this project in September 2015. I had no clear plan beyond to get it done and never really took time to research and plan, which helps to explain why it took two years to finish.
Development of Obliterator can be broken down into four distinct phases and it should be remembered that it wasn't planned this way, this is how I see it after the process.
Stage 1 - Galaxy Building (2 months)
The first couple of months were exhilarating as I spent hours coding the controls and movement of the spaceship as well as creating random star systems for it to fly around. My childhood dream game was alive! ALIVE!
Stage 2 - Kitchen Sink (14 months)
Then came the next year roughly where I was throwing a lot of ideas into Obliterator and causing myself large headaches in terms of technical challenges and stretching my skills. A lot of stressful code refactoring happened and could have been avoided. During this time I also had four months off (I was on a teaching course) and I think it did me a big favour.
Stage 3 - Spit and Polish (4 months)
Then came the months of refinement, throwing out this and that, and cleaning up the last of the issues. I was still adding some content at this stage but could do so easily because the previous year's efforts were about coding flexibility into the game so I could do just that. Also Unity upgraded to 5 around this point making certain aspects quicker and easier (and did wonders for Obliterator's frame rate).
Stage 4 - Prep for Market (4 months)
The last four months were about testing and more testing and learning to see Obliterator, completed and polished, from the outside so I could create some marketing for it.
Photoshop (other image programs are available but they are crap)
Audacity (great audio tool and free)
Finale (great for traditional composition)
SXFR (sound effects galore and free)
What Went Well
Obliterator is based upon a few space games I played in the 1980s (you'll know them if you are old enough) and I am immensely satisfied that I have created a game that is as open and tactically challenging as those.
The super simple mouse controls really nails home that Obliterator is easy to understand but difficult to master. The time I spent on the planets' and stars' gravity fields really paid off, as well as fine tuning the capabilities of the spaceship. Moment to moment gameplay: nailed it.
For Obliterator I knew I wanted minimalist but not pixellated, simple but not stark, and I achieved that with a clever combination of photoshopness and Unity's particle system (that latter remains the greatest under-used resource in Unity). I also wanted blue/purple space field in the background that was textured and moved with the ship in a subtle way. Also the UI I am very happy with as I think it thematically strong and and ties in with the gameplay style.
I was fixated on creating a lot of standard weapons for the ship as well as special ones that did devastating and silly things. It took time but I'm glad I created the system I did that could hot swop weapons and leave room for expansion and change.
About two thirds of the sounds are organic (i.e. recorded on my phone) and then messed with in Audacity. The rest were SXFR. Half the music was composed in Finale and then tinkered with in Audacity, while the other half was pure experimentation using organic and artificial sounds in Audacity. I had a shameless amount of fun with sounds and music and consider the 16 varied tracks of music to be exactly what I wanted (even though I coded the default option to turn music off in game!) The entire soundtrack can be heard for free https://soundcloud.com/pjdodd
Obliterator contains detailed information (in the in-game guide) as well as the expected tooltips for the HUD and other things. I am pleased that the writing for these was brief and information rich when it needed to be and verbose and textured when the back story/scenario needed it to be. I hope to repeat this experience because I loved writing for Obliterator.
What Went OK
My C-Sharp skills got really stretched here. As did my ability to properly analyse a game and get the most out of Unity (Unity really hates a lot of unorganised rigidbodies on screen at once!). Most of the time I would code something and then work out how to clean it up or click the right selection of checkboxes in Unity. I know better now.
<rant> To all those who write how-to guides on generics, abstracts, interfaces etc - you are rubbish at writing. No really, you are. For me it was like learning to drive with some tit giving me a technical explanation of how a combustion engine works instead of actually showing me what to do. The how-to guides are all crap. </rant>
I used a Finite State Machine (FSM) for the AI behaviour although to this day I still think it's not where I want to be. I created a system where the aliens (AI) had reactions based on three values and how those values interacted with each other at various points on the FSM. The timings still seem off to me although feedback to the player might not be as clear as it could be.
I learnt with Obliterator that I struggle with highly variable level design and the missions for this game were tough. I could have made them easier or constructed more of a story line, but I really wanted to avoid locking content behind a playthrough or skill level. Missions can be completed in any order and I'm proud of that but it meant that I struggled to get them done and to this day there are only 43 of them. I wish there were the 200 I aimed for.
What Went Badly
Not much thought went into planning at all and as a result I was often frustrated, daunted, mildly miserable, and hated facing yet another long list of shit to do, shit to fix and shit to just get working. Although I programmed flexibility into Obliterator I took advantage of it way too much and really couldn't stop myself. I feel like a berk for doing so now, but at the time my logic was thus: space is really quite empty and therefore it is up to me to fill that space with things for the player to do and see and experience. A smidgen of restraint and planning could have brought the project in less than half the time I think as the feature creep was noticeable in the first two stages of development. I also realise that I spent too much time on silly little things and the combined tally of hours borders on shameless. Lesson learnt.
I hate marketing. You'll hear me say that a lot. What's worse is that every fool has their own idea of what works and I got lost in the confusion. Current wisdom says start the conversation early but as Obliterator dragged on I wasn't certain when it was going to be nearly finished and would have felt a fraud to publicise it too early. When I saw the end in sight it was too late. Shit.
I thought Obliterator was good enough to get on G.O.G. I got a mixed email from a bastard named Zak who liked my game but didn't think it had an audience (how would he know?) and worse, Zak didn't have confidence in me (because I'm one man and develop part-time). Hence, Zak is a bastard. I released Obliterator onto Itch.io the same day and moved on to Loot Monkey.
Planning, discipline and marketing. And Zak from G.O.G. is a bastard.