Jump to content
  • Advertisement
Sign in to follow this  
NathanielBennett

Physics Behind WipEout?

This topic is 2493 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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

Share this post


Link to post
Share on other sites
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,

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!