新浪博客

魔兽地图编辑器教程之地图掉线原因以及排查

2012-12-01 14:09阅读:
很多新人们做图时遇到玩家掉线情况,而没有一个具体的说明。
实在是原因多种多样,不过我把常见的一些说明一下。
有错误或者不完全的地方希望大家补充说明。
我先简单说下魔兽的数据验证方式——封包验证,也可以说所有的联网游戏都是这么验证的。每个玩家在游戏中的任意操作都会使用封包传递验证,并且是相互验证,只有在其他机器返回验证成功的封包,游戏数据才会真正发生改变。这也就是数据同步。
现在我们再来看看掉线。
我把掉线称为天灾人祸。
天灾是不可抗拒因素,也就是网络连接问题。
人祸是制图时作者的一些失误造成的。
天灾
天灾来的比较缓慢,因为网络传输具有不稳定性,所以在网络堵塞或者断开网络的时候,出现的是等待XX秒。这就是上面所说的验证机制,机器运行魔兽时不会单方面做出判断,必须相互验证成功后才会做出判断。所以在等待的XX秒钟,机器一直在等待返回验证的封包。当然不是一直等待,在XX秒后点击“丢失玩家”就可以继续游戏了。为什么要点击“丢失玩家”呢?这是因为超时无法得到返回验证后,要确认丢失玩家,必须保持数据同步。在点下“丢失玩家”以后,就发送封包去验证,在所有玩家都点了后,数据同步了,才会继续游戏。就这么个道理!
人祸
人祸是我们重点要看得东西。一般来说分为两种情况下
1.数据不同步
0.1)
情况:使用 本地玩家
问题:返回值不同,导致掉线
解决:不用 本地玩家 这个函数;其他;
解释:对于本地玩家,我们可以把它看成任意单位的所有者的计算机。
由于只是指代单一机器,所以无法使用 本地玩家 作出需要返回验证的操作。
因此常见的使用场合 就只有多面板之类的,并不实际存在数据的方面。
0.2)
情况:使用 wait
问题:时间误差太大,导致掉线
解决:尽量少使用wait;使用时尽量写整数秒数;
解释:wait分为等待游戏时间和等待现实时间两种。而wait函数本身的精度本来就不高,等待游戏时间的精度比等待现实时间更低。精度低意味着误差大,误差大过一定范围就会因为数据不同步造成掉线。而且,这个误差是随机的。
0.3)
情况:wait与timer混用
问题:时间误差大,导致掉线
解决:尽量不要出现wait与timer混用的情况;
解释:timer的精度远比wait高很多,所以在低精度要求下使用wait,高精度使用timer。
0.4)
情况:循环中使用wait
问题:不定时掉线
解决:不要再循环中使用wait
解释:虽然误差是个随机值,不过在循环中使用,发生掉线的概率显著提升。
0.5)
情况:骰子个数和面数过大
问题:不定时掉线
解决:把筛子个数和面数设定小些
解释:涉及到随机数设定,很复杂。简单点说,我们设定的只是概率,具体的随机数算法我们无法修改。所以骰子个数与面数过大,运算出现的误差就越大,掉线几率就越高。
0.6)
情况:触发中设置随机数过大
问题:极小情况下掉线
解决:随机数设定小些
解释:基本上这种掉线情况是不会出现的,之所以列出来,是要与上面的骰子问题做个说明。骰子和随机数是相同的算法,唯一的区别就在于运算队列。
一个程序的运行效率是确定的,魔兽也如此。我们可以把骰子看成支线剧情,把T或J中做的随机数看成主线剧情。主线剧情是必须的,所以占用的资源多,运算精确;支线任务与主线并行,但是相对的占用资源少,运算误差就大了。不过具体使用随机数会造成掉线的程度我没研究过,只是理论上存在。
0.7)
情况:条件代替动作(JASS)
问题:精确情况下掉线
解决:做适当的修改
解释:本人J白,无法解释。
0.8)
情况:guo发的JASS培训班教程中的RPBUG
问题:精确情况下掉线
解决:请看《JASS培训班教程》 (转载注释:everguo编写,WE高级讨论区可下载)
解释:在上面的教程中已经有了解释,我有一些自己的看法。
在函数传递时需要得到返回值的问题。我们会发现暴雪官方地图使用的J中有许多我们认为累赘的语句,是失误?还是故意?很明显,存在即有意义。每个函数需要的返回值不同,具体的函数我们又很难全部记住,那么,最简单的办法就是全部给予返回值。
2.魔兽数据
WE中我们可以使用外部资源导入到地图中使用,而有些时候,问题就在这里。
情况:导入
说明:
1.WE的导入编辑器只检查文件的后缀名。这意味着,我们可以把任意格式文件的后缀名改为WAR3能使用的文件格式就可以导入。
2.我们使用格式转换工具的时候,也有可能在转换过程中文件损坏,造成无法识别。
3.我们导入后的模型在WE编辑器中能显示了,不代表模型就没问题。
解决:新建个地图,把图标图片模型先导入进去测试一下,没有问题了再使用。
假如有问题,自己进行修改或者更换。
常见问题链接http://www.suy23.com/news/WenT/lists1.html

我的更多文章

下载客户端阅读体验更佳

APP专享