Wave SpawningSimulation

Enemies appear in scripted or procedural groups at intervals; surviving each wave is the primary challenge loop.

Space Invaders: a formation marches side to side, drops and reverses at the edges; clear the wave and a faster one spawns.

How wave spawning works in Godot

Timernode

Paces the waves. Each timeout releases a group; clearing a wave (or the timer count) advances difficulty for the next.

$WaveTimer.timeout.connect(spawn_wave)
func spawn_wave():
    for i in 5 + wave: spawn_one()
    wave += 1

PackedSceneprimitive

The enemy prefab. Instantiate fresh copies per spawn so each foe lives independently of the spawner.

@export var enemy: PackedScene
func spawn_one():
    var e = enemy.instantiate()
    add_child(e)

Marker2Dnode

Spawn points placed around the arena. Pick one per enemy so waves arrive from varied positions rather than a single door.

var points = $Spawns.get_children()
e.global_position = points.pick_random().global_position

In short: spawn_timer signals spawn of enemy group from Array; wave count increments after clear; difficulty scales per wave

Retro games that use wave spawning

30 catalogued game(s) use this mechanic, spanning 1984–1995.

Related simulation mechanics

▶ Explore Wave Spawning interactively — see every game + the Godot system