bglga/TODO/GAL-40.md

1.5 KiB


id: GAL-40 title: Design intricate flight patterns for non-shooting enemies status: Done parent: GAL-38 labels: [gameplay, advanced-mechanics]

GAL-40: Design and implement intricate flight patterns for enemies that do not shoot

Design and implement intricate flight patterns for enemies that do not shoot.

Acceptance criteria

  • On a special stage (is_special_stage(stage_number) == true), enemies follow scripted curved paths (e.g. spline / Bezier / Lissajous), not the formation flow.
  • These enemies do not call enemy_shoot and never spawn EnemyBullet.
  • Enemies despawn when their path reaches its end off-screen.
  • At least 2 distinct path shapes used in a single special stage for visual variety.
  • Difficulty / pattern parameters live in StageConfigurations (or a new resource) so future stages can compose them.

Integration test hints

  • Build a headless App with CurrentStage = 3 (first special stage); tick for N seconds; assert: zero EnemyBullet entities ever spawned, all special-stage enemies eventually despawned (count returns to 0).
  • Snapshot the path: at fixed intervals record enemy Transform.translation; assert curvature (e.g. y is non-monotonic to prove it isn't a straight line).
  • Visual smoke test via nix run .#take-screenshots -- ./target/debug/bglga 3 6 1 ./shots after triggering a special stage; eyeball that paths look intentional.

Comments

  • 2026-05-07 — Branch opencode/happy-rocket, commit a0863b2 — Design and implement intricate flight patterns for enemies that do not shoot