红警任务之家

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 85|回复: 3

【debug日记】一个导致按下“Q”键就会弹框出错的平台bug

[复制链接]
发表于 2019-11-18 18:03:28 | 显示全部楼层 |阅读模式
本篇日记描述了一个在YR平台下,玩家按下“Q”键,就会导致弹框出错的平台bug,并简述它的排除方法。
这个bug仅在任务中发生,遭遇战并不发生
截至目前,Ares 2.0已经修复此bug,所以使用Ares不会遇到这个问题

发生最简条件:
玩家在建筑栏的一个建筑已经就绪,然后基地突然被触发更改所属更改到别的所属方。在玩家再次获得基地以后,只要还没有建造新的建筑,此时按下“Q”键就会触发此bug:引发一个弹框出错,EIP随机

下面是最简单的复现这个bug的地图:

进入游戏→建造一个电厂,等它就绪→基地被更改到敌人方又马上改回来→此时一碰Q键就弹框。

原理:
这是一个平台bug。程序员编写游戏的时候,忘了在建筑被触发更改所属的时候,检查建筑建造队列的指针并释放它。(真·甩锅给西木)

排除方法:
除了换用Ares以外,使用原版平台的制作者可以这么做:在使用触发更改玩家基地的所属方之前,先使用触发的“更改科技等级”行为把玩家所有可能生产的建筑,科技等级全都设为-1,这样建筑建造队列的指针就会被正确的释放。等到玩家再次获得基地时,应该使用触发把科技等级恢复原状。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2019-11-18 22:24:36 | 显示全部楼层
感叹楼主强大的观察力,从来没注意到过这样细节的BUG。大概需要实现过足够多的想法和创意的人才能发现这样的bug吧?

不过修改科技等级的方式实在太不通用了,当玩家占领了多阵营建造厂的时候,需要修改的建筑数量可是相当的多啊。新增了建筑的话,还需要进行修改。同时,估计防御设施一栏按W也有一样的问题,所以防御建筑或许也要都修改一次?

我感觉可以按照以下顺序激活触发来一劳永逸地解决这个问题:
1.更改目标建造厂的归属前,在某个空地用触发125给玩家建造一个建造厂。
2.更改目标建造厂的归属。
3.在125建造的新建造厂下的路径点,使用数次触发63,来摧毁新建的建造厂。
这样,通过摧毁建造厂,来清理就绪的建筑。

不过新建一个建造厂或许会被玩家注意到,并且摧毁新建的建造厂会出来几个士兵甚至一个工程师。
可以通过自定义rules,自己增加一个没有图像,摧毁后不出兵,摧毁后不爆出碎片的临时建造厂,来解决这个问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-18 22:46:17 | 显示全部楼层
8079 发表于 2019-11-18 22:24
感叹楼主强大的观察力,从来没注意到过这样细节的BUG。大概需要实现过足够多的想法和创意的人才能发现这样 ...

首先,实测过了,W键没有类似的bug。所以说Q键弹框纯属是西木的程序员的锅嘛……

其次,我实际上碰到这个bug的场景是,玩家不是基地一个建筑被更改所属,而是类似“中了全图心灵控制”的效果,全部建筑被更改归属了。过了一会恢复了生产能力,一旦习惯性的按Q就会弹框……此时给玩家一个新的建造厂再摧毁的方法就不奏效了。于是我做了多次尝试,才想到使用触发更改科技等级的方法。虽然有点麻烦,但是毕竟问题出在游戏程序本身,想弥补还是要花点脑筋的。
回复 支持 反对

使用道具 举报

发表于 2019-11-19 14:42:12 | 显示全部楼层
竹蜻蜓 发表于 2019-11-18 22:46
首先,实测过了,W键没有类似的bug。所以说Q键弹框纯属是西木的程序员的锅嘛……

其次,我实际上碰到 ...

你说的很有道理。

于是我测试了一下,发现了意外的结果。
我使用的也是全部更改所属,并使用我的方法来尝试。
似乎改变归属和摧毁建造厂如果发生在同一帧的话,就绪还是会被清理的。(虽然这个时候,建造厂已经改变归属了)

很神奇的现象,这似乎完全没有道理。不过我想这个解决方案是可以考虑的。
除非这个解决方案有什么随机性?

为了防止这是什么只有在我的电脑上才能再现的解决方案,我把测试用的地图附上了,楼主可以测试一下看看能不能成功。

点击左侧盟军发电厂,玩家【苏】会全部更改归属到【美】。点击右侧盟军发电厂,【美】会全部更改归属到【苏】。
先建造一个电厂,等它就绪,然后点左侧盟军发电厂,再点右侧盟军发电厂,按Q,经测试没有报错。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|红警任务之家

GMT+8, 2019-12-9 03:44 , Processed in 0.051954 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.JD.com

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