The wave and progression system implemented for this game is designed to be
modular, deterministic and is a generally very in-depth system. All waves
and its enemies are first precalculated all enemies to spawn before the level starts to reduce runtime
overhead. It chooses enemies and spawn locations through a weighted random system, allowing granular
control over each level's difficulty.
Each wave's progression is controlled with the wave's
total health pool. When either the total health pool goes under a
configurable threshold, or when a certain amount of time has passed, the next wave will start. This makes
it so that if players are unable to finish a wave, they will not be overwhelmed by multiple next waves.
This wave system is
fully data-driven and allows designers to create, configure, and finely
tune waves to ensure that players are challenged whilst still remaining
fair.