Christopher Pitt Software Developer

Bouncy Cars

Last updated on 6th April 2024

Bouncy Cars is probably my favourite game, so far. I miss the days of sitting on a couch, giving a good friend a thorough whooping, in a racing game. If you’ve ever played Micro Machines, this slightly inferior take on the genre may interest you!

My kids helped me design and test this game. I made it solely with them in mind. It’s one of the few game projects where I’ve spent more than a month; but in doing so have created my most polished game.

I learned an absolute ton from making this game. In no particular order of importance:

  • Polishing a store page isn’t as much work as you think.
  • Making a gameplay video is actually quite fun.
  • When faced with a difficult technical problem, try to automate the way you would manually solve the problem.
  • Do the work required to get a small scope. Be ruthless about your priorities. I could have worked on this for a lot longer, but I wouldn’t have released something fun.

That third point is the one that sticks out the most for me. Without going into too much detail; I wanted to make a way to show the boys when they were going in the wrong direction. The races take place on a single non-scrolling screen (top down), but the tracks are procedurally generated loops.

The question is; how do you know what the “right way” is, when the track is randomly generated? If I was trying to work it out — if I couldn’t see the whole track, but was standing on the track and trying to document which direction to move to next — then I’d make a list of waypoints. If I knew the first waypoint then I could stand there and turn around until I was facing the next waypoint.

At the start of each race, I add the starting point to a list. Then I rotate and fire a “bullet” until it hits a waypoint. I add that one to the list. I can repeat this process until I hit the starting one; at which point I have an ordered list. Once the driver touches the zone around a waypoint, I know what the next one is. If they drive into any other, I can tell them they’re going the wrong way, and I can show an arrow pointing to the next one they need to drive through.

Even though these bullets can travel fast, there’s still a short amount of time required to traverse the track. To make sure this is all sorted out before the race starts, I added a countdown timer at the start of each race. This feature is actually a trick to compensate for the automation I added to solve the problem the way I would, manually.