《魔兽世界》的寻路体系和作弊原理分析
2005-05-21 13:08
316 查看
《魔兽世界》的寻路体系和作弊原理分析2005-5-21
显示模型:这里指的显示模型是指和实际显示十分接近的场景模型,并不一定直接用于显示。尤其是在D3D的批传送模式下,用于物理检测的显示模型和实际的显示数据流很难在不牺牲效率的情况下使用相同的数据结构。
利:1. 大计算量和数据量的物理检测放在客户端,使Server端寻路的计算和内存负载都变得极轻。对50平方千米的连续地图,寻路数据都很小可以一次全部装载。2. 客户端省去了寻路数据的内存开销和计算开销。
弊:1. 由于寻路模型过简,在大部分地方Server不知道陡坡和栅栏的存在,所以怪物可直接上悬崖,可以穿越栅栏,火球可以穿越地面和树木。2. 由于上面的原因,在客户端就可以作弊,绕开物理检测,就可以有和怪物相同的能力。
二是它使用的操作模式,即键盘控制移动的模式,是可以在速度上作弊的。因为依赖于不断的给Server发命令包,而网络状况又是不稳定的,假如正常时每秒5个前进命令包,而由于网络拥堵Server经常可能在一秒内一下接收20个前进命令包。短时间内很难区分是作弊还是正常的拥堵,只有长时间持续高速移动才能被自动检测出来。
概念:寻路模型和显示模型
寻路模型:用于寻路的世界可通行(不可通行)区域的数据结构。2D游戏通常使用格子系统,对复杂的3D场景一般使用基于三角面的系统,也有预设路径等其他多种模式,也有些游戏不使用寻路模型,而直接在显示模型上做物理碰撞测试。显示模型:这里指的显示模型是指和实际显示十分接近的场景模型,并不一定直接用于显示。尤其是在D3D的批传送模式下,用于物理检测的显示模型和实际的显示数据流很难在不牺牲效率的情况下使用相同的数据结构。
《魔兽世界》的寻路体系
魔兽使用的模式是:Server端只有极简的寻路模型和障碍数据层,客户端只有显示模型用于物理检测而没有寻路。魔兽使用的寻路模型数据好像过于精简,尤其是在旷野地区,没有任何关于地表起伏的描述,全靠障碍数据层让寻路时可以绕开一部分障碍。利:1. 大计算量和数据量的物理检测放在客户端,使Server端寻路的计算和内存负载都变得极轻。对50平方千米的连续地图,寻路数据都很小可以一次全部装载。2. 客户端省去了寻路数据的内存开销和计算开销。
弊:1. 由于寻路模型过简,在大部分地方Server不知道陡坡和栅栏的存在,所以怪物可直接上悬崖,可以穿越栅栏,火球可以穿越地面和树木。2. 由于上面的原因,在客户端就可以作弊,绕开物理检测,就可以有和怪物相同的能力。
作弊器使用的主要漏洞
一就是上面提到的问题,由于Server端没有详细的寻路模型数据,对玩家的限制是在客户端使用物理检测实现的,只要直接给Server发命令是可以绕开物理检测限制的。二是它使用的操作模式,即键盘控制移动的模式,是可以在速度上作弊的。因为依赖于不断的给Server发命令包,而网络状况又是不稳定的,假如正常时每秒5个前进命令包,而由于网络拥堵Server经常可能在一秒内一下接收20个前进命令包。短时间内很难区分是作弊还是正常的拥堵,只有长时间持续高速移动才能被自动检测出来。
相关文章推荐
- 《魔兽世界》的寻路体系和作弊原理分析
- Thrift之TProtocol类体系原理及源码详细解析之类继承架构分析
- JVM体系架构分析与内存原理模式详解~新
- Thrift之TProtocol类体系原理及源码详细解析之类继承架构分析
- Thrift之TProtocol类体系原理及源码详细解析之类继承架构分析
- Thrift之TProtocol类体系原理及源码详细解析之类继承架构分析
- Laucher2 分析二 拖动原理
- Spring3.1.0实现原理分析(一).类型转换
- Android中Thread、Handler、Looper、MessageQueue的原理分析
- Tapestry 3.0 输出功能的原理分析
- iOS中无限循环滚动简单处理实现原理分析
- 聊聊并发(一)——深入分析Volatile的实现原理
- PCA(主元分析)的数学原理
- PHP文件上传原理简单分析
- 【转载】巨页的原理分析
- iOS开发中的手势体系——UIGestureRecognizer分析及其子类的使用
- seaJs原理分析和源码解读(上)
- jQuery 2.0.3 源码分析 事件体系结构
- Java NIO使用及原理分析 (一)
- 聊聊并发(一)——深入分析Volatile的实现原理