A god game about the first tribes on a floating island.
Play · Features · Getting started · Architecture · Contributing
dawnfolk-promo.mp4
Shape the land, call rain, fire and lightning, and watch small tribes gather, build, feud and climb from the Stone Age to the Iron Age on a procedurally generated island rendered with WebGPU.
- A living island. Named and grown from a seed, round or square, with rivers from caves and ponds, lakes, waterfalls off the edge, biomes, seasons and snow.
- Ruins and crossings. Megaliths of a forgotten people, and stepping stones or fallen logs where rivers can be crossed.
- Tribes. People gather, hunt, fish, farm, build, pray, migrate and split, and climb from the Stone Age to the Iron Age with pottery, linen, fields, mines, smelters and forges.
- Feuds and peace. Quarrels over land lead to raids by archers and spearmen; weary tribes send envoys with gifts.
- Wildlife. Herds of deer, mammoths and ibex, fast-breeding hares, and wolf packs that hunt them and stalk lone people at night.
- Powers. Fire, lightning, rain, snow, meteors, earthquakes, terraforming, forests, healing, animals and new tribes, each with its own settings; world rules are adjustable too.
- Scars that heal. Fire spreads with the wind, craters on rivers fill into lakes, monuments fall, and burnt land grows back over a few years.
- Procedural models. People, animals, plants, rocks and buildings are built from seeds and animated with skeletal clips.
- A readable map. Named peaks, lakes and ruins, tribe banners that fly you to their camp, and far markers on the island and the minimap.
- A calm HUD. Solid panels that read over any terrain, glass only for the power dock and the minimap, painted icons for game things, and a compact layout for phones.
Bun · Vite 8 · React 19 with the React Compiler · TypeScript 7 (@tsconfig/bases strictest) · three.js r186
(WebGPU + TSL, WebGL 2 fallback) · Base UI · Tailwind CSS 4 · Zustand · Zod · Comlink · Biome with Ultracite ·
Vitest 5 (node and browser projects) · Playwright · Lefthook.
You need Bun 1.4 or later and a browser with WebGPU or WebGL 2.
git clone https://github.com/imsvidskiy/dawnfolk.git
cd dawnfolk
bun install
bun run dev # http://localhost:5173Without parameters the game opens on a start screen that names the world and picks its shape. URL parameters skip
it and make a scene reproducible: ?seed=7&shape=round|square&name=Ashvale&quality=low|medium|high&hours=21&paused=1&camera=x,z,distance,pitch,yaw.
CONTRIBUTING.md has the other scripts, the checks and the code style.
src/
shared/ math, seeded random, noise, astronomy
content/ data registries: grounds, biomes, plants, animals, weather, technologies, buildings, powers,
world rules — powers and rules are zod schemas with UI metadata
world/ world grid and the data shared by the simulation and the renderer
generation/ relief → erosion → hydrology → climate and biomes → ruins and river crossings → vegetation →
ore deposits
simulation/ deterministic fixed-tick simulation: nature (calendar, weather, fire, embers, surface, growth),
agents (navigation, movement), fauna, society (people, jobs, tribes, buildings, settlement,
rivalry), powers, commands, frames
workers/ the simulation worker (Comlink)
game/ main thread: worker connection, world mirror, session, engine loop, god camera, input, power tools
models/ procedural model engine: mesh builder, rig and clips, people, animals, plants and rocks,
buildings, monuments, crossings
rendering/ WebGPU renderer: sky, height fog and atmosphere, terrain and water patches, waterfalls, vegetation
chunks and grass, skinned agents with far markers, buildings, fire, smoke, weather, bloom
design/ design system: paper and glass islands, game icons, buttons, fields, meters, tooltips, formatting
features/ UI features with their stores: time, powers, inspector, journal, tribes and rivalry, minimap,
map labels, notices, settings, new world
app/ app shell, start screen, engine launch, HUD layouts
The simulation runs in a Web Worker and posts frames; the main thread mirrors them for the renderer and the HUD, and the HUD sends commands back. AGENTS.md has the rules that keep these parts apart.