So you want to make a game? Games can be powerful! To the gamer they can entertain, motivate, educate, persuade. They can cause visceral feelings like excitement, happiness, sadness and even fear. To you, the creator/programmer/designer, making games can give immense satisfaction and personal advancement, perhaps even fame and wealth.
So, you know you’re serious about building games but what should you do next?
The 3 getting started questions of doom
There are a lot of different ways to make games. Loads in fact. And a surprisingly high number of these options are suitable for complete beginners as well as the seasoned professionals. This is good because it gives us choice, but is awkward because this choice can cause confusion as to what is the best way. Are you going over and over the same 3 unanswered questions? I call them the “getting started questions of doom!”
1. Which is the best language (C++, C#, Java, insert half dozen more possibilities here) to use/learn?
2. Which platform should I build for(PC, Android, iOS, something else, all of them)?
3. Which game engine or gaming library (if any) should I use/learn?
If you feel confident that you already know the answer to these questions and just want to get game building then click the button below.
Trying to answer these questions is like trying to choose who to vote for before you have heard the policies. It’s stupid and leads to a very bad place.
Yet at the same time, the answer to these questions is vital if you are to be able to get started with confidence. Furthermore, trying to answer these questions directly will likely lead to no answers or even worse the wrong answers. Kind of like just listening to the political policies rather than considering if they are genuinely held beliefs and achievable. “I will make your life better”. You would be wise to ask, “how exactly”? Yet you must answer these questions and answer them correctly.
If you ever get that sinking feeling knowing you have just lost a day of your life on social media or watching daytime TV; trust me, that is nothing compared to months of learning a programming language, game engine or platform specific library when it turns out it can never deliver what you want. (No more political analogies).
The truth is there is no “best” platform, game engine or programming language! Anyone who tells you there is, without discussing it with you personally and in great depth first, is just plain wrong.
To help you arrive at the correct answers for you and get you started as quickly as possible, let’s start by answering three, much more useful(and easier to answer) questions.
The 3 getting started questions of enlightenment
Question 1: What would you consider to be a successful conclusion to your efforts at learning to make games?Here are a small selection of possible answers:
- You want to be the head programmer at Bethesda, Valve or ID etc.
- Maybe you want to find fortune and fame as an indie dev’
- Perhaps you just want the fastest, simplest route to getting something, nay anything published
- You just want to have fun
- Do you have a story inside your mind that absolutely must be told – sometime before you die
- Something else entirely?
Think about the first question a little before moving on to the second.
Question 2: What personal & family price are you prepared to pay?Yes, there is always a price. If you go for a half hour run the price is half an hour lost on either work, family life or something else you might have done. You need to first accept that building a game is going to take a while. Should personal/family financial considerations take preference over any of these other goals and how much time are you prepared to put into this game programming thing? A weekend, a year, as long as it takes?
Question 3: What game do you want to make?There are so many different types of game and which one you want to make will certainly steer you towards different learning pathways, engines, and languages. Be sure to decide on the genre, 3D, 2D, First person shooter, RPG, survival, retro, something totally new, etc. Will your game work best on a particular device type or platform? Do you specifically want to target a particular platform or is it the more the merrier?
Notice that the above questions might be challenging and deep to answer but unlike the “getting started questions of doom”, the “getting started questions of enlightenment” don’t need Google, an expert or even me to help you answer them. The previous three questions can be consolidated as follows.
Where do you want to go, what price are you prepared to pay and what game are you going to make next/first?
Think about them for a bit, they will help you make the right decisions.
I have answered the questions – Tell me the answers to the questions of doom already!
By now you should know your personal game building goals, determination, and game specifics or at least be formulating them. Certainly, your goals might change along the way and you can always make changes in direction but at least you will be starting out based on what you want to achieve rather than the latest trend that sounded good at the time.
Choosing a language, platform, and engine
The platform might already be a part of your plans at this stage. The language and engine, however, still need to be chosen. In the table that follows you can easily target your language and engine options based on your genre and target platforms (if they are decided already).
Take a look over the following table. Use the priorities from your goals to target the appropriate game building solution (engine/library/tool) and then study the row (which represents the attributes of a specific game building solution) to see if it also matches your other priorities or requirements. There will always be a match! But, there will always be compromises to be made too. These are YOUR compromises based on YOUR goals. There are no universal right or wrong answers.
Tool | best-suited genres, programming languages & target platforms | What’s great about this option? | What are the pitfalls of this option? |
---|---|---|---|
GameMaker Studio 2 | 2D using optional GML (c-like language) or drag and drop visual programming for all platforms* |
|
|
Unity | 3D and 2D using C# for all platforms* |
|
|
Android Studio | 2D & 3D genres using Java(predominantly) & C++ (optionally) building games for all Android devices |
|
|
CryEngine | 3D genres using C++ & Lua for all desktop platforms and consoles* |
|
|
XCODE | 2D & 3D genres using Objective-C, Swift for iOS & Mac |
|
|
UnrealEngine | 3D or 2.5D genres are best suited using C++ and Blueprint visual scripting for all platforms including consoles* |
|
|
SFML | 2D genres using C++ primarily building games for desktop platforms |
|
|
RPG Maker MV | 2D genres using Javascript for all desktop and mobile platforms |
|
|
SDL | 2D & 3D genres using the C language for desktop and mobile platforms |
|
|
LibGDX | 2D & 3D genres using the Java programming language for all desktop and mobile platforms |
|
|
Cocos | 2D using C++, JavaScript, Lua for Mobile & Windows |
|
|
Quest | Text based adventures (static images too) running on the Web, Windows & mobile devices |
|
|
* Separate developer license required from each console manufacturer.
Disclaimer: There are even more ways of building games.
Hopefully building a clear view of exactly what it is you want to achieve will make the table of options super-useful in identifying the best path for you. Having started to nail down or at least tentatively Blu-tac your answers to the getting started questions of doom you will need to know where to go next.
Matching your choices to learning pathways – Game programming courses
I have started putting together some “learning pathways” in the form of game programming courses. Each course comprises multiple modules. They are designed to take you from complete beginner to developer. Some of the modules are completely free, some are paid and others are a bit of both.
Once you have chosen a pathway/course the only other question that needs answering is what knowledge if any do you already have with your chosen language/platform(s)/engine etc? Compare the Knowledge Checklist section of each module of your chosen pathway/course to see which ones you can skip and when required click the Module Content tab to see the specific tutorials, projects, books and videos required to gain the knowledge.
As you can see below, all the courses are not available yet. They will be soon I promise. Eventually, I will have a pathway/course for every viable option but it takes quite a significant amount of time to put each one together. Where the full detailed course and its modules are not available but I have started on tutorials, I point you instead to the appropriate beginner programming language tutorials and engine/library example projects. These tutorials and projects start from zero knowledge just like the courses.
It is now that you might get this funny feeling in your stomach. A feeling of anticipation, excitement and urgency. You will absolutely know- without any doubt that not only have you got a game inside of you but you can get it out too.
UNITY 2D GAME PROGRAMMING COURSE
Coming Soon!
If you are new to game programming with Unity then while you are waiting for the full course, take a look at these beginners C# tutorials and these beginner Unity game projects.
ANDROID APPLICATION PROGRAMMING COURSE
Coming Soon!
While you’re waiting for the full course to be available take a look at my book Android Programming for Beginners.
C++ GAME PROGRAMMING COURSE
Coming Soon!
While you are waiting for the full C++ game programming course to be available take a look at these beginners C++ tutorials and these SFML game programming projects.