Interpolated Ghosts in PredictedSimulationSystemGroup

I have a question regarding interpolated ghosts. I know the server is authorative and interpolated ghosts on the client get only updated by the snapshots from the server. So all the logic for them should be running on the server.

Now lets say I have systems running in the PredictedSimulationSystemGroup and e.g. applying damage to entities depending on certain input from a client or based on a dmg buffer that has been filled by other predicted systems based on user inputs and collisions, using WithAll<Simulate>() to only have that done for predicted ghosts. But what if I now introduce interpolated ghosts to the scene, which should be handled by the same system? So basically should receive damage in the same way predicted ghosts would receive it.

From my understanding the same system can handle this, even so it’s running in the PredictedSimulationSystemGroup and using WithAll<Simulate>(), as on the server Simulate is enabled anyway and it would exclude the interpolated ghosts only on the client side. So that way the interpolated ghosts would receive their damage only based on what the server has calculated and set in the corresponding systems, just like it’s supposed to be.

Am I right with that and that I don’t need different systems for interpolated and predicted ghosts in such cases?

1 Like

Yes, that is exactly right.
You can also read our documentation for further explanation: Managing latency with prediction | Netcode for Entities | 1.4.0

1 Like

I did, but the doc didn’t explicitly mention interpolated ghosts in conjunction with it. So I needed someone to correct or confirm my understanding. So thank you very much for the quick reply :blush: