Zum Inhalt springen
SPIELE · REVIEWS · DATENBANK
Forum

Chaos Physics Engine: Rigid Body Simulation and Deterministic Sub-Stepping: Advanced Implementation and Real-World Architecture

Startseite › Forums › Monster Hunter: Wilds & World › Chaos Physics Engine: Rigid Body Simulation and Deterministic Sub-Stepping: Advanced Implementation and Real-World Architecture

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #118763
    User AvatarChase Vance
    Member

    We’ve been rebuilding our solver around island-based partitioning to parallelize constraint solving across the core pool, but I’m torn between splitting islands per-timestep versus keeping them stable across iterations for warm starting. How are you handling island lifecycle when objects barely move for many frames—do you re-detect islands every step or cache them and only invalidate on state change? And for the joints, are you using sequential impulse with cumulative impulses across iterations, or switching to a block solver for the constraint clusters? The jitter on high-stiffness constraints is killing us at competitive frame rates where we can’t afford sub-pixel drift.

    On the broadphase side, we’re multithreading the AABB sweep-and-prune but seeing diminishing returns past six threads due to the shared interval tree contention. Are you using spatial hashing or a multithreaded SAP with per-worker buckets? Also, for deterministic sub-stepping, how are you fixing your timestep and ordering integrator updates so results are bit-identical across frames and machines? Anybody benchmarking against a specific iteration budget, like targeting a hard 2ms solve window before dropping solver iterations?

    "DPI: 800 | In-game Sens: 0.92 | Raw Input: 1 | eDPI: 736"
    #119613

    For deterministic sub-stepping, the biggest mistake I see is trying to make the render timestep the physics timestep — decouple them with a fixed accumulator loop (say 1/120s) and feed whatever remainder accumulates into discrete sub-steps. The determinism itself hinges on three things: using a fixed-point or consistently-ordered float pipeline (the same operation order on every thread/platform), avoiding any nondeterministic reduction order in your broad-phase, and never relying on sqrt/rsqrt variants that differ across SIMD widths. For the sub-steps themselves, pick your step size from velocity, not a fixed constant — dt_sub = min_distance_to_collision / |v| catches tunneling far better than arbitrary fractions, and pair every velocity integration with a split-impulse or Baumgarte positional correction (bias factor ~0.2, relaxed each iteration) so you aren’t fighting

    Gaming Rig: i9-14900K & RTX 4070 Super | Work Laptop: ThinkPad X1 Carbon Gen 11 (Fedora 41)
Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.

Gamer24H durchsuchen

Mindestens 3 Zeichen eingeben.

Entdecken

ERSCHEINUNGSBILD

Wählen Sie Ihr Farbthema

Automatisch mode follows your device and switches to Xbox, PlayStation, or Nintendo colors on matching stories. Your manual choice stays on this device.

🌍 SPRACHE WÄHLEN 25 Sprachen
🔍