This course is made up of 6 modules. Some of the modules are completely free, some are paid and others are a bit of both. Compare the Knowledge Checklist section of each module to see which ones you can skip and when required click the Module Content tab to see the areas of study required to gain the knowledge.
Notice you can hide and show each of the modules using the + and – buttons. At the bottom of the detail for each module, you can see the amount of overall progress you will have made at the end of the module.
Good luck and please feel free to ask any questions in the comments section at the bottom of the page.
If you are not sure if this is the right course for you then be sure to take a look at this article. Where do I start.

Required knowledge to skip module:
This module is a fast but wide-ranging look at the Java programming language. While this module skips much of the depth and detail of the subject, being introduced to all the core principles upfront will make a more detailed study of Java (in Module 3) much easier. If you already know the Java basics listed below then you can jump to module 2.
- Java variables including declaration, initialization and manipulation using operators.
- Java conditions and loops using keywords like if, while and for to make decisions, branch code and repeat sections of the game code.
- A decent knowledge of methods and how they are used to break a program into logical parts.Also know about parameters return types and arguments.
- A good overview of Object Oriented Programming but not neccessarily a strong knowledge. Understand the concepts of classes, objects, inheritance and polymorphism.
Getting Started with Java for Android
These 8 brief tutorials each dip into a different aspect of Java programming. While none of the tutorials is comprehensive, together they will give you a good insight into Java and how we will use the code as the building blocks of Android games.
- This tutorial links out to the other 7 Java tutorials as well as a few more. Feel free to branch out and look at the extra tutorials, it won’t hurt. Or stick to the exact order reccomended by the course below. Introduction to the Java programming language.
- Everything you need to know about Game variables
- This tutorial explains how you can manipulate the values stored in game variables. Read Changing the value of game variables.
- Your games will need to know when events have occured. Things like an alien is destroyed, a new high score is achieved or the player has restarted the game. These things are detected by checking for conditions.
- There many situations when game code needs to change what it’s doing and head down a different path of execution, perhaps when we have detected a condition. This is an explanation of how to branch game code.
- This tutorial looks at how we repeat sections of code multiple times. Every game will be comprised of Java loops.
- As our programs get longer and more complicated we need to organize our code better. One of the ways we can do this is with Java methods.
- Object Oriented programming (OOP) is a very big topic. It’s core ideas, however, are very straightforward. Study this OOP introduction it will set you up for all the rest of the modules.

Required knowledge to skip module:
In this module, you will actually get to code and run some simple apps. After you have got Android Studio up and running you will practice the concepts you learned about in chapter 1. As a grand finale for module 2 you get to code an Android app that plays some sound effects and one that does some basic drawing as well.
- Install Android Studio and Java then build and deploy your first empty game game project.
- Build a series of simple apps that use the basic Java concepts discussed in module 1 and output text to the Logcat console window.
- Build an app that plays some simple sound effects using the SoundPool class.
- Build an app that draws with bitmaps, pixels, lines and simple shapes using the Canvas and Paint classes.
Getting Started with Android Studio
These 8 hands-on projects will give you your first experience of running real apps. The first three get your development environment setup and tested. The next three practice basic Java concepts using real apps that output text to test our code. The final two you actually get to make some noise and draw some graphics.
- In these really simple steps we will walk through the process of Installing Android studio development environment and the other software that we need to start to learn to code Android games. Setting up Android Studio development environment.
- In this project we will use the Android Studio new project wizard to build an app we can actually run on a real Android device. Building your first Android game.
- This tutorial will show you how to run the game on your Android device. Deploying your first Android game.
- In this project we will put into practice the concepts we learned about variables and how to manipulate them. Game variables demo.
- In this quick real project we will practice how to test for conditions using Java in an Android game project. Checking for conditions and branching demo.
- Now we will put into practice different types of loop. loops demo.
- Next we will play a sound on an Android device. We will see how we use the SoundPool class to load a sound from a file and then play it. Playing sound FX demo.
- Finally for module 2 we will really harness the power of classes and objects by using classes from the Android API which allow us to draw graphics on the screen. Drawing graphics demo.

Required knowledge to skip module:
By the end of this module, you will have built some actual playable games. The first few will only be simple mini-games and a pong game but then you will build a version of the classic Snake game with achievements, high scores, and even Google Play leaderboards. The final topics of the module involve building a more flexible and advanced game engine and using it to implement Breakout and Space Invaders clones. To get to that exciting point we need to look at a little bit more Java theory.
- Java arrays including how to manipulate them using a for loop.
- Programming threads. What they are and how to use the Thread class in Android.
- Java interfaces. Expertise here is not required, just a basic understanding.
- Using simple Android user interface elements like TextView, Button and LinearLayout.
- A much more thorough understanding of variables, loops and conditions to build a simple math quiz game and a Simon-style memory game.
- Use threads, animation and collision detection techniques to build a simple Pong game.
- A deeper knowledge of threads, interfaces, arrays OOP and Java in general in order to build a Snake game.
- Understand how to manage delta-time in order to build a more advanced game engine and then implement a Breakout and a Space Invaders clone.
Building your first games
In this module, you get to build 6 games. From a simple math quiz button-clicker to a fully playable version of Space Invaders.
- This tutorial will introduce you to the concept of Java arrays. Using Java arrays.
- Next, find out about programming threads.
- The last bit of theory before you turn your hand to games. Read Using Java interfaces.
- This is the first paid content of the course and it explores all aspects of Java in much greater depth as well as building two games using the Android user interface, a Pong game and a Snake game with some advanced features. Take a look at Learning Java by Building Android Games.
- Having reinforced your Java knowledge and built your first games it is time to build a real-world (but simple)game engine. Check out how tobuild a simple game engine.
- We can now use everything we have learned so far to build a Breakout game.
- Let’s take things one step further and have living breathing, non-player-characters with a Simple Space Invaders game.

Required knowledge to skip module:
With your new game engine knowledge and practice with the six games of the previous module you are ready to cover some much more advanced topics. First, you will see how to implement several new game features and then in the biggest project of the course so far, you will see how to use them all together in a full-featured 2D platform game. The final part of this module will take a quick look at what is to come in the final module by building an Asteroids game that uses OpenGL ES.
- Implement a viewport.
- Sprite-sheet animations to implement a simple walking character on screen from a single graphics file that holds all the frames of animation.
- Implement multiple parallax scrolling backgrounds.
- Collision detection with rectangle intersection, radius overlap and the crossing number algorithm.
- Calculate headings and direction using the sin and cosine functions.
- A simple space dodgem game using the new game engine.
- Put all the new game techniques to use in a multi-level, multi-environment platform game.
- 2D OpenGL ES and Shader programs through a version of the Asteroids arcade game.
Building your first games
In this module, you get to build 3 complete games and multiple self-standing game features.
- Ever wondered how a game object knows which way it is heading?. Take a look at Calculating heading in 2D games. and Rotating objects in 2D games.
- Take a look at three different ways you can detect collisions between objects in games.Rectangle intersection, Radius overlap and Crossing number alorithm.
- An essential feature when our game-world doesn’t fit on the screen all at once is the concept of a viewport. This is explored by implementing a 2D scrolling shooter game.
- Next, find out about sprite-sheet character animations.
- Now you can implement multiple parallax scrolling backgrounds to add a sense of depth, movement, and environments. Read Implementing multiple scrolling parallax backgrounds.
- The final and most impressive three games of this module are part of the book. Take a look at Android Game Programming by Example. The book uses all the knowledge you have acquired so far to build a simple 2D space dodgem game, a comprehensive, full-featured platform game and a 2D Asteroids game using OpenGL ES.
- More introductory 2D OpenGL tutorials coming soon!

Required knowledge to skip module:
Here is what you can expect to know by the end of the module.
- Build particle systems for explosion and smoke effects.
- Code a virtual (on-screen joystick)
- Play music during the game
- Build and animate custom dialog UI
- Integrate your game with Google Play Services
- Make your game compatible with Google TV
Getting Started with Java for Android
This module will up the skill level quite a bit. You can expect to spend a little bit longer studying compared to previous modules. It is likely, however that you will find it extremely rewarding. This modules content is contained entirely in the book Mastering Android Game Programming. You will learn to build a space shooter game with neat particle effects, Google Play integration, virtual-joystick control and background music.
- Build particle systems for explosion and smoke effects.
- Code a virtual (on-screen joystick)
- Play music during the game
- Build and animate custom dialog UI
- Integrate your game with Google Play Services
- Make your game compatible with Google TV
You are now well placed to move on to the final module and move your game programming into the third dimension!

Required knowledge to skip module:
Here is what you can expect to know by the end of the module.
- Initialize OpenGL
- Add colors and shading
- Play music during the game
- Handle 3D projections
- Learn to respond to touch interaction
- Make a fully playable 3D air hockey game
Getting Started with Java for Android
Good OpenGL information can be hard to find. As you read this book, you’ll learn each new concept from first principles. You won’t just learn about a feature; you’ll also understand how it works, and why it works the way it does. Everything you learn is forward-compatible with the just-released OpenGL ES 3.
- Initialize OpenGL
- Add colors and shading
- Play music during the game
- Handle 3D projections
- Learn to respond to touch interaction
- Make a fully playable 3D air hockey game
When will you do the c++ game programming course?
Hi George,
It will probably be a while. As usual things happen and I had to change my plans. I will get to it asap.
Hello John,
Any news about the c++ game course release date?
Man, you are the best instructor i have seen.
Thx, George
Hi George,
Sorry for the delay, I have been overtaken by events again. To keep you going (because it might be a while) consider mastering c++ through SFML as Packt have several new books including a mastering SFML recently out. For 3D games, Udemy (at the time of writing) have a ten dollar offer(Use voucher code FOCUSFEB on some really comprehensive Unreal Engine courses. For a generic C++/game book, I have recently read this:https://www.packtpub.com/game-development/c-game-development-cookbook. It is excellent and would complement any course. Just be sure to match the level to suit yourself.
Sorry for the delay. I am trying to turn this website into my job but I am not quite there yet.
I expect it will be of value regardless of which C++ path you take.
Hey John, I started your C++ programming course on Linkedin Learning.
When I get to “Setting up the Development Environment,” I’m unable to continue, because your tutorial is on an older version of Visual Studio Code, and many of the options do not exist anymore.
How can I proceed?
Hi there,
I replied to your email on Sunday. I guess it got lost in cyberspace or something.
I suggest Visual Studio Community 2019 is the latest as this is recommended by SFML. It might be possible with VS Code but I have never done it and you might be attempting the impossible. 2019 is the latest edition which is virtually unchanged from 2017. You can find a text based tutorial here:http://gamecodeschool.com/sfml/building-your-first-sfml-game-project/. That might be easier to follow than a video and you can download the community edition here: https://visualstudio.microsoft.com/downloads/
Thanks for taking my course (I never knew it was on Linkedin).
All the best,
John