I thought I was adding some asteroids to Galactic Gladiators.
That was genuinely all this was supposed to be.
The player would fly through a few rocks, avoid hitting them and then move on to whatever came next. It sounded like quite a small thing to add.
It wasn’t.
The first asteroid looked good, but once I added more of them the game started struggling. The player’s ship became jerky, the asteroids stuttered and I started wondering whether I had finally found the limit of what Visual FoxPro could realistically handle.
It turned out the main problem was the graphic.
The original asteroid image was much larger than it needed to be. After resizing it to 256 × 256, the difference was enormous. Suddenly FoxPro was moving eight asteroids, scrolling two starfields, twinkling the stars, reading the keyboard and controller, checking collisions and still keeping the game playable.
That one change made nearly everything else possible.
The asteroids now have different sizes and speeds. Most are large foreground hazards, with a smaller distant asteroid adding a bit of depth. They drift sideways, bounce away from the edges and some of them gently adjust their course towards the player.
At one point they were far too easy.
Then they became almost impossible.
After a bit of tweaking, I managed to complete the field on my third attempt. I tried it again and it took me three attempts again, which feels like a good sign. It is definitely difficult, but it can be beaten once you start reading how the asteroids are moving.
Hitting one is quite satisfying too, even though it means losing a life. The asteroid explodes into particles, the screen shakes and the controller vibrates. It is amazing how these small effects combine to make a collision feel like it has some actual weight.
The field lasts for 35 seconds. When the timer runs out, new asteroids stop appearing and the remaining ones clear the screen naturally. Losing a life restarts the challenge from the beginning, so it can’t be completed by simply crashing through it three times.
BARF now introduces the section with possibly the most useful advice ever given in a video game:
“Asteroids detected. Try not to hit the large rocky objects.”
If the player survives, they receive 1,000 points and BARF responds:
“Asteroid field cleared. Against all reasonable expectations.”
I also added a few seconds of complete darkness before the level begins. The stars then slowly appear, the ship arrives, BARF gives his warning and the asteroid field starts.
That tiny pause at the beginning makes the whole thing feel more deliberate. It creates a bit of intrigue before anything happens.
So what started as “let’s add an asteroid” has somehow become:
- Eight reusable asteroid objects
- Different sizes, speeds and depth
- Sideways movement and player tracking
- Collision detection
- Particle explosions
- Screen shake
- Controller vibration
- A timed survival challenge
- Lives and restarts
- BARF dialogue
- A completion bonus
- The first proper playable section of Level 1
And all of it is running in Visual FoxPro 9, a product released in 2004.
I never thought I would have anything I could seriously describe as a game engine in Visual FoxPro. I’m still not entirely sure how this happened.
But Galactic Gladiators now has the beginning of an actual level.
And it feels like a game.
