Wave Spawning, Armoured Asteroids, and The Carrier
Timed-delays in GameMaker were pretty unintuitive when I first approached building a deliberate wave system –
sleep
functions didn’t exist and I was just starting to learn about the very clunky alarm feature.I had two goals: I wanted to be able to create specific organizations of enemies that would appear in sequence (so I could ramp difficulty with kind, rather than quantity, of enemy), and I wanted to be able to implement waves that would advance based on a timer rather than a room-clear (so that there could be stages of mounting pressure incentivising fast-clearing of enemies to avoid getting overwhelmed).
Mechanically, the waves exist as an array of functions that include the individual spawn-in function calls for the enemies I want, plus directions to go to “wait-until-clear” or “count-down” modes. The wave-manager tracks those states and just
pop
s wave functions off the end of the array and runs what it finds when the room clears or the timer runs out as the case may be.
2021-10-10 12:58 AM Oof. Today, I implemented the armoured and carrier asteroids and then revamped the “endless” spawn system to generate a series of waves with an optional “breather” toggle to wait for the last asteroid to be destroyed before moving to the next wave (otherwise, it proceeds based on the supplied wave time). I also universalized the message popup system (for small popups), so now it’s being used for shields-down as well as points (and bonus objects will display their own messages, going forward).
I’m not sure if the game is “fun”, but I am working through my feature list.