Building a dead world without going full 3D

Devlog #1 · May 2026 · Too Far Gone

Too Far Gone is an atmospheric pixel-art game about walking out of a dead world. Before any of the mood could land, one question had to be answered: in what kind of space does this story happen? This first entry is about that — the engine, the camera, and a trick that lets flat pixels pretend they have height.

One person, so the tech has to be cheap

This is a solo project built in Godot 4.6 with GDScript. A solo budget changes every technical decision: the right answer is almost never the most impressive one, it's the one a single person can actually finish. So the prototype was assembled straight from code — the world, the player, the menu — rather than from hand-built scenes, which keeps everything in one place while the shape of the game is still moving.

That bias toward "what can one person ship" is the throughline of this whole devlog. Most of the interesting decisions below are really the same decision repeated: pick the version that looks right and can be maintained alone.

Top-down, and faking depth instead of building it

The biggest early call was 2.5D, not full 3D. Going fully 3D would have thrown away every 2D asset and roughly tripled the workload — not viable solo. But a flat top-down world can feel airless. The compromise is sprite stacking: an object is drawn as a stack of flat slices, one above the next, and every frame the upper slices shift slightly away from the player. The object appears to lean and to have height; walk around it and it reads as a small 3D thing, even though it's all 2D.

A rule came out of this almost immediately: sprite stacking is for small props — trees, rocks, barrels, the campfire. Buildings stay simple (low stacks for ruins, or a single angled pixel-art sprite); you don't model a house, you let a doorway trigger a change of scene. Keeping that boundary is what stops the technique from becoming a time sink.

The Dead Forest in Too Far Gone — stacked-sprite bare trees over an ashen floor
The Dead Forest. Every tree is a stack of slices that leans as you move; the lower slices draw behind the character and the upper ones in front, so you pass under the canopy.

The dead forest

The trees are the workhorse of the look. Each one is a stack of slices: a thin trunk that tapers as it rises, with bare branches fanned out evenly toward the top. The bark is a small procedural shader — irregular vertical fibres, posterized so they stay pixel-crisp — and every tree gets a slightly different pattern so a grove doesn't look copy-pasted. A soft shadow grounds each one.

The detail that sells it is the z-sorting. Slices below the halfway mark draw behind the character; slices above draw in front. The result is that you walk under the crown of a dead tree and it passes over your head — a tiny thing that does an outsized amount of work for the feeling of being a small figure in a big, indifferent place. The forest itself is deliberately colourless: the ground desaturates toward warm ash, the trees are charcoal-dark, nothing is green. A dead world shouldn't have a single healthy leaf in it, and that "no green anywhere" rule comes back constantly later.

The one warm thing: the menu fire

If the world is ash and silence, the title screen is allowed exactly one bit of warmth. The menu is a static painting with a live campfire and drifting smoke (particles), plus a thin curl of cigarette smoke off to the side. The title is set in a chunky pixel font with no anti-aliasing, and a single line blinks: press a key to begin. It's the warmest the game ever gets, and that's intentional — it's the thing you're walking away from.

The discipline that actually matters

None of the above ships a game on its own. The rule that does is boring: don't add anything new until there's a playable slice that runs start to finish. Wake up, walk, reach one encounter, make one choice, see an ending, return to the menu, play again — the whole loop, even if each piece is thin. Atmosphere is easy to keep polishing forever; a finished five-minute slice is the thing that tells you whether any of it is working. Everything in the next entries is built on top of that slice, not instead of it.

Next time: the map was mostly empty, and emptiness reads as "unfinished." How the world got filled without turning into a chore.