偶久网

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索

网站魔兽热门地图

查看: 3056|回复: 4

地图掉线原因及排除

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