Back to projects

Caspian Atom: The Aktau Protocol

A Soviet-era nuclear city-builder where one reactor sustains 150,000 souls in the desert. Built with Babylon.js, TypeScript, and AI tools.

TypeScriptAIBabylon.js

A browser-based isometric city-builder set in Soviet-era Aktau, Kazakhstan. You manage a nuclear-powered desalination city in the desert, balancing water extraction, nuclear power, and district heating.

One wrong move and it's meltdown, drought, or frozen citizens.

The real story

The BN-350 fast breeder reactor operated in Aktau from 1972 to 1999. It wasn't just generating power-it was desalinating Caspian seawater, producing 120,000 cubic meters of fresh water daily for 150,000 people in the middle of a desert.

I grew up there. This game is my way of telling that story.

Read the full story: Building a Game About My Hometown Without Writing Code

Tech stack

LayerTechnology
RuntimeBun
BuildVite + TypeScript
RenderingBabylon.js (WebGPU/WebGL)
AudioZzFX (procedural SFX) + Suno AI (background music)
StateCustom event-driven GameState singleton
AssetsKenney asset packs (Suburban, Industrial, Roads)

Core systems

Resource flow

Six interconnected resources drive the simulation:

  • Seawater - Extracted from Caspian Sea by pumps
  • Fresh Water - Desalinated from seawater, consumed by housing
  • Heat - Generated by reactor, consumed by desalination and housing (2× in winter)
  • Electricity - Powers everything
  • Population - Grows when happy, flees when not
  • Happiness - Affected by water, heat, and housing connections

Capacity system

Each producer building has limited capacity. A single distiller can only supply 2 microrayons. Water tanks extend the network by relaying capacity.

1 distiller = 2 microrayons
1 distiller + 1 tank = 4 microrayons
1 distiller + 2 tanks = 6 microrayons

Buildings connect automatically based on distance, nearest first. Once capacity is exhausted, additional buildings remain disconnected.

Reactor temperature

The reactor gains +1°C every tick. Each connected distiller provides -0.8°C cooling.

  • Warning at 80°C (visual + audio alert)
  • Meltdown at 100°C (game over)

The tension: you need distillers for water, but they also keep you from exploding.

Seasonal heat multipliers

SeasonHeat consumption
Spring×1.0
Summer×0.5
Autumn×1.2
Winter×2.0

Winters are deadly. Plan ahead or freeze.

Building placement preview

When placing buildings:

  • Green ghost - Valid placement AND connected (producer has capacity)
  • Gray ghost - Valid placement but NOT connected
  • Red highlight - Invalid (wrong tile type, occupied)

Dashed preview pipes show exactly what will connect.

Fail states

ConditionResult
Reactor ≥ 100°C☢️ Nuclear meltdown
Fresh water < 0🏜️ City drought
Heat < 0❄️ City frozen
Population = 0💀 Extinction
Happiness = 0✊ Citizens revolt

Each ending has a narrative description pulling from real Soviet history.

Visual features

  • Isometric 3D with film grain and heat haze post-processing
  • Organic diorama terrain with vertex-colored geometry
  • Animated water plane using Babylon's WaterMaterial
  • Procedural decorations (trees, fences, roads)
  • Roaming camels and tumbleweeds that avoid buildings
  • Pulsing pipe glow animations
  • Building placement dust burst effects

How it was built

This entire game was built using AI-assisted development:

  • Claude Code and Cursor as primary tools
  • Opus 4.5 model for code generation
  • Zero manual code writing

I described features in natural language. The AI wrote TypeScript, Babylon.js scene code, shaders, and game logic. I reviewed, tested, and iterated.

Four days from initial commit to playable game.

Screenshots

Gameplay showing the isometric city with reactor, distillers, and housing

Status: Work in Progress

The game is playable but actively evolving. Planned additions:

  • Random events (sandstorms, accidents)
  • Building upgrades
  • Achievement system
  • Weather effects

Feedback welcome: me@eone.work