Creating Games – A Postmortem

In addition to my day job, I’ve harboured ambitions of creating computer games for decades. Some of my first programming memories are of create games for the BBC B micro back in the 80s and then subsequently for the Acorn Archimedes. Some of these were interesting and fun to play, but suffice to say that probably wasn’t true of all of them and certainly the quality of coding wasn’t always there!

These ambitions took a backseat to producing code for professional purposes but have never truly gone away. Over the last few years I’ve had the opportunity to spend some time between day jobs and in the evenings to create my own computer games. Partially motivated by the desire to create games and partially by the desire to practice my coding skills using different languages.

I originally started work on the games using XNA from Microsoft as it was possible to create games using c# (the language I use for the majority of my coding). However, as I didn’t put that much time into it, development took a while. During this time, MS discontinued XNA in favour of people writing c++ and using DirectX natively (through the DirectX Toolkit). So, wanting to both create the games I’ve always wanted to, and to relearn C++, I took the plunge and decided to start again on my games, but this time in C++.

The games themselves can be found on the Microsoft store (PC and Xbox) and on Steam (PC). Check them out, they’re good!

The beginning

Originally, I wanted to recreate one of my favourite games from childhood but with some different twists. As part of this, I needed to be able to create the level designs. I started off by looking online to see what options were out there for me and came across Tiled (https://www.mapeditor.org/). And for a while, I was happy to use this, a few things bugged me about it, mainly the inability to define a data schema for creating game objects (e.g. water pumps, player starting locations). If I had been intending to create these as a commercial product from the beginning, then I might have taken a step back, accepted the limitations (or liaised with the online community as to various proposed solutions on how to use the tool accordingly), designed the levels and moved on. Instead, I decided to take a detour into writing my own level designer. This was fun obviously, I learned an awful lot through doing so and my UX design skills have improved, but it wasn’t necessarily a good use of my time (especially as it led me down a vast quantities of rabbit holes to do with technology choices etc. so what could have taken a few months of evenings ended up taking an awful lot longer, during which there was no progress on the game).

To be fair, the tool does look nice (see below) and it does make creating levels easier, but if I were to be brutally honest and question whether or not it was worth creating vs. using an existing tool then I’m not sure I can justify it.

TL;DR – Don’t create so much tooling as if you could write multiple games in the series if it’s really not necessary.

First cut

So after having created the tooling necessary (this extended to also creating a c++ library containing all of the functionality and data structures for which I ‘would obviously have a need for’ – hint, I actually barely used any of it in the end), then it was time to work on the game proper.

This was actually relatively easy as it was both the fun part and motivating as you could see progress every day during development. it was during this phase that I decided that I should try to sell the game commercially once it was finished and so I had a renewed sense of focus. However, during this process, I focussed on the level design and the coding to the exclusion of everything else, including:

  • Graphics
  • Music
  • Sound (yes, if you listen to the sound effects, the firing effect is indeed me saying ‘pew’)
  • Marketing

This was a colossal mistake. I had naively and stupidly imagined that the quality of the game and people’s desire to play games of a different genre would be sufficient to get people interested. When reading about the approaches that various people have taken to game development, one common thread is always:

If you spend X on developing the game, then spend X on marketing the game

Lots of people off of the internet

To my ears, this sounded crazy. It’s not crazy, it’s vitally important if you want people to hear about your game and want to play it.

I also overly reminisced about ‘developer art’. In my day job, my icon design is somewhat famous, but for all the wrong reasons, they’re so bad / cheesy that they’ve kind of become a small sense of pride throughout the code base, however this was not sensible. With hindsight (and I did this for the initial game’s re-release), I should have either partnered with someone who can draw or simply paid someone to draw decent graphics for me. The difference in the quality of the game experience after having the decent graphics vs. exactly the same game code but with my own graphics was much larger than I was expected.

The original graphics
The professionally drawn graphics

A similar mistake was made on the music front, not knowing where to look for music and not knowing how to commission custom music, I found some really cool music which was explicitly licensed for people to be able to use in their own projects and used it for the main menu screen. I followed up with the composer of it, but he wasn’t available to create additional music (yes I would have paid!) in the time that I had left before release (again, I left it way too late in the development process to procure decent music) so I simply went with the option of no in-game music. There’s not much that I can say which can’t be said better by one of the people in the games industry who I was put in contact with and who took the time to give me some excellent feedback:

Music: there was some cool retro track playing in the main menu, but not in the tutorial. Want 🙂

Game industry professional who reviewed it

Stupidly, as with all the feedback, instead of taking this as a sign that I really need to up the polish (it’s debateable if this is actually the appropriate word, but I’ll use it) on the game, I filed it away as something to work on for v2 rather than something to action immediately to rectify the unpolished release.

Which brings me to the next point. Whilst the game was in development, I reached out to friends to play the game and to give me feedback. Some of this feedback was excellent and all of it was useful; however, friends and family can only take you so far. They’ll frequently tell you what you want to hear rather than what you need to hear. I reached out to my professional network’s games contacts *after* I had released the game on the Microsoft store rather than before, so that instead of being able to apply the incredibly helpful feedback which was provided prior to release or indeed, prior to the submission of the game to Microsoft, it was applied afterwards which meant that the initial first impression wasn’t as good as it should have been and that has, understandably, affected everything subsequently.

Get real feedback early and often, and listen to it!

Releasing

A sensible person who’s releasing software of any form, tries to build up the excitement around the product (there’s a reason why the recommendation for Steam is to create the page early and advertise it so you get wishlists ready for release) so that when it’s ready for sale, there’s a ready market out there which is hungry for the product.

Sadly, I was not sensible and I simply uploaded the game to the Microsoft store (and this was after they had removed the creators collection page on the store) and then had assumed that my job was done.

There are hundreds of games released every day, if you don’t shout about your game, why would anyone know about it?

The end game

Releasing the game and seeing [understandably] awful sales volumes felt like such a let down and so instead of going back and rectifying all of the mistakes immediately, I largely walked away from it. I told myself that ‘You’ve completed your 1st commercially available game, that’s amazing, so now you can take a break’. And it’s true, the overwhelming majority of people who say that they’re going to create a game get nowhere near creating even a few levels, let alone a whole game. However, I shouldn’t have rested on those laurels.

Merely finishing a game, even though that’s good, isn’t good enough

It took me creating the second game in the series (Spacegirl 2038) to go back to the original game and make the appropriate changes such as improved graphics, in-game sound track etc. These weren’t hard changes to make, but because they weren’t part of my initial skillset (I’m a coder by nature / nurture), I didn’t invest the appropriate amount of time in them.

Conclusion

Do I regret writing the game in the way that I did? No. I learned an awful lot through doing so, some good, some bad, but all of it useful. Could I have done things differently to have come to the same conclusions earlier and to have created a better product on day 1? Absolutely (see later for these lessons).

However, when I started the process, it was about creating a game that I wanted and could play with my friends and children. Using that scale, I was 100% successful, so I can’t complain too much.

Questions / lessons learned

Why are you writing the game?

This is really important. If you’re writing it because you want to learn stuff and have fun whilst you’re doing it, then use whatever technology stack you want, create whatever tools you want and have fun.

For me, it morphed halfway through into something that I thought that I could sell. However, instead of then doing the necessary steps to achieve that, I still approached it with a mindset that I creating something for myself which ‘was obviously going to sell’. This was wrong. Once you’ve made your decision (and it is genuinely your decision) as to why you’re doing it, then so long as you’re consistent with the steps you’re taking, then you’re doing the right thing.

Just use an engine

There’s a reason why the world uses an engine (Unity or whatever) and that’s because they do all of the boring work so that you don’t have to. The learning aspect for me makes it slightly more justifiable to write my own raw c++ / DX code, but in reality, there was probably nothing which I couldn’t have done quicker in the engines. It also makes porting the game to other platforms (Spacegirl and Spacegirl 2038) would be perfect on the mobile / handheld market, but because of coding choices made by me in the initial phase, doing ports is a lot more work than it otherwise would have been.

Pay for graphics and sound

When I started the project, I put scant effort into these. This was a mistake. If you think back to all of the games that you’ve played and enjoyed, sound and graphics have formed a huge part of that experience. This doesn’t mean that you need to have the world’s greatest art direction and music composed by Andreas Waldetoft (although obviously if Mr Waldetoft *wants* to compose music for me for the next sequel then I’d be more than delighted!), but you’re only fooling yourself if you ignore these.

In my defence, I wasn’t sure of where to look at the time. However, that was no real defence. I subsequently did a lot of looking and ended up finding all of my contacts on fiverr.com (affiliate link – gives us free credits if you sign up / purchase). There you can find freelancers who can help you with all of the above. Use them. Some of them have been absolutely amazing and they’ve really changed the quality of what we’ve created.

Some of the people we’ve used:

Get feedback continuously and listen to it

This doesn’t mean that you can please everyone all the time, but if someone takes the time to give you feedback, then it’s likely that a lot of other people have thought (or would think) similar things, but they can’t be bothered to tell you. Good feedback is like gold dust!

Tell people about your game

If your aim is to sell the game, then shout about the game, get them excited. if your aim is to get people to be aware of your game, get them excited! There are many other blog posts out there detailing how to do this, read them and do it.

Put a price on your time

This depends largely on why you’re doing the game. If you’re doing it for fun, then your time-value proposition will be different compared to if you’re trying to make a business out of it.

However, if you find a freelancer who can create top quality work for you for a few £100, then ask yourself, what’s a better use of your time? You creating rubbish graphics which’ll take you all week or you sending your requirements to the freelancers out there and them using their skills to create something in a fraction of the time to a higher quality all the while whilst you’re able to do the next part of your game?

I should have applied the same process on the business of creating the level designer… I could have finished off everything at least a year earlier if not before if I hadn’t gone down those rabbit holes.

Be proud

When you finish a game and release it, you’re already in the top 1% of people out there who have dreams but never follow them through to the conclusion. Doesn’t mean you’re going to be rich from it, but it does mean that you’ve got a lot to be proud of

So what next?

I’m going to write more games obviously. I’m still not going to use an engine though, but that’s because I’m already halfway through part 3 of the series. I suspect that for future games though, a copy of unity might well get dusted off!

Published
Categorised as blog

Leave a comment

Your email address will not be published.