地图测试理论

一份好的地图,尤其是任务图,必须经过充分测试才能发布。而地图测试在绝大多数时候都是对地图触发(包括 AI 触发)的测试。目前,地图测试的重要性虽然常被提起,但一直罕有具体的理论指导,总体处于一种混沌的状态。

本文援引软件工程中软件测试的相关理论和方法,对 Ra2 地图的测试进行探索。

地图测试的目的:

  • 发现地图中存在的 Bug
  • 验证地图是否符合需求和设计,行为是否符合预期
  • 测定地图的质量,并且找出值得改进的地方

测试的注意事项

一次好的测试,或者说是有用的测试,并不是没有发现问题的测试,而是发现了问题的测试。此概念可参考医院查体、考前测验。

首先,尽量早点开始测试,否则迟来的第一次测试可能会暴露出非常多的问题,让你应接不暇,甚至其中很多问题背后都指向你的同一种失误。地图测试并非位于地图制作之后的一个独立的阶段,而应贯穿到触发编写的过程中

其次,测试需要带着发现问题的目的来进行。因为人的活动具有目的性,如果你的目的是“不要测出问题”,那么你的测试就会有意无意地按照最标准的情况来进行,甚至会心虚地回避模棱两可的部分。这样的测试,注定无法反映真实情况,因为玩家的操作往往是五花八门的,甚至会故意试探边界情况,企图寻找漏洞和捷径。

有条件的话,最好让别人帮忙测试。原因类似上文,作者自己往往会对任务的某一部分过于自信,不再检查;或是由于操作习惯和思维定式,仅选择某一种发展和通关路径,忽略了更多可能,甚至从未涉足过地图上某些地方。比如,任务关键目标或桥梁离海岸过近,玩家用3星无畏舰可以强攻地面溅射到从而逃课,而你从未设想过这一点。

发现问题,并且做出修改后,仍需进行测试。此时的测试是验证问题是否被真正修复,而不是仅仅自以为修复了。这有可能是由于开发者对错误原因理解不够,仅仅修复了表象。比如,小队关联触发不起作用(比如被摧毁没有成功触发),你给小队改了几个勾,或是加了几个动作,再进游戏摧毁它,就正常了。其实这可能是歪打正着。因为错误的真正原因是 “AI 的小队挂载的标签,小队解散(完成所有脚本后)就会消失” ,你这次成功,可能是因为它刚刷出来,就被你摧毁了,下一次晚点摧毁,就不一定行了。真正解决办法是添加循环或进入状态这种不会终止的脚本。有必要的话,还要测试这次修改所有波及到的部分,看看是否引入了新的问题。在任务包即将发布的时候,这很重要。

测试不可能无止境地进行下去,所有问题也不一定都有理想的解决方案。很多问题是引擎固有缺陷所致,咱们只能规避、祈祷、容忍,或是在发布时提醒玩家。

测试的类型

根据地图测试所波及范围的不同,可将测试分为局部测试(对应软件测试领域中单元测试、集成测试)和整体测试(对应系统测试等)。局部测试是在地图制作的过程中随时可以进行的,每完成一个触发组,都可以进行一次测试,查看其是否存在 Bug,是否满足需求,以及如何改进。极端情况下,仅改写一条触发,也需要进行测试。

整体测试是指从头到尾对整个关卡的测试,要按照真实游玩过程来进行。由于很耗费时间,往往在地图制作的后期才进行。实际的地图测试,往往是渐进式的,即根据触发编写的进度,一步一步扩大或是修改局部测试的范围,更高效地验证刚才的触发编写成果。

对测试结果的处理

测试中发现了问题,要及时解决问题或进行记录,否则问题很容易就会被淡忘。一般简单的问题转眼间就能够在 FA2 中解决。复杂或是大量的问题,则可能需要先记录下来,再仔细分析逐渐解决。如有必要,每次已完成的修复也需要记录,比如在团队合作或是修复了重要问题时,在任务已内测或发布后需要通知玩家时。

引用自 地图调试与出错补救

当你发现任务流程中出现意料之外的情况时,请回忆最近对这部分所做的改动,并检查各项数值是否正确。如果无法定位问题原因(一般是崩溃弹框时),可以使用排除法,先禁用/删除一部分触发,来看看问题是否还会出现。

一个比较简单的调试方法是,给关键触发的结果加上一条结果11 显示文本,这样来看观察此触发是否执行了。也可以用计时器定位出问题的触发,比如恰好在核弹倒计时剩3分钟时弹框了,那么有可能是流逝时间 7*60=420 游戏秒时的某个触发有问题。

如果遇到疑难杂症(一般是小队相关)或者复杂的触发组,可以将其抽离出来,在一张单独的地图中专门测试。或是求助他人。

更科学的测试

在软件测试领域,还可将测试分为黑盒测试、白盒测试以及介于两者之间的的灰盒测试。详细解释。各有其优缺点和具体测试方法。咱试将其类推到地图测试中,设计适用于 Ra2 地图的测试方法。

静态分析。与其说是测试,不如说是检查。即,检查触发该填的是否填了,该禁止的是否禁止,难度勾是否正确;小队及脚本涉及的路径点是否正确等等。一般只能自己检查,外人往往无从下手。

边界测试。对任务过程中有可能出现的极端情况进行测试,比如上文提过的3星无畏射程;玩家占领大量敌人建筑后是否会报错/严重干扰剧情(比如造出 VIP 单位或者使某些触发无法运行);潜入任务中跋山涉水是否能找到一条捷径(除非这是你想要的);敌人 VIP 单位是否刚出场就被玩家埋伏/亡命冲锋掉;过场表演、护送是否会在某些情况下卡住,导致卡关。

基本路径测试

在软件测试领域,基本路径测试是一种白盒测试方法,旨在测试程序中的所有可能路径,以确保每个语句至少被执行一次。测试目标是确保程序中的每个可能路径都被覆盖到,以检测潜在的错误和逻辑问题。步骤有

  1. 识别程序的控制流图(Control Flow Graph):将程序转换为控制流图。
  2. 确定程序的基本路径: 确定程序中的所有可能路径,包括循环和条件语句。
  3. 设计测试用例: 设计测试用例以覆盖每个基本路径。

基本路径测试适用于测试复杂程序中的所有可能路径,以确保程序的完整性和正确性。

在地图测试中,则需回归触发的设计,将触发流程中的各个主要次要节点串连,然后设计多条路径,将节点和分支遍历覆盖。设计路径时,不止要考虑触发,也要把无关触发的玩家操作考虑进去,比如,不同的行进路线;不同的军备组合;不同的支线目标完成顺序;选择占领还是摧毁关键目标等等。

实际操作中,完全遍历所有可能性是不现实的,大部分分支也不必从头走到尾去测试(比如彩蛋),所以,具体测试粒度还请自行把握。

实例有待补充

重点测试脆弱部分、关键部分。让你的测试更高效。比如重点测试这些:

  • 护送、基地车来等复杂且关键的脚本
  • AI 造兵
  • 是否会因为找不到角落里的敌人而无法完成任务
  • 任一个复杂的触发组

任务难度的测试

制作组在测试 RTS 游戏某一关卡的难度时,可以采取以下方法和策略:

  1. 内部测试:组建一个专门的测试团队,确保测试团队中有不同水平的玩家,以便从不同角度评估关卡难度。

  2. 用户测试:邀请外部玩家参与关卡难度测试,收集玩家的反馈和意见,了解他们对关卡难度的感受和建议。

  3. 数据分析:记录玩家在关卡中的表现数据,如通关时间、敌我阵亡比例等。

  4. 行为分析:了解玩家们的攻防策略、发展路径、进攻路线,了解他们面对各种情况的决策和反应。如有必要,可录制视频或直播分析。

实际上,任务难度的测试和调整往往非常麻烦,并且非常耗费时间。尤其是地图内小队较多时。这非常考验测试者的耐心。

结语

此文章是咱对地图测试行为的理论化,旨在让大家更科学高效地进行测试,从而提高作品质量。这仅是咱对相关理论的初次探索尝试,并不成熟,更多细节还请大家自行思考。

  • 地图测试理论
  • 作者:轻稚天雪  发布于:2024-09-11  更新于:2024-11-22  许可协议:若无特别说明,均为 CC BY-NC-SA
触发系统的组成和运行机制
地图设计