Networked Physics with PhysX

First of all, physics substeps actually run in the main thread since UE 4.13 (it’s still ran in a task).

Also syncing things in substeps themselves will not make any difference vs Tick other than it just creates more overhead for no actual gain. I’ll explain this a little to tell why that is so:

  • physics substeps are ran immediately one next to other, there’s no measurable time between two substeps in realtime, they are literally ran in series without any delay between them
  • UE4 netcode is only synced on Tick anyway

So in the nutshell you get new physics data at the start of the Tick (as physics is ran first) and you send network events on the end of the Tick (as that’s at the end of Tick updates). Also since your last substep will have most recent physics data in it, there’s literally zero reason to try to send previous physics steps data at this time as that data is already outdated, you only have use for the most recent data.

edit-> I might have misunderstood the intention, but it doesn’t really change much as long as you use stock ue4 physics. Your last substep will be in sync with Tick as that’s how the ue4 substepping works, if you use fixed timesteps on physics using custom engine, this will change and then you’ll actually benefit from knowing the actual timestamp of the physics step.