I would not question your decision to create games in C++ as a beginner. If you’re looking for some ideas on where to start your game development journey – you’re in the right place. Most people tend to start simpler by going into 2D first and then continuing to 3D – so as will I in this article. I will structure the game ideas you can try and make yourself by complexity where the more complicated in the list will be in the end and they are for more experienced developers.
Table of Contents
Where to start?
If you don’t have much in your background and knowledge in C++ you should probably start by reading some of my other articles on project setup using CMake. I personally use CMake as it is cross-platform. That way there is no limit to my audience.
For complete beginners my suggestion is to start by doing some courses (Master Game Development) or some console games and then continue by utilizing a game library like Raylib for the engine. More experienced developers may take on the years-long challenge of developing a game engine but in my experience that usually takes you way off course and you still end up using a lot of libraries in the end.
*Keep the list more like a guide on what is already out there and popular but don’t forget to add your spin on it.
There are more than a few ideas for a console project though the storytelling genre seems to best fit the design limitations. As a programmer this is the standard place to start your journey. You wouldn’t need any graphical assets for this one. You can experiment with audio though and I really encourage you to do so for polishing your game.
Guessing Game – The guessing game is the first code that you could write and complete a game withing a short period of time. The idea is that when the game starts the computer picks a number and then you guess it. If you guess wrong the AI will tell you if you should go higher or lower. Helps with learning the language. Don’t forget to polish the game – add a console choice menu and format your messages. This will help you create reusable console functions for later projects. You can even add some audio for dramatic effects. Also be sure to test for those high range values that people know about but computers cannot calculate.
Zork-like – Zork is an old PC game where you are an adventurer being narrated through a virtual world. The main idea is that you are presented with a set of situations each having a branching choice and story. This is a great opportunity to practice your storytelling. On the programming side you would have to develop a clever way to handle the input and present choices in the world to the player. Those choices of course will vary throughout the game. This is the point in which you should also think on ways to simplify your game development process – my advice is to start using data files that would describe the game script, world and available choices. You can also develop your own features like inventory, health and etc. that will make your Zork-like game unique.
Rogue – The true rogue-like is the actual rogue game. This one is a bit harder. You would need to find a way to create an interactive UI in the terminal window first and then also do AI and other RPG systems. If you want to delve deeper into the programming you can tackle with procedural generation of rooms and corridors between them for each level. This project is a bit bigger as the rogue genre could expand. Be careful to keep your games to bare minimum and do the polish work so that you can continue quickly to the next project where you’ll learn even more.
2D Game projects
Developing games in 2D starts to become a challenge. There are a lot of things to consider in a 2D game ranging from art, physics, AI, code, music, etc. Keep this in mind when starting out and as a beginner keep it simple. Make shorter games for the sake of learning before tackling a bigger project.
Pong – Pong is the main suspect here. You wouldn’t need any art assets for this one. My recommendation is to learn as much as you can when developing the pong game – create a menu screen, make screen resizable, add score, create a save with the highscores and display them. You can check my example pong game on itch.io and also get inspired by the source code in github.
Read next: There is a tutorial here about creating a simple pong game in ANSI C
Recreate on of your console projects in graphics – This is also a valid option as graphical programming is a bit more complicated. Try and recreate the choice menus in a more UX friendly manner.
Tic-Tac-Toe – Would help you do some board games AI if you’re more into these types of games. You would also have to think about the AI and I will give you some spoilers early – it is easy to design and unbeatable opponent on Tic-Tac-Toe but it is not fun to play against. For a bit more challenge you can create a bigger grid for your game like 10×10. I have an example here with a 3×3 board if you want to start from somewhere.
Tetris (or similar) – Check out my game “Jungle Blocks” for some inspiration. This is more for the casual games type of developers out there but still brings some nice experience to finish a small project. I did this one for one work day of 8 hours to experiment for the first time with SFML and decided to leave it as is.
Flappy bird – This has lately become the like the “Hello, World” for game creation. It is easy to create and the rules are pretty simple. There are millions of these games and there were millions before flappy bird even existed. The main point of the gameplay is to have a main character that moves and is faced with obstacles that come in endlessly in front. This could be a bird, a running dinasaur, a racing car, etc.
Platformer – The most simple platformer I can think of is to have a character that can walk left and right. The camera should follow him. Usually jumping is an important mechanic and some enemies to jump over and squash. You would learn a lot about the basic physics in a game. Keep it as simple as rectangle collision detection and reaction to that or use a library. You can also develop your own backstory and art or find assets on itch.io or opengameart.org. It will teach you a lot on level transitions and level creation. Find out how to integrate third party tools like OGMO editor or Tiled for level creation and it may prove time-saving in the long run.
3D Game projects
3D game projects in C++ are quite more advanced. Stay away from these ones as a complete beginner and keep in line with the simpler 2D games until you feel comfortable with creating assets, creating and finishing projects and most importantly programming.
Doom-like – I mean the old version of doom. This is the first place to start in 3D as it is actually a 2.5D. You can pretty much see the 3 dimensions but the maps are usually defined in 2D and your enemies are simple sprites. You wouldn’t delve into complex physics meaning you will keep your focus on a fewer more manageable tasks.
Flying game – Creating a flying plane or space craft is easier. You may go into some 3D modelling for this but it would be minimal. You will learn about rotation and spacial movement in 3D while having a low amount of assets and quality.
3D Runner – Similar to the phone games subway surfer or temple run you can do some quick game in the running genre. They are easy to develop while still requiring some polish and you can learn more about character animations.
3D Puzzle Platformer – Useful for transferring the knowledge from 2D into the 3D world. Find your own features that will make your game unique and engaging. Create more physics based puzzles with the power of the 3D world. You would also learn about third person camera which is quite tricky to get right.
First person/Third person shooter – You can start going bigger into your projects with the shooter style games. A whole game could still be a too big of a challenge at this stage of your career but you can also just do prototypes of games to get the feel of how some features are implemented.
Mix & Match
The list is quite short but my idea is to draft a rough path to guide you in your journey. You should refine these ideas yourself but here are a few more tips:
- Watch & Play the games that other people develop – especially if they are indie it would ground your expectations and it would help gather ideas.
- Mix genres – try new stuff and combine the features of one genre into another.
- Take ideas outside of the video game world – there are also a ton of real life and board games that you can mix into your games (like hide & seek)
As a beginner programmer in C++ and game developer you should keep your projects scoped and short. Try to learn the most out of every single one of them and finishing them fast. When you try the different types of games you would get a feel of what games you like to develop. Developing large games can get exhausting and repetitive at some point so keep them simple in the beginning until you’ve found your passion project and have enough knowledge to be able to finish it.