关于几款MMORPG游戏的自动寻路及移动同步技术分析报告

关于几款MMORPG游戏的自动寻路及移动同步技术分析报告

ID:40616252

大小:24.78 KB

页数:4页

时间:2019-08-05

关于几款MMORPG游戏的自动寻路及移动同步技术分析报告_第1页
关于几款MMORPG游戏的自动寻路及移动同步技术分析报告_第2页
关于几款MMORPG游戏的自动寻路及移动同步技术分析报告_第3页
关于几款MMORPG游戏的自动寻路及移动同步技术分析报告_第4页
资源描述:

《关于几款MMORPG游戏的自动寻路及移动同步技术分析报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、关于两款游戏的自动寻路及同步技术分析报告测试环境同PC机,双开不同角色的客户端测试目的得到现在市场上主流游戏的自动寻路和玩家同步的实现方式的技术分析。前提分析首先,需要说明几点,游戏中位置信息的同步,其实质是在同步时间。根据T=S/V的公式我们可知,事实上我要需要不同客户端上的角色移动在相同的时间内完成同一事件,那么我们一旦因为延迟造成不同客户端的角色位置差异就要通过更改2点来实现弥补。1)一是改变S,即不同客户端上同一角色在执行一个移动事件时,所行走的路程不同。即,在不同客户端产生位移差距后,我们

2、通过改变落后,或者置前的客户端玩家所走的路程来实现位移弥补。实现该思路必须解决的问题就是:因为自动寻路是根据A星算法得出,因此所走的路线才不可能与碰撞体相撞。而一旦我们通过改变S来实现同步的话,必然会使玩家所走的路线有所不同。因此表现为:本地客户端在模拟网络玩家的移动的时候,一旦改变了路线,就可能让角色与碰撞体相撞。也可以使模拟的角色产生瞬移来模拟,该方法一般是出现在角色位置信息差距较大的时候。2)二是改变V,即所走的路线完全是有该角色的本地客户端所计算出来,通过服务器传输给不同的客户端模拟,而网络

3、延时所造成的位移差,只有通过不同的速度来使角色基本在同一时间完成同一个寻路事件。(本方法也就是我所提出的方案,即天龙八部所采用的方式)。表现为:玩家移动时的速度可能根据不同的网路延时而改变。另外也可以采取低阀值的位移模拟,一旦网路卡住则停下,等待新的数据到来再进行移动。表现为:角色的移动过程中会出现大量停顿。具体游戏分析1.蜀门游戏类型:蜀门是一款2.5D的武侠风MMORPG类游戏。游戏中的角色同步的分析首先,经过2个不同角色的分析,发现该游戏的同步具有以下几个特点:①本地客户端先行模拟。即不论本地

4、客户端的位移信息是否需要服务器的反馈,系统都是先默认让本地客户端的角色先行执行移动。表现为:点击移动之后无论网路是否延迟,都将瞬间执行移动。优点:可以让本地用户的角色移动异常流畅,丝毫不受网络的影响,带给用户流畅的游戏操作感。缺点:因为此方式的前提是先默认本地客户端所计算出的位移信息是完全正确的。因此可能带来一些用户先行模拟而进行了一些非法的操作的问题。如果要避免速度外挂所带来的问题,则需要服务器端对发送过来的信息进行严格验证。①游戏中本地客户端模拟网络玩家的运动时,网络玩家的移动速度并没有出现改变

5、,而采用的是移动过程中不断停顿的方式来实现的移动模拟。当与正确的位移信息差异过大时候,采取瞬移的方式来纠正位移。游戏中角色所走的路线完全不同。即我发现当网路相当卡的时候,本地玩家角色进行了2次寻路事件,而同角色的网络玩家角色的模拟只执行了一次寻路事件,但基本保障了执行完事件后玩家所在的位置是相同的,但是因为所走的路线不同,所以有可能会造成穿越碰撞体的事件。除非在模拟之前,网络角色所在的客户端也进行了一次A星算法。最后,我找了一个碰撞体,并切针对带碰撞的自动寻路进行了观察,发现2个客户端针对同一个寻路

6、事件,皆进行了A星算法,因此才造成的2个客户端角色所行走的路程不同。本地客户端走的路线如图1.1,另一客户端看到该角色所走的路线为图1.2。因为S不同,V相同,则可知,2个客户端所完成寻路事件的时间是不相同的。但是可被控制到一定的范围。图1.1图1.2总结:由于该游戏采用的是V不变,而多种方法改变S的方式来实现移动同步,因此游戏画面中会出现闪现,行走路线完全不同,开始和完成寻路事件的时间完全不同。网络角色的开始移动模拟与本地客户端的开始移动之间的间隔大约在1-10+秒左右,取决与网络速度。因此可确定

7、该方法的实现思路如下:1.该游戏采取的方式并非是路点信息的传输来实现的。2.对于网络角色的移动模拟,采用了2种方式,一是当移动不涉及碰撞体,或者不可行走区域时,我们采用了直接直线行走的方式,未完成的寻路就需要改变时,直接改变目标皆可。(这点可采用射线检测的方法来判断是否需要A星算法),当需要使用A星算法时,网络角色的模拟采用的是只需要知道目标点,具体的路线由需要模拟该网络角色的本地客户端承担计算。因为野外地图发生碰撞的可能行比较小,再加上只计算同屏的玩家的位置模拟,因此客户端能承担。也因为如此才会使

8、2个客户端之间的路程产生不同。估计实现该效果的服务器通信数据结构应为:Send(CurPos,TargPos……);//该角色的本地客户端向数据库发送消息Recved(CurPos,TargPos……);//与该玩家所在同屏列表中其他玩家的客户端收到服务器发来的消息结构If(IsNeedA*())//先得到要去这个目的地,是否需要A*算法{直接向目标走去}else{从新计算本地所绘制的角色的当前位置到目标位置的A*路径根据路径向目标走去}1.因为同屏显示多个玩家角色,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。