Just write your own librariesJust write your own libraries Libraries used to limit what you could do. If nothing fit your needs, you had to settle or slowly create it yourself. Now, that's changed. AI models are advanced enough fMay 5, 2026·4 min read
2D Asset Primitives: A Reference1. Sprite A 2D image with transparency, drawn in the world with a transform. A sprite is the atomic unit of 2D games. The image data is just a PNG. What makes it a sprite is how it's used: positioned May 3, 2026·16 min read
Skinning and Why Smooth Weights MatterIntroduction You know what a 3D mesh is. You know what a skeleton is. There is a thing in the middle that connects them. That thing is skinning. And it makes or breaks how a character looks when it moMay 3, 2026·2 min read
How spatial audio works in gamesIntroduction A while ago I started wondering how games make sound feel like it's coming from a real place. Like in Counter-Strike when you can hear someone walking through a room two corridors over, oApr 29, 2026·8 min read
A visual guide to voxelsWhat's a voxel? A voxel is to 3D what a pixel is to 2D. A pixel is a tiny square in a 2D image. A grid of pixels makes a picture. Your screen is a grid of pixels. Zoom into any photo and you see them.Apr 26, 2026·4 min read
Does my KTX2 texture need to be square?Introduction I hit an error like this: KTX2 texture decoded to 512x286, which is incompatible with block size 4x4 I assumed the texture needed to be square (width = height). That was wrong. Where theApr 26, 2026·2 min read
Indirect draws in WebGPU and why they're so powerfulIndirect draws in WebGPU 1. The two kinds of passes Every frame, CPU records commands grouped into passes. Two kinds matter here. Render pass = pixels come out. Runs the standard graphics pipeline: VApr 26, 2026·9 min read