- Role
- Creator · game design, art direction and engineering
- Platform
- Browser game
- Status
- Launched
- Stack
- Three.js (WebGPU + TSL), React Three Fiber, React, Zustand, TypeScript, Vite, Vercel Functions, Upstash Redis
Overview
Titan is a survival game that runs in the browser. The crew is gone and you are not. You grow food in bone-white dust, scavenge enough air to breathe, rebuild a buried rover and drive it to the wreck before time runs out. I set the bar at AAA and kept an audit of what a console survival game has that mine didn’t yet, ordered by how much each item moves perceived quality per unit of effort. Then I worked down the list.
What it does
- Coupled survival. Oxygen, water, power and food feed each other. Lose power and your air drains twice as fast; water grows crops, crops feed you.
- A guided goal ladder. Eight milestones, from stepping inside the hab to driving to the crash site. Each one is a checkpoint, so dying never sends you back to Sol 1.
- Storms you can’t fully predict. Sirens are exact. The ARES terminal only estimates, and it reports facts, never strategy.
- Any input. Keyboard and mouse, PlayStation or Xbox controllers with haptic rumble, or a touch joystick on phones.
- Procedural suit audio. Wind, breathing, the low-oxygen heartbeat and the airlock hiss are synthesized in code, with no audio files.
How it’s built
Three.js on WebGPU with TSL shaders, inside React Three Fiber. World props anchor to the ground with the same height function the terrain shader uses, so nothing floats. All gameplay tuning lives in one balance file.
The hardest problem was the first minute. Shader pipelines compiling mid-game froze the page, so I built a freeze-attribution probe, moved the compile behind the loading screen and spread it out one pipeline at a time so Chrome never flags the tab. Each milestone fires an analytics event, so I can see where runs drop off. A leaderboard runs on a small Vercel function over Upstash Redis.
On day three I cut every side quest, from the lava tube to the ziplines. They pulled focus from the one thing the mission is about: the rover. I wrote it with Claude as my coding partner: about 160 commits over nine days in June 2026.
Where it is now
Live and free to play. It needs a WebGPU browser (Chrome, Edge or Safari 26+), and the first load can take a few minutes while shaders compile. I prototyped shared presence, where you’d see other explorers walking the same planet, then took it off the title screen.
- 1 / 7

The opening briefing: reach the hab before your suit runs out of air. - 2 / 7

The HUD: six gauges, the sol clock, the rescue countdown and ARES's storm estimate. - 3 / 7

The last objective: drive the restored rover out to the crash site. - 4 / 7

The title screen: open the airlock, or connect a controller first. - 5 / 7

The brand system: an eclipse mark, a bone and ink palette, Fragment Mono throughout. - 6 / 7

Inside the hab: planter beds, and the next goal. - 7 / 7

The Wing: a wrecked wing balanced on a boulder, used as a seesaw.