My day-job is developing web applications, usually as part of a team. I've done it for a while. Long enough to notice that the project or company may change, but the work is often the same. I challenged myself to do something different. I made a game. For mobiles. Entirely on my own. Here's what happened.
The ChallengeI've never made a mobile game before. I didn't want it to show. I challenged myself to make some game that was:
- Not a direct clone of another idea.
- A decent piece of engineering that doesn't look like "my first game."
- Enjoyable by people people who are not my friends.
Inventing a Novel Game
It is quite easy to come up with an idea; it's harder to make it playable.
With an idea in my head, I moved on to the design..
I put on my designer hat and sat down for the first of several long nights with Photoshop.
|The evolution of the game graphics - the initial concept, the first version and the reworked final version.|
LibGDX handles many of the scenarios that a novice mobile developer wouldn't think of - such as pausing the game when a phone call is received. You can build a simple game within a couple of hours.
There are a few differences for a web developer embarking on game development. It is hard to implement a model-view pattern. Instead it's more typical to work with independent actors that have their own act() and draw() methods, which slot nicely into LibGDX's scene graph.
As a web developer, there's usually little concern about perturbing memory, either on the server or client. However, to keep a game running smoothly, you need to keep the memory stable - avoiding new instances in the render loop, and relying on object pools, or (gasp!) reusable static members.
You also have to learn that unlike the browser environment, OpenGL gives you very few visuals for free (except for that ubiquitous teapot) - everything else you have to make yourself. For the most part in a 2D game it is just a case of placing bitmaps on a screen. The water needed a custom OpenGL shader. Other effects; explosions and bubbles are produced with LibGDX's particle system.
Developing the essence of the game didn't take very long and I won't dwell on it here. I created a simple model to manage the pile of blocks, created my "actors" - blocks, water, explosion effects, and they came together relatively quickly. But the game wasn't finished..
Here's the result of many hours spent trawling the web for inspiration, toiling in Photoshop, then finally coding. It was a lot of work:
|There is a lot of work beyond the actual game screen. The buttons and controls are very loosely based on the IBM 1401 Digital Computer, first produced in 1959. The headings are based on Dymo embossed labels.|
Whereas a web programmer usually deals with nice snapshots of data at given instants, the time element inherent in animation creates many bugs of a different type. What happens when other blocks are falling or in the process of being destroyed? Although the total development to that point had taken about a month of evenings, it was easily another month before I was confident that everything had been fixed.
While my testers tested, I spent many enjoyable hours in GarageBand, preparing theme music for the game.
When a friend of mine told me that he had been playing Coolant Crisis! into the night I knew that something was going right. Time for a production release!
The First 100 UsersI built it. They didn't come.
Usually distribution is very much somebody else's problem. In this case, it was still all up to me.
I checked to see how my game ranked for certain searches. It was disheartening. It sucked. I wrote a good description, but came nowhere near the top 100 for the majority of queries I imagined players might request. Coolant Crisis! even ranked #15 in a search for its own name.
It came as no surprise then that organic growth did not materialise. I decided to jump-start the game with some paid promotion. I used AppBrain's pay-per-install advertising service and got a hundred users playing the game within a few days. But there was a problem...
The UX Fail.. there was a discrepancy between my loyal testers - who played to the end - and my unknown installers - who typically didn't get past the first level.
But why couldn't they pass Level 1 when it was so easy? Loyalty aside, my hunch was that they didn't understand the controls - which required double tapping. I had already unconsciously acknowledged the problem; the manual explained double tapping IN CAPS. Explaining why a message needed caps in an developer planning meeting would probably have resulted in a change of heart much sooner..
I remember the good days, when the games I bought came in a box, often with a manual, which I would read on the way home. Those days have passed - certainly for mobile apps. There is no interval between the shop and powering up the PC at home - the app is in your hands in seconds. People don't spend time reading your words.
I tried everything I could to make double-tapping ever more obvious. I made the user manual interactive, then added custom help message if no double-taps were detected. It didn't make any difference.
I realised why a bunch of mobile games use clunky up-down-left-right buttons - there's no room for doubt.
In the end I did the sensible thing and changed the control method completely. I eliminated double taps and added little markers indicating where blocks could be placed. People started to play past the first level.
As to how things will pan out now, it's too early to tell. A trickle of people are finding the game, and it has been played in unlikely places all around the world. In a couple of months I will post an update on what happened next in the life of Coolant Crisis.
Working in a team is usually great - and you can achieve so much more; yet there's supreme satisfaction in building something all of your own. There's lots to do; a solo indie developer has to wear a lot of different hats - designer, programmer, tester, composer, marketer, trilby. I learned a lot.
But is it finished? A personal labour of love is difficult to let go. There's always something to be improved. Maybe in a few months I'll have a new obsession, but for now I've got some new ideas to try out.
So did I meet any of my objectives? Judge for yourself:
Click here to download Coolant Crisis from the Google Play Store