First Game Post Mortem
After putting it off again and again, I’ve finally published my first Android app. Basic Pairs is live in the Google Play Store. This post is my first game post mortem where I point out some of the things I’ve learned. Hopefully my future game post mortem posts won’t contain the same mistakes.
What Went Well
Starting Very Simple
I’m fairly sure I could’ve made a more complex game, but I’m glad that I didn’t. Why?
- This was my first game.
- It was the first time I used React Native.
- I have never published an app before.
That meant I didn’t need to put too much thought into the game side of things. Figuring out how to structure my codebase, http://myappincome.co.uk/sharing-code-react-js-react-native/, was hard enough. I might have given up if the game was hard too.
It’s not to say it was an easy game to write. I think it was just far enough out of my comfort zone that it could be classed as deliberate practice.
I really enjoy working with React Native. The developer experience is excellent. Hitting save in your editor and then seeing the emulator refresh due to hot reloading is awesome.
Christoph Michel has recently released a much more complex app and blogged about his experience at http://cmichel.io/lessons-from-building-first-react-native-app/. So I’m not expected plain sailing in the future, but so far I’m sold. BTW, Christoph is churning out some fantastic stuff, so I highly recommend you check his blog out.
Making the game “pretty”
It’s nothing to be too excited about, but I’m glad I managed to turn the app from this:
Credit goes to http://opengameart.org/content/country-field and http://opengameart.org/content/monsters-2d-pack-no-2 for the images. Apparently I don’t need to do that, but credit where it’s due.
What Went Wrong
setInterval hits performance badly
I wanted to display a timer of how long each level was taking. I made it work with a
setInterval of 300 milliseconds. That ran fine in the emulator, but when I put it on my phone, especially on the level with 8 pairs, it ground to a halt. The interface was unusable.
I couldn’t get to the bottom of that, so took the feature out.
Not porting features instantly
The android version looks a lot nicer than the web app. Instead of ploughing on with the android app, I should’ve ported each feature to the other version as soon as it was finished. If I ever get a Mac and have three versions to maintain, I’m going to struggle to keep them in sync without more discipline.
Updating Versions Mid Project
I updated react native as soon as a new version came out. Rather than falling backwards when it failed, I ploughed on and ended up losing too many hours.
There was no need for me to upgrade, so I won’t be doing that again in a hurry.
Fear and Procrastination
I had built-up the process of releasing the app so much, I was virtually terrified to do it. The game was in a releasable state for at least 2 weeks before I finally hit “published”. I was working on virtually anything else to avoid hitting publish.
Now it’s done, off course a massive weight is off my mind and it’s incredibly painless.
I think it boils down to the fact that I was scared Google were going to reject it. Fear of failure 🙁
My first ever app, which happens to be a game is released. I’ll be looking back at this first game post mortem and reminding myself not to be scared.
If there’s any other information you would like to know, please leave a comment. Or, catch me on on twitter.