A numbered wave is a batch of scheduled actions. Before those actions create any zombies, ordinary Endless constructs a wave plan: how many waves exist, which are flag boundaries, and how many points the ordinary roster may spend in each wave. A displayed level number determines this common framework.
01 / THE INPUTS
The common inputs.
The 16 standard worlds all list DangerRoomJitteredWaveGenerator. They provide different zombie pools, but the ordinary description builder reads its point parameters from the shared DangerRoomPropertySheet, rather than the generator object's local point declarations.
The world still matters: it supplies the basic zombie, the pool of selectable types, and any additional designers. Modern, Renai, Steam, and Tale even declare a local wave increment of 20, but this builder does not read that local field. Its shared increment remains the input to the formula.
Our example settings are 100 starting points, a fixed wave increment of 30, and a per-level increment of 5. The wave-count bounds are 6 and 15, with one extra wave per five displayed levels.
Let L denote the displayed level and w a zero-based wave index. The stored progress value is L−1. In the example schedule, multiples of 5 select Boss files. The ordinary-level views below therefore cover L∈{1,…,149} with Lmod5=0.
02 / THE LENGTH
How many waves?
N(L)=min(15,6+⌊5L⌋)
The count reaches 15 at ordinary level 46 and remains capped while the point budgets continue growing.
03 / THE BUDGET
The underlying progression.
For w=0,…,N(L)−1, define the increment Δ and base budget P:
Δ(L)P(L,w)=30+5L,=100+Δ(L)w.
Within one level, the base budgets form an arithmetic progression. Increasing L changes its slope; the first wave remains at 100 points.
04 / THE ACCENTS
Flag boundaries and the final wave.
Within the 6–15-wave range, the target group count g determines the regular flag spacing s:
A regular flag boundary occurs whenever the one-based wave number is a multiple of s. The last wave also receives the larger budget even when its group is shorter. These markers describe the wave plan; they do not yet count an extra flag zombie.
The logical OR matters: a wave that is both final and at a regular flag boundary receives one multiplier, not two. The next wave still follows the unboosted progression.
05 / THE NEXT STEP
What this plan covers.
The ordinary filler spends B using each selected type's WavePointCost. This is neither a zombie count nor a total-health cap. Unspendable points may remain; extra leaders and separate flag actions are added elsewhere. World-specific processing can then replace or supplement the generated roster.
At a flag boundary or the final wave, installation can add a separate flag-zombie action. It has its own default spacing and does not pay its cost from B. World processing and extra leaders likewise operate at different stages. The health total used by the wave clock is sampled only after these actions have created and placed their entities.
The next question is how the game chooses that roster: which types are selected, and how do their costs and weights determine the next zombie?