Welcome πŸ‘‹

I’m Dom, aka json-born. Making video games has been my dream since I first sat at a computer. Follow along as I finally get around to chasing that dream.

Building a Minimal Doom WAD Loader

I wanted to learn how Doom’s WAD files work, so I wrote a simple loader. My goal was just to understand how a WAD is structured, open it and read its contents. WAD File Overview A WAD file (β€œWhere’s All the Data”) is Doom’s archive format. It stores maps, textures, sprites, palettes, and other data. The layout is straightforward: β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Header (12 bytes) β”‚ β”‚ β”œβ”€β”€ 4 bytes: "IWAD" or "PWAD" β”‚ β”‚ β”œβ”€β”€ 4 bytes: Lump count (little-endian) β”‚ β”‚ └── 4 bytes: Directory offset (LE32) β”‚ β”‚ β”‚ β”‚ Lump data... β”‚ β”‚ β”‚ β”‚ Directory (16 bytes per entry): β”‚ β”‚ β”œβ”€β”€ 4 bytes: Lump position β”‚ β”‚ β”œβ”€β”€ 4 bytes: Lump size β”‚ β”‚ └── 8 bytes: Lump name (null-padded) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ Each WAD starts with a header that tells me how many β€œlumps” there are and where the directory is. The directory is a list of fixed-size entries that point to each lump’s position and size in the file. ...

October 24, 2025
DOOM Logo

Building the DOOM Engine from Scratch: A Learning Journey

I’ve been reading Fabien Sanglard’s Game Engine Black Book: DOOM, and honestly, it has blown my mind. The book breaks down all the clever tricks behind id Software’s masterpiece and makes you appreciate just how insanely talented those early developers were. Reading about BSP trees, sub-pixel accuracy and perspective-correct texture mapping has me itching to build something myself. So that is exactly what I am going to do. I am starting an id Tech 1 engine recreation project in C++. This is not about making a game. It is about learning by doing, understanding how everything works under the hood, and gaining a deeper appreciation for the engineering genius Sanglard documents so well. I want to implement the core systems from scratch and see firsthand how they all fit together. ...

September 19, 2025

Hello World!

My earliest gaming memory is sitting on my dad’s lap at four or five, firing the shotgun in DOOM while he handled the movement. I had no idea what I was doing, and I’m pretty sure the game was way too intense for a toddler. Even so, I remember staring at the screen and being completely fascinated, caught up in this strange new world I didn’t fully understand but couldn’t look away from. ...

September 19, 2025