My Indie Gamedev Retrospective

As I work through the conceptualisation phase of my second serious game development project, I find myself looking back on my first release, how I ended up at this moment in my life, and how I can improve the outcome.

The beginning

I got my first “real” computer back in the mid 80’s. It was a state of the art Amstrad CPC, replete with Basic 1.0 built into the terminal.

At first I enjoyed playing the games that my parents had purchased along with the machine, and I enjoyed the demos on the system disc that was included. I read the inch-thick manual from cover to cover.

I found this on google image search, but it’s pretty much how my manual looked in the end.

The manual included several games that you could “type in”, which was how at age 7 or 8 that I got my start in programming.

My earlier games were just iterations and tweaks of things I copied out of the manual and various magazines that I begged my parents to buy every time we entered a newsagent.

The manual taught me how to reprogram character maps using binary notation, and a helpful magazine reader saw my letter to the editor and sent me discs filled with examples of collision detection.

I started to develop ideas of my own, at one point writing a fairly faithful clone of the top down racer “Indy 500” from the late 70s.

The funny thing is, I never owned this game. But somehow, ended up making a similar clone when I was 10 or 11 years old on a CPC.

When we got our first IBM PC, our good old 486 DX2–66, I was blown away by games like Epic Pinball, Star Control 2, Wolfenstein, Doom, Commander Keen… The visuals and the sound were lightyears ahead of what I’d known before. Never happy to just play the games, I always wanted to figure out how they did it, and try and build something great myself one day.

As I was making these toy games, none of which ever saw the light of day, I wanted to recreate the art and sounds I imagined as well. I taught myself how to do pixel art, and learned to write music in mod trackers, which games of the time used extensively to great effect. I still have some of my teenage-years mod music floating around out there, but… well let’s just move on.

I quickly hit a limit on what could be done with the built-in Qbasic interpreter, and eventually taught myself Pascal (using inline assembly to speed up VGA routines), then C++ (I used Allegro a lot in the 90’s and ultimately toyed with Ogre a bit in the mid 00s), but finding myself an adult in the world figured I needed money, and after a few years bouncing from one unskilled labouring job to the next, I lucked into getting paid to build websites in PHP.

Once I started working in the web industry, I never stopped wanting to build games, but being so busy with work, coupled with the arrival into the world of two beautiful daughters and my responsibilities to them, game development always found its way onto the backburner.

The inspiration

Even when time became scarce, I held onto music as my creative outlet. Over a period of ten years I ended up with a good collection of tracks that had a decent arcade-game feel to them.

One night I was listening to some of this music, while doodling a little pixel space ship, and I remembered one of those old type-ins from the 90s. The game was simple, you just had to dodge “stars” represented as asterisks, and you controlled a 45 degree line that would extend upwards until you pressed the space bar, which would flip its direction to 45 degrees down.

2D Star Dodge

It was such a simple mechanic, but my friends and I used to play it for hours, seeing who could get the furthest as both the speed and density of the “stars” increased, playing until long after even the most insomniac adults of the house gave up on their “final warnings, it’s time to sleep now!”

I realised that all these years of attempting to design and build a game, my ideas were unrealistic for my circumstances; they were too complex.

In that moment, I had an idea that seemed simple, easy to build, and I already had 90% of the art assets already.

So I set to work building it right there and then.

The development

Having being in the web industry for nearly 10 years by that point, my initial forays were web browser versions of the concept. I threw together my assets and coded up the game loop.

It worked, kind of.

But it wasn’t pixel perfect, performance was patchy, animations were janky, and getting the game to work cross platform was a nightmare. So I decided I’d make the game as a standalone mobile application.

I started building it again for Android. Performance was much better, but I was dealing with low-level issues like collision detection in shaders using mask layers, how to calculate Newtonian physics when asteroids collided at odd angles, and low level optimisation to tame Java’s garbage collector.

I demoed the prototypes to some co-workers, and I realised quickly that I didn’t have the time to implement their feedback. Building the game engine from scratch was just too time-intensive given the constraints that I had.

This is when it hit me in the face that I didn’t want to build a game engine, I just wanted to build a game.

I looked at various game engines and settled on Unity, simply because I was able to install it, throw some assets in, and had my game running on my android within about 2 hours.

From there, it was all about refining the UI, adding new elements like powerups, different asteroid types, achievements, missions, scoring mechanics, and feedback from co-workers and friends.

By the end of it all, I had a fast, responsive game, and the feedback was generally positive and encouraging.

The launch

This will be a familiar story for more seasoned businesspeople out there.

I set up Apple and Android storefronts, and uploaded the release packages.

Then I released the game and sat back in my chair, thinking, “what now?”

There was no fanfare, no explosion of interest.

The world yawned, but not because they noticed anything I had done.

For about a day it still showed up in the “New Games” list on the stores, then disappeared. I did get a couple of good reviews, and then nothing for a week or two.

I’d been so taken by the build process itself, the tweaking and the endless hours of playtesting, that I hadn’t really put much thought into how people would actually find out about the game.

The shilling

To be fair to myself, the reason I wrote the game was to scratch an itch that had been there since childhood.

I was proud to have launched a complete product that I could point to and say “I did it!”

However, I caught myself thinking about all the time I’d spent, and realised I had a product that might be able to at least pay for itself. Not in the least bit encouraged by the Flappy Bird craze, I figured, if they could do it, why couldn’t I?

Some kind of “success bug” caught me, and I suddenly had the urge to promote the game and get as many people playing as possible.

I contacted some old game reviewer contacts and somehow managed to get a rating in Hyper. A 6/10 rating from a professional reviewer in a printed mag might not seem an endorsement, but I was PUBLISHED!

I also edited and uploaded some gameplay videos and shared them around the net, mainly on reddit’s gaming communities, mostly to disapproval and “take your self promotion crap elsewhere”

The local game con was coming up, so I booked a booth, and built a windows version of the game, adding gamepad controls that I added finishing touches to the morning of the event.

During the day, hundreds of people came by to play. I had a pen and paper leaderboard, plenty of kids and adults alike came back to try and regain their position on the top of the leader board, and I interviewed with a bunch of people, one of which is still online today.

Even if the game was doomed to obscurity, I had an absolute blast that day, and had huge plans to be back, one day.

I ran a competition and designed and printed a shirt for the winner, who gratefully received the gift. That part was fun, as players were genuinely interested in competing for the prize, even if it was a poorly designed CafePress print with a hastily drawn piece of art based on one of the game’s pixel ships.

In summary, the post-launch promotion was great fun, but it was totally ad-hoc and unplanned. I had no idea how to market and launch a product to an audience already inundated with endless shovelware crap, and no real way of differentiating how what I had made was in any way different or superior.

I really had only myself to blame for that.

The final score

Ultimately I ended up with something around 2000 installs across all stores, and my google rating was an average of 4.3 stars.

I must have spent over $2000 promoting the game, including printing shirts, hiring the slot at the con and buying extra controllers, AdSense, Reddit and Facebook promotions.

Thankfully, development, art, and music costs were literally zero, except for opportunity cost for my time, which I was happy to invest in this passion project.

I didn’t make any money to speak of from ad revenue, and though I did try and sell the game on Amazon as an experiment, it largely failed and I think users felt conned that they had to pay when it was free elsewhere.

In summary, from a personal perspective, I felt very proud to have handcrafted something, however simple, and had a small slice of humanity get joy from something I had made.

Even though I didn’t make any money, it was worth it — but I am glad I had a fully paid job to keep the lights on.

The lessons

If I wanted to measure success in terms of ratings, then I think I did a pretty good job. The game was simple and reasonably intuitive for beginners, and the mechanics were deep enough to present a real challenge to more hardcore players.

Even years after launch, I know that my game is still installed on around 80 people’s devices, and from time to time I’ll see the global high score change.

Technically, the game worked, and the very few bugs that were reported were related to a specific device, and I had these patched within a couple of days, which usually flipped a negative review to a positive review.

So from the build angle, I intend to always stay true to creating a fun and engaging game, that doesn’t break on random devices, and to always listen to feedback and fix issues quickly.

In terms of financial success, although that wasn’t the goal at the time, the game was a failure. Not only did I invest a couple of grand of my own money for no financial return, I invested hundreds of hours on evenings and weekends for just over a year, not including the time I’d already spent scoring music prior to starting development.

I’d never engaged with gaming enthusiasts in my particular niche to ask them what they would like to see in a game I was building. I’d never posted progress pictures or developer logs. This meant that when I launched, I had no pre-existing audience who were ready and waiting for the game to come out.

So my biggest lesson is to be more organised, to prepare for launch years in advance, and to start early to engage with potential audiences, even as early as the design concept phases.

Counterpoint

From childhood I had a dream to develop a game other people would play. I achieved that dream by releasing Space Strafer. All of the art, music, and code was mine.

On the night I decided to start coding, had future me come and whispered in my ear that the game might be good but would otherwise be a market failure, I’d lose thousands of dollars, and countless nights of sleep, would I have still made it? Maybe not.

So I don’t regret the path taken, it was very picturesque, I had heaps of fun, and I took plenty of notes along the way.

In conclusion

Given my history, I am always going to be a technical and creative person. Game design and development is the natural intersection of the two apparently opposed career paths.

I also think with the passage of time that I am stronger now, having faced and overcome many personal and professional challenges in life and work. I’m much more prepared for a greater challenge today than I was five years ago.

It is my hope as I take the first steps into my next project that I can look back on the lessons of history, and do a better job this time.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store