Useful resources related to game development
An ever-evolving and non-exhaustive list of articles, videos, and books that have helped me personally on my gamedev journey.
Programming
Languages
C++
Rust
- The Rust Book. The quasi-definitive way to start out learning Rust.
- Rustlings. An interactive course with small exercises, an ideal companion to the Rust book.
Compilation and linking
Graphics programming
Background
- How do Video Game Graphics Work? by Branch Education. A quick and entertaining introduction to the basic concepts of rendering.
- How do Graphics Cards Work? by Branch Education. Similar to the above, but focusing on the hardware side. Not as essential, but still highly useful knowledge when you want to write programs for the GPU.
- Real-Time Rendering by Thomas Akenine-Möller et al.
Working with graphics APIs
- Learn OpenGL by Joey de Vries. While I prefer Vulkan over OpenGL nowadays, this tutorial series has kickstarted my interest in graphics programming and is a very good introduction. OpenGL is simpler than Vulkan in many ways and you can get something drawn on your screen much faster with it, so I'd generally recommend to start out with OpenGL and later switch to Vulkan if you like.
- vkguide.dev by Victor Blanco. This is not only an introduction to Vulkan, it also walks you through setting things up in a way that makes it easier to develop a proper rendering engine (like I did with Prosper).
- vulkan-tutorial.com by Alexander Overvoorde. This introduction to Vulkan is more similar in style to learnopengl.com than vkguide.dev. I'm listing it here because this is the guide I was following initially, but I switched over to vkguide midway through when I learned it teaches more modern Vulkan techniques such as buffer device addresses and dynamic rendering.
- Vulkan Lecture Series by TU Wien. While not a step-by-step tutorial like the aforementioned guides, this playlist teaches the theory behind important Vulkan concepts.
Rendering techniques
- Acerola's entire YouTube channel. Especially the videos on color correction, HDR, grass, and water.
- Tone Mapping by @64
- Flowmaps, gradient maps, gas giants. by Martin Donald. I use this technique in Pure Gauge to animate flowing water. The other videos on his channel are also very interesting and worth checking out.
- Antialiased Deferred Rendering by Nvidia. I use this method to do multi-sampled antialiasing together with deferred rendering in Prosper.
Animation programming
- Animation Programming Basics by Bobby Anguelov. A real hidden gem - there are very few resources on animation programming, but this is a solid introduction covering topics like how armatures, skinning, keyframes etc. work from the perspective of a game engine.
- Animation Graphs by Bobby Anguelov. Similar to the above but focusing on animation graphs.
Game engine development
- Game Engine Architecture by Jason Gregory
- Game Programming Patterns by Robert Nystrom
- Game Engine video series by TheCherno. Pick the videos on topics you find interesting, there's no need to watch it in chronological order unless you want to follow along.
- How I learned Vulkan and wrote a small game engine with it by Elias Daler. I got the technique I use in Prosper for skinning meshes with a compute shader from this article.
Game Design
- The Art Of Game Design by Jesse Schelle
- Souls-Like games you've never heard of video series by Iron Pineapple. This may be an unusual entry on this list because these videos are primarily entertainment, but they cover a wide variety of games and Iron Pineapple gives very thoughtful feedback to each. Especially interesting are the "low budget" games made by students or solo developers - sometimes you can learn more about game design by studying the mistakes other games make and how to fix them, rather than focusing on what a successful game did well.
- The Architect of Games YouTube channel by Adam Millard
- Game Maker's Toolkit YouTube channel by Mark Brown
- Design Delve video series by JM8
3D Art
Rigging
- Rigging isn't Scary: Manual Rigging in Blender video series by CGDive