Today we're going to cover how to start coding games! If you have played a video game in the past, there may have been a time when you said to yourself, “I want to make a game!” or “I’ve got a great idea!” only to have the momentary inspiration pass. Game design is a challenging skill, and the learning process can be intimidating, especially for those without prior design or development experience. The rewards and satisfaction of completing a game is an exciting moment that you should work towards if you feel passionate about games.

The video game industry was valued at USD $198.40 billion in 2021, and it is expected to reach a value of USD $339.95 billion by 2027, so there has never been a better time to build a career in game design. Happily, there has never been a better time to learn how to start coding games yourself. The range of tools and options available can be overwhelming, so we’ve broken down the key steps to help you make a complete game that you can actually play as quickly as possible.

Make a cool game every week with our award-winning game building club designed by experts from Google, Stanford, and MIT:

How to start building video games

1. Understand your scope and concept

First thing you should decide what you want to do. This sounds simple, but the planning stage will decide which tools you use or what game engine you will need to use to get there. Do you want to create a mobile app-based game? Do you want to make a 2D pixel platformer game or 3D puzzle game or a first person shooter? Are you telling an adventure story, a puzzle game, or a racing game? Will your game be 2D or 3D? Will it be single-player or multiplayer?

Design begins in the imagination, and practicing getting your ideas on paper can help you when inspiration comes. We think the main idea is to consider: What story do you want to tell? Games like Minecraft, Final Fantasy, and Hollow Knight all tell different stories, which influence the form in which each story is told and the game mechanics of each, despite all of them featuring swords and mines. Thinking of a hook, one or two sentences that explain the core idea of the story, can be the best way to begin: “It’s a story about an orphan from a desert planet who discovers that he comes from an ancient group of space warriors who were betrayed by his father.”

2. Keep it simple

When planning your game, it’s important to keep your goals in perspective. Nobody can create Minecraft or Civilization on their first attempt. In fact, most modern games are designed by teams as large as forty or fifty people over many years. To avoid burning out or starting something you cannot finish, consider the game in the simplest way possible, using the most simple mechanics and assets to allow you the satisfaction of completion. Before you even add graphics or music, you should focus on the core mechanics of your game and the basic ingredients to create an immersive experience for the gamer.

The more features you want in your game, the harder it will be to bring it to completion. The key is to build a solid foundation that you can complete quickly. The core elements of a good game should be things like movement, variables like score, level, and health, and win/loss conditions. Once you have a game loop of these basic experiences it will be easier to add elements that you can test against your completed program to look for bugs. The simpler and easier it is to play, the more fun you will have while playing. Rather than endlessly adding elements to your game, remember that constraints and limitations force us to be creative and resourceful.

Stardew Valley

Stardew Valley uses a simple concept: a character inherits an old farm and makes friends with the local townspeople by giving them gifts. Underneath this basic idea, there are tons of features to explore, but the limitations of the game forces players to be creative and organize their time.

3. Choose a game engine or framework

Coding a game from scratch requires a lot of prior coding knowledge, and the experience and patience to painstakingly build each feature by writing lines of code. Game development today does not require expert coding skills due to the development of many game engines, pieces of software that come with game-building features pre-made and customizable to the user’s design preferences. Game engines are a digital environment where you can control the many features of your game from start to finish, and different game engines are specialized for different tasks. Many 3D games today are designed in Unreal Engine, while the majority of 2D game development uses Unity. Historically, most mobile games were developed using Java, though this trend has changed in recent years.

Frameworks are like engines, in that they are pre-build programs and features that can be used in game design, but they are usually just code, they require more time to set up than features in an engine, and they can be difficult to customize without causing problems in the code-base. If you are interested in building a game from scratch, you might consider first programming your own game engine, which would require the use of Python, Java, and C++ to make something that worked. It would take a lot of effort, but it would provide you with a very unique and challenging experience.

2D game engines like Unity and Godot contain enough features within their interface to build a complete game and don’t require coding knowledge, so we recommend getting started there. Choosing to build a first game in 2D is going to be much easier than designing one in a 3D game engine, so unless you have a solid understanding of programming languages, you should start there.

4. Start now, learn as you go

You have planned out a solid idea for a game, with the basic mechanics, story, and win/loss conditions mapped out in writing, and now comes the hard part. Now that you have chosen your game engine it is time to do some programming. If you have settled on 2D or 3D, and you have some prior coding experience, you can start small and continue building your skills and knowledge to complete the specific task in front of you.

If you don’t know how to code, no problem! On the other hand, coding is easy to learn and challenging enough to keep you busy for a lifetime. There has never been a better time to learn, either. We offer several great award-winning introductory free coding courses at Create & Learn, and there’s a variety of free advice and inspiration to be found on community websites such as Github.

5. Design your game around your skills

Don’t get too slowed down by what you don’t know. Begin with what you do know and then when you hit a wall, ask yourself, “What do I need to learn to solve this problem?” Each time you find the answer, you will be gaining a new skill to add to your tool belt. Rather than aim to build Minecraft on your first attempt, maintain a long-term perspective where each level, each sprite, and each completed game design brings you closer to one day making a masterpiece.

6. Which coding languages should you learn to make games?

Whether you are an experienced coder or a total newb, you want to develop strengths in the following areas to build a fun, high-quality game that you and others will want to play.

  • Python
  • Java
  • C++
Java in Minecraft

Notice the Java command text at the bottom of the screenshot of familiar Minecraft.

The best thing about coding for game design is that you will develop essential skills in computer science, because most games rely on certain data types shared with other types of software:

  • Variables allow game developers to keep score, track health, and set a timer.
  • Conditions are used to create scenarios for both winning and losing, taking damage, progressing to higher levels, and advancing a story that has many options. Conditions, also known as Booleans, are yes/no questions that decide whether or not certain lines of code will run.
  • Loops create repetitive actions, such as the movements of NPCs, the ambiance and setting of the game world, and animation.
  • Game developers must have essential knowledge of data structures to process and store massive amounts of data for every game. In a game like Civilization, which follows the development of an empire over thousands of years, the game uses things like lists, queues, maps, and sets to easily retrieve information and to store it for later use.

There are more advanced tools to learn, but these are a good starting point. For more in depth instructions of how these different data types work in game development, check out this article.

7. Art, audio, and assets

With the technical decisions come aesthetic ones: What is the color scheme? What does the art look like? Will it feature pixelated sprites like Minecraft or Stardew Valley, or smooth graphics against a sleek, painted backdrop like Hollow Knight? Will you use music from an orchestra or an electric guitar or a chiptune synthesizer? Or no music, will just text against a black and white background? All of these are valid choices, and there’s no right answer. Every game is unique, and you should decide what works best for you.

If you lack musical or artistic talent, it’s not an issue. You can find digital assets, pre-made art and music, on sites like itch.io and OpenGameArt have lots of great resources that you can download for free and use in your game.

Spooky aesthetic

The spooky aesthetic of Limbo is very  different from the dreamy, pastel castles of Monument Valley.

8. Focus on core mechanics and immersion

A simple game that runs smoothly will always win over a beautiful, complex game with tons of bugs. Walk, run, jump, crouch, if these basic mechanics are out of sync with the pace of your game world, then most players will give up in frustration. Aside from keeping gamers happy (not an easy task), focusing first on the core mechanics will give you a sturdy foundation or frame for additions that come later.

9. Share and seek feedback

Last but not least, you need to share your game. Even sharing with one person can bring constructive criticism and a better understanding of how your game works or doesn’t work. You worked hard on your project and you should enjoy playing it yourself, but another person’s eyes might notice things that you didn’t see or highlight the game's benefits when you are focused on its problems.

Having a growth mindset is important here. Building games is hard, and the sad truth is that many people will give up at the first major sign of difficulty out of frustration or overwhelm at all there is to learn. Start slow, build on fundamentals, and don’t be afraid to share your builds, and you will progress over time.

What is a game engine?

While Unity and Unreal serve as engines for most major game design studios, there are many game engines on the market that all have virtues and cater to different platforms and game design. The game engine allows you to add different features like in-game physics, animations, artificial intelligence, and much more without writing any code for them. These tools can be reused by the designers to construct their game world.

Game engines use APIs where you can import graphic objects, sound effects, physics objects, and more into a single game item, rather than building each component piece by piece. Nowadays, kids of all ages can use game engines.

Teens can begin coding games with Unity

Unity has become one of the most powerful engines for game development. While it began as a project to make small, indie games, it is capable of making small games, big games, indie games, and professional games like Among Us, Genshin Impact, Monument Valley, Cuphead, Limbo, and Untitled Goose Game, just to name a few! What is amazing is that Unity is one of the easiest game development platforms to learn and start developing with. The following list will explain the first steps you should take if you are a teen who wants to try coding games.

  1. Download Unity - Unity is free to download and use, and there are also paid versions with on-demand classes. We recommend downloading the Student version of Unity and installing it on your computer. Check the spec requirements to ensure it will run smoothly on your device.
  2. Create a New Project - You have downloaded Unity. Now you should open Unity Hub and open a new project. You have several options to choose from in your project, from 2D and 3D frameworks, towards more advanced features like High-Definition Role Playing games. We recommend beginning with 2D as it requires less attention to physical mechanics in the game. It will allow you to build a prototype video game quickly and from there you can work towards harder projects.
  3. Follow an online tutorial - If you have set up your Unity engine and you don’t know how to proceed, you might need a helping hand to get started, so we have prepared a Unity tutorial for beginners, though there are some great tutorials online and on Youtube that can help you if you have a specific game project in mind.
  4. Make a card game in Unity - If you’re looking for a challenging project that everyone can build, we have created a tutorial for building a Unity card game that will teach you how to Script and run a game, how to use instances, lists, and loops to design a game that uses both strategy and chance.
  5. Take a Unity class - If you’re ready for a deeper dive into game design, consider signing up for Create & Learn’s Unity Game Development Course, a series of classes where students will learn how to make 2D and 3D games in small groups with the help of professional instructors with game industry experience.

Kids can start coding games with Scratch

If you have a younger child (Grades 5 and under) who loves video games or is interested in game design, consider starting in Scratch, a block coding platform designed for kids by the Massachusetts Institute of Technology. In Scratch, kids will be able to quickly build games using colorful blocks of code that click together like LEGO. It is fun and easy to pick up, but challenging enough to maintain one’s interest for countless hours.

  1. Sign Up Free - Scratch is free join. Here's how to get started setting up your account in four simple steps.
  2. Create a New Project - You have joined Scratch. Now it's time to open a new project! To code in Scratch, first open the page on Scratch at MIT. Next, click on the “Create” button to make a new project.
  3. Follow an online tutorial - Here's an overview for what each type of Scratch block does. Follow along step by step with this Scratch tutorial to make a cool flying cat game.
  4. Make a game in Scratch - You can build shooting games, puzzle games, racing games, and so much more. Here are just a few examples of games you can make in Scratch.
  5. Take a Scratch class - At Create & Learn, we want kids to learn coding as early as possible. Our most popular course by far is Scratch Ninja, where kids as young as 6 or 7 years old can learn coding from experienced instructors. There’s a free intro session too, so if you think your child will be interested, there’s nothing to lose from giving it a try.

Now you know how to start coding games

Now that you have some basic ideas about coding games, we suggest you continue reading and doing research on your own while starting coding as soon as possible. Start a simple project and begin developing it. Whenever you hit a stopping point, find solutions by increasing your knowledge, seeking feedback, and taking some game design classes at Create & Learn. Up next, explore easy games to code and learn how to make a game in Roblox.

Written by Bryan Gordon, a Create & Learn instructor. After ten years of working as an English teacher, Bryan began studying Math and Computer Science over the past few years. Aside from writing and teaching, he likes cooking, gardening, playing guitar, and hanging out with his cats, Baguette and Wally.