资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
三消游戏的自动关卡测试机制 作者: 偶尔喝咖啡QQ:1963904 8 年游戏策划经验,5 年制作人经验, 现任某中型手游公司工作室负责人。擅长卡牌和休闲类游戏。策划方向偏重于核 心玩法和数值设定。 对于一款推图式的三消游戏而言,关卡设计是其游戏设计工作的重中之重。 一款三消游戏动辄 200300 关的设计量,对于任何团队都是其研发工作中的一 个巨大的难点。大体来讲,三消游戏的关卡设计分为以下的四个步骤: 1. 关卡的初始定位,使用哪些特殊元素关卡的初始定位,使用哪些特殊元素(比如冰,炸弹,传送门等等比如冰,炸弹,传送门等等) 这往往是由该关卡在整个游戏推图流程中的定位决定的, 比如它所在的章节 主打的特殊元素有哪些,在这个章节中缺少哪种类型的关卡,这个关卡在整个游 戏中的难度定义,等等。 2. 关卡的核心创意关卡的核心创意 策划通过脑洞大开的方式来对于一个关卡进行发散式的设定, 比如 A 关卡需 要在特定的时间内干掉 10 个炸弹, B 关卡需要在 XX 东西消失前将其送到特定的 位置,C 关卡需要先解开 N 块冰然后收集冰块上面的几十个糖果,以上等等。 3. 关卡的可行性验证与布局实现关卡的可行性验证与布局实现 基于上一步产出的核心创意,策划需要对该关卡进行详细的编制和设定。这 里编制设定的要素包括: (1) 设置核心创意所需的基本环境。 (2) 对于玩家游戏过程中可能出现的,不符合设计者设计意图的其他过关方 式进行一定程度的防止。 (3) 配合核心创意,进行关卡目标的具体设定。在很多三消游戏的关卡中, 过关目标往往是由核心目标和伴随目标共同构成的。 (4) 进行具体的地图编制,初始形态,下落概率等等具体设置。 由于本文的重心并不在于关卡设计,因此对以上部分就不过多展开探讨了, 欢迎有兴趣的同学可以通过文末的作者联系方式和作者联系,私下探讨_ 4. 关卡的难度测试和调整。关卡的难度测试和调整。 在大多数团队的三消关卡设计开发工作中,这一环节是最为枯燥,单调,但 也却是最重要和最浪费人力时间成本的。 笔者已知的大部分团队目前仍然采用的 是纯手工测试的方式。而在这里笔者想要提出的,是一种在笔者之前的三消项目 开发过程中成功运用的自动关卡测试机制。 这一自动关卡测试机制的基本原理如 下: 下面我们分四个核心部分来讲解这一关卡测试系统的实现机制。 1. 自动测试的输入与输出自动测试的输入与输出 一个基本的自动测试输入包括: 所需测试的关卡 ID 所需测试的次数 测试的输出精度 我们会需要两种测试输出精度: 是用于大规模量级测试,只需输出每一次测试的通过回合数。 最基本的输出格式如下: 测试次数测试次数实际使用步数实际使用步数是否成功达成目标是否成功达成目标随机参数随机参数 17TRUE319 27TRUE408 312TRUE509 46TRUE603 56TRUE 734 其中随机参数的作用会在后文中详细阐述。 用于对于异常的数据进行详细跟进,需要输出每一步的详细步骤。 最基本的输出格式如下: 移动步数移动步数起始点起始点 X 坐标坐标起始点起始点 Y 坐标坐标终结点终结点 X 坐标坐标终结点终结点 Y 坐标坐标 14757 24838 35556 46463 53635 67778 74353 81413 96454 101716 112423 123525 2. 核心核心 AI 算法算法 首先介绍一下,AI(人工智能)算法的基本模式: 建立评价函数体系,然后对于当前状态下的每一个可能的选择给出评分,然 后基于评分选出最优解。 五子棋简单五子棋简单 AI 示例示例 这里我们以一个五子棋游戏来作为一个例子,当前轮到白棋走棋,我们要用 AI 简单的判断一下走哪里最好。我们简单的建立以下的评价函数: 1. 距离棋盘中心更近的点比距离棋盘中心更远的点更好(积分 =30-|x-8|-|y-8|)。 2. 一步棋为己方创造的有效进攻手段越多越好(例如:活三=3 分,冲四=3 分,活二=2 分,冲三=2 分) 3. 一步棋减少的敌方的有效的进攻手段越多越好(例如:减少敌方活二=2 分,减少敌方冲散=2 分) 4. 此步棋走完后,若己方未存留冲四而对方存留活三,则积-10000 分。 5. 此步棋走完后,若对方存留冲四,则积-10000 分。 6. 此步棋走完后,若己方已完成五连,则积+1000000 分。 使用以上的评价函数,我们就可以很容易的在 A,B,C 三个选点中,选择 C 作为我们的下一步。 当然,在更高精尖的技术领域一定会用到比上述复杂一万倍的 AI 算法,但 对于当前我们所面对的三消测试问题,上述的 AI 算法已经足够了。因为我们的 目的是横向判断关卡的通关难度是否合理, 而不是以最极限的方式去计算关卡的 极限步数。 接下来, 我们所需要做的核心事情就是定义在一个常规的三消游戏中的评价 函数,也就是用于评价各个可能行为好坏的评分标准。这里,笔者给出的是同类 三消游戏比较通用的几个指标(实际使用时每个项目会根据自己项目的特点增补 新的指标或筛减掉某些指标): a. 移动位置的移动位置的 Y 坐标坐标(ScoreY) 大体来讲,当其他条件相当时,我们会优先选择 Y 坐标更大(即处于屏幕更 下方)的点,因为这样会引发更多的消除元素的移动,制造出更多的不可预期的 偶发因素。当然,对于类似Candy Crush Saga Soda或者Juice Jam这样 有消除元素反向移动设定的关卡,我们可以将这一评价函数修改为:预期内移动 后发生位置移动的元素个数。 b. 关卡目标积分关卡目标积分(ScoreScore) 比如某个关卡的目标为:收集 50 个红色元素和 50 个绿色元素,那么,我 们就会去评价在单一步骤内消除掉的红色元素和绿色元素数量。这一数量越多, 则意味着我们距离关卡目标越近。当然,如果在第七步的时候,红色元素的完成 度达到了 50/50,那么从第八步开始,我们就只会去计算绿色元素的效果了。 c. 关卡目标元素积分关卡目标元素积分(ScoreTarget) 与上一项不同的,这一项评价函数评估的是关卡内剩余的目标相关元素数 量。在类似Farm Heroes Saga的三消游戏中,玩家可以通过给各种水果元素 增加星级来大大加快关卡目标收集的效率,在这种游戏中,玩家收集 10 点红色 进度,可能消耗掉了三个红色水果也可能消耗掉了七个红色水果,很明显的,前 者更有利于后续的目标积累。 d. 场景内存留的元素场景内存留的元素(及状态及状态)积分积分(ScoreElement) 在类似糖果粉碎传奇的三消游戏中,场景内的元素有正面元素(产生正 面效果)和负面元素(产生负面效果)两种。在场景内,存留更多的正面元素,最 大限度的减少负面元素或者让其转化为负面效果较弱的状态, 就成为了我们评价 一步移动是否得当的重要标准。 这里我们以 Best Fiends 里的炮台元素为例。 Best Fiends第第 119 关关 炮台元素效果:每回合末,若其周围 8 个格子中有至少一个为普通元素,则 随机将一个普通元素变为淤泥。当炮台上下左右有任何元素消除时,炮台眩晕一 回合。 淤泥效果:每回合末,若本回合没有淤泥被消灭,则在全场与淤泥上下左右 相邻的普通元素中随机选择一个,将其变成淤泥。当淤泥上下左右有任何元素消 除时,消灭这块淤泥。 我们可以很明显的看出,炮台和淤泥属于负面元素,而被打晕的炮台则属于 无害元素(或者将其视作危害小于未晕炮台的有害元素也可)。因此,我们的评分 标准就是,未晕的炮台和淤泥越少,评分越高。 e. 未知元素积分未知元素积分(ScoreUnknown) 当我们进行一次操作时,会导致场景内一定数量的元素被消除,当被消除的 元素越多时,就会入场越多的未知元素。这些未知元素越多,就可能为我们带来 更多的 combo 连锁,更多的目标水果,乃至其他的未知收益事件。因此的,一 次消除带来的未知元素越多,其评价积分也对应的越高。 除了以上一些基本元素以外, 我们会基于每个三消游戏独特的特殊元素规则 给予不同的评分标准。这里我们仅举出一个例子:糖果粉碎传奇中的坚果和 樱桃。 糖果粉碎传奇中的坚果关卡糖果粉碎传奇中的坚果关卡 在这样的关卡中,游戏要求玩家将坚果(及樱桃)移动到屏幕最下方的特定的 传送点,之后坚果(及樱桃)将自动被消除和收集。对于这种元素,我们就会将元 素的 Y 坐标加入到我们的 AI 评价体系之中,作为一次移动的结果,元素越落到 下方,该步移动得到的积分则越高。 基于以上的种种积分,我们再加入一套整体外层控制的权重系数(这一权重 系数可能会由于不同种类关卡的侧重,特点不同而随时由操作者进行调节)。 ArgY:Y 坐标权重 ArgScore:目标权重 ArgTarget:目标元素权重 ArgElement:存留元素权重 ArgUnknown:未知元素权重 一步移动的总评价得分= ScoreY * ArgY + ScoreScore * ArgScore + ScoreTarget * ArgTarget + ScoreElement * ArgElement + ScoreUnknown * ArgUnknown 然后,我们就可以选出总评分最高的,也就是我们 AI 所定义的最优移动了。 3. AI 测试的参数核准测试的参数核准 当我们制定了一版我们自己的 AI 权重系数,也对各种元素赋予了我们的权 重积分,这个时候一个问题自然而然的产生了:我们如何验证我们设定的这一版 权重系数是恰当的?当我们 AI 跑出平均 25 步的成绩时, 我们实际玩家的成绩分 布会处在一种什么样的状态? 对于以上的问题,我们并没有一个 100%绝对有效的解决方案,但在这里, 笔者为大家提供一种略有取巧的验证方案: 我们在其他游戏中找到一个与我们元素种类比较类似, 所处的难度档位与我 们设定也比较相当的关卡,并将其配置到我们的测试环境中。然后,我们使用相 同的 AI 框架去对其他游戏的关卡进行测试。如果测试结果如下: 参考关卡设定步数:25 参考关卡 AI 平均步数:16 己方关卡 AI 平均步数:20 那么这个时候,基于相同的比例放缩,我们可以大胆做出假定,将己方这一 关卡的实际步数设定在 3032 步上下是比较恰当的。 当然,自动关卡测试机制不是万能的。笔者建议,通过这里的自动关卡测试 机制后,实际设定的游戏关卡在上线前,最好仍然进行一次相当于无自动测试机 制 10%20%量级的手动测试,这样可以额外排除和解决一些未知的风险问题。 4. AI 测试的情景复现处理测试的情景复现处理 三消游戏的一个非常核心的特征就是非常高的随机性, 每一步下落的元素的 无限可能性决定了一个关卡无限的未知性。但是作为一个严谨的自动测试,我们 需要能够定位到每一次超越我们预期的事件的发生,例如一个我们预设 10 步完 成的关卡在某次 AI 测试中突然跑出了 50 多步的成绩。 这可能意味着在我们的游 戏算法或 AI 算法中存在着未被发掘的深层 Bug。 这里,笔者给出一个技术上的解决方案,用于随时定位和复现异常情景,以 便于策划和技术共同去发现和解决问题。 我们知道,计算机的随机数算法事实上是一种伪随机算法。基于很重要的叫 做“种子”的元素,技术可以使得程序在不同的时间,使用相同的代码生成出两组 完全相同的随机数。而这样的技术特征给了我们一个非常大的好处,就是只要我 们在随机输出中记录好每一次随机输出时使用的随机种子, 就可以在之后随时复 现出上次异常的测试的执行流程。 基于上面的输出表,我们可以随时用“509”这个随机种子去复现出为什么第 三次测试的步数超过了 10 步 在实际的工作中,我们可以在此时使用 509 这个随机种子,输出出这一次 测试的每一步的详细移动和实际局面。 在技术上,非常重要的一个关键点是,技术需要维护两个随机种子以及它们 所对应的随机序列。序列 1 用于所有的基本的随机逻辑,序列 2 用于只包含于 AI 计算之内的随机逻辑。这样
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号