Living World Overview
The Living World is Softfire’s persistent world simulation. It runs server-side on Strand infrastructure, advancing on world-time ticks even when no players are connected. Your game receives world state — it does not compute it.
The eight subsystems
| Subsystem | Role |
|---|---|
| The Pulse | World tick engine — advances world time, partitions zones, drives dormant/active mode |
| The Wild | Ecosystem simulation — species populations, predator-prey dynamics, territory, migration |
| The Flow | Resource cycles — node depletion, regeneration, scarcity events |
| The Veil | Climate and weather — biome conditions, weather states, storm propagation |
| The Age | Civilisations and factions — settlement growth, faction traits, diplomacy, war |
| The Echo | Player-action feedback — the only path from client to simulation |
| The Chronicle | World history — records significant events, powers lore generation |
| The Signal | World-state distribution — delivers snapshots and delta frames to clients |
How the simulation works
The Pulse drives a continuous world-time clock. On each tick, the other subsystems advance in sequence: The Wild updates populations, The Flow adjusts resource levels based on Wild consumption and Veil conditions, The Veil propagates weather, The Age processes faction logic. Events generated by these updates are recorded by The Chronicle. The Signal packages changed state into delta frames and delivers them to connected clients.
Players interact with the simulation exclusively via The Echo. When a player hunts a creature, builds a structure, or mines a resource node, The Echo records a typed event (Hunt, Build, Mine) and submits it to the Root. The Root validates and rate-limits Echo events, then applies their effects to the simulation on the next tick. This ensures the simulation is not gameable by high-frequency client submissions.
What your game receives
Your game never computes world state — it queries it. The IWorldStateQuery interface gives synchronous access to the current cached state:
var world = Services.Get<IWorldStateQuery>();
// What's the weather like in this zone?WeatherState weather = world.GetWeather(zoneId);
// How many wolves are there in this zone?PopulationSnapshot wolves = world.GetPopulation(zoneId, speciesId: "wolf");
// What resources are available?ResourceLevelSnapshot berries = world.GetResourceLevel(zoneId, resourceId: "berries");The cache is updated by The Signal as delta frames arrive. If the client is offline, queries return the last received values.
Why it matters for your game
The Living World is not just a feature — it is a source of content. Connecting your game to the Living World means:
- A survival game’s resource availability fluctuates with Wild consumption and Veil drought cycles, without any developer-written logic
- An RPG’s NPC dialogue can reference the current diplomatic stance between factions or the recent founding of a nearby settlement
- A city builder’s crop yields respond to multi-week weather patterns in the Veil
- A racing game’s weather changes between sessions based on the Veil’s current storm cycle in the track’s zone
The simulation runs continuously. Every time a player returns to your game, the world has changed.
Use cases by genre
Survival — The Flow drives resource availability. The Wild creates competition with NPC fauna for the same resources. The Veil creates seasonal scarcity patterns. Players who return after a week find the world genuinely different.
RPG — The Age drives which faction controls each zone and what political events have occurred. NPC dialogue trees can branch on DiplomaticRelationsService.GetStance(factionA, factionB). The Chronicle provides lore content without writing it manually.
City builder / strategy — The Veil’s precipitation and temperature affect crop yields, flood risk, and migration patterns. The Age’s faction system creates neighbours that grow or shrink based on collective player activity.
Racing / sports — The Veil provides track-condition weather that changes session to session. A race in a mountain zone can be dry in summer and icy in winter.