1 / 32

Off-Road Racing Physics,

Off-Road Racing Physics,. Indie Style. Jim Buck Twitchy Thumbs Entertainment, Inc. jbuck@twitchythumbs.com August 19, 2009. Who is this dude??. 1996 – 2000 : 989 Studios, programmer 2000 – 2003 : DepthQ, founder 2003 – 2005 : SCEA, programmer 2005 – present : Twitchy Thumbs, founder.

Download Presentation

Off-Road Racing Physics,

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Off-Road Racing Physics, Indie Style Jim Buck Twitchy Thumbs Entertainment, Inc. jbuck@twitchythumbs.com August 19, 2009

  2. Who is this dude?? • 1996 – 2000 : 989 Studios, programmer • 2000 – 2003 : DepthQ, founder • 2003 – 2005 : SCEA, programmer • 2005 – present : Twitchy Thumbs, founder

  3. Why? Yesterday’s next-gen technology is today’s: • achievability by indie developers • handheld technology • next-gen effects during spare CPU time “Doing a lot with a little is something we can't forget how to do.” – Mike Acton, Insomniac Studios

  4. What is Rally Cross?

  5. What is Rally Cross? • PlayStation off-road racing • Sony-developed/published • February ‘97 in N. America • 200,000 sold in N. America • Japanese/PAL releases • Considered “cult” classic • One of first for PS1-on-PSP

  6. What is Rally Cross? Demo

  7. Rally Cross physics history • Chris Hecker physics articles too late (October 1996 - June 1997) • SGI 4Dgifts newton demo • Robert Sheehan’s bouncer simulation

  8. Physics Primer • F = m*a • v += a*t = (F/m)*t • p += v*t All math is 1.19.12 fixed-point!

  9. What is Rally Cross physics? Springs! (well, actually, damped springs)

  10. Damped spring physics v0 t = 0 Spring at rest v1 t = 1 x F = – k*x – c*v1 Hooke’s law

  11. Rally Cross physics components • Vehicle box • Box collision with ground • Box collision with track boundaries • Box collision with another box (vehicle) • Vehicle-specific physics

  12. Vehicle Box • 8 points, or point masses, representing box corners • Each point accumulates forces (F) and gets time-stepped at bottom of loop • 28 damped springs from each point to every other point

  13. Vehicle Box

  14. Vehicle Box For each spring: • x = length(p1 – p0) - at_rest_length • v = dot(v1 – v0, unit(p1 – p0)) • F = (– k*x – c*v) * unit(p1 – p0) • F1 += F, F0 += –F v1 v0 p1 p0

  15. Vehicle Box • “Shock” springs are special • Separated into Y and ortho-Y vectors • “Softer” in Y than in ortho-Y • Ortho-Y treated same as other springs

  16. Box Collision with Ground • Ground is a height-mapped grid • Gravity constantly affects point masses: F = m*G m G

  17. Box Collision with Ground • For each point mass, if under height-map: • xn = (height_map(p.x, p.z) – p.y) * normal_map(p.x, p.z).y • vn = dot(v, normal_map(p.x, p.z) • F = (– k*xn – c*vn) * normal_map(p.x, p.z) • Formula is for a damped spring! n xn x height_map p vn v

  18. Sidebar: Friction • Static: Fmax = fs*N • Kinetic: F = fk*N v = 0 v N N F fs*N fk*N m*G m*G

  19. Box Collision with Ground Friction • Viscous: F = –fv*vo • Static/kinetic • If vo == 0 • If Fo <= fs*xn, Fo = 0 • Else Fo –= fk*xn • Else if length(vo + (Fo/m)*t) <= (fk*xn)*t, vo = 0 • Else F = –unit(vo) * fk*xn

  20. Box Collision with Boundaries • 2d (infinite height) line segments surrounding the track • Physics is same as for hitting the ground • Damped spring pushing back along normal • Friction applied ortho to the normal n In bounds xn Out of bounds p vn v

  21. Box Collision with Another Box • Sphere test for each car pair • If succeeds, ray-through-box test F = (– k*x – c*vn) * normal (Formula look familiar?) x

  22. Box Collision with Another Box • If ray-through-box fails, test each car’s points against other’s box x n Again, F = (– k*x – c*vn) * normal

  23. Vehicle-specific Physics • For steering, F = –kv*vx (viscous friction!) • For acceleration in Z, that would require a separate presentation  X X Z Z

  24. But briefly… engine axle gear ratio wheel axle fs*N or fk*N

  25. Physics  Rendering • Points time-stepped: v += (F/m)*t, p += v*t • Display matrix: • Car position = top_center – box_height • Wheel position = based on shock length X Top face Z

  26. Physics Demo

  27. Problems • Box freaking out • Stuck on track boundaries

  28. Box Freaking Out • Check “crossbars” dot product is in safe range • Check upper points are “above” lower points Lower points + Upper points = bad!

  29. Stuck on Track Boundaries • Stuck if 2 adjacent points such that: dot(n0b, n1b) < 0 • Find boundary intersected by center of box to center of the 2 points • Push out with spring equation

  30. Optimizations • Constants mostly power-of-2 • Cached calculations (ex. 1/mass * time) • Local variables to avoid aliasing • 64-bit MIPS multiplications • Assembly language for key math functions and height-map lookup

  31. Evolution of Physics CART World Series • correct wheel friction Twisted Metal 3 • 3d poly collision with no penetration (no height-map) Twisted Metal 4 • car-to-car collision with 3d boolean intersection

  32. Q&A Contact: jbuck@twitchythumbs.com

More Related