找回密码
 点一下
查看: 4626|回复: 15

地图掉线情况和解决方法

[复制链接]
发表于 2008-6-13 11:31:14 | 显示全部楼层 |阅读模式
很多新人们做图时遇到玩家掉线情况,而没有一个具体的说明。
实在是原因多种多样,不过我把常见的一些说明一下。
有错误或者不完全的地方希望大家补充说明。


我先简单说下魔兽的数据验证方式——封包验证,也可以说所有的联网游戏都是这么验证的。每个玩家在游戏中的任意操作都会使用封包传递验证,并且是相互验证,只有在其他机器返回验证成功的封包,游戏数据才会真正发生改变。这也就是数据同步。

现在我们再来看看掉线。
我把掉线称为天灾人祸。
天灾是不可抗拒因素,也就是网络连接问题。
人祸是制图时作者的一些失误造成的。

天灾
天灾来的比较缓慢,因为网络传输具有不稳定性,所以在网络堵塞或者断开网络的时候,出现的是等待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培训班教程》
解释:在上面的教程中已经有了解释,我有一些自己的看法。
          在函数传递时需要得到返回值的问题。我们会发现暴雪官方地图使用的J中有许多我们认为累赘的语句,是失误?还是故意?很明显,存在即有意义。每个函数需要的返回值不同,具体的函数我们又很难全部记住,那么,最简单的办法就是全部给予返回值。

2.魔兽数据
WE中我们可以使用外部资源导入到地图中使用,而有些时候,问题就在这里。

情况:导入
说明:
1.WE的导入编辑器只检查文件的后缀名。这意味着,我们可以把任意格式文件的后缀名改为WAR3能使用的文件格式就可以导入。

2.我们使用格式转换工具的时候,也有可能在转换过程中文件损坏,造成无法识别。

3.我们导入后的模型在WE编辑器中能显示了,不代表模型就没问题。

解决:新建个地图,把图标图片模型先导入进去测试一下,没有问题了再使用。
          假如有问题,自己进行修改或者更换。
恶声恶气 该用户已被删除
发表于 2008-6-13 11:40:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2008-6-13 11:42:54 | 显示全部楼层
那么支持了
回复

使用道具 举报

发表于 2008-6-13 11:58:12 | 显示全部楼层
额...谢谢LZ

以前我用到过 本地
等待

还有如果模型已经导入了在把他导出修改的话 也会引起
回复

使用道具 举报

恶声恶气 该用户已被删除
发表于 2008-6-13 12:06:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2008-6-13 12:50:53 | 显示全部楼层
好像有人提倡用  条件代替动作的


真不知道究竟哪个好
回复

使用道具 举报

发表于 2008-6-13 14:09:22 | 显示全部楼层
引用第5楼ssss于2008-06-13 12:50发表的  :
好像有人提倡用  条件代替动作的


真不知道究竟哪个好

运行效率和稳定性的取舍,你看重哪个了~~~~
回复

使用道具 举报

发表于 2008-6-13 14:58:08 | 显示全部楼层
貌似我用那个条件都没掉过,,
回复

使用道具 举报

发表于 2008-6-13 17:21:18 | 显示全部楼层

不错

这帖子不错,很有意思!













---------------------------------------------------------------------------------------------------------------------------------------

Copyright©谷歌金山词霸下载
回复

使用道具 举报

发表于 2008-6-13 20:59:37 | 显示全部楼层
那个triggersleep的用会断线么
回复

使用道具 举报

发表于 2008-6-14 03:50:20 | 显示全部楼层
那个貌似就素等待...
等待都很多人常用的...
应该 没事的   [s:186]
回复

使用道具 举报

发表于 2008-6-14 16:33:59 | 显示全部楼层
单位的攻击防御数字太大不会吧??

随机数过大 也会啊? 看到这个我把 1 100 85  改成1 10 8 了。。

研究 研究
回复

使用道具 举报

发表于 2008-6-14 23:41:03 | 显示全部楼层
记得把某些技能修改得很离谱也会掉线
我记得地洞的装苦工那个改成英雄的话 选择地洞就会掉
回复

使用道具 举报

发表于 2008-6-14 23:55:43 | 显示全部楼层
引用第12楼hyp于2008-06-14 23:41发表的  :
记得把某些技能修改得很离谱也会掉线
我记得地洞的装苦工那个改成英雄的话 选择地洞就会掉
这个是掉线不是弹出吗?那么单机下是能正常工作咯?为什么会掉线?
回复

使用道具 举报

发表于 2008-6-15 12:03:30 | 显示全部楼层
晕。。。

我图又会掉线了 不一定哪个掉。。有时候主机 有时候 玩家。。。

最近就导入了一个模型

做了2个技能

还有就是修改了单位的攻击及血量

到现在还没找到哪出问题。。。。

不知道是不是我网络问题
我建让人下的时候很慢
别人建就快。。。。。。。。。

有谁知道没?
回复

使用道具 举报

发表于 2008-6-15 12:08:26 | 显示全部楼层
还有就是如果把单位技能改成英雄技能(而且等级设置为6)

会不会引起掉线
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-3 14:08 , Processed in 0.123470 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表