The Art of the Palette: How Catlantean 3D is Engineering a Return to 1993’s Technical Constraints

Table of Contents
Engineering Nostalgia through Constraint
In an era of path-tracing and trillion-polygon counts, the most ambitious technical challenge for some developers isn’t adding more detail, but surgically removing it. Enter *Catlantean 3D*, an upcoming first-person shooter that isn’t just aiming for a “retro look,” but is actually being built upon the rigid technical constraints of 1993.
While many modern “boomer shooters” use high-resolution textures with a pixel filter to simulate antiquity, *Catlantean 3D* is operating on a philosophy of genuine limitation. The developer’s goal is to create a shippable title using techniques common to the early 90s, specifically targeting the aesthetics of VGA Mode 13h—the legendary 320×200, 256-color environment that powered the likes of *Doom* and *Duke Nukem 3D*.
For those unfamiliar with the era, this means the game doesn’t see colors as RGB values. Instead, it uses a linear frame buffer where each pixel is a single byte. That byte acts as an index, pointing to one of 256 specific colors in a pre-defined palette. If a color isn’t in that 768-byte palette, it simply cannot exist on screen.
The Geometry of the Raycaster
At its core, *Catlantean 3D* utilizes a traditional raycaster. Unlike modern 3D engines that render polygons, a raycaster projects a series of rays from the player’s position to determine where they intersect with a tilemap. This is achieved via the DDA (Digital Differential Analyzer) algorithm, which calculates the distance to the nearest wall for every vertical column of the screen.
To avoid the “non-square pixel” issue prevalent in 320×200 resolutions when displayed on modern 4:3 screens, the developer has opted for VGA Mode-X, shifting the resolution to 320×240. This subtle change maintains the low-fidelity charm while ensuring the visual proportions remain correct for a contemporary audience.
Solving the Lighting Paradox
One of the most significant hurdles in palette-based rendering is lighting. In a modern engine, darkening a wall as it recedes into the distance is a trivial multiplication of a color vector in a shader. In a palette-indexed system, however, there is no “darker” version of a color unless that specific darker shade is already mapped to an index in the palette.
Looping through the entire palette for every pixel to find the closest matching darker shade would be computationally prohibitive, even for modern CPUs. To solve this, *Catlantean 3D* employs a sophisticated preprocessing technique. The engine generates 32 distinct shade levels for every color in the palette.
When the engine needs a darker variant, it calculates the target RGB value and then searches the palette for the closest match. Interestingly, the developer found that standard Euclidean distance—the common mathematical way to measure color difference—resulted in a “cold,” greyish cast that felt lifeless.
To remedy this, the project leverages the Oklab color space. Unlike RGB, Oklab is designed to be perceptually uniform, meaning the mathematical distance between two colors more closely aligns with how the human eye actually perceives color differences. By combining Oklab distance with a slight shift toward warmer hues in the darker ranges, the game achieves a depth and atmosphere that feels authentic to the era while benefiting from modern color science.
The Philosophy of Deliberate Choice
This level of technical rigor highlights a broader trend in indie development: the move toward “meaningful constraints.” As the developer notes, the crispness of early 90s titles didn’t happen *despite* the limitations, but *because* of them. When you only have 256 colors to work with, every hue must be chosen with intent.
By adhering to these archaic rules, *Catlantean 3D* transforms asset creation from a matter of high-resolution painting into a tactical exercise in color indexing. The result is a project that serves as both a game and a technical autopsy of early 3D rendering.
*Catlantean 3D* is currently in development and is slated for a Steam release next year.