跳至内容
游戏 · 评测 · 数据库
论坛

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

首页 › 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 搜索

至少输入 3 个字符。

探索

外观

选择您的颜色主题

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

🌍 选择语言 25 种语言
🔍