Roadmap to game engine development
⚠️ This is a draft. It's probably not very good. I'll post about it when it's done! ⚠️
This (DRAFT DRAFT DRAFT, probably incorrigible in its current form) is a companion post to Roadmap to C.
Game engine stuff
Game Programming Patterns requires no prior reading. It covers how to architect games that are maintainable and performant (or at least optimisable). It doesn't talk about fancy data structures and algorithms much, just brushing past them when relevant, so it can either be a nice refresher on those topics or a motivating jumping-off point for further reading (try The Algorithm Design Manual!).
It's also just very fun to read. It carries a refreshing "yes, you can build game engines!" energy, mirroring that found in Nystrom's other book, Crafting Interpreters.
It's available online at https://gameprogrammingpatterns.com.
Game Engine Architecture is a roadmap crash-course on everything - everything - in game engines. It uses C++ for code samples but not to the extent that you really need to know the language.
As big as it is, it barely even touches on the details of many fields, like networking and AI. When I read it, cover-to-cover, it took me a month of full-time study. But then I knew - I had the words and concepts to know what exists, what I might want to look for, and how to look for it. I finally had the ability to watch technical talks and read technical papers, to dive deeper. I could begin to have opinions and be able to make judgements about tradeoffs in game engine design. This is a very exciting and empowering feeling. What fields will captivate you and pull you in their direction next?
The official website is https://www.gameenginebook.com. If you don't want to splurge for the book... it's not difficult to find online.
Learning C++
You might find - at some point - regrettably - that you do, in fact, need to learn some C++ to get around, or at least to impress potential employers and prepare for interviews.
The C++ Programming Language ("Stroustrup") is huge aaand you don't need 75% of it. The first 5 chapters are a whirlwind tour of templates, references, the STL (Standard Template Library), classes and inheritance - basically everything that makes C++ "not C". Those are sufficient to get by with straightforward C++ codebases (and god willing, you never need to play with non-straightforward C++).
You will need to know C, regardless of what Stroustrup says in the intro. The required knowledge is about the same as that needed for Crafting Interpreters (as described in Roadmap to C): by that point, you've done all the worst parts of C, so you'll be able to appreciate the facilities of C++ that let you never have to do them!
The other key thing is that, sadly, this book is outdated. After you grasp it, look up: "what important things got added in C++14?" and C++17, and maybe even C++20 and beyond... but C++14 genuinely has the most important stuff.
Careful: the most important thing about "real" C++ is throwing away everything you thought you knew about C. No pointers, except when you really need them (when?). No malloc()
, unless you're writing a custom allocator. No <stdio.h>
, use <cstdio>
(why?) (and anyway, don't use that, use <fstream>
). No #define
s, prefer constexpr
, except except except... the journey to C++ is one that relies on understanding C deeply - and throwing all of it away - to achieve greater safety, and a certain level of greater elegance, or perhaps awful overengineering - a matter of taste, and degree.
Like Game Engine Architecture, you can find fresh-minted PDF copies of Stroustrup on the front page of your favourite search engine or internet archival site.