World Simulation¶
The World Is Running¶
The world is running. Always. The player is in it, not directing it. The merge is getting worse whether the player hurries or not. Factions are fighting whether the player intervenes or not. NPCs live, argue, trade, pray, deteriorate, and die whether the player is watching or not. The player's presence changes what happens near them — but the world doesn't pause outside their view.
There is no encounter system. There are no triggered events. There are no spawn zones. There is a world. The player enters it. What they find depends on what happened while they weren't looking — which depends on every system running simultaneously.
Traditional games have encounter systems because the engine can't simulate the world. It simulates what the player can see and fakes the rest. NPCs pop into existence when the player enters a zone. Conversations trigger when the player presses a button. Combat starts when the player crosses a threshold. The "open world" is a stage set. The NPCs are props waiting for their cue.
HellspawnEngine doesn't fake anything. 3 billion entities at 60 FPS. Every being simulated. Every faction stance active. Every NPC living their state — whether the player is present or not. The "encounter system" is the ECS. The "trigger" is proximity. The world is the encounter.
The Core Principle¶
The world doesn't perform for the player. The world lives. The player enters it.
The shopkeeper opens his stall at dawn whether the player is there or not. The demon builder repairs walls whether anyone watches or not. The priest reads Genesis to whoever is in the church — other NPCs, not just the player. The Unchosen in the alley deteriorates on a clock that doesn't wait for the player to notice.
If the game needs a system to tell the player "something is happening here," the world isn't alive enough. If the world is alive enough, the player can tell.
This is the fusion test applied to the world itself. Michael's world was a performance — the fiction staged for an audience. God's world is real. A world that performs for the player is Michael. A world that lives without the player is what the game is about.
What the ECS Holds Per NPC¶
Not just combat stats. A life.
Identity¶
| Component | What It Stores |
|---|---|
| Race | Angel, demon, human, hybrid (+ subtype) |
| Faction | Which of the 27 factions, or unaffiliated |
| Name | Named NPCs carry identity. Unnamed NPCs carry an archetype (faction soldier, merchant, civilian, priest). |
| Home | Where they live — a specific structure in a specific settlement |
| Work | Where they go during the day — stall, forge, patrol route, church, corrupted zone border |
| Relationships | Entity references to spouse, children, faction leader, allies, enemies, the player |
State¶
| Component | What It Stores |
|---|---|
| DailyRoutine | Schedule of positions and activities — wake, work, break, talk, close, home, sleep. Varies by faction and role. |
| EmotionalState | Fear, anger, grief, contentment — influenced by recent events, faction stance, personal history. Not a single axis — multiple emotions coexist. |
| Awareness | Known facts, witnessed events, propagated rumors, player relationship history. What this being knows and how they know it. |
| PhysicalCondition | Health, scarring (demons from the Diminishment), deterioration rate (Unchosen), wounds from faction conflict. |
| RelationshipToPlayer | Depth (Unknown, Seen, Talked, Researched, Traveled). Previous conversation content. What was given, withheld, asked, answered. Fear/Trust derived from faction reputation. |
The Daily Loop¶
NPCs don't stand in place waiting. They move. They have routines. The routines are real — executed by the DailyRoutineSystem every frame.
The angel shopkeeper opens at dawn. Arranges goods. Serves customers — other NPCs, not just the player. Talks to his wife during a lull. Glances at the darkfire mark if the player is nearby. Closes at dusk. Goes home. The pattern repeats — with variation from events. If the faction war reaches the market, the shopkeeper closes early. If an absorption happened nearby, the shopkeeper is tense the next day. If the player talked to him yesterday, he's thinking about what was said.
The demon builder works a site. Takes breaks. Talks to other workers. Goes to the Freed settlement in the evening. The pattern shifts if the corrupted zone expands toward the worksite — the builder relocates. If the Betrayers push into Freed territory, the builder picks up a weapon.
The priest reads Genesis in the church. The same passage every morning — the same story the player heard in Act 1. But the congregation changes over time. Fewer people after the war reaches closer. Different people after the truth spreads. The priest reads the same words to a different room. The text doesn't change. The world around it does.
The Unchosen sits in the alley. Deteriorates. The two architectures at war inside them produce visible scarring over time. Other NPCs walk past — some avert their eyes, some stop and help, some don't notice. Whether the player arrives before or after the deterioration reaches a critical point depends on when the player arrives. The world didn't wait.
Faction Dynamics¶
Factions aren't static. They're organisms. Territory shifts. Alliances form and break. The war escalates.
Territory¶
Each faction holds physical space on the supercontinent. Territory boundaries shift based on:
- Military pressure — the Gluttonous push outward from Hell. The Loyalists fortify Heaven's remains. The Unbounded wall off their sector.
- Population movement — the Freed settle where they choose. The Halved drift between factions. The Unchosen are pushed to margins.
- Resource access — water, food, shelter, fold network proximity. Factions that control resources grow. Factions that don't, contract.
- Player actions — absorptions reduce faction population. Build/Creation strengthens settlements. Talk propagates information that changes faction behavior.
Conflict¶
Factions fight. Not as scripted events — as emergent consequences of territory overlap and ideological incompatibility.
- The Betrayers and the Freed clash at the boundary between Hell and the surface — the Betrayers want to preserve Hell's order, the Freed want to destroy it.
- Gabriel's Church and the Secular Survivors compete for human allegiance — meaning vs. pragmatism.
- The Unbounded attack hybrid communities — species purity vs. the merge's reality.
- The Wrathful strike at angel positions — compressed rage finding a target.
- The Patient analyze and wait — their inaction IS their action on the world.
These conflicts happen on the map. In real time. The player walks through a territory and sees the war's current state — not the state it was scripted to be in. A settlement that was peaceful yesterday may be under siege today because the faction dynamics produced a conflict overnight.
Emergent Events¶
The world doesn't have scripted events. It has systems that produce events.
A faction's territory is squeezed by two neighbors. The faction's NPCs become more aggressive — fear rising, trust falling. A patrol from the squeezed faction encounters a patrol from the squeezing faction. Combat happens — NPC vs. NPC, real physics. The player may or may not be present. If the player is nearby, they walk into a fight already happening. If the player isn't nearby, the fight happens anyway and the consequences propagate — dead NPCs, shifted territory, changed faction stances, rumors.
The player hears about it later through Talk. "Did you see what happened at the border? The Wrathful hit a Patient outpost. Three dead." The player wasn't there. The world was.
The Merge Worsening¶
The docs say the merge is getting worse. Corrupted zones are growing. New ones forming. The collision of realms is destabilizing. This is a world-level process running in the background.
- Corrupted zones expand over time — slowly. The overlap of Heaven and Hell energy in the wrong configuration spreads. Territory that was safe becomes dangerous.
- New zones form at seam boundaries — where the celestial and volcanic energies are closest. The seam scars are active, not static.
- Environmental degradation — creatures born from the overlap become more frequent, more twisted. The world is sick and getting sicker.
- The urgency is visible, not mechanical. No countdown timer. No "days remaining." The player has a world that is visibly worsening. The corrupted zone near Eden was small in Act 1. When the player returns in Act 4, it's larger. The village is closer to the boundary.
What the Player's Actions Change¶
Every verb writes to the world state:
Absorption removes a being from the world permanently. That being's faction loses a member. Their relationships lose a node. Their daily routine stops. The spouse grieves. The children are orphaned. The stall stays closed. The patrol has a gap. The faction responds through the reputation system.
Talk changes NPC awareness. What the player shares propagates through faction channels. Telling one NPC the truth about Michael starts a chain — they tell their faction, the faction tells allies, the information spreads with the accuracy degradation the propagation model describes.
Build/Creation changes the physical world. A structure the player builds persists. A repair the player makes holds. The world carries the player's constructive acts the same way it carries the destructive ones. A settlement the player built defenses for is harder to siege. A road the player repaired changes NPC travel patterns.
Restrain leaves the world unchanged — which IS a change, because the alternative would have changed it. The being the player spared is still in the world, still living their routine, still part of their faction's population. Restraint is invisible. The world it preserves is the consequence.
Fight (without absorption) kills or incapacitates. A killed NPC enters The River (if it still exists) or simply dies (if The River is inside True God). An incapacitated NPC recovers — or doesn't, depending on their physical condition and whether anyone helps them.
What's Fixed vs. What's Dynamic¶
Fixed (The Spine)¶
The narrative progression is authored. The game has a structure:
- The seven acts and their 28 beats
- Boss encounters — Lucifer, Gabriel, Metatron, Michael are in fixed locations
- The River — always in Circle 5
- Eden — always where it is
- The Throne — always at the center
- The pilgrimage route — Earth → Hell → Heaven → Throne
Dynamic (The World Between)¶
Everything between the spine points is alive and changing:
- Faction territory boundaries
- NPC locations and states
- Corrupted zone size and position
- Resource availability
- Who's alive and who's dead from faction conflicts
- What the world knows about the player
- What ruins are occupied and by whom
- What settlements have been built, damaged, or abandoned
Two players at the same point in the story see different worlds because the faction dynamics, the merge worsening, and their own actions produced different states.
ECS Architecture¶
Per-NPC Components¶
| Component | Type | Description |
|---|---|---|
| Identity | struct | Race, faction, name/archetype |
| Location | WorldPosition | Current position in the world |
| HomePosition | WorldPosition | Where the NPC lives |
| WorkPosition | WorldPosition | Where the NPC works |
| DailyRoutine | Schedule | Sequence of positions + activities + times |
| EmotionalState | float[] | Fear, anger, grief, contentment — multiple axes |
| Awareness | KnowledgeSet | Known facts, witnessed events, propagated rumors, player history |
| PhysicalCondition | struct | Health, scarring, deterioration rate, wound state |
| Relationships | EntityRef[] | Spouse, children, allies, enemies, player |
| FactionMembership | FactionId | Pointer to faction stance system |
World-Level Components¶
| Component | Type | Description |
|---|---|---|
| FactionTerritory | per-faction | Boundaries, population, military strength, resource access |
| CorruptedZones | spatial | Zone positions, sizes, expansion rates, energy composition |
| MergeState | global | Overall merge stability — worsening over game time |
| SeamActivity | per-seam | Energy levels at each seam scar, fluctuation |
Systems¶
DailyRoutineSystem — moves NPCs through their schedules. Reads the current time. Moves each NPC to their next scheduled position. Triggers activity-specific behavior (working, trading, praying, patrolling). Adjusts for interruptions — faction conflict, player proximity, environmental change.
EmotionalUpdateSystem — adjusts emotional states based on events in proximity. An NPC near an absorption becomes more fearful. An NPC whose faction won a territorial engagement becomes more confident. An NPC whose spouse died grieves. Emotional states decay over time toward baseline — but traumatic events produce permanent shifts.
AwarenessPropagationSystem — spreads information through faction channels. Shared with the faction reputation system. What one NPC witnesses, their faction eventually knows — at faction-specific speed and accuracy.
FactionTerritorySystem — calculates territory boundaries from military pressure, population, and resource access. Updates each tick. Territory changes trigger NPC relocation, conflict escalation, and resource redistribution.
FactionConflictSystem — produces NPC-vs-NPC combat at contested boundaries. Two patrols from hostile factions in proximity = a fight. Real physics. The same combat system the player uses. NPCs fight, win, lose, die, retreat. Consequences propagate.
CorruptionExpansionSystem — grows corrupted zones over time. Reads seam activity and merge state. Zones expand toward adjacent territory. New zones form where energy levels cross thresholds. The expansion is slow but visible across acts.
MergeWorseningSystem — global degradation tick. The merge state worsens over game time. Feeds into corruption expansion, seam activity, and environmental creature spawning. The world gets sicker. The urgency grows.
CreatureSpawnSystem — produces merge-born creatures in corrupted zones. Frequency and danger scale with the merge state and zone size. Not scripted spawns — population dynamics in corrupted environments.
All systems run continuously. All queryable by Talk, Research, combat, and every other game system. The world is an ECS database that every system reads from and writes to.
The Principle¶
The world is not a backdrop. The world is the game.
Every other system — combat, Talk, Research, absorption, faction reputation, the consent tracker, the Codex — runs on top of the world simulation. They read from it and write to it. The player's actions change the world state. The world state changes what every system produces. The loop is continuous.
The "encounter" is the player's proximity to a set of beings and states that the world simulation produced. The game didn't create the encounter. The player walked into it. Two players walk through the same market and have completely different experiences because they used different verbs in different orders on different beings — and because the world was in a different state when they arrived.
The game is a mirror, not a judge. The world simulation is the mirror's surface. It reflects what's there — faction dynamics, NPC lives, the merge's degradation, the player's consequences — without performing, without staging, without waiting for the player to look. The world is real. The player enters it. What they find is what happened.