In 2007 my friends in our boredom would play a lot of games on pen and paper during class. Mostly we’d play Four in a Row. It just so happened on one fateful day I decided to draw the grid in pen and use a pencil so I could rub out the pieces when we were done. When it’d made the rounds though and got handed back to me, it was handed in the wrong orientation, such that it looked like this:
Immediately I had an epiphany. I rubbed out all the pieces and began to fill in the rows (now columns) again from the bottom, and jotted something at the top of the grid.
This was what I called “Rotating Four in a Row” (original, I know). Every 3 turns, the whole grid would rotate 90į, and all the pieces would fall to the bottom again. It was insanely tactical, having to plan several turns ahead for when the whole grid falls.
Next I had another idea: The grid could be filled in with blocks. These blocks would hover in the middle of the grid, and pieces would stay on them, like platforms.
It worked extremely well, but gradually I kept thinking of more features, and it became full of so many potential rules that it was more suited to a video game.
Unfortunately, I had no idea how to code, and moreover I couldn’t imagine people playing four in a row on a desktop when they could play Unreal Tournament. Smartphones hadn’t really taken off yet, so it wasn’t really feasible as a portable game.
Years passed, and by the end of my first year of university in 2011, I’d all but forgotten the idea.
Until one day the PhD student who marked my maths tutorial sheets brought in his project.
It’s a weird polymer, and it squishes in an interesting way. It was created as a fluke when someone wanted lots of plastic discs to measure loads.
But immediately it reminded me of my game. I looked around the computer cluster that day, and there were a bunch of people using their Androids. I still didn’t know how to code (I thought it was black magic), but I committed it in my mind as “The Game I Will Make”. I was used to making games in Klik from a young age anyway, so I was used to the conditional thought process of programming.
Next semester I took Programming in C as a module, and at the end of the course I made this:
It was functional! And very customisable! But uh.. yeah, not very.. graphical.
I tried a bunch of engines that I won’t name, but every one of them seemed a bit too intense for an amateur like me.
Until a few months later I discovered Unity. And finally I was able to make my first build:
I called it Rotation Station.
Back then I was using MS Paint to make my assets, so they looked.. pretty abysmal.
At this point I watched an excellent video by Martin Jonasson and Petri Purho called “Juice it or lose it”. It covered the basics of using animation and sound to make your generic looking game look attractive.
After a couple of months of sprucing up the graphics and adding effects like this, level creation ended up looking like this:
Now, you might notice here, it doesn’t look much like the original concept at all! And that’s because I had my second epiphany (in 6 years) shortly into development.
I’d made my first build for phones, and I thought to myself, “Who actually sits and plays multiplayer with their friends on their phone?” (since I have no capability to host a server for online). I deemed it necessary to make a single player campaign. But I already had the tools I needed to make the whole game. There were 16 collectible powerups in the multiplayer. All of these could be used to strategically navigate levels!
I got to MS paint (the most advanced of all my tools) and started making levels. Here’s exactly how my file for the first few levels looks:
I drew grids in MS Paint, coloured them in various colours, and then I’d open up my script and add the levels in. Each object that can fall under gravity has a number 1000, like magnets (1000), blocks (1001), pits (1002), exits (1003), ice (1004). I inputted these in one by one. And we’re talking “grid[0,0] = 1001; grid[0,1] = 1001;” for a 8x8+ grid for 144 levels. Tedious, but it means I don’t have to load anything from external files. I found it easier to visualise and annotate levels in MS Paint than to create a level editor, plus it saved a tonne of time.
Then I’d balance them a bit. As you can see, there are some slight differences.
If you noticed as well, I added text above every level picture. This is because every level in the game, every level, is there to teach you a new way of thinking about the game that you hadn’t thought of before, and it’s all synoptic for later levels. However, I overestimated how intuitive this process was. I wanted to keep the game completely language free for foreign regions, but eventually I buckled.
I added the zeroth world, which is entirely basic tutorial levels.
There’s a hand you can toggle on and off, and it instructs you exactly what to do. There’s 18 of these that cover everything you need to get you started for the worlds 1-3.
By the time you reach worlds 4-6, you should have enough skill to work out things without text, and they’re pretty simple concepts that are taught at the beginning of every level.
There is a bad guy at the very top of this level. If you drop one of your blobs in, it will instantly be destroyed. An instant lesson in what this guy does. If you do nothing, and keep rotating the level, he will follow the purple line and get to the exit before you. You only have one powerup at your disposal, and it flips gravity upside down. From this, you can figure out that the only way forward is to kill the bad guy by flipping gravity so he flies into the hole in the corner.
Here’s another example. In this level, the blob has been dropped in where the purple line appears. Notice that block looks different. It’s a popup block. If you travel over one of those solid grid pieces highlighted in red, they pop up and block your path. So as soon as you enter the level, you instantly know how it works. And then there’s a second one, just in case you didn’t.
There’s one in the bottom left corner, so you know that they don’t pop up while you’re on them, only when you’ve moved off.
With all of these methods, the player can learn how to manipulate all the powerups and obstacles in the game. After the 18 tutorial worlds, there are 108 standard levels, and every 6 level a new powerup or obstacle is introduced, and you spend the next 6 levels mastering it.
This way the gameplay stays fresh constantly. It doesn’t rest on its laurels and it keeps pushing you until you think of the game in a whole new way. You’ll end up going back to the first worlds and laughing at how easy it is, and wondering how you could’ve possibly found it so difficult.
Now, at this point I had 126 levels, and I was just about to add achievements, when I was talking to someone at uni. He pointed out that another particularly big phone game uses bonus levels to reward the player for doing well. I decided to incorporate this by adding three bonus modes to the game. In every world, if you 3*, collect the pink orb and get to the exit, or kill your own blob in every single level, you’ll unlock a big bonus level that’s super difficult and tests everything you learnt in that world.
Here’s the blobslayer mode, where you have to kill all your own blobs. Now, each bonus level also has some interesting extra theme in it. The one here is counting down. Notice at the beginning the green blocks form a large digital “10”. If you simply follow the steps of changing the level with your powerups so that it reads 10 -> 9 -> 8 -> 6 -> 5 -> 3 -> 2 when it’s in its original orientation you will win the level (as achieved above).
But anyway, as my first game, it’s been a huge learning experience for me. I’ve learnt level design, C#, the ins and outs of Unity, great ways to script animation, how to make semi decent looking graphics, how to mathematically make GUIs, how to take your semi decent looking graphics and make them look pretty in action.
I’ve taken it on the road and met some lovely developers. And now I have something on the app store that has my name on it, and not only that: It’s a game that means a lot to me, and has followed me through the past 6 years. And I’m really happy with how it’s turned out.
But most of all, I’ve learnt: You need absolutely minimal coding experience to go and make a game, or art experience. Have an idea for a game? Go and make it. The only thing stopping you is your own self-doubt. Code isn’t black magic. And heck, even if it is, go and become a wizard. It’s the most rewarding pastime there is.
And there’s more info about it here.