- 精华
- 0
- 帖子
- 358
- 威望
- 0 点
- 积分
- 358 点
- 种子
- 7 点
- 注册时间
- 2004-4-7
- 最后登录
- 2024-9-13
|
发表于 2015-2-11 15:35 · 江苏
|
显示全部楼层
我举个例子:
某32位大型网游里对数字(包括生命值、魔法值、技能值等等)定义的最大值为16进制的7FFFFFFF等于10进制的2,147,483,647
此游戏16进制的7FFFFFFF+1即80000000以后被定义为负数,亦即16进制的80000000等于10进制的-1。
此时有个boss,在第2阶段时每吃1个红球会增加10%的最大生命值,此次战斗在boss总血量低于5%的时候判定玩家胜利。
那么bug就出来了,经过若干次的吃红球,boss的血量如果超过了2,147,483,647后,根据前面的程序,此时boss血量为负数,形成了boss无法击杀的场面。
同时这个游戏的后一个版本中所有的boss没有使用类似的百分比***模式,并且在后续的大版本中把所有的数值全部降低了大约30-50倍以上。
并且此游戏厂商的另一个游戏,因为开始制作时就使用了64位编程,这样他的最大10进制数值上限就被提高到了9,223,372,036,854,775,807,而即使在主机版此游戏使用了修改的65000级变态宝石的情况下也无法超越此数值。
这个大型网游就是魔兽世界,不死bug的boss是5.2初期版本的雷电王座副本的隐藏boss莱登。此bug在被发现后很快通过hotfix形式被修正,同时可以看到5.4整个决战奥格瑞玛副本没有血量超过21亿的boss,即使地狱吼整场战斗总量47亿的血量也被分割成了4个阶段,没有单一阶段可以超过21亿。
另一个游戏就是暗黑破坏神3,相信a9里有65000级宝石的人不少,没有达到伤害可以超越900亿亿这个数量级吧。 |
|