Where Do I Start?
It was probably about 2 years ago when I became serious about (becoming good at) game development. Prior to this I'd conceptualize or read some inspiring article, but it never went past the idea. The purpose of this article (and future articles on the topic) is to share my experiences as complete beginner, self-taught game developer.
Coming from a limited background, I wanted to share a couple tips from my experiences starting out on my own.
Clear Your Mind
The first thing to do is throw out all your great game ideas. Stop thinking about the last great game you played and stop saying, "I want to make a game just like that." You'll need to think smaller. Think Pong.
What I found helpful was to go through (this list). Try building each game, one-by-one from scratch (with the help of a game framework, of course). At first you'll have no idea what you're doing, but eventually you'll build confidence in your abilities and soon start to do it like it's second nature.
Picking A Language
I'd say this comes down to a few factors:
- Choose what's comfortable - considering most programming languages follow similar semantics, but differ in syntax, pick a language you are comfortable with. Focusing on one won't hinder you from easily learning another later (of course going from python to c++ is more difficult that the opposite).
- Based on a framework? - I started with Lua/Love2D, then experimented with C++/OpenGL, and now trying C#/MonoGame.Extended. Bottom line is you may choose the framework, or the framework may choose you.
- Using a game engines? - some game engines (i.e. Unity, Godot) allow you to code in several different languages, while others don't.
Framework vs From Scratch
If you're just getting started, you'll definitely want to choose a framework.
Your anxiety will subside and you'll become more confident. You may even find yourself exploring the library files to see what's happening behind the scenes. Then you'll venture into creating your own framework.
Below is a list of frameworks with their corresponding language:
- Lua/Love2D - Love2D provides you with several modules to build a 2D game. Plus it has a large, active community.
No, thank you.
Choosing to build a framework from scratch is a multi-faceted journey into many topics causing you to wish you would have paid attention in school. Regardless, it'll definitely push you to your limits and you will learn lots from it. Some topics include:
- Forces - Acceleration and environmental factors. Do you want gravity in your world? How will your entities interact with surfaces? In the air?
- Collision Detection/Response - You could use brute force tactics or more efficient broad vs narrow approaches for detection. Learning how to detect collision can be grueling on the CPU, especially when you have thousands of calculations running every fraction of a second.
Input/Events - Do you want to handle just keyboard events? How about mouse or gamepad?
Particles - Not necessary but allows you to add cool effects (e.g. flames, explosions)
- Vectors - Using a Euclidian Vector as opposed to individual x, y (and z) variables opens you up to the wonderful properties of vector math. For example, how do you find the direction from an origin to a target?
target - direction = direction vector
- Matrix - When it comes to 3D, you'll want to understand what matrices are used for and how multiplication works.
This is just an introduction to my beginning journey into game development. The intent was to help ease the anxiety and to get you started in your adventure. I hope to continue on this topic and create many more articles in the future.