W/S/A/D – Move
R – Restart Level
Note: there are only 5 levels which loop indefinitely at the moment.
I decided to create a short game using Unity for my self directed project. Unity is a game engine which provides a robust set of tools for game development with a relatively low barrier for entry in terms of knowledge required to make a simple game. There is also a large set of tutorials made available by the developers of Unity which makes learning the software quite easy.
Before I really started creating the game itself, I watched several game design videos and talks by Jonathan Blow, creator of The Witness. He gives some interesting insights into how he designs puzzle games; for example in The Witness there are no tutorials except for the design of the puzzles themselves. In some of the earlier puzzles the player has only a few possible ways of solving the puzzle, which (hopefully) leads them to understand the “language” of the game so they can go on to do more complex puzzles. I tried to do something similar with my game. In the first level, the player can only move in one direction, towards the goal, while next level introduces a movable block which the player can push. The next levels use these blocks as puzzle pieces, assuming the player has learned how they work.
I had started messing around with Unity during the summer, but didn’t get very far before I got lost interest. However, between the little that I remembered from half a year ago and my previous experience with coding I was able to create the game with minimal use of the tutorials. I learned a large amount of what I needed from experimenting with with the software, and correcting the many mistakes I made using Google.
In terms of making the actual game, making a puzzle game like this in hindsight was actually harder than something more “flashy” like a shooter because of the way that Unity is set up. There are tools built in that make player movement and shooting and such quite easy but, unless there’s some easier way I couldn’t find by Googling, I had to create my own system for managing the interactions between the various game pieces in the way that I needed, which ended up taking longer than I expected (but hey what’s new).
Once I had it in place though, working on the game became much easier. For the majority of the time I was working on the project, I had been working in 2D but I figured it would be nicer to play in 3D. Thanks to the way I had set the game up I just had to change a few options and everything just worked. This system makes adding new mechanics to the game relatively easy, but the game itself is fairly bare bones at the moment. So even though I’m handing the game in now I will probably continue to add new puzzles for a while.