emollick/annals-kingdom — explained in plain English
Analysis updated 2026-05-18
Open the single HTML file in a browser and watch a self-simulating kingdom unfold.
Share a specific kingdom with someone else by sending a URL with its seed.
Trigger events like plague, fire, or a dragon waking through the Acts of God panel.
Study a deterministic seeded simulation built entirely in one vanilla JavaScript file.
| emollick/annals-kingdom | devopssessionsjvr/agentic-ai-demo | mocasus/vpnx | |
|---|---|---|---|
| Stars | 47 | 47 | 47 |
| Language | HTML | HTML | HTML |
| Setup difficulty | easy | hard | moderate |
| Complexity | 1/5 | 4/5 | 3/5 |
| Audience | vibe coder | ops devops | developer |
Figures from each repo's GitHub metadata at analysis time.
Just open index.html in a browser, the only external dependency is three.js loaded from a CDN.
Annals is a procedurally generated medieval kingdom that lives entirely inside a single HTML file. Open it in a browser and a whole realm builds itself: terrain, rivers, roads, towns, and a ruling dynasty, then keeps simulating on its own, with harvests, plagues, civil wars, bandits, omens, and even a sleeping dragon, while a chronicle in the margin writes down everything that happens as it unfolds. There is no build step, no backend server, and no save files. The entire world regenerates the same way every time from a seed value stored in the page's URL, so sharing a link literally shares the exact same kingdom down to every last shepherd. You can watch it passively like a nature documentary, or step in and nudge events yourself. The simulation covers a surprising amount of ground for one file. There is a working economy with seven types of goods whose prices shift with scarcity, caravans that travel the roads, and occasional events like famines or a beached whale. There is a full dynasty system with named characters who marry, scheme, and die, leading to successions, regencies, and sometimes usurpers, plus family trees you can browse and rival houses that go to civil war. Weather, floods, fires, plague waves, comets, and other events shape the world over time, and towns visibly change too, with houses rising during prosperity, forests clearing into farmland, and new villages, windmills, and abbeys appearing across the centuries. An auto director can drift the camera to whatever story is currently interesting and narrate it, and a chronicle view lets you filter and export the full event log, along with charts of population, treasury, and prosperity over time. There is also a panel of interventions you can trigger yourself, such as summoning a plague, waking the dragon, or founding a new village exactly where you click. Under the hood it is vanilla JavaScript paired with the three.js graphics library, around seven thousand lines in a single file, using four separate seeded random number generators so that the same seed always produces the same world and the same history. It renders efficiently enough to stay under one hundred draw calls at sixty frames per second. The project is released under the MIT license.
A procedurally generated medieval kingdom that simulates itself inside a single HTML file, with economy, dynasties, wars, and a self-writing chronicle.
Mainly HTML. The stack also includes JavaScript, three.js, HTML.
Free to use, modify, and distribute, including commercially, as long as you keep the copyright and license notice.
Setup difficulty is rated easy, with roughly 5min to a first successful run.
Mainly vibe coder.
This repo across BitVibe Labs
Don't trust strangers blindly. Verify against the repo.