Hi @MBobbo*, thanks for the incredibly detailed response — it clarified a lot about the resimulation architecture and fundamentally changed how I think about the physics thread vs game thread boundary.*
I have two follow-up topics, one about scalability and one about discoverability of physics thread APIs.
Scalability — Listen Server at 60Hz with 8+ players
My game is a Chaos physics-based party game targeting 8 players minimum on a Listen Server (no dedicated server). Every player is a physics pawn using NetworkPhysicsComponent with resimulation, and there will also be passive physics objects in the level (push carts, seesaws, puzzle cubes) that interact with the players.
I’m considering raising the physics tick rate from 30Hz to 60Hz for better collision quality (less tunneling on thin surfaces and fast impacts), but I’m concerned about the cumulative cost on a single Listen Server host machine that has to maintain physics cache history and process resimulations for all 8 players plus level objects simultaneously.
Is there a practical ceiling where the resimulation cache memory and CPU cost becomes prohibitive for a Listen Server scenario at 60Hz with this many physics actors? Or is this manageable with reasonable optimization (keeping cache history short, limiting resimulation depth, etc.)? Any guidance on what levers to pull would be greatly appreciated.
Physics Thread API Discoverability
I’m currently studying the Chaos Mover plugin source (specifically FloorSweep_Internal) as you recommended, to understand how to do physics thread queries. However, I’m finding it difficult to discover the full set of available physics thread APIs since the internal Chaos interfaces (like FGenericPhysicsInterface_Internal::SpherecastMulti, OnContactModification_Internal callback patterns, probe collision setup, etc.) don’t appear in Epic’s public API documentation.
Is there a reference or internal document that lists the available physics thread query and modification APIs that are safe to use inside ISimCallbackObject callbacks? Or is the recommended approach to read through the Chaos Mover and Chaos Vehicle plugin source code as living documentation?
Beyond FloorSweep_Internal, are there other places in the engine source (plugins, samples, or test code) that demonstrate patterns for a networked physics game — things like physics thread overlap detection, contact modification for custom impulse responses, probe collision setup, or physics thread force application between multiple interacting pawns?
Any pointers would save a lot of engine source spelunking. Thanks!