
The tech stack behind a browser RTS
Five stack choices and what each one charged: a physics engine never allowed near the simulation, a renderer whose failure mode is a blank white map, and 1,266 files with no upstream maintainer.
Tag
Development posts tagged dev-tools. Tags cut across the categories, so this pulls together work on the same subject from different parts of the game.
22 posts · page 1 of 2

Five stack choices and what each one charged: a physics engine never allowed near the simulation, a renderer whose failure mode is a blank white map, and 1,266 files with no upstream maintainer.

The whole map rendered flat white and nothing crashed. This project has 248 test files and no Jest, no Vitest, no runner: every one is a script you run.

Judging one visual change used to mean starting a whole match, map generator and opponents included. A lab loads one thing and holds everything else still.

Every level of detail is a real mesh now. Switch points come from how many pixels a thing covers, and a zoomed-out jungle went from 113M triangles a frame to 7M.

Three.js reports a broken shader by printing to the console and carrying on, so the map went white with nothing recorded anywhere. This is what changed.

An outline drawn in screen pixels over geometry that keeps changing under it. Two named failure modes, a doubled hull on every building, and a lab for it.

Ninety generated letters, traced to vector and shipped as drawable paths. Split the brief into topology and execution, and keep fill out of the skeleton.

March an army across a winter map and it carves packed trenches with lit rims. Four separate weather signals travel in the four channels of one texture.

An MIT-licensed three.js casting sandbox became the spell renderer, after a Z-up remap, an ink-banding pass, and a rule about which number decides a spell's size.

Sixty four spells were coming out as the wrong kind of magic, and nothing had gone wrong. Two pages exist to catch the bugs that look completely fine.

A biome sounds like a colour scheme. In this game it is eleven tiling textures, a measured average colour, a rock language, a sky and a kind of weather.

Two binary formats, two parsers, one shared intermediate form, and a guard that throws rather than let a source game's name reach disk.