#97b: waves replace the roaming enemy spawner #100

Closed
opened 2026-08-23 11:18:42 +00:00 by metaheavens · 1 comment
Owner

Subticket of #97.

  • "Remove the current ennemy spawn when navigating in the world" - the trickle
    in EnemySpawner that spawns one enemy every 3-6s forever goes away.
  • Enemies arrive in WAVES instead, with a quiet gap between them.
  • "an small alert on top right appear when a new wave is coming. No timer
    should be visible" - the alert says a wave is coming, not when. The countdown
    must not be readable off it.
  • "Waves are more and more powerful depending on the size of the player's
    fleet" - wave strength is a function of fleet size, so growing the fleet
    raises the stakes rather than trivialising them.

Wave state belongs in GameState for the same reason building damage does:
the space scene is destroyed and rebuilt on every landing.

Subticket of #97. - "Remove the current ennemy spawn when navigating in the world" - the trickle in `EnemySpawner` that spawns one enemy every 3-6s forever goes away. - Enemies arrive in WAVES instead, with a quiet gap between them. - "an small alert on top right appear when a new wave is coming. No timer should be visible" - the alert says a wave is coming, not when. The countdown must not be readable off it. - "Waves are more and more powerful depending on the size of the player's fleet" - wave strength is a function of fleet size, so growing the fleet raises the stakes rather than trivialising them. Wave state belongs in `GameState` for the same reason building damage does: the space scene is destroyed and rebuilt on every landing.
Author
Owner

Done in 26f3728.

The trickle is gone. Enemies arrive in waves: a long quiet, a warning, an
attack, and quiet again once the wave is dead. The clock lives in GameState so a
landing cannot cancel a wave or restart it from zero; the spawning stays in the
space scene, which also settles what happens if a wave turns while you are on a
surface - it is waiting for you when you get back.

EnemySpawner keeps its name on purpose: it is still the thing that puts
enemies in the world, and 88 test files already ask it for a quiet map.

Strength is a function of the fleet, with the wave number as a slower second
term so a player who never grows still meets escalation. The budget is spent
most-expensive-first, so a bigger wave is heavier rather than merely longer.

"No timer should be visible" is enforced rather than observed: GameState offers
a 0..1 pulse and no remaining-seconds accessor at all, so the alert cannot drift
into being a countdown. The test pins both - that no such accessor exists, and
that the alert's text contains no digits.

Done in 26f3728. The trickle is gone. Enemies arrive in waves: a long quiet, a warning, an attack, and quiet again once the wave is dead. The clock lives in GameState so a landing cannot cancel a wave or restart it from zero; the spawning stays in the space scene, which also settles what happens if a wave turns while you are on a surface - it is waiting for you when you get back. `EnemySpawner` keeps its name on purpose: it is still the thing that puts enemies in the world, and 88 test files already ask it for a quiet map. Strength is a function of the fleet, with the wave number as a slower second term so a player who never grows still meets escalation. The budget is spent most-expensive-first, so a bigger wave is heavier rather than merely longer. "No timer should be visible" is enforced rather than observed: GameState offers a 0..1 pulse and no remaining-seconds accessor at all, so the alert cannot drift into being a countdown. The test pins both - that no such accessor exists, and that the alert's text contains no digits.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
metaheavens/spaceship#100
No description provided.