c# - unity multiplayer - 同步变换 vs 同步 setdestination - navmesh 代理
问题描述
我是脚本新手,我一直在使用 Navmesh 代理为 1V1 游戏 Mova 风格的游戏编写专用 UDP 服务器。我是否应该仅在玩家点击移动时不断更新玩家转换或同步,并setDestination
在其他客户端上移动到该位置?另外,关于黑客攻击,我是否必须与服务器仔细检查所有内容?谢谢。
解决方案
您有几种方法可以做到这一点,我将指出其中的两种方法,各有利弊。
玩家发送点击移动位置到服务器。
1)然后服务器将此位置发送给所有客户端(包括发起者),然后客户端计算路径并开始内插运动。
优点:带宽低、执行速度快、实现复杂度低。
缺点:客户端很容易被破解。
2) 服务器计算玩家需要遵循的路径(寻路)并将路径节点发送给客户端。
优点:不可破解,服务器将在每个玩家动作中拥有最终决定权
缺点:服务器需要物理或寻路才能工作,这确实是很多工作。如果您实现物理,您将能够在服务器上插入运动并定期向客户端发送位置以模拟运动。
帮助您实现第二个选项的有用技术是BulletSharp和 SharpNav ,这两者都需要您将几何体(地形)加载到服务器端)和用于优化客户端-服务器网络物理的快照压缩。
祝你好运,您可以要求任何澄清或帮助。
推荐阅读
- algorithm - 自适应采样函数的算法
- bigtable - 如果所有值都被垃圾收集,是否会自动删除一行?
- bash - 从不同路径批量重命名多个文件
- java - 如何在 Java 中创建 SOAP Web 服务,它连接到 Oracle 存储过程并将结果作为 Web 服务响应返回
- go - ...interface{} 函数参数中的“取消引用”元素
- ruby-on-rails - Rails 5:发布路线不适用于根网址
- javascript - 如何替换字符串中的最后一个字符,JS
- android - 使用 FirebaseRecyclerOptions 检索数据
- python-3.x - 如何让插入为入口小部件python工作
- c# - 如何获取当前登录用户的详细信息?