Alex McGilvray

NekoRush Postmortem

May 5th, 2014

NekoRush was the first game I ever made that wasn’t free and released on a console manufacturer’s online store. The game was released on the Sony Playstation Mobile store in March 2014.

I wanted to do it to grow as a developer and learn about the non-hobbyist side of game development. The lessons I learned were profound indeed. They spanned across the realms of rendering, mobile devices, touch control schemes, international tax law, pegi & other parental rating systems, Q/A compliance and PR.

The game was made on an engine I made from scratch on top of the Playstation Mobile SDK which is essentially a wrapper for audio, input and graphics written in C#. The graphics layer is a bit odd in that it’s a wrapper for OpenGLES2 but it uses Cg for shaders rather than GLSL. Games and applications deploy to various Sony Playstation Mobile certified devices which include the xperia tablets, xperia phones, some other non-sony phones but most importantly the PSP Vita.

Obviously for any aspiring game developer who ever grew up with their hand attached to a gameboy would swoon at a chance to develop for a portable console with a dpad and button interface. It’s a dream come true for me.

I developed my own engine from scratch for two reasons. First I wasn’t a huge fan of the interface for Sony’s included 2D game engine. Second I wanted to learn the process of writing a rendering engine that has to run on multiple devices in a commercial setting. You can see the engine here. It’s not currently actively developed but if you are looking for a 2D library in the vein of Flixel but for Playstation mobile it’s worth a look. I’m currently focusing my game library development efforts to work on top of Monogame rather than PSM due to the vast platform support.

The graphics were done by my partner Akari and myself. We used GraphicsGale. I highly recommend it for pixel art. The music was done by my sister Marysia. I’m not sure exactly what her exact audio setup is but I think I can go as far as to say that the program Logic is involved in the process.

Here are some statistics for the project.

Development Time : 1 Year, very infrequently
Team Size : 3
Money Made : Approx 150$

If there’s anything I’ve omitted that you would like to suggest let me know and I’ll do what I can.

The Good Stuff

1) Amazing Team

Problem : I’m a lone coder working on my first commercial project. I need an artist and a musician but I have no money, I’m unproven and I’m working on a platform and target that is also unproven.

Solution : Pester your family for free work!

I’m lucky enough to have a partner who is a amazing artist and a sister who is an amazing musician. Akari is a traditional artist, she grew up drawing cartoons on paper and now is very involved in the nail art world. She had never done pixel art before but found some tutorials (also a note, if you are looking for pixel art tutorials in Japanese the term is “Dot art”) and picked it up quite quickly. Akari did all the cats, panda’s and pretty much anything interactive. I did all the buildings and trees (the bad stuff) so don’t blame her for that.

Akari actually really began to really engage with the project. I was worried at first that she was doing it as a favor for me but those fears began to subside when she volutarily began pulling her art and redoing it repeatedly. She really got into it. This really pushed me to keep working on it.

2) Learned a ton about the process of releasing a game commercially

I’ve always released my games for free. One of the reasons for this is it allows me more freedom to be experimental and simply drop support for a game if it’s not going my way. It also allows me to essentially eliminate any bureaucratic work related to finance, marketing and pegi ratings.

One of the reasons I made this game was because I wanted to experience the process of creating and releasing a game commercially. I learned a lot about registering for ratings, dealing with international markets and the process of submitting an application for review. It’s much less scary to me now and I can now develop commercial apps with a lot more confidence about the overall process.

3) Passed PSM compliance on the first try!

Outside of me forgetting to enable my scoreboard to the public I managed to have my game pass compliance and get published to the app store on the first try. It seemed from forum activity that many people were having issues. I was in a good position because I own both a Vita and a Xperia Z tablet so I was able to test on two major pieces of hardware before submission.

I’m also very paranoid about bugs and issues so I spent a LOT of time testing and trying to deal with potential issues before submission. This is both a good and a bad thing. See #3 of what went wrong why it could be a bad thing.

The Bad Stuff

1) OpenGL skill level was largely based on theory

My skill level with OpenGL when I started work on this game was limited to a series of small C++ and lwjgl applications I’d developed. All very small in scope. I understood the general principals of how the CPU and GPU work together as well how the modern OpenGL pipeline functions but that’s a far cry from authoring a complete application, let alone a complete application that’s going to be sold and must comply with the platform and stability requirements of PSM.

Because of this I made some naive mistakes when I wrote my rendering code. In the end I re-wrote it 3 times completely. This was an immensely educational experience where I learned some valuable lessons about how to write an efficient and robust renderer. I was also very lucky to have the help of some PSM community members, they helped me identify the inefficiencies in my rendering path and guide me in the right direction to writing a renderer that exceeded my performance requirements.

If you are interested in gaining some insight to the specific lessons I’ve learned I’ve written a series of tutorials on PSM and OpenGL, this one specifically deals with the efficiency issues I encountered

2) Immature PSM Framework

At the time I started development on NekoRush PSM was in beta. There were a few issues when new updates would come out I would get rendering anomalies which I would have to fix. The worst though was after PSM version 1 was released, a patch for 1.1 was released about 2 months later. After this version of PSM came out my rendering performance dropped from 60+ fps to under 10 fps. This is the reason I re-wrote my rendering code for the third time.

Ultimately my revised code was much better and I learned a lot from dealing with these issues but it’s still jarring to update a SDK and have your code suddenly have a profound drop in performance without any modification at all.

3) Too nervous to fire the gun and release the game

NekoRush was essentially done for months before I submitted it for release but fear about releasing my first title and wanting to keep it bug free consumed me. For many weeks I would touch the code for an hour or so testing and fixing bugs but not really getting a whole lot done. I did some limited user testing as well which was probably the most beneficial use of that time.

The paranoia about submitting a bug free release I think was too intense. I could have saved some time by submitting to PSM and seeing if anything comes back from quality assurance. That’s what they are there for, I should take advantage of that service.

Also if I had submitted the game earlier I would most likely have had time to develop and release another game and in turn learn even more about the game development process.

I have to thank my sister Marysia and Akari for pushing me to release the game. I might not have released it if it wasn’t for their support/prodding.