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.

Take me to the game programming courses

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*
  • GameMaker 2 means you can make entire 2D games without typing a single line of code by dragging and dropping
  • Use GML code if you prefer it to dragging and dropping
  • Definitely the easiest to get started with 2D games – bar none!
  • Beginner-friendly community
  • Currently in beta (7th November 2016)
  • $100 for version that deploys to desktop (watch out for Steam sales)
  • Expect to pay over $1000 to deploy to all platforms
Unity 3D and 2D using C# for all platforms*
  • Even 2D games are made simpler than dedicated 2D solutions with new Unity 2D features for sprites and 2D physics
  • By far the easiest to get started with 3D
  • Huge beginner-friendly community
  • Asset store beats all the competitors on choice
  • Simple 2D games have a greatly increased file size compared to dedicated 2D solutions
  • Asset store lags behind Unreal Engine for highest quality graphics etc.
  • Although there is a free personal edition there are lots of ways Unity can make you need to pay a monthly fee
  • Despite a recent upgrade, generally considered a less professional solution compared to UE4 and CryEngine
  • Some of the easier to find beginner tutorials need updating
Android Studio 2D & 3D genres using Java(predominantly) & C++ (optionally) building games for all Android devices
  • Very easy publish to a vast market that is virtually free to enter ($25 lifetime)
  • Excellent and accessible for complete beginners
  • Perfect to show your betas to friends and family without jumping through hoops
  • 3D games are probably not for beginners
  • Even 2d games are slightly tougher than using solutions like LibGDX
  • Tough to get noticed on the Google Play app store
CryEngine 3D genres using C++ & Lua for all desktop platforms and consoles*
  • Very easy to begin building 3d worlds but piecing together full games eventually becomes complex.
  • Want to work for AAA consider starting here.
  • Arguably the best-looking graphics of any game engine.
  • Amazing for designing 3d worlds.
  • No royalties!
  • Small monthly fee of $10
  • Arguably inferior tutorials and documentation compared to Unity and Unreal Engine
XCODE 2D & 3D genres using Objective-C, Swift for iOS & Mac
  • Perhaps the nicest development environment
  • The Swift option is arguably the best beginner game programming language
  • Build games for all Apple devices using really quick to grasp Swift or the more challenging (but flexible) Objective-C
  • Significant chance of having submissions declined (especially amateur games).
  • Awkward to show unpublished games to friends and family
  • $99- $299 + tax annual fee to submit games
  • Must have a Mac to develop
  • 3D games are probably not for beginners
UnrealEngine 3D or 2.5D genres are best suited using C++ and Blueprint visual scripting for all platforms including consoles*
  •  Free and fully featured to learn and develop
  • Arguably the best and fastest 3d engine
  • Amazing for designing 3d worlds and easy to get started
  • Loads of up-to-date beginner tutorials
  • Simple, visual scripting alternative to C++ programming
  • Want to work for AAA consider starting here
  • 5% Gross royalty payable on turnover for released titles
  • Finishing a full 3D game is a seriously big job
  • C++ in an Unreal Engine context is not for beginners, perhaps not even intermediate programmers
SFML 2D genres using C++ primarily building games for desktop platforms
  • Very fast
  • Modern OOP language
  • Possibly the fastest, smoothest 2d games for desktop can be made using SFML
  • C++ is arguably one of the harder languages to learn and get started but SFML can actually ease this process
  • Smaller user base than SDL, less online tutorials available.
  • The community can be slightly unforgiving to complete beginners
RPG Maker MV 2D genres using Javascript for all desktop and mobile platforms
  • Getting started is possible for any determined beginner
  • Perfect for retro RPG’s especially with turn based fighting.
  • Free trial or cheap older versions available
  • Loads of character and scenery packs available for a fee
  • Won’t do anything except 2D retro RPG’s without lots of effort
  • Even this latest version makes the games look clunky on large screens
  • Full version $70 (watch out for Steam sales)
SDL 2D & 3D genres using the C language for desktop and mobile platforms
  • Very fast
  • Loads of tutorials available (if you already know C)
  • Perfect for porting old code written in C to mobile
  • Complete beginners might need a beginner C programming book first
  • Uses out-of-date language.
  • Mobile implementation is not a good place to start for beginners because of extra complexity compared to LibGDX, Android Studio or XCode options
LibGDX 2D & 3D genres using the Java programming language for all desktop and mobile platforms
  • Totally free and cross platform
  • Very beginner friendly support community provided you know Java well (Consider learning regular Android & Java in preparation for LibGDX)
  • 3D options are primitive compared to Unity, Unreal, etc.
  • Need to learn Java first, difficult to learn Java at same time as LibGDX
  • Arguably slower performance on iOS
  • Unarguably slower performance on the desktop platforms compared to SDL or SFML
  • 3D has very little documentation
Cocos 2D using C++, JavaScript, Lua for
Mobile & Windows
  • Totally free and cross platform
  • Very beginner friendly support community provided you know C++ well
  • Loads of successful games to point to especially for mobile
  • Mobile focussed so might be better off with SDL or SFML for desktop games
Quest Text based adventures (static images too) running on the Web, Windows & mobile devices
  • Totally free
  • Beginner friendly tutorials and forums
  • Thousands of example text adventures to play and see what is possible
  • Requires a bit of a fiddle to make thing s work well on mobile

* 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.

ANDROID GAME PROGRAMMING COURSE

Beginner to developer
android-game-programming-course-beginner-to-developer
Build more than a dozen playable games, in excess of 50 working apps and a bit of theory too!

UNITY 2D GAME PROGRAMMING COURSE

Beginner to developer
unity-2d-game-programming-course-beginner-to-developer
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

Beginner to developer
android-application-programming-course-beginner-to-developer
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

Beginner to developer
c-plus-plus-sfml-game-programming-course-beginner-to-developer
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.