《魔兽世界》的寻路体系和作弊原理分析
2005-5-21
寻路模型:用于寻路的世界可通行(不可通行)区域的数据结构。2D游戏通常使用格子系统,对复杂的3D场景一般使用基于三角面的系统,也有预设路径等其他多种模式,也有些游戏不使用寻路模型,而直接在显示模型上做物理碰撞测试。
显示模型:这里指的显示模型是指和实际显示十分接近的场景模型,并不一定直接用于显示。尤其是在D3D的批传送模式下,用于物理检测的显示模型和实际的显示数据流很难在不牺牲效率的情况下使用相同的数据结构。
魔兽使用的模式是:Server端只有极简的寻路模型和障碍数据层,客户端只有显示模型用于物理检测而没有寻路。魔兽使用的寻路模型数据好像过于精简,尤其是在旷野地区,没有任何关于地表起伏的描述,全靠障碍数据层让寻路时可以绕开一部分障碍。
利:
1. 大计算量和数据量的物理检测放在客户端,使Server端寻路的计算和内存负载都变得极轻。对50平方千米的连续地图,寻路数据都很小可以一次全部装载。
2. 客户端省去了寻路数据的内存开销和计算开销。
弊:
1. 由于寻路模型过简,在大部分地方Server不知道陡坡和栅栏的存在,所以怪物可直接上悬崖,可以穿越栅栏,火球可以穿越地面和树木。
2. 由于上面的原因,在客户端就可以作弊,绕开物理检测,就可以有和怪物相同的能力。
一就是上面提到的问题,由于Server端没有详细的寻路模型数据,对玩家的限制是在客户端使用物理检测实现的,只要直接给Server发命令是可以绕开物理检测限制的。
二是它使用的操作模式,即键盘控制移动的模式,是可以在速度上作弊的。因为依赖于不断的给Server发命令包,而网络状况又是不稳定的,假如正常时每秒5个前进命令包,而由于网络拥堵Server经常可能在一秒内一下接收20个前进命令包。短时间内很难区分是作弊还是正常的拥堵,只有长时间持续高速移动才能被自动检测出来。