Edd made a game and then wrote this feature about it - Part I: Creation
Reader, you have three choices before you. You may first play the game in question before reading this feature and thus avoid the spoilers and have the unadulterated experience. Or perhaps you wish to first study this article and then enjoy, with a greater knowledge of what is before you. Or perhaps the wisest among you will choose the final option, steering clear of playing altogether. Ok, done? Here we go...
I’m a hypocrite. Casting judgement down upon game developers, criticising every flawed facet until they are sorry souls, weeping in the dirt. Yet, even as I make sweeping statements belying how utterly awful every-single-game is, I cannot help but hear a tiny voice in the back of my mind speaking to me. Why do I have the right to cast these critical stones? And that voice has a point. Sure, I can string a few words together, make a couple of people laugh, but these inane parlour tricks barely give me the right to inform others whether or not they should waste their valuable time on a product.
It’s the old adage that is often bandied about the world of music journalism: ‘music critics are just failed grumpy musicians’. Yet in the gaming world it’s possibly worse. Creating games generally requires more technical skill sets and commitment than stringing a few chords together, and very few critics have ever even tried their hand at game making. If we have no idea what it even requires to make a game, do we really have the right to criticise?
With this thought in mind that I embarked on (what turned out to be) an epic quest. A journey where I discovered the very limits of my mind, the farthest depths of my imagination and the most horrifying usage of hyperbole.
The mission: to create a game
It was that blank slate that turned out to be the very first hurdle in the process. How do you begin the process of making a game? It is like sitting down at a desk and being told to write. Only they forgot to give you a pen. Or a notepad. Or a language. Sure you could prick your finger and bleed all over the table, but that just leaves a sticky mess.
Fortunately the world is now at our (still bleeding) fingertips. All the information of humanity can be found if one gets tangled up in the web. The biggest problem is filtering that indescribably large amount of data down into one puny brain. I guess I have a slight advantage here, technically I am supposed to work with computers. I had already created a couple of our band websites on the browser gaming platform du jour Adobe Flash. If I expanded my knowledge here, chuck in a little ActionScript, perhaps I could wrangle out a game without too much painful learning. And no-one likes learning.
Yet I knew in my heart that diving head first into Flash development would be a waste. Flash, according to most people in the know, is a dying platform. Terrible management, security flaws and lack of innovation from Adobe combined with extremely aggressive (but all too common) strategies from Apple means that its future is bleak. iOS devices cannot play any of its content, and with their growing domination in technology it seems foolish to commit any resources to learning Flash. It would be rather like teaching yourself archery when everyone around you is equipping automatic rifles.
There are of course thousands of engines available for budding developers to learn, but the one that seems to be gathering the most momentum at present is Unity. It is highly versatile (in theory you could make anything from an Xbox to an iOS game), powerful (take for example beautiful games such as free (at least for the basic version). While its future is not assured, Unity looks like a good commitment for my time. And if it’s good enough for wonderful geometric puzzle adventure Thomas Was Alone, or crazy fast Swift☆Stitch then it’s good enough for me.
However having an engine doesn’t really help when you have no car to drive This was something I quickly realised as I stared at the blank screen before me. Making a game, with no concept, no time frame and no plan is ever going to end up with a resulting playable game. Knowing how my brain works without a schedule , we could all sit and wait until ice re-froze the earth, or the human race was wiped out by monkeys and I would still be sat tinkering away on my unfinished game, with monkeys picking mites from my brain.
Fortunately at this point it seemed someone up in the clouds (or just some clever sod on the web) wanted to lend me a hand. News of a competition, curated by one of my highest regarded casual games review sites: Jay Is Games, fell straight from the skies onto my lap(top). Three months was given to me to create a game. Three months to desperately learn how to make one in the first place. The theme: ‘Escape’.
It was time to knuckle down and face the hard grind. So I dug up some tutorials and smashed my head repeatedly against the desk until it understood it had to remember what it was being shown. If anyone finds themselves strangely in a similar position to this, I would thoroughly recommend the book Unity Game Development Essentials by Will Goldstone. Its simplified show and tell approach, combined with a host of useful assets and scripts make for very efficient learning. Bashing through this in a week or so, I suddenly felt like I had some game making skills. Incredibly basic game making skills built around constantly referring to pre-made scripts... but at least there was potential.
Now I just needed an idea. A concept to base my game around, and somehow link it to the theme ‘Escape’. The competition was being part hosted by legendary (in certain circles) browser gaming studio Pastel Studios, responsible for some of the most distinctive and exciting adventure and escape-the-room style games on the web. Excellent examples are the Submachine and Covert Front series. It seemed fairly obvious that the implication with the theme was to make similar ‘Escape the room’ style games. I should have been content with attempting to create something along those lines. Unfortunately the genre’s heavy reliance on visual artistic style and setting grated heavily against my complete and utter inability to create anything with any artistic value. Combine this with the fact that Unity’s prime function (though certainly not its limit) is to build 3D gaming worlds rather than standard static images, I decided it would be more interesting to create something a little... different.
One of Unity’s most impressive features is the inbuilt NVIDIA PhysX® engine. With very little effort, it allows anyone to create blocks that bounce around the screen, careering off each other and smash into solid walls. It is a wonderful playground for entertaining stunts, but it does not quite amount to a game in itself.
At this point, while I was flinging rubber blocks pointlessly around a box shaped room laughing inanely as they bounced with inexhaustible energy, someone pointed out to me that it would be more interesting if you could change the direction of gravity while playing. This bright spark of inspiration turned out to be both the genius idea that I needed and also the most infuriating curse that hung around my neck for the entire remainder of development.
A first-person physics puzzle game. Play to Unity’s strengths. In my head it all made sense and, in theory, would not require the ninja coding skills of other possibilities. In theory. Nothing ever quite works out like that. The first stumbling block I smashed my head against was attempting to use some of the standard scripts that come pre-loaded into Unity. Sensibly adding the standard FPS controller to the player meant that I had a very smooth and efficient moving system. Everything was going well until I tried to change the direction of gravity in the physics engine. All the blocks would fly past the player, but he would stand steady as if he lived in a separate physical world. Which, as it turns out, he kinda did. Perhaps unsuspecting of developers trying to bend the laws of gravity to their whim, the Unity coders decided that the standard controllers would obey only gravity on a single axis, unrelated to the physics engine. Which was useless for my purposes. Select standard FPS controller. Delete.
With the ever ticking hand of deadline doom swinging ever closer, I decided to code my own controller. Which ended up being about five lines long. This seemed rather strange given that the standard script seem to scroll on for eternity. I thought I must have missed something, but remarkably it worked. Perhaps worked is a bit of a strong word to use. The player was skidding along like a deranged ice-skater, glitching through walls and disappearing into space. But the important thing here, for prototyping purposes, is that it worked well enough.
So, I had a prototype and some basic levels. It seemed like a good idea to spend a week on holiday, just to make things more interesting. The sketchbook came with me and on return was filled with ridiculous puzzles and ideas, most of which never made it into the game. On return I bashed out some of the more complete ideas using a primitive tiling system. The tile textures were meant to be placeholders for more intricate designs later, yet there was something quite mystical about the primary coloured walls. From my perspective, they added to the mystery of the situation and made the puzzles more coherent. As I later found out, it also tore people in waves of confusion as they got completely lost navigating identical corridors.
It was all coming together. I had the puzzles I needed to make a complete game but it felt like it was missing something. It was just an oblique maze of colours and cubes. There was no purpose or real meaning to it. It felt empty. In the back of my mind I always had this idea that the maze was actually someone’s dream as they lay in a coma waiting to recover. The puzzles were their mind’s way of recovering from whatever tragedy had befallen them. Of course this was incredibly obtuse and no-one would have ever had reason to understand this, so I needed to add some form of description. Since my voice sounds like a west-country dribble and speech uses up valuable data (something that needs to be kept in check for browser based games), I resorted to text. Unfortunately no-one reads text, especially bizarre and apparently meaningless text.
Next came music and sound effects. Being a semi-professional musician I felt that this was an area that I could really score some extra points on. I had grand plans involving algorithmic tune generations and interactive sound effects. Sadly I was lacking time. Firing up my standard music editing suite Ableton Live, I quickly scored a simple piano introduction song. Oppressively dark, moody and atmospheric it fitted the feelings I had for the game... even if it didn’t fit the actual game particularly. I then used a mixture of synths and random effects to create all the other noises that you can hear in the game. Messing around with sound effects to create enchanting and mystical tones may perhaps be more interesting than writing scores and if anything this was the most enjoyable part of the process, and something I intend to investigate further.
The icing on the cake of a good game, in my opinion, are secrets. Those little gems that when a player discovers it feels like they have found something special, something unique. As a gamer from the nineties I was brought up on a diet of secrets. From the mysterious corridors of Dungeon Master to the ridiculous hidden touch plates in Rise Of The Triad. Secrets that the developer only expects a handful of people to discover are a wonderful addition to any game. Take recent indie hit Fez for example, there are rumours that there is one secret that has still yet to be found by any player. Imagine being the person who finds that final secret. In some ways it is the gaming equivalent of finding the holy grail.
So here’s a spoiler, I added in a whole host of secrets. Arguably I spent far too much time adding secrets causing degradation on other more important parts of the game, but this is something I wanted. These secrets unveil a whole separate aspect of the game, at least in my head. I even went so far as to create a whole extra level if any player found all the secrets.
So far no-one has.
There’s a stupid saying in software development that goes a little like this: “The first ninety percent of the code accounts for the first ninety percent of the development time. The remaining ten percent of the code accounts for the other ninety percent of the development time.” Its not particularly humorous but it is a general rule of thumb when it comes to creating a piece of software. Everything works, except a few small creases that take longer than the entire project to iron out. Sadly, with my self-imposed time limit, I was lacking that extra ninety percent of time.
For example I spent at least two days staring at one particular rotation problem. In my first prototype the player would simply rotate as soon as they changed gravity, so that the camera would always have the ‘floor’ at the bottom. It threw everything off balance and players could not aim while falling. Instead I changed the code to (semi-technical word warning) raycast in front of the player and rotate the player as they hit a surface. This half solved the problem, but unfortunately players still wildly rotated in confusing directions as they hit the ground. I set the player to rotate according to the angle of the plane they were landing on, which had an unfortunate side effect of spinning the camera in disorientating directions. This problem I never solved. Partly it is a conceptual issue since there could be many ways you could rotate a body minimising the confusion, but mostly it is just my ineptitude at programming and conceptualising 3D worlds. If there are any bright sparks reading who think they could help, by all means get in touch!
With submission just a few short days away, I hastily created a build that would be playable for testers so that I could get some feedback. Only I did not have any testers. Dragging in friends, housemates and one particularly valiant girlfriend who fought back the intense nausea caused by early builds, I managed to get some response. Overwhelmingly, and this is something that I will touch on far more in Part II: Analysis, everyone agreed that the whole thing was far too perplexing and obtuse. There is a lesson here for budding developers. Test as you go along, and not just with the same group of people. If you find out your game is a confusing mess days before release then you may not be too happy.
My last few ounces of strength were spent on giving it an emo name (“...As I Drift Away...”), bundling together a neat little on screen GUI, and a few simple diagrams that helped stave off the insanity. I had reached that point where staring at the game editor was driving me just as mad as the testers felt while playing. It was done. Dispatching a copy of the game to the competition, I sat back and sighed. The world is a more crazy place with that out there.
And that is that. When the competition winners are announced, Part II: Analysis will appear not far behind. I have certainly learned a lot. Not just about how to make a game technically, but also what it means to make a game. The process: where things can go horribly wrong, how virtually all games are delayed until months after their initial release dates and why things turn out like they do. Of course, making an indie game solo is a totally different world to mainstream game creation, but at least you get a glimpse.
So, can anyone make a game? That depends. The biggest requirement I have found throughout this process is dedication. Beyond being a designer, a coder, an artist, a modeller, an animator, a musician, a sound designer, a tester... an indie developer needs to stick with it. Even if fierce bugs appear that bite you in your sleep. Even as the tidal waves of feedback smash into your inbox, informing you of all the flaws and problems you missed. Even when any more staring at your game will make you eject the contents of your stomach over the screen. You just have to stick with it. And that really makes me appreciate the sheer effort developers put into creating their games.
But I’ll still give them a scathing review if their game sucks.
If any of you intrepid readers still fancy facing the sticky nauseating mess that is ...As I Drift Away... the game will appear if you click this link. It obviously requires the Unity player, which you can get here. Feel free to vote and leave horrendous comments on the competition page. And if anyone manages to reach the secret ending I am still offering a fantastic prize!