I’m prototyping a turn-based multiplayer game with an authoritative server model.
Currently I’m leaning towards using a Recast graph where the enemies and the players would use a NavmeshCut component to set areas they occupy as unwalkable. The behaviour I’m looking for is similar to the SingleNodeBlocker example in the Grid graph, but in my case I would use NavmeshCut instead.
In my project, player will be able to preview their move path on client-side before committing to it (similarly like during the battle mode in Divinity: Original Sin).
When a player commits to a path and sends a “move command” message to the server, this path would then be validated on the server-side. So, it’s important for the Recast graph to be synced properly between the client(s) and the server (i.e. if the pathfinding on client-side confirms that the path is doable, the exact same path should be doable on the server as well). The server has the authority over the graph updates, which would then be synced to the client(s).
So, finally to the actual question : enabling and disabling NavmeshCut components on the server-side will modify the graph data, so how can I assure that the graph stays in sync between the client(s) and the server? (i.e. what should I sync over the network?) I would prefer to sync only the bare minimum data to reduce unnecessary network traffic.