Philosophy
The five design principles that govern every decision in AI World Sim.
This page is deliberately opinionated. Every architectural choice, every UI decision, every feature shipped or rejected, traces back to one of these five principles.
If you ever wonder "why does this work the way it does?" — the answer is here.
1. The World Runs Without You
The simulation does not pause when you log out.
This is the single most important principle. It means:
- NPCs do not "wait" for player input.
- Time advances continuously.
- Events happen off-screen, in the dark hours, while you sleep.
- There is no "pause" button.
The reason is simple: a world that pauses for the player is a stage, not a world. The interesting part of an AI-driven simulation is what happens when no one is watching.
2. NPCs Are People, Not Functions
An NPC is not a state machine. An NPC is a person with a life.
Practically, this means:
- Each NPC has personality traits that bias every decision.
- Each NPC has memory that influences how they interpret new events.
- Each NPC has relationships — and remembers them.
- Each NPC has goals, even if those goals are mundane (pay rent, sleep, eat).
- Each NPC dies, eventually. Death is not a fail state; it is part of life.
We do not treat NPCs as props. They are the protagonist of their own stories. You are reading those stories from the outside.
3. The Player Is an Observer, Not a Controller
You do not "play" the game. You watch it.
There is no avatar. There is no controller. There are only:
- 📖 Diaries to read.
- 🗺️ A world map to observe.
- 💬 An advice channel — a way to leave suggestions that NPCs may take into account.
Suggestions are non-binding. The world is not obligated to follow them. This is on purpose. The moment the player can dictate what happens, the simulation becomes a puppet show.
4. Emergence Over Scripting
No hand-written event chains. No branching dialogues. No quest flags.
The interesting behavior in AI World Sim must come from:
- ✅ Interactions between rules
- ✅ Interactions between NPCs
- ✅ Interactions between memory and new context
- ✅ Interactions between LLM-generated text and the structured state
We do not script a love story between Margaret and Tom. We give Margaret and Tom compatible personality traits, put them in the same pub on a Friday night, and let the simulation figure out the rest.
5. Boring Is Better Than Wrong
A quiet town of NPCs having ordinary days is more interesting than a chaotic town where NPCs hallucinate dramatic events.
This means:
- We prefer rule-based behavior over LLM behavior when both can achieve the same outcome.
- We prefer conservative diary generation over imaginative diary generation.
- We prefer "Margaret went home and made tea" over "Margaret had a vision of the future and wept."
Dramatic emergence, when it happens, is more powerful because the baseline is ordinary. If every NPC is constantly hallucinating extraordinary events, nothing is extraordinary.
How these principles show up in code
| Principle | Code consequence |
|---|---|
| World runs without you | Tick engine runs on a Cloudflare Worker cron, not tied to player sessions |
| NPCs are people | Every NPC has a personality object, memory store, and emotional state |
| Observer not controller | Player API is read-mostly; the only write endpoint is POST /suggestions |
| Emergence over scripting | No event chains in code; events emerge from rule interactions |
| Boring is better than wrong | LLM prompts constrain output to "ordinary day" tone by default |
What we explicitly reject
| We don't... | Because... |
|---|---|
| Add a "fast forward" button | It breaks the "runs without you" principle |
| Let the player kill an NPC | Death should be the simulation's decision, not the player's |
| Add multiplayer chat | It turns the simulation into a social platform, which it isn't |
| Generate daily news headlines | It feels too gamey; diaries are the source of truth |
| Show "NPC thought process" tooltips | It breaks immersion and leaks implementation details |
The test
Before shipping any feature, we ask:
"Does this make the world feel more alive and less controllable?"
If yes — ship it. If no — reject it.