Skip to content

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:

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.