A free, open source retro pixel-art city building game.
The community GPL continuation of the amazing work by the Cytopia team, rebuilt on Godot 4.
In-game HUD (v0.5): date & speed controls, population, funds, RCI indicator, minimap — and a downtown that grew on its residential zone.
The map editor at startup: seed, size, Hills / Water / Trees sliders with live regeneration, then Found City.
Cytopia was 2,800 commits of pure passion: a custom isometric engine, 827 tile types documented in JSON, 909 pixel-art sprites, original soundtracks — all released under GPL-3.
Then development went quiet in public… before resuming behind closed doors with an announced license change. Everything that was ever published remains GPL forever. Citopia carries that heritage forward, fully in the open, on a modern and moddable engine.
- 🗺️ Isometric rendering driven by the real Cytopia tile database
(
TileData.jsonused as-is: 827 tiles, sprite sheets, random per-tile variants) - 🌱 Procedural biome generation (noise-based: lakes, beaches, grass, forests) — 96×96 map, easily extensible
- 🏗️ Build & bulldoze: hover highlighting (green/red), multi-cell
footprints (2×2 buildings...), ground/water placement rules from the tile
database, ghost preview, demo village (
godot scenes/main.tscn ++ --demo) - ⛰️ Terrain elevation: terraced hills (±1 step like the original),
slope sprites decoded from the legacy sheets, hand-drawn textured cliff
walls, raise/lower/level tools with drag-painting, animated showcase
(
godot scenes/main.tscn ++ --demo-elevation) - 🏘️ RCI zoning: paint residential/commercial/industrial zones and watch buildings grow on their own (1×1 buildings from the 500+ database entries), de-zone tool, bulldozer clears buildings and zones
- ⚡ Zones need services: a zone only grows when served — a road within 2 tiles AND coverage by a power plant (the coal plant radiates further than solar panels). Un-served zones show up darkened on the map, and grown buildings that lose their service are abandoned: inhabitants move out immediately, the darkened ruin collapses after a grace period, and the zone regrows once the service is restored
- 🛣️ Roads & traffic: paint roads by dragging and they auto-connect with the exact legacy sprite for their connection mask — curb gaps, dashed centre lines on straights and truncated side-arm lines at junctions all line up (the 24-frame road sheets were decoded frame by frame). Cars drive the network with BFS pathfinding, right-hand lanes and a fleet that scales with population — and they obey the rules of the road: priority to the right at intersections, gentle braking behind slower traffic (queues form naturally), slow-downs on turns and junction approaches, and a deadlock-breaker timeout so crossings never gridlock. Every car also has its own top speed and acceleration. Maps are flat for now (the Hills slider is disabled in the map editor)
- 🖥️ Game UI: top bar with in-game date and pause/speed controls, live population and funds, mini RCI indicator, minimap with camera viewport (click to jump), build bar with category tabs browsing the whole 827-tile database
- 🗺️ Map editor at startup: seed, map size (48/96/192), Hills / Water / Trees sliders with live regeneration — then Found City
- 🎛️ Build bar with icons extracted from the sprite sheets
- 🎵 Original soundtracks: shuffled playlist of the Cytopia OST
- 🎥 Smooth camera: keyboard panning, cursor-centered mouse-wheel zoom, drag to pan
- 📦 909 sprites + 50 MB of original soundtracks already in the repo
- Tile hover, highlighting, place/demolish (the sandbox)
- Audio: original playlist and sounds
- RCI zones that grow buildings on their own
- Map editor (seed, size, terrain sliders, live preview)
- Game HUD: date, speed, population, funds, minimap
- Roads with auto-connecting sprites + vehicle AI (BFS routing)
- Zone growth requires road access + power coverage
- Simulation: RCI demand, taxes
- Automatic roads
- Mod support (the DNA of the original Cytopia project)
git clone https://github.com/Danux-Be/Citopia.git
cd Citopia
godot . # open in the Godot 4.x editor
godot scenes/main.tscn # or run directly| Action | Input |
|---|---|
| Move the camera | WASD / arrow keys |
| Zoom | mouse wheel |
| Pan the map | right or middle mouse drag |
| Select a tool | click it in the build bar |
| Build / demolish | left-click on the map |
| Paint zones / terrain | hold left-click to paint |
| Clear the tool | ESC |
citopia/
├── scenes/main.tscn # main scene
├── scripts/
│ ├── game.gd # root: input wiring, drag-painting, demo scenes
│ ├── tile_catalog.gd # TileData.json loading, sprite-sheet regions, variants
│ ├── iso_map.gd # map model, isometric rendering, placement rules
│ ├── build_bar.gd # toolbar UI (icons from sprite sheets)
│ ├── game_camera.gd # pan / zoom / drag
│ └── music_player.gd # shuffled playlist of the original OST
├── data/ # TileData.json, TerrainGen.json, AudioConfig.json
├── assets/ # sprites, music, fonts (GPL, © Cytopia contributors)
└── languages/ # translations
The legacy tile format is reused as-is: every sprite is a horizontal
strip of 32 px-wide variants, addressed by offset + variant, with the
clip anchored to the bottom of the sheet (the area above it is elevation
headroom).
Join the Citopia Discord to follow development, share your cities and suggest features:
The project is just getting started: every contribution is welcome — code, pixel art, music, translations. Check the roadmap above for ideas. License is GPL-3: any redistribution must remain free software.
- 💙 The Cytopia team and contributors for the assets, the tile database and years of work
- 🎮 Godot Engine (MIT) for the engine