Your game runs fine on desktop. Why does it crash on mobile?Intro You built a game on the web. It runs at 60 fps on your laptop. You open it on your phone and it stutters, overheats, or just crashes. Same code, same scene, completely different result. This posMay 4, 2026·11 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
Trigonometry for game devs, starting from zeroIntroduction This guide assumes you know nothing. We're starting from the actual beginning. By the end, you'll understand what trig is, why it matters for games, and you'll know the handful of formulaApr 24, 2026·8 min read