A 3D voxel medieval city-builder in the browser. A clan of foxes, pandas, rabbits and bears settles a valley, raises a town, walls it in and holds it against wolves, boars, raccoons and badger rams through twelve ages, from Hamlet to Skyward, Fusion, Orbital, Nanotech, Quantum and Stellar. Survive 25 raids to finish the chronicle, then keep playing in endless mode.
Plain HTML + Three.js r128, no framework and no build step needed to run. Installable as a PWA and playable offline.
| Action | How |
|---|---|
| Build | Pick a card in the dock, click the ground. Walls: drag to draw a line. Hover a card to see its role and how it helps. |
| Inspect | Hover any building or animal for a tooltip, or click it for the full panel. |
| Camera | Drag to pan, right-drag or Q/E to rotate, scroll or pinch to zoom, WASD/arrows to move. |
| Select animals | Click one, double-click for all of that kind, shift-drag to box select, or the Army button. |
| Command | Right-click ground to move, an enemy to attack, a tree/rock/site/damaged building to send settlers to work. Keys: M move, T attack-move, H hold, X stop, F ability, Esc deselect. |
| Levels | Defenders gain XP from kills and settlers from working. Defenders learn an ability at level 3 (Volley, Bamboo Guard, Cleave, Aimed Shot). |
| Healing | Animals heal slowly when out of combat, faster near the Great Hall, and quickly near a Healing Hut. Idle settlers repair damaged buildings for free once a raid ends. You can also pay to repair instantly from a building's panel. |
| Time, seasons, weather | Days run sunrise, midday, sunset, night; the year turns spring, summer, autumn (falling leaves, harvest bonus), winter (snow, half food). Buttons pin time, season and weather (clear, cloudy, rain, storm, snow, fog), and toggle theme and sound. |
| Saving | Save opens three slots; the game also autosaves every 20 seconds and when you leave the tab. Continue on the start screen resumes the latest save. Export and Import move a save file between devices. Saves are stored in your browser, and each carries the game version. |
| Mobile | Tap to select an animal, then tap the ground to move or a raider to attack. Long-press a card for its explanation. The menu button reveals the environment controls. |
The repository root is the static site, so no build is required.
- Import
iominh/pawholdin Vercel. - Framework preset: Other. Leave the build command empty and the output directory as the project root.
- Deploy.
index.html PWA page (generated)
game.js all game code (generated from src/)
sw.js service worker (generated, cache name changes each build)
manifest.webmanifest PWA manifest
vendor/three.min.js Three.js r128 (MIT)
icons/ app icons (regenerate with python3 src/mkicons.py, needs Pillow)
src/ the editable sources: js1_core, js2_models, js3_sim, js5_env, js6_audio, js4_ui, head.html
After editing anything in src/, regenerate the deployable files:
npm run build:pwa
Three.js is MIT licensed, see vendor/THREE-LICENSE. All sound is synthesized live with the Web Audio API.
npm install once (jsdom), then npm test. The suite assembles the game from src/, runs it headless, and plays scripted campaigns on every difficulty.