Repository navigation
v0.3.0-preview.1
Pre-release-
Characters, vehicles, ragdolls and buoyancy are complete for this preview line. The rigid and virtual 3D characters, wheeled, tracked and motorcycle vehicles, ragdolls with powered pose matching, and buoyancy and drag in fluid volumes are within their stability limits on every scene, with identical results on x64 and arm64:
characters-3d(every stair climbed, character jitter under 1e-6 m/s, no slope violations),vehicles-3d(no rollovers, no wheel through the ground, suspension jitter 0.002),tracked-3d,motorcycle-3d(none fallen, lean error 0.006),ragdoll-powered-3d(95th-percentile pose error 0.058 rad, none fallen) andbuoyancy-3d(equilibrium depth error 0.0026). No managed .NET engine covers these scenes, so they are judged on their stability limits. They stay under[Experimental("OPHYS0002")]with the rest of the 3D engine until every 3D speed row meets the bar. -
GetSnapshotSizeBound()onPhysicsWorld2DandPhysicsWorld3Dreturns an upper bound onGetSnapshotSize()that holds however the world steps while no storage grows, so a host can size rollback buffers once. Contacts and joints, shape pairs, islands, broadphase nodes and events are counted at the capacity that holds them (ContactCapacity,PairCapacity); what the host creates (bodies, shapes, joints, characters, vehicles, ragdolls, fluids) is counted as it is now. Additive; the snapshot format and every world hash are unchanged. -
3D box-against-box edge axes are tested without normalizing each axis (about 9% off the box–box routine on pairs from a sleep-wake pile). Separations can differ from the previous preview in the last bit in some poses, so 3D world hashes and snapshot bytes move.
-
3D: mild joints run on the contact-only schedule. An island whose joints are all mild (no kinematic end, motor, spring or pose drive; mass ratio at most 50; no more joints than bodies) now takes the 2-substep contact-only schedule with its contacts, instead of the world's 4. ragdoll-pile-3d solve stage 0.67× the time (step about 0.8×, one thread, indicative); stiff joint scenes are unchanged. See
docs/spec/world3d.md, round 33. Step time on a locked machine: ragdoll-pile-3d 0.80× at one thread, 0.85× at eight, 0.75× at 32; large-pile-3d and the joint scenes within noise. -
3D steps scale better with threads, with identical results. The sleep timers run in parallel blocks as in 2D, colouring blocks are 512 constraints instead of 4096, and threads waiting at a stage boundary pause for a few instructions a round and give the core up only after a long wait, instead of backing off and yielding after ten rounds. On a locked machine, steps at eight and 32 threads take 0.94–0.99× the time on piles, ragdolls, sleep-wake and joint grids, in 2D and 3D. No world hash moves.