Tonight I was supposed to be working on Level 1.
Instead, I ended up obsessing over what happens to the background music when the player’s ship explodes.
This is becoming something of a pattern.
Galactic Gladiators now has a second piece of music for the asteroid field. It has the same general musical character as the main theme, but it’s more suited to gameplay — a little more urgent while still sounding as though it belongs in the same game.
And that led me down another rabbit hole.
The tiny things matter
When the player’s ship is destroyed, several things happen at once.
The ship disappears, particles fly away from it, the screen shakes, the controller rumbles and my homemade electrical death/fizzle sound plays.
I couldn’t find quite the sound effect I wanted, so naturally I ended up making my own.
Because apparently that’s what we’re doing now.
But something still wasn’t quite right.
The background music was competing with the explosion.
So now, at the instant the ship is hit, the game reduces the music volume. The explosion, particles, shake and controller rumble briefly become the focus.
When the next ship returns, the music comes back.
It’s a ridiculously small thing.
It’s also surprising how much difference it makes.
There are still a couple of rough edges in the timing, but I’ve reached the point where further fiddling would probably produce diminishing returns. It works. It feels right enough. It can be polished later.
And that means it’s time to commit it to Git and move on.
Something has changed
The interesting thing is that Galactic Gladiators doesn’t really feel like an experiment to prove that Visual FoxPro can make a game anymore.
That question has been answered.
Controller support, vibration, speech, music, sound effects, collisions, particles, animation, screen shake, real-time movement and an asteroid field are all happily running inside a Visual FoxPro application.
The more interesting question now is:
Can I make it a good game?
That’s a considerably harder problem.
And a much more interesting one.
