Indie dev builds a 256-color raycaster shooter under self-imposed 1993 constraints
A solo developer is building Catlantean 3D, a first-person shooter slated for Steam next year, under deliberately punishing retro constraints: software rendering and audio mixing written by hand, a 320x240 resolution with a 256-color palette, fixed-point math for deterministic game logic, and every asset made from scratch with an explicit ‘no AI slop’ rule. The only modern concessions are a current compiler and a thin platform layer exposing little more than a framebuffer, input, an audio buffer, and file I/O. The premise echoes VGA-era games like Doom and Duke Nukem, where each on-screen pixel was a single byte indexing a 768-byte palette — a limitation the author argues produced crisp, distinctive visuals precisely because every color choice had to be deliberate.
The post’s most interesting technical material covers lighting in a palette-based renderer, which the author calls the most overlooked part of raycasting writeups. Distance-based light falloff is trivial with shaders, but a paletted renderer only knows indices, not colors, so darker shades must be precomputed into lookup tables: 32 shade levels per palette entry, each mapped to the closest existing palette color. The author found plain Euclidean RGB distance made dark shades drift toward lifeless grays, so the matching is done in the Oklab perceptual color space instead, with a slight hue shift toward warm tones as colors darken — a pixel-art trick that, by the author’s own admission, is justified only by ‘it looks right.’
Beyond the rendering details, the piece is a case study in constraint-driven craft: the palette itself was designed around the game’s needs (reserved transparency, lots of reds for blood, desert hues for its cat-worshipping Egypt parody setting, grays for cybernetic occupiers) and refined through repeated iteration alongside the assets. It is a counterpoint to modern asset pipelines, where unlimited color budgets remove the forcing function that once made restraint a feature.
Read the full article
Continue reading at Hacker News →This is an AI-generated summary. Read the original for the full story.