A collection of resources/tools I’ve come across over the years to aid in building games from scratch.
If you’ve got resources you’d like to share, please open an issue and dump them in there!

If you ever want to find something specific that isn’t here, this is usually the first place I search - Handmade hero episode guide
If you can’t find it there, you could open up a help thread on the Handmade Network Discord

Don’t forget to keep it simple ;)


Sokol for an easy and solid foundation (platform, input, sound, etc) - easing functions cheat sheet - lots of goodies in here

John Carmack on Functional Programming

graphics programming

If I were starting out, I’d just use Sokol with sokol-gp instead of worrying about learning graphics programming straight away.

When ready though… - especially for the coordinate systems / transformation matrix explanations

I just use d3d11 since I’m only targeting Windows on Steam since that’s around ~98% of users. It simplifies things greatly. One target.

d3d11 specific: (solid fundamentals) (might find something useful in here?)
basic setup example using the C API
Minimal D3D11 - good for examples on the more advanced stuff (ignore the C++ cringe)
Shader examples
HLSL reference

some fun -

(for correctly mapping a texture without edge bleed)


A better point light attenuation function

audio programming

Lessons Learned from a Decade of Audio Programming is a banger

Introduction to Sound Mixing
@ - mixing sounds together, clipping, modulation & interpolation, pitch
implementation is in the following days here (from day 139) - decent overview of some of the terms wrt game dev

low pass filter

Ryan Fleury

Ryan deserves his own section because he’s an absolute unit of a man.

His Substack is a gold-mine. If you become a member, his community discord is a great place to ask questions and get sensible answers
UI Series
Confronting combinatorics - flags vs switches

Memory Management

A nice video clip to intro to the overall issue:

Untangling Lifetimes: The Arena Allocator
@ good example of how arenas can be passed as parameters
@ great example of a growable entity allocator with a free list
@ per-thread scratch arenas

“Learning how to work with arenas entirely revolutionized my experience with writing code in C. I almost never think about memory management, these days—it is not particularly more cumbersome than writing in a garbage-collected scripting language. Unlike such a language, however, I know where my memory is coming from, and when it’ll be “released”, and what that even means.” - rjf

Solid written overview -
Solid implementation walk-thru -

Jai Programming

If you’re in the beta, first just read the how_to


The Way to Jai - great starting point
Jai Community Wiki - a great reference once finished with the how_to’s (and for finding stuff that isn’t yet doucmented in them)

Jon Nuggets

valuable comments extracted from various places throughout the Jai codebase

on simply parsing a custom text file, found in "jai\modules\Text_File_Handler\examples\example.jai"

Here, we parse each line of the file. Many programmers in the modern day seem to be afraid
of parsing and fall back on huge libraries that don't even really solve the problem, and
end up giving them a bunch of extra work to do anyway, and that extra work may insidiously
worm its way throughout the program, increasing complexity of the program and reducing its
reliability. (See the typical large program that loads JSON files for an example of this).

In a modern programming language with powerful semantics and reasonable strings and good
compile-time and run-time checking, parsing simple things is pretty easy. It's much nicer
(and leads to more-solid programs) to do this than to try to load some generic uber-format
everywhere. Many people wearing Computer Science University hats will tell you this is
exactly backward, but they are exactly backward.

networking shit

high level overview -

Don’t bang your head against a wall trying to get around NAT from scratch, bang your head against a wall while using the SteamAPI instead.

great resource for learning socket fundamentals from scratch -


Introduction to Multithreading
Interlocked Operations
Memory barriers and semaphores
^ this was enough to get me going with multithreading


most of this is unread and unsorted

todo: make a proper linked list
linked list stuff -
cycle detection -'s_tortoise_and_hare

animation stuff -
Parallel Computer Architecture and Programming
doom 2016 graphics study

casey GJK: