Resources

In the world of game development (and indeed any sort of software development), resources make the world go around. Without other people’s blogs, YouTube tutorials and tools’ documentation pages, I’d still be bashing my head on the keyboard trying to get a cube to move in Unity. That’s where this page comes in; I hope to maintain a list of the links and books I’ve found most helpful for all aspects of game design. I’ll also link to where you can find all of the tools you might need for development. To start off, the list may resemble Swiss cheese, but I’ll eventually plug in all the holes. Your starting point is usually the official stuff, but I’ve provided links to third-party resources I’ve found useful.

All the links provided are colour-coded as follows:
Official tutorials, APIs and documentation
Third-party tutorials, books and documentation
Official tools, development kits and engines
Third-party tools, code and libraries
Official forums, jams and discussion threads
Third-party forums and discussion threads

Game Engines

Unity 5

Unity is my game engine of choice. That’s mostly because my computers have thus far been unable to run anything more demanding, but Unity gives developers and designers most of the tools needed to create anything they want. Also, 5 is bigger than 4, so it’s clearly better than Unreal Engine, right? Start the engine wars in the comments section, guys and gals.

  • The Unity Manual – The counterpart to the Unity Scripting API; the Manual deals with how to work with the Unity Editor in its entirety and details how its components work together. Also, the manual pages look really nice, so there’s that, too.

Unreal Engine 4

I don’t claim to have remotely enough experience with Unreal to know how to do anything with it, but it’s one of the most popular engines out there. It’s very good at making very pretty games, so if you fall more on the artistic side, then you’ll probably want to start here. It has many features that make it easier for non-programmers to get their games up and running, such as Blueprints, which replace writing code in an IDE with a visual node editor.

  • The Unreal Engine 4 Documentation – This is the Unreal Engine 4 Documentation. That’s about all I can say; I’ve not used it so please don’t blame me if it’s awful, or summons Satan himself in front of you.

Programming

This is very much my jam. Naturally, that means this section will be the most populated.

Unity (C#)

Since C# is far and away the most popular language used with Unity, I’m going to ignore JavaScript. It’s been a while since I’ve needed to find tutorials for programming, but I will try to find resources which aren’t out of date.

  • The Unity Scripting API – Your first port of call when the editor throws exceptions at an exceptional pace. Also available offline as it’s prepackaged with the engine.

Java

I pretty much only use Java due to Stockholm Syndrome I think, but it’s still a useful language to know, especially if your school/college/university crams it down your mouth hole.

  • Oracle Java 8 – If you’re going to be developing with Java, then select the JDK (Java Development Kit).
  • Java 8 API Documentation – I spend more time looking for third party sites that explain things better than Oracle’s docs do than most other languages, but they’re still useful in their own right.
  • Oracle Java Tutorials – These are a good starting point, but they’re a bit dry. It’s like reading a really drab textbook.
  • Eclipse IDE – One of the most popular IDEs (Integrated Development Environments) for Java. Be prepared for the odd problem here and there, but it’s solid enough to be your main IDE to work with Java. And for Java development, you’re better off with an IDE to handle the background stuff for you.

C++

Widely regarded as the ‘holy grail’ of game programming languages, you might want to pay attention to this section. I’m a newbie C++ programmer, but there are some resources I’ve found especially helpful.

  • The C++ Programming Language – The fourth edition of this book focuses on C++11, or ‘modern C++’, and glosses over all the old stuff since you won’t need it. It’s a great starting point, and it’s by Bjarne Stroustrup, the creator of C++. If there’s anyone who know’s what they’re talking about, it’s probably this dude. Throw money at this guy now. There are also exercises for this book, but they’re online to, and I quote, “save a few trees”. I’m listing it as official because it basically is.

OpenGL

I’m in the process of learning this for myself right now, but a helpful friend who (hopefully) knows more than me threw a few resources at me for this. Also, refer to the C++ section above because you might need it.

  • OpenGL Programming Guide Version 4.3 – To quote my friend, it’s “not actually good but it is sort of necessary”. If that’s not a clear endorsement, what is? He also tells me to get one for OpenGL 4.2 onward. This one’s for 4.3. So there we go.

Haskell

I hated Haskell with a passion when I first tried it. Now I don’t. It might be more Stockholm Syndrome, but whatever, functional programming has its quirks and you should at least try it out sometime. Because it’s different! You probably won’t be making games with it, but hey, at least it’s fresh and exciting.

  • Haskell site – This is where you go to download Haskell, and it also has an input box for you to type Haskell code in and get near-instant results on the web.
  • Hoogle – Useful for any Haskell developer, it allows you to search the Haskell API and standard libraries. They need to work on search engine optimisation though, since typing it into Google just returns searches for Google instead. It’s also oddly not prominent on the Haskell homepage despite being under the same domain.
  • Learn You a Haskell for Great Good! – Miran Lipovaca is a saint and I will challenge anyone who disagrees. This is a great programming book, and better yet, it’s online for free (although you can still buy a physical copy too). It assumes you’re jumping in from an imperative programming language. Humour permeates every page and it explains the concepts really well.

Design Patterns

These are important to consider, especially if your project is large and your code is basically a spaghetti bowl of classes all inheriting off random meatballs, glued together by a bolognese sauce of global variables. Just look at literally any game jam I’ve ever done; the resulting code is never pretty.

  • Design Patterns: Elements of Reusable Object-Oriented Software – This is the book of design patterns. Written by the ‘Gang of Four’ in 1994, it’s managed to stay surprisingly relevant. I’ve not read it, but I’ve been told by everyone ever that I should.
  • Game Programming Patterns – Based on the aforementioned godlike Design patterns book, but modernised and specialised towards game development. I’ve been reading through this one; it’s very well-written, has great examples and explores each design pattern thoroughly. Oh, and it’s also completely free online (although you can buy a physical copy too). As everyone knows, free is the best number.

Art and Design

So far with art I’ve been sorta winging it, so this section won’t be very long. However, I’m going to be focusing on my art skills in the near future, so hopefully this section gets fleshed out a bit.

3D Modelling

If you’re making a 3D game, you should probably be modelling things. Unless you’re making a game entirely out of cubes, then your game engine probably has those already.

  • Blender – You’ll be using this because it’s free, probably. But it’s great, because it’s free. There’s also a plethora of tutorials out there since it’s the ‘staple’ free modelling tool.

Music and Sound

If life were an RPG, I’d be at Level 0 in music. One day there may actually be something here.

General Game Design

There are some sources that don’t really focus on any particular aspect of game design; this is where you’ll find those.

  • Alan Zucconi’s blog – This guy is a genius. Go and binge-read everything he’s ever written. Ever.

Game Assets

Assets sometimes sort of have this stigma attached to them that using them is lazy, or they mean you don’t have the ability to do it yourself. I wholly disagree; at worst, they are helpful aids for prototyping an idea, and at best they can slot in nicely into a complete project, saving the programmer, designer or artist time with a net benefit for everybody involved. Obviously you should never become an asset-flipper who sells ready-made example projects with no change, but if you need something small that’s already available, why reinvent the wheel?

Unity Asset Store

If you’re using Unity, this is your one-stop shop for all manner of code, materials, models, game systems, terrains, sounds… I could go ad infinitum with this list. It’d be difficult to cherry-pick the best things from here, since the ‘best’ stuff is subjective based on your needs, but what you’re looking for is probably here. It’s a mix of official Unity Technologies content and user-created assets, but so much of it is high-quality that I couldn’t possibly link everything that’s good on the Store. I’ll link some stuff I think is important or canonically ‘the best’ for Unity developers though.

  • Unity Ads – If you’re a mobile developer, then you’ll probably want to use this. Rather than some ad services that just slap random ads for unrelated content on your game, Unity Ads only runs ads for other games (read: devs with a bigger budget than you). The integration is seamless and allows you to run regular ads as well as incentivised ads, so it’s well worth considering. There’s also a Unity Ads 2.0 Beta version.

My (awful) assets

Occasionally I create game assets as an example or for practice. I have a collection of them just sitting on the internet, so I figured, why not link them all here and let people use them? Maybe something in there is helpful for you.

  • Code – Sometimes I put up example scripts as part of my Game Design Tips series, or sometimes I add some for fun. Covers everything from random Unity scripts to shaders.
  • Models – As practice, I occasionally create models of things. They might not be of the quality required for a fully-fledged commercial game, but you might find them useful for a prototype.

Publicity and Feedback

Where do I go to get people to play my game? There are plenty of sites and forums out there that are great places to throw out your game and get feedback. Most people will give you constructive ideas and genuine criticism of your game, both of which will be invaluable for making your game the best it can be.

  • IndieDB – This is a site dedicated solely to allowing developers to share their game with the world. It’s got a great community feel to it and it’s my site of choice. I’ve shamelessly linked to my own profile, but it’s easy to navigate the site and set up an account of your own. Remember, if you want your game to be noticed, the best way to do that is play others’ games and give them the best feedback you can. Oh, and make a good game, obviously.

Game Jams and Community Meetups

One of the best ways to get your creativity flowing is to enter a game jam or show up at a game developer meeting and get chatting with other devs. There are plenty of them to go around, but I’m going to list the ones I participate in most often.

  • Ludum Dare – This is my favourite 48hr game jam/competition event. It’s one of the biggest worldwide game jams out there, so you’ll be hard-pressed not to get feedback on your work if you enter this. It’s great fun and I’d recommend it to anyone. A theme gets voted on beforehand, then you’re encouraged to make a game to that theme. After the deadline, games are voted on. If you’re looking for bragging rights, this is your jam! Unless you’re bad at game design, in which case, go live in a cave instead.
  • Global Game Jam – I’m fairly sure this one is the biggest. It’s also a lot of fun, just like Ludum Dare. Unlike Ludum Dare, though, this one doesn’t have a voting stage and the theme doesn’t get voted on beforehand either. But it’s no less fun!