《游戏测试精通》 第三章 续_新梦想软件测试精选_专注IT技术干货分享!

《游戏测试精通》 第三章 续

2021-12-13 16:33:05  浏览:377  作者:管理员

3.2.6 算法


算法缺陷包括一些计算过程或选择结构中出现的有关时间复杂度或正确性的问题。算法可以视为得出一个数值(例如,42)或实现一个结果(例如,打开门)的过程。


每个游戏中都有很多算法,如果它们运转正常,你甚至都不会觉察到。不合适的算法常常会导致人们从游戏中获得意外的权利。下面是一些你在游戏中会遇到的不同的类型的算法:


体育游戏

人机对战的玩法、形式和替换选择

电脑的应对策略

给一个现实中的对手定义玩家和策略的模型

游戏双方每个队员的人工智能行为控制

随着人物移动到球场的不同的地方,改变摄影机角度

确定惩罚和裁判规则

划分运动员的伤势

赛季期间运动员的状态发展

授予特殊的力量、奖励或比赛模式(NBA街头篮球I.2和NCAA足球游戏2005)

角色扮演游戏(RPG),探险游戏

对手和友好人物的对话反应

对手和友好人物的战斗决定和行动.

基于技能、盔甲、武器类型和力量等的损失计算

保存投掷的计算值

确定使用一种技能,例如隐形、工艺、劝说等的结果

经验点的计算和奖励措施

能力值、持续时间和效果

使用或具备的能力及物品所需的资源与条件

武器和能力目标、效果域和随着时间而累计的损失

赛车游戏

PC驾驶员的特征、决定和行为——何时进站加油,何时使用道具等

汽车的损害和耐久性计算以及使汽车受损的行为

修复汽车的损害

自动换挡

模拟诸如轨道表面、储量和天气之类的环境影响因素

PC驾驶员的嘲弄

赌城游戏、集卡游戏、象棋游戏

对手的风格和技能关卡

游戏规则应用

其他规则,例如何时庄家必须留住黑桃A

选择赌注和支出/酬金

结果的等可能性分布,例如产生随机性强的结果(牌、掷骰子、转轮盘等)

拳击游戏

PC对手的出拳(攻击性的)和格拳(防卫性的)选择

PC团队选择和格斗期间的上场和下场

损伤/点数计算,包括环境效果

计算和修正格斗对环境的影响

计算和分解疲乏的因素

支持特殊的移动、连击等

策略游戏

PC对手的运动和格斗决定

PC单位的创建和部署决定

资源和单位构造规则(前提、需要的资源等)

损耗和效益计数

支持新单位、武器、技术和装置等的使用

第一人称射击(FPS)

PC对手和队友AI

敌手和友好人物进行战斗的决定和行动

基于技能、盔甲、武器类型和力量等的损失计算

武器目标、效果域和随时间累计的损失

环境对速度、运动员的损伤、武器的歪斜或反弹(例如,《虚幻锦标赛》 中的车轮将对撞墙作出防范)等影响

填字游戏

点数、奖励和计数

完成一个回合或进入下一关卡的标准.

确定填字游戏目标的成功,例如形成一个特殊的字,或匹配一定数量的块

提供特殊的道具、奖励或游戏模式


为了使游戏更复杂,有些游戏属于多个游戏“类型”及算法。例如,《星际大战:旧共和国武士》(TOTOR)是-种角色扮演(RPG)/探险 游戏,在这种游戏的故事情节中有些地方,你可以跟非队员玩纸牌和赛车游戏——尽管两者不能同一时间进行。《虚幻锦标赛2004》(Unreal Tournament 2004)被典型地认为是一种第一 人称射 手游戏,但是在竞标赛的不同阶段,它也整合了冒险游戏和体育运动游戏的要素。


在其他一些地方, 算法类型的缺陷能出现在同-游戏代码中,如一些图形,体现着引擎和路线、z缓冲排序、冲突探测和将进程减少到最少以刷新屏幕。


对于隐藏功能可能出现的这类bug,可以考虑一个查找算法缺陷的脚本,用这个脚本计算时间的持续值,而不是将其从一列或一个文件中取出。也可以假设存在持续时间不会显示在屏幕上。如果因为总是产生0或负的数字结果而致使计算(算法)失败,或计算不能继续了,那么持续时间就显示不出来了。


由隐藏导致的免疫性持续时间在第一级时是1秒,第二级时是2秒,第三级时是5秒。这种关系能通过下面的公式得到说明


vani shDurati on .=(1<<level)level ;


因此在第一级,就变成了2-1=1;对于第二级,则4-2=2;第三级,则8-3=5。参考说明,这正是我们需要的结果。


但如果使用了取余(%)而不是按位左移(<<)算法,那会发生什么事呢?这可能会得出一个这样的结果,对第一级而言,0-1 =-1,对第二级而言,1 - 2=-1,而对第三级而言,则1-3=-2。尽管代码能适当地向用户显示持续时间,但负的持续时间不会得到显示。一个算法缺陷由此产生。


3.2.7文档


文档缺陷发生在游戏的已确定下来的数据素材中,包括文本、音频和图形文件内容,如下所列:


●文本

●对话框

●用户界面要素(标签、警告、提示符等)

●帮助文本

●说明

●搜索日志

●音频

●声音效果

●背景音乐

●对话(人类、外星人、动物)

●音响效果(流水、鸟鸣等)

●欢呼声

●视频

●剧情介绍

●分镜头

●环境目标

●游戏关卡的定义

●身体部位和服装选择

●物品(武器,交通工具等)


这种特殊的类型不是不适宜的代码导致的结果。错误存在于从文件中重新得到的字节型数据中或定义的常量中。这些数据常被那些屏幕.上显示文字、播放音频、或将数据写在文档上的语句或函数调用。通过阅读文本、听音频、检查文件和仔细查看图形,这类缺陷是可以被检测到的。


源代码中的字符串常量也是文档类型错误的潜在来源,这些字符串常量常常需要显示出来或写入文件。当游戏有多语言选择时,将字符串常量直接插入代码中会产生一个缺陷。即使它可能会在一种语言中显示恰当的字符串,但如果用户选择了另一种语言,有可能会没办法显示相应的语言。


下面是《卡米洛的黑暗时代1.70i版》里的一些bug修正:


●如果你遭遇DoT,然后死亡,你将看到“一个现在死了的敌人攻击你,使你受到X级损害”,而不是看到垃圾信息。


原来的垃圾信息可能是一种文档类型的缺陷,可能是提供了空字符串或根本没有字符串用来作为信息,从而不能正确显示上面的信息文本。但是,在代码中可能有其他的.原因。请注意这个问题有个条件.“....然后死亡”,所以可能有一个检查步骤得被加上,以便于重新得到特殊的文本字符串。此处要记住的一点是, 对缺陷的描述通常不足以决定具体的缺陷类型,尽管它有助于缩小类型的范围。但有时不得不进入有问题的代码中去确定缺陷是怎样发生的。


●修正bug报告中版本信息、自动提示信息和严重性描述信息的语法错误。这几乎可以肯定是一个文档类型的缺陷了。导致这种错误的原因不涉及特定的条件。这是语法上的错误,因此即使提供和显示了文本,文本本身也是有缺陷的。


●SabotageML中不再不正确地显示攻城武器。


这个缺陷描述指的是在游戏中执行一个/delve命令来破坏大师级别(theSabotageMasterLevel)的能力。这个快速得出的结论就是,这是一个通过纠正文本而得到修正的一个文档缺陷。另一个可能是,由于一个错误的数组下标导致delve的文本指向不正确的地方,也有可能是由于赋值或功能缺陷导致的。



评论区

共 0 条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

【随机内容】

返回顶部