How the world thinks

Every simulated body in the world takes a turn on the same beat. Not a script, not a timer per character — one pass, over everybody, every 700 milliseconds.

The short version

  1. A beat starts.
  2. Every traced body is asked one question: given where I am, what I can see, and what my party is doing — what now?
  3. The answers become intentions the game engine carries out: walk here, hit that, cast this, sit down.
  4. The pass has 700 ms to finish. It usually needs about a third of that.
  5. Next beat.

The beat

Cadence 700 ms — CombatSimLayer.COMBAT_TICK_MS
What 700 ms is The budget, the ceiling we allow. Not how long the work takes
Median pass 233 ms
90th percentile 362 ms
Passes finishing inside budget 94%

The distinction in row two is the one that matters. A pass that took the full 700 ms would mean the world was only just keeping up; at 233 ms there is room for the population to grow before anything slips.

What a world of this size costs

Measured on a development world carrying 7,788 bodies in 1,015 parties — a deliberately crowded one, denser than a normal game:

CPU ~8.9 of 16 cores
Memory ~9.7 GB resident
Bodies 7,788, in 1,015 parties

⚠️ That figure is the whole server — the sim brains and the game engine underneath, moving every one of those bodies, pathing them, running their combat. How much belongs to each half has not been measured, so it should not be split or quoted per body.

Why one shared beat

A per-character timer would be simpler to write and worse in every way that matters:

One shared beat A timer per character
Every body sees the same instant of the world Bodies decide against slightly different worlds
The pass can be measured, budgeted, and shown to be late Lateness hides inside thousands of small timers
Same seed replays to the same world Ordering drifts, replay breaks

The last row is the load-bearing one: the world is deterministic on purpose, and a shared beat is what makes a bug reproducible instead of a story.

What to look out for

You see Why it’s suspect
Sims reacting a beat or two late, in unison The pass is running long — decisions are queuing behind the budget, not thinking harder
One party frozen while everything around it moves Not the beat. A stuck party is a decision problem, not a timing one
Everything smooth, then a periodic hitch A long pass at the tail. The median can look healthy while the 99th percentile is over budget
The world getting slower as it fills up Expected up to a point — cost scales with bodies. The beat absorbs it until it can’t

Measured 2026-08-07 from the live /qa/tick and /qa/fields instruments on a development world. Cadence: CombatSimLayer.COMBAT_TICK_MS. The tick distribution regenerates on every read; the CPU and memory figures are a dated snapshot of one world at one size, not a specification.

← back to l2everdream.com