Over a decade ago, I taught myself the basics of game programming and game development through the limited tutorial resources I could find on the Internet. Since then, the landscape of game development has changed drastically, and anyone can start creating their own games within weeks with a few Google searches. But let’s say you want to start developing your own games but don’t know where to start. Where do you go?
In the world of programming, they say that once you learn one coding language, you pretty much know them all. It’s a little more nuanced than that, but the sentiment is more accurate than you think. The difficulties of programming – especially with regard to games – are not the actual coding, but learning the paradigm of how a game works and how to use those languages to organize and translate your thoughts into reality.
Therefore, when looking for a good game development tutorial series, you want one that will teach you the practices and mentality of good coding because you can then transpose those practices in any language or platform, whether it’s C++, C#, Python, Java, or whatever other language you intend to use. Here are some of the most useful tutorials I’ve found on my self-taught journey.
Lazy Foo has been around for many years, and it was one of the main resources I used when I first delved into game programming. He’s written plenty of tutorials on both SDL and OpenGL, two graphics libraries that are cross-platform and can handle 2D and 3D graphics, respectively. His tutorials are well-written, straightforward, and will get you acquainted with both libraries using the C++ language as the coding medium.
I recommend starting with his general articles, then moving onto the SDL tutorials, then the OpenGL tutorials. Strictly speaking, 2D graphics require less math knowledge and, thus, are simpler to grasp than 3D, so that’s why I recommend starting there. But if you’re confident, you can try diving right into OpenGL.
The tutorials on Aaron Cox’s site were another core resource that I used when learning how to program video games. His tutorials focus on 2D game programming using the SDL graphics library, so you can use these tutorials in conjunction with Lazy Foo’s above. Aaron provides his own SDL overview, and they provide a great foundation, but they’re nowhere as in-depth as Lazy Foo’s.
The reason I recommend Aaron’s site is because he has a whole section on sample arcade games that he’s created using SDL. He has full tutorials for creating a Tetris clone, a Pong clone, and a Breakout clone. These were critical for me as a budding game programmer because they taught me all about game logic, draw calls, entity classes, code organization, and more. You need to enter a “game programmer” mindset and paradigm, and these guides will help you get there.
Tuts+ is just a great resource in general when it comes to learning new computer skills, and game development is one of the things they teach. The game development section of Tuts+ has a great “Start Here” article that introduces you to the site, the kinds of articles you’ll find there, and a roundup of great links for you to check out as you learn more about game development. When you’re ready, you should also check out their roundup of fantastic game development tutorials from around the web.
Tuts+ has hundreds of game development articles that touch on topics from starting a new project, to planning and organization, to actual implementation of the code, to game balance, to actually finishing up a game before moving onto your next project. The site can be hard to navigate since it’s pretty much just a blog setup, but the articles are incredibly detailed and easy to follow. I recommend them whole-heartedly.
Lastly, we come to GameDev, an online community of game developers from around the world. It would be a grave sin to talk about game development websites without mentioning GameDev, which has been a formative and central website for many novice and advanced game programmers alike. It’s been around for almost 15 years, and there’s no sign that the site will die anytime soon.
At GameDev, you’ll find lots of articles aimed at beginners, but the best way to benefit is to visit their forums. There are dozens of different sections that cover topics like “from scratch” development, beginner questions, finding helpers and other coders, the business and legal side of game development, and even workshops for honing your skills with various languages and engines. You would be a fool to pass this site by. It’s an incredible resource.
Game Development Engines
Most of the “game programming” tutorials you’ll find in the sites above get down into the nitty-gritty of engine development. They teach you how graphics are drawn to the screen, how input is retrieved from keyboard and mouse, how network packets are handled, etc. If you intend to enter the game industry as an engine developer, that knowledge will be useful, but if all you want to do is create a game, you don’t really need to know that minutia. What you need is an engine that’s already been constructed by someone else.
That’s why you’ll hear a lot of talk in the game development world about “game engines,” such as Unreal Engine, CryENGINE, Havok Engine, Unity, etc. These engines handle the behind-the-scenes details for you, allowing you to focus on the actual gameplay and content instead. I’ve covered five of the best FREE game development engines out there and you should really look into those, especially if you’re a newbie to the whole game programming thing.
Game development is tough stuff, but with these websites and resources you’ll be up and running as fast as possible. Be prepared to sink a lot of time into the learning curve because it won’t be easy – not by a longshot – but with enough dedication and perseverance, you’ll get there. If you’re young, or if you know a young one who likes computers, game development can be a great way to get kids excited and prepared for programming as a whole, so stick with it!
Know any other good resources for beginner game programmers? Have you used these resources before? Share your thoughts and experiences with us in the comments!