There are more tools and resources available for indie game development than ever before. This means that indie game developers can create games that wouldn’t have been possible even a decade ago, but it can also make it very overwhelming to get started.
To set you on the right path, I’ll share the process that’s worked for me. I’ll also describe how to choose the right library or framework and what actually matters for a beginner game developer.
1. Pick a (Small) Idea
New game developers are often inspired by the games they like to play. And if you’re interested in something like Civilization or Stardew Valley, you might want to dive into a similar project right from the start.
Unfortunately, you’re not ready for something complex. Game development is a difficult skill that grows with practice. It’s like learning the piano — you have to start with easy, simple songs and gradually expand into more challenging pieces.
The best way to start learning game dev is to pick a simple idea or genre and narrow it down to the very core features it needs to be playable. Do you want to make a platformer? You can probably get by without any enemies, fancy mechanics, or moving platforms. At the core, all you need is simple player movement, the ability to jump, and a win condition.
Making simple games like this is the best way to start growing. And having a completed game, no matter how small, will help you stay motivated to keep learning.
2. Pick an Engine or Framework
The next step is to figure out what engine, framework, or library you want to use.
- Game engines (like Unity or Unreal) typically come with graphical interfaces and the most built-in functionality.
- Frameworks and libraries are usually only code, written in existing programming languages. They provide all of the functions you need to create your game and get something that shows up on the screen, but they require a lot more setup. And as your game grows, they often lack some of the complex features useful to more mature games (which game engines provide). On the other hand, because they are more lightweight, they often give you more freedom to structure your code and your game as you desire.
It’s easy to get overwhelmed when trying to pick the perfect game engine or framework. The best advice I can give is to find the option that lets you focus the most on game development.
Non-Programmers
If you have no programming experience, I’d recommend using an engine like Unity or Godot. They provide many of their features via a graphical interface, which means that you can start making games without having full mastery of a certain programming language. You’ll still need to learn how to code eventually, but engines make it easier to do that as you go.
Programmers
If you’re a programmer, I’d look for a game framework in a language you’re familiar with. Most frameworks are relatively easy to learn, and your familiarity with the tools will allow you to focus on learning how to make a game.
Programmers can sometimes have a built-in aversion to using GUIs, which can cause them to avoid game engines entirely. This is understandable, and learning the UI of an engine is undoubtedly a nontrivial task. But the benefits of using an engine pay huge dividends in the long run.
I’d challenge all programmers to try making a complete, small game in an engine. You might be surprised how much you enjoy it and how easy it is. Whether you decide to keep with the engine or go back to using a framework, you’ll understand the benefits and drawbacks of both sides.
2D vs. 3D
As an aside, even if your goal is to make 3D indie games, I would start learning in 2D for your first few games. Working in 2D is simpler, and finding or making assets (like art and animations) is much easier.
Your goal is to learn, and using 2D will help you do that more efficiently at the start. Once you have a bit of familiarity, the transition to 3D will be much easier to make.
3. Create the Prototype
Now it’s time to actually start developing. Your goal is to create a minimum viable product (MVP). Strip out all the features that aren’t necessary for your core mechanic or idea. Don’t even worry about art or sound right now; use a basic square sprite for everything (or something equally simple).
This not only helps you limit your game’s scope, but it also provides valuable experience in learning to make games fun. If you have a platformer where all you can do is move and jump, then your game’s fun is directly tied into how good your movement and jumping mechanics feel. Tweaking the height of a jump or how fast your character runs can have a dramatic impact on how the game feels.
Your core mechanics are always the biggest contributor to how fun your game is. Even a large game with really cool features can’t save bad core mechanics. Starting off small with a simple prototype lets you easily experiment with your mechanics and learn how to adjust them to have the best feel possible.
4. Find Assets
The next step is to add art and sound to your game. You can certainly try making your own if you’re interested in that. But for most people, it’s best to find free assets online. Sites like itch.io and OpenGameArt have lots of great resources. Most games you make will have prototype or temporary assets in their early versions, so it’s good to learn how to find placeholder images and sounds online.
Experiment with different sounds and graphics. You’ll notice that adding real assets (especially sounds) can have a huge impact on the feel of your game.
5. Turn it into a Complete Game
You have a small game with good, simple mechanics, plus some graphics and sounds that bring it all together. It’s really starting to feel like a game now! There’s one last step to making your first, complete indie game, and I think it’s the most important of them all: Implement a full game loop, including winning, losing, and starting over.
I can’t stress enough how important this is. The most valuable thing you can do to become a better game maker is to finish your game. Finishing a game doesn’t mean that you never change it again. It means that the full game is there — no matter how small. You can win it, lose it, and continue playing it again if desired.
“Complete” Looks Different Every Time
Of course, not all games will have a win or a lose condition. Some games involve getting the highest score possible, for example, or trying to see how long you can survive. By finishing a game, I mean implementing all of the overarching game mechanics that make sense for the specific game you’re making. For some people, this might require a main menu or a save and load system. Do what feels right for your game, but be careful not to get lured into features that aren’t actually necessary for the game you’re making.
The Value of Truly Completing a Game
You’ll be blown away by how much of a difference having a complete game makes. There’s nothing more motivating than having something you can share with others and get feedback on. Additionally, it’s much easier to add features later if the game loop is already there. You already have something fully testable and playable, so it’s easier to see how new additions might affect the balance of what’s there.
One of the biggest hurdles for most people getting into game development is that they never learn how to finish a game. Getting used to scoping your projects realistically (so that you actually have a chance of finishing them) and pushing yourself to complete the entire game loop is a huge step towards learning to make this a normal part of your development routine.
6. Start Something New!
Congratulations! You’ve built your first indie game. Not only did you make it, but you finished it. You went through the work to fine-tune your core mechanics, add important assets like graphics and sound, and fully implement your game loop. You’ve already come much further than most people who want to get into game development, and the experience you’ve gained will continue to make every new project you start easier than the one before.
Now keep going! The best way to learn to make games is to make games, no matter how simple or small. Find new mechanics or ideas you haven’t tried before, come up with the most simple game that uses those ideas, and make it. As you continue to branch out and try new things, you’ll become more and more familiar with your tools and the basics of making games themselves.
Remember to follow all of these steps for each game you make. If you keep working on your skills and finishing games, you’ll have an impressive portfolio before you know it. You’ll be ready to tackle your dream game and move on to larger projects in no time.
In addition to this guide, I make tutorials to help people create games using the Godot engine. If you’re looking to further your game development skills, I hope you check them out. Best of luck on your game development journey!
This is an updated version of a post originally published in May 2020.