MMO寻路和碰撞检测讨论

来源:互联网 发布:java参数构造 编辑:程序博客网 时间:2024/05/16 06:44
MMO寻路的各种实现方式:
服务端执行寻路,客户端纯粹表现。
客户端执行寻路,服务端验证结果(可能抽样验证)。
客户端和服务端都执行寻路,并保证同步。
如果NPC需要寻路,服务端就必须有寻路功能。
Unity本身的设计不适合用于MMO服务端,而一般公司也很难取得源码再实现相同的寻路规则。
如果服务端就必须有寻路功能或验证功能,建议不要使用Unity本身的寻路功能。可以选择自行开发或使用一些中间件如PathEngine、Autodesk Navigation

-----------------------------------------------------------------------------------------------------------------------------------------

寻路和战斗逻辑的物理碰撞肯定放server,因为client的本地数据和发的包都是不可信的。
导航网格是很成熟的技术,服务端实现一套符合项目需要的只需要一个程序员不到一个周的时间就能搞定。
物理引擎的话也需要根据项目定位来决定是自己搞一套简单的还是稍微复杂点的。我在的项目服务端用bullet已经绰绰有余了,还需要裁剪掉很多功能。
client需要的是位置的同步和状态的同步,server侧寻路的流程和碰撞检测的逻辑,对client透明。


-----------------------------------------------------------------------------------------------------------------------------------------


客户端的做法肯定服务器端也得做简单的验证,一般会为服务器生成简单的导航地形网格,客户端会根据寻路数据包括什么方向速度之类的发给服务器,服务器会简单验证是否合法,不合法则直接让他回退
也有的做法是在服务器端寻路,这样的话只要广播位置就行了。
0 0
原创粉丝点击