From gamer to game developer
It's no secret that video games are fun, that's why people play them! A lot of meticulous work goes into making them like that.
Making games is nothing like playing them. Games typically reward the player instantly for doing what they are supposed to, while game development is a labor of love. The time between action and reward is much longer, but the magnitude of reward is far greater than what can be granted within a game.
- make a game
- play it
- improve it
- learn from it
- make another game
Disclaimer
Most people immediately get excited about developing a multiplayer game like Fortnite, League of Legends, Overwatch, Rainbow 6, Valorant, Roblox etc. While this is a good goal, these games take an immense amount of work to build and sustain. They are usually maintained by large companies staffed with teams of experts.
Get acquainted with this picture:
I've only ever made 2D games and I'm writing about making games which puts me somewhere right after "knows nothing".
Prerequisites
Computer (optional)
Most people think of games as the computer / console variety. However, the vast majority of games don't even use computers: Sports, board games, card games, and word games are all examples of this. If you want to develop video games, learning from these other games will unlock your full potential.
This article will focus on computer games, so its recommended to use a computer.
Basic Math
Most games use math behind the scenes to make things work. The math gets much more complicated for 3D games, so if you want to keep the math part simple, start with a 2D game.
In my experience, making games actually helps solidify concepts in math and leads to a deeper understanding how math applies to daily life.
Time
Making games takes a long time. You will have to commit to it if you want to make a game worth playing. If you play a lot of games, that might be a good place to cut time from your schedule to make them.
Design
Designing the game you want to make is the most important step. This should probably take place on a piece of paper or drawing software where you can let ideas flow freely.
In this phase you should think of your game abstractly:
- what is the goal?
- what is the reward?
- what is the obstacle?
These are some examples of games I have made as abstract concepts:
Arcade
Two players (or a player and an AI) compete against each other for a common goal. This can be draining their health, getting a ball into a goal, beating their score or anything else you can come up with.
- goal: score points
- reward: beating an opponent
- obstacle: another person
Some examples include:
Puzzle
A player must overcome an increasingly difficult set of tasks.
- goal: complete puzzles
- reward: more puzzles
- obstacle: the difficulty of the puzzle
Notable examples:
Action-Roguelike
Roguelike commonly refers to games with progression, perma-death, and randomly generated levels. In a simple example, the player moves around and picks up randomly spawning weapons / powerups while fighting an ever-increasing onslaught of enemies. When the player dies, they must restart the game.
- goal: survice
- reward: better weapons
- obstacle: enemies who get stronger / more numerous over time.
Some notable examples:
And more!
This list is not exhaustive or correct, but should provide a starting point to try and imagine what can be done.
Some other simple genres include:
- Platformer
- Story game
- Shooter
- RPG
… Or any mix of the genres!
Theming
The world that your game will take place in is almost as important as the game itself.
Does your game take place in a fantasy world? In the future? On a yacht off the coast of Italy? Inside the human body? In space? There are really no rules to this.
Try thinking of a wacky combinations of genre and theme:
Picking a game engine
You should pick a game engine and learn how to use it. This is the primary goal of building your first game. Even if the game sucks, you should have ideas of how you could make it better if you were to start again.
I recommend Godot because its open source (which means its free) and has a good amount of tutorials out there. Any question you are likely to have has already been answered and is available on Google.
Here is a link to a good tutorial series on the engine
Some other game engines I have used in my life:
- Unity (industry standard, free at first)
- GameMaker (simple, somewhat limiting)
- P5.js (quick to get started, not good for advanced games)
- Bevy (cool, but advanced)
Building your game
Once you have chosen a game engine, you will have to find a way to model your game in a way that works with the engine. Below are some common concepts between game engines:
- Entity - an object that exists within the game (player, enemy, bullet, spell, coin)
- Transform - the position of an entity in the world
- State - data (score, health, mana)
- Sprite - an image that exists within a game
- Collisions - detect when two entities overlap and execute some logic
- Keyboard input - do something when a key is pushed
- Mouse input - responding to the position of the cursor as well as mouse clicks
- Event loop - a fixed set of commands that run in a loop
Head-ball example
Lets say there is a game where the player must keep a ball from touching the floor by moving left and right. When they hit the ball, it bounces up, but comes back down due to gravity.
Entities
- Ball
- Player
Collision detection
- Ball / Player collision -> bounce ball up
- Ball / floor collision -> End game
Keyboard input
- move player left / right
Event Loop
- Move ball based on velocity
- Apply gravity to ball (accelerate down)
The maths
Geometry
Geometry is useful in collision detection. Most objects in games are represented as either rectangles or circles, which makes it easy to compute how far they are from each other.
Algebra
A 2D game will always take place on a grid. The position (transform) of an entity can be understood as a distance from the origin of the grid. You will need to move things around the grid as well as use some basic math to determine the distance between things on the grid.
Physics / Calculus
The word calculus is scary but is actually somewhat mundane and universally understood. The key concept for application to game design is the relationship between position, velocity and acceleration.
Imagine a car that moves along a line.
In your game you can move things either by position, velocity, or acceleration. For driving games, you may want to use acceleration to match the reality of driving. For a platformer, you may want to try velocity for a more snappy feel.
Testing
Once you have the game working, you should play it over and over again. This will help you discover issues as well as opportunities you may not have noticed when you were initially designing your game.
When you are satisfied, its time to collect feedback from others. Good feedback is extremely valuable and hard to find, so its important to follow these principals:
- Fresh eyes are like gold - people only get to play your game for the first time once, so pay extra close attention to what they do, what they like, and where they get stuck.
- Say nothing - if you preface the game, you will influence the tester's experience. It's important to understand how the game is perceived in the wild
- Ask for the feedback you want - if you just want approval and encouragement, say that. If you want structured feedback, or ideas for improvement, say that. This will prevent feelings from getting hurt!
Thats it!
Once you are happy with your game, you should find a way to export it and store it somewhere so you can come back to it.
If you are proud of it, you can try to put it online. Many people post games to places like Itch.io. If you are not proud of it, keep it somewhere so you can see how much you improved after your next game.