魔兽争霸的基本理论原理

作者:admin 时间:2024-01-04 06:36:55 阅读数:6人阅读
  1. 魔兽争霸1.20版玩RPG地图经常掉线,然后出一堆英文怎么回事?
  2. 魔兽世界简单点说圆桌理论?
  3. 魔兽争霸官方对战平台怎么断线重连?

魔兽争霸1.20版玩RPG地图经常掉线,然后出一堆英文怎么回事?

我也碰到过好多次,应该不是war3问题,一般有这几种情况:

1。地图本身错误,刚开图就退出;

2。地图过于复杂或玩的中途过于复杂(比如突然出现一大堆小兵,原理类似卡屏),内存CPU难负重荷;

3。网络连接有问题。

魔兽世界简单点说圆桌理论?

这样吧,我尽可能简单的给你讲一下原理

怪物对玩家的攻击的结果,是从上到下计算的

未命中

躲闪

招架

格挡

爆击

魔兽争霸的基本理论原理

碾压

普通攻击

战士用盾牌格挡技能避免碾压,是因为格挡排在碾压上面,也就是说,如果从上向下累加,到了格挡一项百分比就超过了100%(实际上是超过102.4%因为BOSS比自己高3级),那么后面的所有项目都不可能出现

距离:假设骑士开了神圣之盾后,拥有70%格挡几率,20%躲闪几率,10%招架几率,BOSS未命中占了5%

那么攻击结果头四项已经达到了105%,也就是说,所有后面的项目,都被挤出了“攻击桌面”之外,都不可能出现,这种状态的骑士,BOSS用普通攻击打他只会出现未命中躲闪招架格挡,而绝不可能出现爆机,碾压,普通攻击

贼坦克扛BOSS更变态,未命中+躲闪+招架已经超过102.4%,也就是说所有后面的状态都不会发生,也就是说,BOSS的普通攻击绝对打不到贼

P.S.人物面板上的百分比数据都是绝对百分比,如果躲闪50%招架50%,代表普通攻击50%被躲闪,剩下50%全部被招架

而不是50%被躲闪,剩下部分的50%被招架

魔兽争霸官方对战平台怎么断线重连?

在游戏的过程中假如意外掉线,那么重新登录继续进入游戏后可以由系统进行断线重连,快速追赶游戏进度,让你去找战友们继续战斗。

简单说一下断线重连的原理:

断线重连的核心其实就是两个:1)封包回放;2)在合适的时机屏蔽用户的操作。

对于第一点实事上很多平台已经实现,原理比较简单,就是把用户的所有封包原封不动的发给他,由于war3的机制,当收到大量的封包的时候,war3会采取加速的形式追赶进度。

这里稍微提一下加速的倍率,在我内部测试的时候,如果不产生操作指令(例如一直站着不动50分钟),加速的倍率可以到128倍以上(由于war3限制了最高8倍速,所以这个值也是需要hack修改的),而如果是实战中,比如一局dota,即使我将内部的速度调成128倍,这个速度最高只能是十几倍。

那么有没有更好的方案,比如不追赶进度,像dota2那样直接加载不是更好吗?很可惜,当时在我研究的时候发现这个方案不可行,原因是war3并没有保存全局状态的逻辑,也没有从一个状态加载游戏的功能。

再谈谈第二点,这个应该是断线重连的核心问题了。其实这个问题需要注意的很多,比如如何保证在追赶进度的时候用户不能输入操作,同时追赶完进度后要在合适的时机放开限制。

魔兽争霸的基本理论原理

这里只提一下难点,因为war3的封包处理和逻辑计算是在不同的线程的,如果处理不当会导致各种诡异的bug,比如和队友在不同的时空中(进去玩过的朋友应该有这种体会,那种在你的电脑里你已经成神,但是在队友或者其他人那里你早已成鬼,但是你们还可以打字交流。这个bug后来发现是封包发送部分处理的时候有些bug,并没有完整的回放所有封包导致的,并非是断线重连这个解决方案本身的bug)。

断线重连的核心其实就是两个:

1)封包回放;

2)在合适的时机屏蔽用户的操作。

对于第一点实事上很多平台已经实现,原理比较简单,就是把用户的所有封包原封不动的发给他,由于war3的机制,当收到大量的封包的时候,war3会采取加速的形式追赶进度。这里稍微提一下加速的倍率,在我内部测试的时候,如果不产生操作指令(例如一直站着不动50分钟),加速的倍率可以到128倍以上(由于war3限制了最高8倍速,所以这个值也是需要hack修改的),而如果是实战中,比如一局dota,即使我将内部的速度调成128倍,这个速度最高只能是十几倍。那么有没有更好的方案,比如不追赶进度,像dota2那样直接加载不是更好吗?很可惜,当时在我研究的时候发现这个方案不可行,原因是war3并没有保存全局状态的逻辑,也没有从一个状态加载游戏的功能。

在游戏的过程中假如意外掉线,那么重新登录继续进入游戏后可以由系统进行断线重连,快速追赶游戏进度,让你去找战友们继续战斗。

简单说一下断线重连的原理:

断线重连的核心其实就是两个:1)封包回放;2)在合适的时机屏蔽用户的操作。

对于第一点实事上很多平台已经实现,原理比较简单,就是把用户的所有封包原封不动的发给他,由于war3的机制,当收到大量的封包的时候,war3会采取加速的形式追赶进度。

这里稍微提一下加速的倍率,在我内部测试的时候,如果不产生操作指令(例如一直站着不动50分钟),加速的倍率可以到128倍以上(由于war3限制了最高8倍速,所以这个值也是需要hack修改的),而如果是实战中,比如一局dota,即使我将内部的速度调成128倍,这个速度最高只能是十几倍。

那么有没有更好的方案,比如不追赶进度,像dota2那样直接加载不是更好吗?很可惜,当时在我研究的时候发现这个方案不可行,原因是war3并没有保存全局状态的逻辑,也没有从一个状态加载游戏的功能。

再谈谈第二点,这个应该是断线重连的核心问题了。其实这个问题需要注意的很多,比如如何保证在追赶进度的时候用户不能输入操作,同时追赶完进度后要在合适的时机放开限制。

这里只提一下难点,因为war3的封包处理和逻辑计算是在不同的线程的,如果处理不当会导致各种诡异的bug,比如和队友在不同的时空中(进去玩过的朋友应该有这种体会,那种在你的电脑里你已经成神,但是在队友或者其他人那里你早已成鬼,但是你们还可以打字交流。这个bug后来发现是封包发送部分处理的时候有些bug,并没有完整的回放所有封包导致的,并非是断线重连这个解决方案本身的bug)。