Juice is the difference between a game that feels alive and one that doesn'tIntro Think back to the last game you played that felt good. What happened when you jumped? Did the camera move a little? Did your character squish for a moment before launching? What happened when yoMay 8, 2026·7 min read
2D Rendering Concepts: A Reference1. The Core Insight: 2D Is 3D With a Flat Camera A modern 2D game is rendered by a 3D engine. Every sprite is a flat rectangle (a quad) in 3D space. Every tile is a quad. Every UI element is a quad. TMay 3, 2026·15 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