Friday, 10 October 2014

So, I've Finished Building My Second Game

It began weeks ago with a moment of idle distraction.

If you read this blog, you might remember that I'd been playing around with Unity, building my procedural city and generally trying to be too ambitious. I had an idea that wasn't working or, if it was working, it was simply too big. These months of self-educating myself in the world of Unity had led me to realise that the difference between good and bad game design isn't a matter of coming up with 'content'. There are terrible games which have almost unlimited content (think any failed RPG) and then there are great games that have almost no content at all (think Minecraft). Of course, there are games which combine the two. I recently finished playing 'The Last of Us', which has a really strong game mechanic tied to the best world-building I think I've seen in a video game. The new 'Alien Isolation', by comparison, brilliantly realises the world of the first Alien movie, though the game mechanic is somewhat mundane. I guess it's why I'm so interested in Indie games, where the limitations of small teams mean that more effort is placed in game design. I guess it's something of Peter Molyneux's forte and why I always have enjoy listening to listen to him get enthusiastic about his next project, even when he sometimes over promises and under delivers, which as the tree he promised we'd be able to plant and watch grow in the original Fable...

In computer games, content is not always king and the fact was made more obvious when I recently spent a weekend watching all the presentations at the EGX in London. It wasn't 'Dragon Age', 'The Witcher' or even 'Alien Isolation' that excited me. It was seeing an early version of a small independent game called 'Heat Signature'. I think what excited me the most was that this was a game entirely built around a quite novel mechanic. It reinforced something I'd already realised about big game companies who equate next-generation gaming with their making their vast object database available in different guises. These mega budget game titles appear to be little more than a chance to wander through a huge repository of virtual mugs, cars, dustbins, street lights, barricades, walls, fraying sofas, industrial pipe work... Change a flag and recompile the code and Assassin's Creed becomes Watchdogs becomes the next Call of Duty.

But I digress...

So, I was tired of my ambition, the hours I was putting into something I hadn't probably thought through. I'd launched into creating something without actually thinking about the game design. I was doing something that I recognised in so many people who inhabit the Unity forums. They usually introduce themselves with a post that follows the same format:

Hi guys. I'm just starting out on creating my own game in Unity and I wonder how I'd go about creating a massive MMORPG.

An MMORPG, should you not be entirely immersed in this world, is a Massively Multiplayer Online Role-Playing Game. It's something I constantly notice as I read the Unity forums. So many people with very little programming experience wants to build the next Warcraft, which was built by a team of hundreds, each one an expert in their field.

What annoyed me was that I realised that I'd been making the same mistake. My procedural city looked okay but there was no real gameplay and, even if there was, there was no way I could fill that city myself. I was also generally tired and wanted to do something different. So I decided I'd spend an afternoon playing around with something new. I wanted to do something that wasn't ambitious and I'd be able to finish in a day, maybe two. I wasn't going to create anything that hadn't been seem before but I just wanted to create something small and playable.

So, I started making a really simple game; so simple, in fact, that anybody could play it. So simple, in fact, that I'd already played it a hundred times in different guises. However, none of the games I'd played were quite right so I thought I'd make my own version...

After a day, I had a prototype working and I thought it was finished. However, the next day, I stupidly carried on working on few hundred lines of code and my labours continued for a third and then a fourth day. Soon I'd been working on it for a week and I was thinking of new ways to tweak it. A week became two weeks but the game had become a bit of a prop. Life has been complicated because there had been countless visits with my sister to see a range of consultants or have various tests and scans... My small game project was perfect, since I could just code a little in between all the trips and distractions.

I started working on this game on the 28th August and today it's the 11th October. It's 1.31AM and, except for some writing and some final testing, the game is finished. It has okay graphics, mostly culled from drawings I did sitting in hospital waiting rooms. I even wrote a little title music, which doesn't sound too bad on the ear, mainly thanks to some amp effects I used on my old batter Fender. It looks quite good, played quite well, and has a few things that make it unique in the marketplace. I'm quietly pleased with it because it's really nothing different. It feels right in the middle of the mainstream, not at all like my books (all of which were clearly too left of centre to find a mass audience).

I'm now going to spend a couple of days trying to beat the game's levels and each one of its 50+ challenges. If I can do that and find it reasonably challenging, I'll publish it to the Google Store. If it gets downloaded 100 time (my ambitions are very humble), I'll begin to work on a version for Apple iOS, not least because I want to know how to do that.

Of course, there's a lot of work still to do. I've registered a domain for the game, hoping to give the operation a slightly more professional look than the reality of me sitting here, night after night, working to iron out bugs from the mere 7500 lines of code. I still need to build a website. I have to think about a price for the game or if I'm even going to charge. I've integrated Google ads into the game but I probably need to think of ways to make people want to upgrade from the free version, which isn't in my nature since I want to give everything away for free. I always want to go back and fix a local multiplayer element which I thought I had working until I discovered the frightening fact that computers are often non-deterministic and code does not always execute exactly the same way across a network of machines.

However, at this stage, I feel like I've accomplished something and I've only accomplished it because I inadvertently started out small and I've kept my ambitions limited. I think I've learned a valuable lesson. My next game, should there be another, will have a simple game mechanic and I won't write a single line of code until I've figure out what that mechanic will be.

In the meantime, I'm off to play my game which is satisfyingly easy to play but annoyingly hard to master.