首页 > 解决方案 > unity multiplayer - 同步变换 vs 同步 setdestination - navmesh 代理

问题描述

我是脚本新手,我一直在使用 Navmesh 代理为 1V1 游戏 Mova 风格的游戏编写专用 UDP 服务器。我是否应该仅在玩家点击移动时不断更新玩家转换或同步,并setDestination在其他客户端上移动到该位置?另外,关于黑客攻击,我是否必须与服务器仔细检查所有内容?谢谢。

标签: c#unity3dserverudpnavmesh

解决方案


您有几种方法可以做到这一点,我将指出其中的两种方法,各有利弊。

玩家发送点击移动位置到服务器。

1)然后服务器将此位置发送给所有客户端(包括发起者),然后客户端计算路径并开始内插运动。

优点:带宽低、执行速度快、实现复杂度低。

缺点:客户端很容易被破解。

2) 服务器计算玩家需要遵循的路径(寻路)并将路径节点发送给客户端。

优点:不可破解,服务器将在每个玩家动作中拥有最终决定权

缺点:服务器需要物理或寻路才能工作,这确实是很多工作。如果您实现物理,您将能够在服务器上插入运动并定期向客户端发送位置以模拟运动。

帮助您实现第二个选项的有用技术是BulletSharpSharpNav ,这两者都需要您将几何体(地形)加载到服务器端)和用于优化客户端-服务器网络物理的快照压缩。

祝你好运,您可以要求任何澄清或帮助。


推荐阅读