How to network A*PP?

I’m converting my game from scratch to support multiplayer. For the networking asset, I’m using FishNet which is relatively new but it seems to be very similar to how other networking solutions work, such as Netcode for Gameobjects by Unity and Mirror.

This is a very general question, but are there any general suggestions / guidelines I should stick to when trying to network this asset? Which variables or properties should be synced over the network and which should be client-only? I’m assuming it’s best to run the actual pathfinding on the client, but I’m more interested in how to sync the movement over the network.

More specifically, I’m using AIPath and RVO. My game will have agents as well as other players, so I’m wondering what is the best practice to sync RVO information so that local avoidance works correctly. As an example, if I’m manually moving the player towards an agent that’s moving towards me (the agent is controlled by the server), how exactly should I sync e.g. the velocity field so both entities know how to properly avoid each other?

Also, would it be better to have all RVO calculations run on the server (server-authoritative movement) or could I get away by letting each client simulate their own RVO and sync the position with other clients?

This is a very open ended question and I haven’t seen any multiplayer-related questions explain this in detail? I’ll be using a 400x400 grid graph, local avoidance, and I’m not looking for determinism, only that everything works smoothly and transforms are synced.

Hi

I think it’s better to do as many calculations as possible on the server and then sync positions (with prediction based on velocity). Having different clients do simulations tend to lead to them getting out of sync quickly.