系统集成 - 宿迁波仔博客

现在unity3d做的mmo,是如何在服务器端做碰撞检测或nav mesh寻路的?

众所周知unity客户端自带物理引擎和nav mesh寻路的,但网游必须在服务器端做决策,如何让server端物理和寻路与client一致呢?

MMO寻路的各种实现方式:

  1. 服务端执行寻路,客户端纯粹表现。

  2. 客户端执行寻路,服务端验证结果(可能抽样验证)。

  3. 客户端和服务端都执行寻路,并保证同步。

如果NPC需要寻路,服务端就必须有寻路功能。Unity本身的设计不适合用于MMO服务端,而一般公司也很难取得源码再实现相同的寻路规则。如果服务端就必须有寻路功能或验证功能,建议不要使用Unity本身的寻路功能。可以选择自行开发或使用一些中间件如PathEngine、Autodesk Navigation。

寻路和战斗逻辑的物理碰撞肯定放server,因为client的本地数据和发的包都是不可信的。

导航网格是很成熟的技术,服务端实现一套符合项目需要的只需要一个程序员不到一个周的时间就能搞定。

物理引擎的话也需要根据项目定位来决定是自己搞一套简单的还是稍微复杂点的。我在的项目服务端用bullet已经绰绰有余了,还需要裁剪掉很多功能。

另外,client需要的是位置的同步和状态的同步,server侧寻路的流程和碰撞检测的逻辑,对client透明。

2014-09-18 | 发布:宿迁波仔博客 | 分类:服务器 | 评论:1

留言列表:

  • 橘桔橘桔 发布于 2017-02-23 10:40:37  回复
  • 请问在保证性能的情况下在服务器端进行将前端传来的寻路信息进行正确性的验证呢?如果前端只传关键的路径点信息,和拥有的navmesh的地图信息,而不用调用与客户端相同的寻路算法就能验证么?有这种方法的思路么

发表留言: