Amazing Curves Racing: Networked Object Stacking

Post Reply
John Schultz
Posts: 23
Joined: Sat Aug 06, 2005 7:48 am
Contact:

Amazing Curves Racing: Networked Object Stacking

Post by John Schultz »

Amazing Curves Racing: Networked Object Stacking
Image

Also included are single pendulums, a triple pendulum (3 RB's linked in a chain), a triggered, canned-animation 'smasher', and a two-constraint jump/seesaw. Everything is networked, and should behave seamlessly: no apparent lag up to 300ms.

About the Physics

Integrator: Symplectic (Newton-St?rmer-Verlet (NSV)), 100Hz, fixed, high-angular velocity stable (RK4-like component update), with precession. Rigid simulation matches particles attached with constraints (both systems with same mass and inertial properties): validated motion behavior.
Cloth (flag): Modified Verlet+spring with clamping.
Collisions: Hier-grid (Ericson), loose quadtree (Ulrich), sphere (cull), convex hull (rigid body, custom/simple nearest feature, projection-displacement, impulses for contacts and friction). The collision system is single pass, with no iterations required. Kinetic energy is tracked and corrected as necessary. The projection displacement system partially deforms a tetrahedral basis system to allow objects to be moved and rotated, making the rigid bodies partially deformable, allowing stable stacking and settling without iterations. Slight interpenetration is present, but not really noticeable in a game application. Iteration can be use to reduce or eliminate the slight overlap. This method was discovered after experimenting with Jacobsen-style Verlet tetrahedral rigid bodies.
Curved surface collisions: could not find a fast/stable non-iterative solution- uses an iterative method, and is somewhat expensive. Caching and culling used to improve performance. "Non-parametric" surface special-case collisions are almost free for height sampling (AOT ray sampling).
Aerodynamics: Custom/simple CFD model, explained here:
http://www.brightland.com/Physics/index.htm
Tire model: Flexible tire simulation is quite challenging- tried slip models, but ended up using a custom 'tracked displacement' spring-impulse model.
Engine simulation: Rotating mass, aero piston drag, clutch, driving a geartrain (transmission+rear end) with optimized differential.
Constraints: Impulse with deformation-displacement correctors.
Canned-animation interaction: Linear and angular velocity are computed from current and previous positions, allowing dynamic objects to interact with canned animation objects.

Graphics / Gameplay

Graphics: Curve tessellation turned down to allow higher performance on legacy hardware (can still turn up so that no polygon edges are visible). Some OpenGL issues were found with GDebugger (caused problems with some ATI and Intel drivers); now fixed (should also run faster).
Sound: Better mix, 5.1-7.1 surround improvements (3D).
Gameplay: Driving the car with the keyboard should be very easy now- physics-based helpers for stability and tip-over prevention should allow you to hit cars/walls and not tip over, as well as get completely sideways, drift large distances, than easily recover. Since the physics-based helpers (Driving Aids) don?t affect grip, players with Driving Aids enabled should not have an inherent advantage over skilled players with Driving Aids turned off. The Driving Aids also help beginners using a joystick or wheel.

A network game server is running 24/7: I have never seen networked object stacking, etc., as well as the ability to physically push around/carry boxes/objects with a network client: has this been done before? Check out the networked physics and let me know if it works as advertised. After downloading and installing the game, press JOIN and the Brightland server should be visible. Press F2 to show your ping. A recent test with a client in Germany showed a ping of 160ms- no lag was visible (the server is located in San Diego, CA).

Download the latest version here: http://www.brightland.com/ac/
sbroumley
Posts: 15
Joined: Sun Aug 07, 2005 6:31 am
Location: Austin

Post by sbroumley »

Very nice demo John!

Can you explain the rigid body physics (verlet particles?) and collision resolving methods to get stacking working in further detail? I've tinkered with verlet particle rigid bodies a while back, but I could never get stable stacking without lots of iterations.

thanks
Steve.
John Schultz
Posts: 23
Joined: Sat Aug 06, 2005 7:48 am
Contact:

Post by John Schultz »

sbroumley wrote:Very nice demo John!

Can you explain the rigid body physics (verlet particles?) and collision resolving methods to get stacking working in further detail? I've tinkered with verlet particle rigid bodies a while back, but I could never get stable stacking without lots of iterations.

thanks
Steve.
Thanks Steve!

I think the key factors were:
1. Correcting kinetic energy.
2. Hybrid approach to VRB and RB collision+integration.

More info here: http://www.brightland.com/Physics/index.htm
John Schultz
Posts: 23
Joined: Sat Aug 06, 2005 7:48 am
Contact:

300ms no lag video

Post by John Schultz »

High-quality h.264 video showing networked physics; 300ms ping, high speed driving and physical interaction, lag free:
http://files.filefront.com/ACR_300msmov ... einfo.html
kevglass
Posts: 7
Joined: Mon Aug 07, 2006 6:48 pm
Location: Davis, CA, USA
Contact:

Post by kevglass »

Could you explain what method you use to synchonise the clients. Given a 300ms lag how do you account for the fact the two clients don't know all the influences in the physics system at any given moment?

Kev
Post Reply