Physics Behind WipEout?

Started by
1 comment, last by NathanielBennett 12 years, 2 months ago
I've been trying to find resources on how Liverpool studios(LPS) compute the physics behind Wipeout.

How I'm doing it, is with 4 raycast , and measure the distance from the ground, and applying a force to make the craft float in the air.
the only problem is That I can never get it stable enough.

I've read that LPS uses just one raycast at the front of the ship, which detects the normals of the track. the craft is then rotated to be perpendicular to the track. Also the uplift force is applied once across the whole craft, instead of in each corner , how I'm doing it currently.

The Actual Ship graphic in loaded onto a "chassis"(Which does the real FSX computing) and that, animations make the craft, look like it's turning, when really only a force is being applied the the bottom of the rigidbody....

is that correct, or is there another way LPS compute the Physics engine on Wipeout?

If it help, I'm using Unity 3.5F1
Even if you’re on the right track, you’ll get run over if you just sit there.
—Will Rogers
Advertisement
I have no idea how physics is used in Wipeout so can't comment on that (though what you describe, using a single force through the centre of mass plus angular hackery, does seem to be sensible).

If you're just calculating your forces using something like:

forceMagnitude = (springOffset- distanceFromGround) * springConstant
forceMagnitude = max(0, forceMagnitude)


then you'll get oscillations since this is an undamped spring. You'll get that even if you just used one acting through the centre of mass too.

At the very least, you need to add some damping based on the rate of change of distanceFromGround - so calculate


distanceFromGroundRate = (distanceFromGround - lastDistanceFromGround) / timestep


and then


forceMagnitude = (springOffset- distanceFromGround) * springConstant - distanceFromGroundRate * dampingConstant
forceMagnitude = max(0, forceMagnitude)


You can then tune the three constants to get the behaviour you want,
Thats what I have Got - still the damping in not working as planned. Is there other ways of reducing oscillation? I'm currently using Dead zones aswell.

EDIT , and using clamping, I've managed to create a local area of gravity per ship, thus allows the ships to climb walls and go completely upside down. There is however a Grip constants which basically allows artificial gravity to break, making the ships get effected by gravity if they get unstuck.
Even if you’re on the right track, you’ll get run over if you just sit there.
—Will Rogers

This topic is closed to new replies.

Advertisement