我在gamedeveloper上看到这篇长文,比较细致的讲述了《揭迷而起Let’s! Revolution!》如何从一个简陋的原型变成最终成品的过程。对于游戏开发者而言,我们总是要面对可能看上去什么也不是的原型阶段。从中找到趣味,再一步步进入后续阶段,没有一步是容易的。

如果你还在犹豫怎么开始,以及对于开发过程中的未知感到茫然,不妨看看这个团队是怎么做的吧。

Postmortem: Prototyping Let’s! Revolution! to transform Minesweeper into a turn-based strategy roguelike (gamedeveloper.com)

在这篇文章中,商业动画工作室 BUCK 的创意总监 Michael Highland 和游戏工程师兼首席设计师 Ian Sundstrom 将带领我们了解他们的团队推出首款商业游戏《揭迷而起Let’s! Revolution!》的过程。

这两位先介绍了BUCK

您可能没听说过 BUCK 这家商业动画和设计领域的重量级公司,但您一定见过我们的作品。BUCK 游戏团队的运作方式很像一个独立工作室,他们与艺术家、动画师和设计师合作,BUCK 的核心业务是为苹果、Meta、AirBnB 和 Riot Games 等知名客户提供创意服务,并为《爱、死亡、机器人》和《蜘蛛侠:纵横宇宙》等大型 IP 提供视觉指导和动画制作。虽然 BUCK 在动画和设计方面拥有 20 多年的辉煌业绩,但公司一直未能推出原创游戏。

从一个假设开始

《揭迷而起》以一个开放性问题开始:”如果我们把扫雷的规则应用到路径上会怎样?” 我们希望在编写任何代码之前先探究这个问题。在过去,我们会使用纸质原型来实现这一目标,但由于我们的团队是远程工作,因此我们转而使用了下一个最佳选择——数字白板应用程序。我们借用了Wang Tiles综合指南中的路径图(在我们最终开始程序化生成迷宫时,这一资源将被证明非常有用),并使用表情符号作为占位符。

译者注:Wang Tiles,王氏砖,也称为王氏多米诺骨牌,最早由美籍华裔数学家、逻辑学家和哲学家王浩于1961年提出,属于边缘匹配拼图,也是形式系统。

王氏砖已用来做为程序化生成的产生工具,可以用来产生纹理、地形和其他大型和非重复的二维数据集。可以用较便宜的成本,预先计算或手工制作一小组的“源砖”,确认其它们拼贴出的结果不会有太明显的重复,且没有周期性。在这种情况下,传统的非周期性方格排列显示其非常规则的结构。王氏砖程序化生成的限制较少,而且确保可以密铺,并且可以用伪随机的方式选择每块砖。

在数字白板应用程序 Miro 中测试扫雷路径

在最初的测试中,我们亲手将道路和风景路块铺成网格,然后用第二层空白地砖将它们隐藏起来,只留下道路的一个终点。然后,一名“玩家”可以加入白板会话,一块一块地移除这层覆盖物,露出下面的路块。游戏的目标(如果可以这么说的话)是在尽可能少的移动中找到道路的另一端。

我们最初的测试包括将数字越高的地方与人口越稠密的地方联系起来。这听上去很有道理,与更多道路接壤的地块会更发达,而附近没有道路的地块则更像荒野。这个概念在开发过程中一直存在,并在游戏的最终美术设计中得以体现。

Saffron地区(游戏中一个区域)最初的占位图和游戏最终的路块图

从我们的测试中可以明显看出,基于网格路径的规则为扫雷的演绎推理增加了额外的逻辑顺序。在我们的变体中,你可以直观地看到路径的走向,以及它必须如何连接或被阻断。虽然我们还远未开发出接近游戏的东西,但这种机制组合似乎很有前景,值得进一步探索。在接下来的两个月里,我们将从这颗有趣的种子,发展成一个尚未完善但基本完整的《揭迷而起》。

最初最简单的demo

路的尽头

我们于 2022 年 2 月 9 日完成了第一个 Unity 原型。这是一款近似于前述白板中体验的游戏:5×5 网格的地砖上有一条程序生成的路径。路径的一端从一开始就会显示出来,玩家必须找到另一个终点,同时点击尽可能少的地砖。我们很快就用能量机制取代了高尔夫球式的计分机制,即翻牌需要消耗能量,并引入了固定的通关步数。我们还在路径的终点添加了一个兔子表情符号作为目标。现在,我们就像爱丽丝一样,跟着兔子在迷宫中越陷越深。虽然只是表面现象,但这股玩家味道的幻想为后来的世界构建奠定了基础。它还为我们提供了一个项目代号: 兔子Rabbit。

现在,我们有了更明确的输赢条件。我们修改了路径生成,以支持分支路径。生成 “令人愉悦 “的迷宫是我们几个月来不断改进的地方,但这个基本版本给我们提供了有多个死胡同的路径。在 2 月 11 日的版本中,我们添加了可获得五个能量单位的收集物(灯泡——又一个方便的表情符号)。游戏的目标演变成找到包含出口的死胡同,而其他死胡同则包含有益的东西。这一设计最终被我们带到了最终版本中。

在这个结构中,包含出口/兔子的死胡同是随机的,玩家有可能在翻出所有死胡同之前找到兔子(并离开关卡)。这就造成了一种有趣的风险—回报紧张关系,因为玩家要权衡他们是否相信自己能在不到五个回合的时间内翻出另一个可收集物(价值五能量)。

我们最终重新调整了关卡出口的位置,使其始终位于玩家翻出的最后一个死胡同上,但保留了玩家在找到出口后何时离开关卡的选择权。小白兔最终成为了我们狡猾邪恶的国王,每次你在死胡同翻到了他,他就会飞到下一个棋盘。有趣的是,玩家往往会认为国王的位置是随机固定的,而不是由最后翻出的死胡同决定的。这种巧妙的设计确保玩家不会错过其他死胡同的宝贵游戏机会。

2月16日版本中的恶魔

让迷宫变得有危险

这款游戏的原型还远远谈不上有趣。玩家翻开牌子时能量的缓慢消耗缺乏戏剧性。最佳的游戏方式往往是随意翻牌,而不太在意图块是否是道路。在下一次迭代中,我们将能量概念转变为生命概念,并在随机道路标题中添加了危险(以恶魔的形式)。揭开恶魔的面纱需要消耗一个单位的能量。

这种变化感觉与扫雷游戏一致,数字越大,表示附近的危险越大。我们的原型最大的不同之处在于,并不是每块路面都有危险。此外,发现危险并不会像扫雷游戏中那样立即结束游戏。这让玩家可以自由地承担计算好的风险,根据自己的直觉来判断迷宫的基本形状,而不是总是要求他们有完美的解决方案。危险机制的软化也降低了游戏所需的技巧,我们认为这是一种进步。

出于几个重要原因,我们希望制作一款能够吸引包括非游戏玩家在内的广泛受众的游戏。首先,我们希望那些通过我们的动画作品熟悉 BUCK 的人,无论他们是否有游戏经验,都能享受这款游戏。我们的核心团队由经验丰富的游戏开发人员组成,除此以外,BUCK 员工的游戏素养参差不齐,我们希望确保任何参与游戏开发的人都不会因为游戏的惩罚性太强而感到陌生。

在 2 月 16 日的版本中,我们加入了路上的恶魔、新的生命机制以及在关卡之间花费金币进行治疗的机会。虽然我们已经解决了前一版本中节奏缓慢和缺乏戏剧性的问题,但我们很快发现,在一些棋盘状态下,无法判断剩余的哪些牌是安全的,这迫使玩家做出一半一半的猜测。在这种情况下,踩到恶魔的感觉显然是不公平的。事实证明,像这样的盲目猜测在扫雷游戏中也是一个问题(尽管一些现代变体有办法确保不出现这种情况)。我们决定消除或至少减少盲目猜测的可能性,因为盲目猜测会给玩家带来无意义的选择和不可预测的结果,从而削弱玩家的主动性,让玩家觉得游戏是随机的,无法掌握。

3月1日版本中的棋子

棋子带走恶魔

从一开始,我们就从物理空间或类似地图的表现形式的角度来讨论这款游戏,但我们还没有考虑到作为一个角色在空间中移动。我们之前的游戏项目(已于 2019 年底搁置)是一款带有动态化身的 3D 平台游戏。那个项目的痛苦还历历在目,所以我们的目标是制作一款纯粹的益智游戏,使用鼠标输入,没有可见的玩家角色,避免上一个项目中化身带来的阴影带来不良的影响。

针对盲目猜测的问题,我们开始考虑让玩家使用一些能力来安全地应对道路上的危险。我们还注意到,点击任何路块的能力(就像扫雷游戏一样)破坏了游戏作为一个物理探索空间的感觉。现在回想起来,解决方案似乎显而易见:我们需要一个英雄!我们希望(最终我们的想法是正确的),一个2D回合制的英雄是一项相对容易处理的工作。

译者注:是的,也避免了前一段提到3D化身的阴影。

在接下来的两周里,我们努力在棋盘上添加一个 “棋子”,并于 3 月 1 日完成了下一次迭代。棋子可以移动到4个相邻的路块上,完成移动后就会将其翻开。我们以 “法力 “的形式带回了之前的能量概念,并赋予玩家三种能力。“探路者Pathfinder”可以用来翻开通往可见路块最近死角的方向;“猛击Bash”可以攻击相邻的路块并移动到该路块上,而“旋转攻击Spin Attack”可以攻击并翻开周围所有8个路块。我们还通过一种名为“充电Charging”的被动能力,让玩家从翻开的路块中获得法力值,这为玩家探索地图提供了额外的动力。我们还为击败所有敌人的玩家提供了一种名为 “全清All Cleared”的金币奖励。值得注意的是,所有这5种特性在游戏中依然存在。

我们还将玩家可以恢复生命的“商店”移到了不同关卡之间,而不是一直都有。这种稀缺性增加了游戏的戏剧性,并成为商店最终在游戏中出现的蓝本。

在最初的原型中,这个版本是我们最重要的突破。在移动过程中翻牌作为探索的隐喻效果极佳。玩家不仅要决定下一步翻开什么牌,还要决定如何在避开危险的同时将棋子送到想要的位置,突然间,有趣的选择多了一层。虽然我们的图像没有改变,但现在玩家有了一种身临其境的感觉和强烈的幻想。玩家现在可以使用“猛击”或“旋转攻击” 来消灭恶魔,而不会受到任何伤害,这为盲目猜测提供了解药。我们开始了一个像样的游戏循环:翻开”安全 “的路块以获得法力值,并使用基于法力值的能力摧毁你推断出的危险。

回合制的敌人第一次出现

反直觉

在这个阶段,我们最大的概念挑战之一出现了。在游戏测试时,我们经常看到玩家只是沿着路走,边走边轻快地踩着恶魔。在大多数游戏(和故事)中,你都是沿着路走的——而且通常,道路比“荒野”更安全。在这个游戏中,我们要求人们在避开道路的同时对道路进行推理。我们发现自己在告诉人们要避开某条路的同时,也让他们避开了死胡同。

事实证明,“在避开道路的同时找到死胡同”并不是玩家最直观的目标。我们考虑过一些替代方案,比如死胡同总是有敌人把守,或者不把死胡同算作道路,但最终决定保持不变。虽然一开始可能会让玩家感到困惑,但一旦理解了这个自相矛盾的玩家目标,就会产生一种令人愉悦的紧张感,因为玩家既要试图找到道路的死胡同,又要尽可能少地暴露沿路的敌人。

当我们最终将游戏呈现在真正的玩家面前,而不是 BUCK 员工时,他们中的大多数人都不是经验丰富的游戏玩家,他们对这个概念没有异议。游戏的最终主题也帮助我们,该主题围绕着推翻一个邪恶的篡位国王展开。国王的殖民走狗仅限于道路的想法与角色保卫自己的家园免受外界征服的主题非常吻合。从这个角度来看,这条路可以被解释为国王权力的象征,最终引导玩家与他对抗。

以盗贼职业在0321版本中游玩

保持优雅

在接下来的几周里,我们在现有逻辑机制的基础上,着力构建了一层回合制战斗。我们没有让恶魔在被踩到时就被消灭,而是将它们保留在地图上,并为它们提供了一个回合制攻击时钟。玩家踩到恶魔后仍会损失 1 HP,但现在又多了一个后续挑战,即在恶魔 X 个回合后再次攻击你之前,如何对付恶魔。与《重装步兵Hoplite》或《陷阵之志Into the Breach》(这两款游戏很快成为我们回合制战斗的两大灵感来源)不同,《揭迷而起》中的敌人攻击时不考虑玩家的位置,这实际上给了他们无限的攻击范围。起初,这是实现敌人攻击的最简单方法,而且一直沿用至今。我们发现这有助于让玩家专注于敌人的回合制时机,而不是试图通过走位来躲避攻击。

到 3 月 21 日,我们又为游戏增加了两个可玩的职业,它们都有各自独特的能力组合。为了提高效率和可读性,我们再次遵循惯例,制作了“盗贼”和“魔法师”,以补充原有的以战斗为中心的能力,也就是所谓的“战士”。在 “盗贼”中,我们增加了使用“烟雾弹”、“飞镖”和 “翻筋斗”进行隐藏的能力。“魔法师”更注重信息,在某些方面感觉最像最初的战斗前原型。我们希望每个职业都有非常独特的玩法和最佳策略,就好像你在使用同一套基本规则玩不同的游戏。

这在一定程度上是因为每个职业都有独特的法力来源。战士通过翻牌获得法力值,而盗贼则在每个关卡开始时都拥有满满的法力值,并且可以花费金币来补充法力值——每次成本都会增加——让每个棋盘都更有抢劫的感觉,你需要尽可能高效地进出,并购买摆脱困境的方法。

看到如何以新颖的方式重新构想翻牌以及寻找出口的基本机制,是一件非常有趣的事情。例如,我们赋予了“盗贼”一些不会推进回合的能力,我们称之为 “自由行动”,这些能力可以让玩家创造出约翰-威克式的连续技,在击倒多个敌人的同时,还能不可思议地避免伤害。

Alpha版本,该版本启发了游戏的视觉和叙事方向。我们的官方网站提供了原型的可玩版本

程序化生成

为了在关卡中创造更多的可变性,我们引入了新的敌人类型,这些类型的敌人在生命值和攻击时间的长度上都有变化。我们添加了对地图中缺少路块的支持,使导航更加明智。地图生成和敌人放置算法是迄今为止游戏中最复杂的部分。如果您不关心这部分是如何制作的,可以跳到下一节。

两个算法都用暴力计算和智能检测失败条件提前退出的混合。地图生成首先用“完美”迷宫填充棋盘;也就是说,一个基于网格的迷宫,其中每个路块都连接在一起,没有循环。

http://www.cr31.co.uk的完美迷宫生成器

在我们的游戏中,我们并不希望每个图块都被道路覆盖,因此在生成一个完美的迷宫后,算法会修剪死胡同,直到达到道路图块的目标比例。要使迷宫“令人愉悦”,还必须满足其他条件,例如死胡同不能太近,否则会让玩家在游戏中感到死胡同一个接一个。

在这一初始阶段之后,敌人算法又进行了多次迭代,以支持不同的难度。完整的游戏既有敌人较少且较弱的简单模式,也有五个难度更高的模式。我们根据敌人的生命、攻击速度和其他属性(如是否自爆或在关卡开始时暴露),为游戏中的每个敌人设定了“挑战等级”。

对于给定难度的任何关卡,我们都会计算出一个目标平均挑战等级以及一个目标饱和度(即敌人应该占据多少百分比)。利用这些数值,我们会强行找出成千上万种可能的敌人组合,放弃那些未能通过某些测试(如平均挑战等级过高)的组合,并根据敌人类型的变化等积极因素对组合进行加权。

整个 10 个关卡的迷宫生成和敌人放置算法都是在开始时的加载阶段执行的,因此虽然要执行的计算量相当大,但都是分批进行的,并不会让人觉得与程序生成游戏格格不入。我们遇到的唯一性能问题出现在难度极高的大型关卡中,因为在这些关卡中,可能出现的敌人组合数量呈指数级增长。在这里进行的优化有助于在流程早期移除 “不良 “组合,并减少产生令人满意的结果所需的循环次数。

升级

在这个阶段,我们开始更有信心,我们有能力制作一款像样的游戏。很明显,我们现在正在制作一个“程序化生成的roguelike”。虽然我们在职业和战斗方面非常依赖惯例,但将这些惯例映射到翻牌和演绎推理的核心机制上,感觉很新鲜。缺少的主要因素是游戏过程中的成长。

为了解决这个问题,我们将每个职业的初始特征减少到最低限度,并增加了获得额外能力和升级现有能力的能力。这首先出现在关卡之间的插页式元素中,玩家可以从购买或升级能力中二选一。它迅速演变成死胡同的商店,玩家可以在那里花费金币。我们后来通过混合其他收藏品来控制商店的频率。金币则演变成宝箱,最终包含了金币或偶尔的稀有物品。

到 4 月 8 日,我们有三种商店:铁匠铺(你可以在那里购买新能力)、健身房(你可以升级现有能力)和旅馆(你可以在那里恢复生命值并升级你的生命值和法力上限)。我们还引入了其他具有独特机制的敌人,一个 Manalith(消耗法力而不是生命值)和一个邪教徒(他显示其他敌人而不是攻击)。这些敌人和三家商店都会进入完整的游戏。

我们还添加了一些简单的进度(从技术上讲,将我们从roguelike带到了roguelite),通过宝箱收集的货币逐渐解锁能力池,以及第二和第三职业。

Alpha 版本,它为游戏的视觉和叙事方向提供了灵感

植物大战兔子

在此期间,我们的团队还在制作第二款游戏的原型!尽管我们在“兔子”上取得了突飞猛进的进展,但我们仍愿意接受它不是 “唯一”。我们的另一款游戏原型是一款园艺模拟游戏,游戏中的植物会实时生长,代号为“绿色拇指”。

我们有意制作了两款截然不同的游戏,目的是看看哪一款更能引起 BUCK 员工的共鸣。我们将这两个原型放在 BUCK 全球四个办事处(纽约、洛杉矶、悉尼和阿姆斯特丹)的创意团队面前,请他们就潜在的叙事和视觉方向进行头脑风暴。艺术总监 Emily Suvanvej 为“兔子”提出了一个概念。在为两个原型生成的所有想法中,《揭迷而起》这个名字脱颖而出,团队很快将其作为游戏故事和视觉的方向。

《揭迷而起》原始幻灯片的一页

Alpha版本之后

在接下来的几个月中,我们的工作重心从确定核心机制转移到建立我们的艺术风格和流程,以及从 BUCK 的艺术家、动画师和设计师团队中组建我们的内部团队。在开始这一过程之前,核心机制已经确定,这有助于我们快速完成前期制作。在此期间,我们还开发了另外三个职业,总共六个职业,每个职业都有一套独特的初始能力。物品和能力的总数最终增加到了 100 种左右。令人惊讶的是,我们几乎保留了所有的能力。如果时间充裕,我们可能会创造出更多,也可能会丢掉更多,但事实证明,路块逻辑和简单的战斗系统为我们提供了一个丰富而充满灵感的可能性空间。原来的三个职业:战士、盗贼和魔法师,被改成了“冲锋者Charger”、“暗影Shadow”和“神谕者Oracle”的主题,但保留了许多原有的能力和游戏感觉。

游戏美术在前期制作过程中的演变

为了创建和调整游戏的职业和能力,我们使用 Unity 的可编程对象(ScriptableObjects),以资产为中心来处理数据。这样,我们就可以通过修改编辑器中的属性来快速开发新内容,而无需接触任何代码。从架构上讲,游戏的基础构件是一类我们称之为“特质traits”的数据。特质是一个单一的可脚本对象资产,可将属性应用于玩家角色和敌人,如能力和被动效果,以及 HP、Mana 和移动特性。特质可以复制、修改和重新混合。它们定义了敌人的行为方式,并能驱动动画、视觉特效和音效。可玩类被定义为特质的集合。这种模块化方法允许快速迭代。只需在编辑器中点击几下,我们就可以添加或删除职业中的特质,也可以创建一个全新的职业或敌人作为不同的特质集合。

在我们开始围绕推翻国王的主题进行工作后,唯一主要的游戏元素是最终的BOSS战。从惯例的角度来看,这是完全有道理的,但我们不确定我们是否有时间执行它。直到我们投入生产,并利用我们系统的改进来创作敌人。

在最后一个关卡中,国王的工作方式与典型的敌人无异,但他采用了一些独特的机制,使其更具挑战性。他的命中率更高,受到攻击时会改变在棋盘上的位置,飞到一个新的随机路块上,并在飞行过程中扔下一颗地雷。由于最后一关的时间太晚,商店的作用不大,我们在所有死角都放置了一种独特的稀有物品——泡泡巴祖卡Bubblezooka”,它可以让玩家攻击任何可见的敌人,包括国王。

这样一来,即使是不太注重战斗的玩家也能顺利完成 BOSS 战。虽然我们尽可能地利用现有系统,使 BOSS 战保持相对简单,但它最终成为了游戏体验的重要组成部分——玩家必须利用在游戏过程中获得的所有能力和物品,进行最后的考验。

一年后

到 2023 年 2 月初,也就是第一个《兔子》原型诞生一年后,我们准备好了在 GDC 的媒体独立交流展示会上首次亮相的演示,并且基本实现了在一年内完成一款游戏的目标。我们已经有了一款可以发售的游戏,不过还需要几个月的时间才能完成宣传片、最终音效和本地化工作。游戏最初的反响非常积极,当一位测试者报告说他花了 70 个小时才完成游戏时,我们感到非常震惊。

《揭迷而起》的成品

通过从一个非常简单的假设出发,有条不紊地逐步改进,这一切都逐渐变成了一个感觉比我们预期的要大得多的东西。每个人都想制作一款伟大的游戏,但当你只有一年的时间来做这件事时,你只能满足于完成一些可圈可点的东西。保持相对谦虚的野心让我们对取得的每一点进展都感到惊喜和感激。如果我们打算在一年内制作一款时长超过 40 小时的游戏,我们就会在这种压力下崩溃,或者更有可能永远不会开始,因为我们认为这是不可能的。

回首往事,有很多因素促成了《揭迷而起》能够顺利完成。在一年的时间内开展工作,迫使我们将范围控制得很紧。因为没有回旋的余地,所以时间越少,关键功能的优先级排序就越容易。我们有意将已知的机制以新的方式结合起来,而不是从头开始发明,这样既节省了时间,又使游戏更容易推向市场。我们基于脚本对象的模块化架构使我们能够用最少的自定义代码快速开发出大量的能力和敌人行为。最后,把完成游戏放在首位,而不是实现抽象意义上的伟大水平,这让我们摆脱了不切实际的期望,因为这些期望可能会在开发早期埋下疑虑并扼杀创造力。

如果关于游戏开发还有其他问题,欢迎加入我们的QQ群:616764474

如果你正在开发独立游戏并寻求曝光机会,欢迎添加微信号:qhmgame并注明来意,我们会把你拉进“千猴马独立游戏互助群”,和其他独立游戏开发者一起共勉。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

目录