So you want to build a game, huh?
A little over a year ago I made my first game — Tappy Toyts. The reasons behind the game? Well, I’d spent countless hours playing games and thought it was about damn time I made one myself. It was by no means a success but it did rack up over 300 downloads across iOS and Android. For me, that wasn’t bad, seeing as it was mainly for funsies. Now, more recently, I’ve released my 2nd game — Mushrun. Again, it’s nothing more than your typical mobile game but I’m bloody pleased with it.
“What’s the deal with all this trumpet blowing?” I hear you yell. Well, prior to releasing these two games I’d never had any experience in game development, so ‘Uncle Two-mediocre-mobile-games’ is here to say “You too can build a game!”. I’m basically the Rob Schneider in early Adam Sandler films for people who want to start building games.
Who’s this for?
Anyone who wants to make a game but doesn’t know where to start.
What is this?
What it isn’t is a tutorial on how to make a game. It’s more of a collection of resources and tips and tricks that I’ve picked up whilst building my games, alongside general “you can do this!” geeing up.
First things first, obviously. I don’t consider myself a game developer. The games I’ve made are really quite basic and I’m by no means in the same league as proper game devs. What I am, instead, is someone who loves ‘the video games’ and wanted to try and make one myself. Fortunately, we’re in a time where the technology is so accessible that anyone can build a game, so that’s what I did, and that’s what you can do too!
There are a lot of options when it comes to building a game. You can code from scratch, use a library or you can use a game engine. I went for the latter because I don’t have teh 1337 skillz and the two main options were Unreal Engine or Unity. Both are now free to use, with Unreal taking a cut of any money made once your game is live and Unity requiring a license after you earn over $100k (or if you want some extra features).
In the end, I chose Unity. The reasons for choosing Unity? Mainly because I knew someone who released a game, called Bloater, around the time I wanted to start building Tappy Toyts and that was built in Unity. Now that I’ve spent a good couple of years with Unity (on and off) I genuinely cannot fault it.
If you’re looking to jump into developing your own game and have no prior experience I whole-heartedly recommend using Unity. The engine is really easy to use, the documentation is incredibly vast and the learning materials are superb (more on those later). You’ll still need a little technical know-how but this can all be picked up relatively easily.
Unity tends to get a bad rap when it comes to quality of games. Ignore it. True, I don’t fully understand various techie terms and deep computing voodoo but I’ll just leave a couple of links to games built in Unity and let you decide Ori and the Blind Forest, Yooka-Laylee, Cities Skylines, Superhot, to name a few.
Are you still here? Goodo! The next step is learning how to build a game in your engine of choice. As I said previously, the rest of this post is focused on Unity, but you may just learn something even if you’re going with a different option. Probably.
Back to school!
If you’re anything like me you’d like to dive in head-first and start building something right away — this is where the Unity tutorials really shine. In the beginning, I wouldn’t recommend starting on your game right away. Instead, I’d focus on learning about the engine and how to do basic things in it. You’ll quickly be moving onto more exciting tutorials but an overall understanding of the system is a must. I’ll also stress two points here.
- It’s not going to be a massively quick process. I spent two or three months, between working a full-time job, watching tutorials to get a good understanding of Unity. To be fair, that’s ridiculously quick in comparison to learning game development outside of an engine, but it won’t be something you’ll learn over the weekend.
- You will need to code. When I initially started looking into Unity I saw a few posts about being able to develop games without writing any code. Unfortunately, this isn’t the case but don’t let that put you off. The tutorials and documentation are really easy to follow.
Earlier I mentioned that Unity have a bunch of tutorials on game development. I didn’t lie, here is the proof! The newly laid out learning site walks you through creating your very own game, allowing you to jump in at beginner, intermediate or pro level.
As great as the Unity tutorials are, I also purchased a book called Unity in Action. It’s a bloody good book which teaches you the core principles of Unity in the form of mini game projects. You start by building an FPS, moving through to 2d puzzle games, third-person adventures and ending with an RPG. The example games are basic but encourage you to continue working on them. It’s well worth a read and helped me a helluva lot
I know it’s easy for me to sit here, directing you to follow tutorials, read books etc. in a vain attempt at coming across as helping you, but I promise that once you’ve done a few of these you’ll be well equipped to start working on your own game
How long do you need to learn before you start making your game? As scapegoaty as it sounds, you’ll know when you start feeling comfortable. And at the end of the day, even if you run into any problems, the internet will still be there to answer any questions you may have, unless something goes terribly wrong with the World.
Game dev story
Now it’s the exciting stage. You’ve got all the knowledge to start working on your game. You’ll probably have an idea for a game at this stage or maybe you don’t. Either way, the best thing to do at the start is make a plan. Plan everything. Sketch levels down in a notepad. Think about things like scoring systems, unlockables, level design, gameplay features. Basically plan everything you can think of.
When I started making Tappy Toyts it was still very much a learning process but halfway through development I realised the game needed something else. It was at that point I had to start shoehorning extra bits into a nearly finished game. It was a massive ball ache. The oversight was from my lack of patience, and want to jump straight in, so heed my words. Plan. Plan. Plan. You’re never going to plan for all eventualities and the game will naturally evolve over time, but the more you know about your game before starting developing it will help no end.
Building a game isn’t just about the code behind it, you’re going to need artwork, sound effects, music, models, basically a lot of other stuff. Chances are your budget is tight, especially if this is a hobby build, so here are some great resources that won’t cost you a penny (or very little).
GIMP is a great tool for creating bits of 2D artwork. It’s completely free and offers a similar toolset to Adobe’s Photoshop. It’s not quite as advanced but will certainly help you create UI elements or sprite artwork.
Blender is a free piece of software used for creating 3D models. The great thing it is that you can export your models from Blender and import them directly into Unity. You can also create animations in Blender and import these across too. It’s also possible to export frames of animations as flat images and then use them to create a sprite sheets. This is how I did the animations for the turtles in Tappy Toyts.
GarageBand (Mac only) is a handy app that can be installed on any Apple device (except the watches). With GarageBand you can easily create pieces of music for your game and import them into Unity. I even used GarageBand for some sound effects on Tappy Toyts by creating an incredibly short song with a couple of notes. Probably a bit overkill tbf.
If you don’t fancy the over complicated method of creating sound effects in GarageBand you can turn to freesound.org instead. Freesound has a bunch of sound effects that can be used in any commercial product (check the license before using them though!)
Art assets can arguably be one of the trickiest items to source, particularly good looking ones anyway. Unity does have a built-in asset store where you can purchase, or download for free, various bits of code, models, plugins etc. It’s the go-to place when looking for extras for your games but there is another site that is well worth looking at — Kenney.nl
Kenney has a large amount of free artwork available on his site, alongside some premium bits and pieces. The artwork has a unique style but can be purposed to any type of game. Even if you’re using these as a placeholder, whilst you build your overall art style, they’ll help you to get the ball rolling on your game.
I don’t recommend that you have a breakdown. Please don’t do that. Instead, break down the project into manageable chunks. It might seem obvious but if you approach your game as a whole it could be quite daunting, so tackle each bit at a time.
In Mushrun you need to collect coins, which allow you to unlock new caps for your character. I used the process of breaking down for this, somewhat simple, task and tackled each bit separately. First I worked on setting up a trigger for when the player interacts with the coin. That then opened up the ability to play sound effects when the coins are collected and updating the HUD counter. Then I could focus on how the coins were stored, eventually moving onto how to spend them. You get the idea.
If you apply this process to your game you’ll not only find it easier to develop, you’ll also keep yourself motivated as each application is a little victory.
Achievements and Leaderboards for mobile
One problem I faced when integrating achievements and leaderboards in both games was utilising the same bits of code for both Android and iOS. The great thing about Unity is that you can have one project and publish this on multiple platforms so I didn’t want any content separation.
When you’re at the stage of creating your achievements I’d recommend creating them in the Play Developer Console (Android) first. When achievements and leaderboards are created for Android they’re automatically assigned an ID. When you create achievements on iOS, however, you need to manually enter an ID. Because of this, it makes sense to create them in Android first and then use the auto-generated IDs when setting them up on iOS. This means that when you come to unlocking them in-game, you’ll only need to reference the one ID.
Next you’ll need to install a third-party plugin for Unity — Play Game Services for Unity. If you follow the instructions on this page you’ll be able to then use the global Social.API in Unity to unlock achievements, post to leaderboards etc. to both platforms with the same bit of code. Really handy.
Hopefully you’ve found something of use in this post, or even been motivated to start your project. If you have any questions feel free to hit me up on Twitter. Go forth and make some games, you beautiful people. And one last thing — enjoy yourself!