As I said before, we’re in the Golden Age of Independent Game Development. Anyone who says otherwise can meet me in the parking lot.
Part of the reason for this is that it’s never been easier to learn how to make games outside of a school setting. There is a riotous abundance of free resources for people who want to learn to make games. One of the best resources has been the Unity Tutorials provided free-of-charge, like the engine itself, on the Unity website.
DISCLAIMER: I am not a Unity shill, I am not getting paid by Unity to tell you this. I’m telling you this because I believe in my black, black heart that Unity is the best tool for independent game creators that exists.
But this is supposed to be an unbiased look at the free tools employed by Game Developers all over the world. Here are a few of them, and how to get started using them.
Version Control Software
Obviously the bread and butter of your Game Development career is going to be your game engine of choice, whether that’s Unity, or Unreal Engine, or some homebrewed monstrosity written in C++. However, at some point you’re going to need to bring other people on to your project. Version Control Software is the mechanism by which multiple people can contribute to the same project without causing conflicts.
One of the hardest things about video games for newcomers is that they generally require code. This code is usually C++, C#, or any variety of scripting languages that have been created for specific uses. What all of these programming languages have in common is that they rely on Version Control software when multiple collaborators want to contribute to the same code base.
The basic concept of version control is this: You have a version of the code base on your computer. When you make modifications to it, it begins to differ from the base version of that code that is stored on a server such as GitHub or BitBucket. Before the changes you’ve made can reach the main code base, they need to be committed.
Most version control software will show you the ways in which your local version (on your computer) differs from the master version stored on the server. When you are confident that your local version is ready to set in stone (it doesn’t crash and the changes you’ve made are mostly safe to send to the rest of your team), you can commit them. When you commit changes to your repository, the master version takes in those changes so that the rest of your team can synchronize them to their own local versions build on them with their own changes.
The long story short is, a repository keeps track of the version of your game that is the most stable, rather than taking in every change you make when you hit Ctrl+S like your essay in Microsoft Word. It allows you to make changes to the game that won’t affect what your teammates are working on until you’re absolutely sure that those changes are correct and ready to be added into the main code base.
Version Control Clients
My personal preference for version control software on any platform is Git. The reason for this is the GitHub app.
GitHub for Mac/Windows is the easiest client software I’ve found to interact with repositories. I’ve seen people who never thought of themselves as “technical people” pick it up and use it with little help or hesitation. There are two reasons for this:
- The Sync Metaphor: GitHub shows your local changes as unsynced changes. You still “commit” your unsynced changes when they’re ready, but instead of pushing/pulling, the GitHub app does a Sync which I’ve found to be much more intuitive than the push/pull metaphor that the command line tool requires. Hardcore code nerds will tell you that you should use the command line, but when you’re first starting out, the GitHub app is much less daunting.
- Branching: Branches are so easy to create on the GitHub app that you’ll make branches even if you don’t need to. Which is good, especially if you’re using GitHub as both your repository provider and your Git client. Branches are very important to grok if you’re planning on working as part of a team.
And of course, the GitHub client, like GitHub itself, is free to use.
Version Control Providers
The GitHub client is a way for your computer to interact with repositories. A Git repository is a directory of files (normally containing code but could contain other things) which can be modified or accessed using the Git protocol. There are two excellent resources for storing your Git repository online (which is necessary for team projects). They both offer free and paid versions, though their paid offerings are quite different.
I’ve been name dropping GitHub a lot, and there’s a good reason for that. Besides the fact that GitHub seamlessly integrates with the GitHub app (as you’d expect) it also provides a lot of functionality you would normally have to pay for, specifically, a bug tracker and a wiki for your project.
The catch with the free version of GitHub is that you can only host public repositories. That means everything you put on a free GitHub repository is technically Open Source. If you’re cool with that, everything else is unlimited, including storage and bandwidth. You also get the integrated bug tracker and the wiki for free, as well as unlimited collaborators.
It’s a fact that a free GitHub repository is by definition a public repository. There are two workarounds for this. The first is the obvious one: You pay some money. $7 a month gets you 5 private repositories, with unlimited contributors. The other is to be a student. If you’re a student, you can register for the GitHub Student Developer Pack which comes with the same thing you get with a $7 a month subscription, ie. 5 private repositories with all the bells and whistles. Oh look, the GitHub Student Pack also comes with a year-long subscription to Unreal Engine 4. More on that below.
Atlassian BitBucket is a main competitor to GitHub. In terms of free functionality, it’s close. It doesn’t offer a bug tracker or a wiki for free, nor does it offer unlimited collaborators. But what it does offer is unlimited private repositories. The catch is, without paying, you can only ever have 5 collaborators on a single repository. Want more than 5 people on a project? You’ll need to pay.
Aside from having more than 5 collaborators, everything else is free: Bandwidth, storage, number of repositories, etc. BitBucket is great for solo projects or really small teams, but if you’re planning on taking your team north of 5 people, it’s $10 a month and up. Atlassian’s offerings are more geared for large teams, with professional-grade software at premium prices. For small projects with more than one person, GitHub might be more in your best interest.
Okay, I had to get the version control stuff out of the way before we got to the sexy stuff: Engines.
If you’re already comfortable with writing code, then your choice of engine is most likely going to reflect your level of comfort with certain programming languages. More of a C++ person? Then Unreal Engine might be more your speed, now that they’ve dropped UnrealScript and Kismet in favour of C++ and Blueprint for their scripting. More into Java or C#? Then maybe Unity is your thing. Or maybe you’re a lunatic, in which case I’d say check out CryEngine.
Sometimes programmers would prefer to write their own engine. I’ve heard this idea so many times during brainstorming sessions: “I’m worried that if we don’t make our own engine, our programmers are going to be hampered or not have enough to do.” This is complete horseshit.
Programmers are always going to have plenty to do, whether they’re working with an engine or not. The difference is, when using a pre-built engine like Unity or Unreal Engine, you can get to a playable prototype faster. And taking too long to get to a playable stage is one of the number one killers of long-term projects. I’ve seen that happen first-hand, multiple times.
People who come from non-technical backgrounds who want to make games are going to find their options somewhat limited when it comes to choosing a game engine. But that’s not necessarily a bad thing.
The thing that turns a game into a video game is code. Think of the graphics as the metal and the seats and the wheels of a car, whereas the code represents the abstract concepts of energy, combustion and propulsion that make those parts move when you push the gas pedal down and turn the steering wheel. That might be the worst metaphor I’ve ever come up with, but go with it. Without one, the other would be useless.
Without code, your graphics would be just that: Pretty pictures which never move and are incapable of responding to player input. You can have a video game without graphics, but there is no such thing as a video game without some kind of code behind it. Code is necessary to send instructions to the device on which you’re planning on playing your game, whether that be a mobile device or a PC or a console.
However, not knowing how to write specific kinds of code doesn’t mean you’re screwed. There are systems in place that take the arcane, abstract coding languages and make them more visual and intuitive. Unreal Engine and its visual scripting system are a great example of this concept in practice. Unreal has always been a great option for people without programming skills. Unreal Engine 3 and earlier used the Kismet visual scripting system, and now they’ve moved to the Blueprint system, which I confess to know scant little about, but I’m assured that it’s a fairly strong yet intuitive system.
To keep things easy for you, I’ll present the two most obvious options for game engines. They both start with “Un”. Don’t ask me how that happened.
The original elevator pitch for Unity went something like this: “Isn’t it such a pain to have to rewrite your game for multiple platforms? Wouldn’t it be great if you could write your game code once and have it just work on PC, consoles, and mobile devices?” In theory this was great. In practice, not always so good.
Then Unity hit version 4, and the true vision of what they were trying to achieve revealed itself: Unity wasn’t just about uniting different platforms (which it suddenly did very well), it was also about uniting the disparate worlds of independent game developers and professional game developers by providing one platform that was intuitive enough for newcomers doing small independent projects, but powerful enough to scale those projects up to full-scale commercial releases.
It also unifies the worlds of 2D and 3D programming. It used to be that 3D game development was strictly the domain of engines like Unreal or Unity, and if you wanted to do 2D, your options were either to use a managed code system like XNA Framework or a less open-ended editor such as Game Maker. But Unity allows for both 2D projects and 3D in the same editor, and switching between the two is remarkably simple. You can use 3D models as 2D game objects. It’s completely wacky.
As I’ve said numerous times, the Unity platform is incredibly robust. Its barrier to entry is low enough that it’s become a main fixture of game jams the world over.
Unity is also mostly free. In the past, the free version allowed only PC and Mac development. However, in recent years they’ve opened up the mobile development tools for Android, iOS and Windows Phone for free to everyone. The downside? If you need something that only the paid version offers, it’s pricey. If the free version can’t do what you need it to, the paid version is going to set you back quite a bit.
Though it purports to unify everyone under the same game development umbrella, its pricing scheme will inevitably leave a small handful of people out in the cold. The upside is that after the initial investment, Unity doesn’t ask for a cut of your profits if you end up selling your Unity-made game.
So Unreal Engine is not free. However. For that $20 you get an industry staple engine that’s been the core technology powering some of your favourite games including the Mass Effect games, the Gears of War games, and the Batman: Arkham games. Secondly, you get a first-in-class visual scripting system that never forces you to deal with a single line of code (Though it all translates into code eventually).
Like I said above, Unreal Engine comes equipped with a very robust visual scripting system called Blueprint. If you’re not a “code” person and don’t expect to learn it any time soon, then fronting that $20 a month for Unreal Engine is probably in your best interest. And do those tutorials.
That being said, I tend to suggest that people who are interested in making games to at least familiarize themselves with the basics of writing code and how game scripting works for their platform of choice. At least understand how things are operating under the hood of your game.
Almost done. Once you have your game engine and version control software set up, you can do a lot, but at some point you’re going to need to create or manipulate assets for your game. There are a wide number of freely available tools for this purpose. Here are just a few of them.
A staple of game jams the world over, SFXR is the ideal tool for creating dirt simple 8-bit sound effects, the kind you’d expect to hear coming from an NES or Commodore 64. It’s great for whipping up easy sound effects on the fly: Just hit the randomize button, or move the sliders to get just-the-right sound for your game. It even has preset sound parameters such as PowerUp, Damage, Laser, and more.
There is never a shortage of free image editing software, but Paint.NET has always been excellent as an alternative to MS Paint for whipping up simple graphics and doing very basic photo manipulation. For anything more interesting, you’re gonna need something stronger such as GIMP or the grand daddy Photoshop (It’s a verb for a reason) for the very reasonable price of $10 bucks a month. But if you are a serious art person, you probably don’t need me to tell you what to use. Paint.NET is for everyone else.
If you plan to take your solo project beyond the jam and bring others in on it to help you finish it, then you are in luck. There has never been a better time for independent online projects. Two of the best tools available, used by companies large and small alike, are free as in beer.
This is the obvious one, but Trello is completely excellent. A Trello board is a series of columns, each representing a different stage of completeness for different aspects of your project. Each task is a “card” which can be commented on and have any number of attachments. A card can go from the “Planning” column to the “Implementation” column to the “Testing” column and finally to the “Finished” column using a very easy drag-and-drop interface. Trello is easily the best project management tool I’ve ever worked with, and it’s free to everyone. It doesn’t get much better than that.
There’s already plenty of freely available methods for Group chat that exist which you probably already use. Skype and Google Hangouts stand out as two very strong contenders. But they’re not designed specifically with a productivity focus in mind, and most people don’t use those systems primarily for productivity reasons. Slack on the other hand is a Group Chat system that’s fully web-based, giving you a unique web address for your project which brings you straight to your chat room from anywhere you have access to a web browser. It has plenty of features including attachments and rich formatting that make it an indispensable tool for group project chat.
So that’s my bit about tools. The main point to get across here is, if you think that the thing holding you back is the lack of good free tools, that idea is more wrong now than it has ever been. There’s never been a better suite of free-or-cheap game development tools in history. My advice would be to find a game engine you like and start practicing now. It’s not too late to start for either Ludum Dare or Global Game Jam. If you need to know why Game Jams are important to do, read on.