I really like racing games. I used to spend a lot of time playing racing sims like Grand Prix Legends. I’m a huge fan of Wipeout. And I have a deep, irrational sense of affection for the Shutoku Battle series. I also like to play around with game development in my spare time, but have never really settled on a project.
So, early last year I built a prototype for a racing game (using Unity) that combines my love of complex car physics, a sci-fi aesthetic, and flawed but charming Japanese racing games from the Dreamcast era. For the time being I’m calling this project Another Chance.
Defining the Mission
Anti-gravity racing games tend to focus on weapons, shields, and twitchy controls. When it comes to the physics of racing, they aim for something simple. Many of these games simulate hovering with a simple two-point suspension system, attaching virtual springs to the nose and tail of the ship to maintain roughly the correct height above the track with the appropriate amount of floatiness. This works great for these games. This kind of physics setup is simple to implement and extremely efficient performance wise. Wipeout would not be improved by a more complex physics model. If I wanted to make a game just like Wipeout, that’s the route I’d go.
Instead, I want to make something that feels like a hover car racing sim. I want to create the feeling of cruising around the highways of a futuristic city in a hover car that feels like a real, complex machine. I emphasize the word “feels” here, because I don’t have actual hover cars to simulate. So, I’m going to have to make a lot of things up.
I want to engineer systems that, for the most part, follow physical rules. For example: rather than using hidden virtual springs, the hover system in the prototype is modeled with four thrusters, one on each corner of the ship, that adjust their output to keep the ship steady and at the correct height. However, they might be unrealistically powerful and efficient. Also, they might not be jet turbines because turbines sound awful and these thrusters will need to be extremely responsive. When I need to resort to fictional technology like this, I’m going to do my best to make it follow consistent rules and interact with other systems in a believable way. I hope that this results in systems that players can understand and tune and that different hover cars would require different approaches to things like corner entry and exit for optimal speed.
If I were programming a racing sim with real cars, the first systems I’d want to nail down would be the critical handling components: tires and suspension. Without good tires, a race car cannot apply much of the power that it produces, and the high tech braking and traction control systems would be similarly useless. The suspension, which links the car’s wheels and body together and works to manage weight transfer is the next most important system.
Hover cars don’t have either of these. So what is critical? Aerodynamics.
To properly analyze the aerodynamic performance of a vehicle, one must perform wind tunnel tests or employ sophisticated fluid dynamics simulations that cannot run in real time, even on very powerful systems. Obviously, we won’t be able to do anything close to this.
How do racing sims and flight sims deal with simulating aerodynamics? They use data from those experiments to generate simplified models. In a racing sim, one only really needs to know how much downforce a car generates at a given speed. The aerodynamics only really affect handling by pushing the car harder against the ground and increasing traction. Several racing sims don’t even bother to change the amount of drag applied to a car when it’s sliding sideways, because it doesn’t make a huge difference in how fast it comes to a stop and if you’re sliding sideways at high speed, the race is probably over for you anyway. The only other important thing to simulate is the wake the car leaves behind. The amount of turbulence in that air can make it easier or harder for other cars to build up enough speed to overtake. But this can also be implemented in a fairly simple way and doesn’t require modeling the actual flow of air over each vehicle.
This works great, then, if one has experimental data that they can use. However, it’s not very helpful if you’re dealing with completely fictional vehicles. And aerodynamics are likely to have a much wider impact on the handling of hover cars. We may be dealing with flaps, ailerons, and rudders. We also don’t have friction to make sure we’re headed in the direction we’d like, we’ll be relying on aerodynamics to turn and to, hopefully, not just slide straight into walls.
For certain parts of the hover cars we might be able to use some real world data from airfoils used on planes and the spoilers used on cars. But the largest surfaces of these vehicles will be the tops and bottoms of the main vehicle body, just like a car. And on modern race cars, the design of the underbody has a huge effect on how the car performs. Large channels and exotic looking diffusers can turn the entire body of a car into a wing. This is really neat stuff and it would seem to be very relevant to the topic of hover cars but since this game won’t be simulating these race cars, and hover cars in general will require a different balance between lift and drag, we’re left without much to go on. If we’re going to end up having to fake most of the data anyway, then implementing a sophisticated and accurate aerodynamic simulation into the game is probably a waste of time and CPU cycles.
The game’s aerodynamics simulation may be the most important factor in how the hover cars feel to drive, but with so many uncertainties, it’s hard to know where to start.
So we’re going to take an iterative approach. We’ll look at where the aerodynamics simulation sits as of the prototype, see what the shortcomings are, and figure out how to improve it. We’ll keep improving it until it feels right, or until it becomes clear that hover cars are a terrible idea and this was all a big mistake.