我们采访了这家工作室的三个创始人,在这篇问答中,这三人将会详细介绍《黄铜之城》包含了哪些生化奇兵的元素,讨论他们如何在程序化生成的关卡中填充机关,并说明他们如何巧妙地优化这个游戏,使它能够在任天堂Switch上流畅运行,等等。
(本视频转载自YouTube:视频原址)
感谢你们抽空接受采访,同时也祝贺你们最近的Switch版发行!Uppercut Games拥有参与过《生化奇兵》一代和二代开发的团队成员,那么你们把哪些在开发这个大受欢迎的科幻游戏系列时获得的经验运用到了《黄铜之城》的开发中?美术总监Andrew James:当我们最初想到要做一个使用鞭子和刀剑的游戏时,立刻就开始从《生化奇兵》的核心战斗机制汲取灵感;那个游戏的“二连击”系统鼓励玩家从远处用闪电将敌人电晕,然后用扳手结果它们。我们认为这种核心机制也很适合非破坏性的工具,比如鞭子。然后我们继续扩展这个核心理念,鞭子可以作为玩家的“多用途工具”,用来操纵敌人和环境,触发机关,从远处抓取物品,等等。
玩家在《黄铜之城》里与Djinn(神怪)交互的方式也是受到了《生化奇兵》里的许多自动售货机和补给站的影响。售货神怪就类似于Circus of Values(不过没有《生化奇兵》编剧Ken Levine那令人难忘的口音)。治疗神怪则类似于补血站。邪恶神怪的功能也和极乐城里的安保系统及安保机器人差不都。
最后,我们在构建用于完全程序化创建关卡的系统时,分析了《生化奇兵》的一些关卡构造,把关卡设计师手工创作的一些内容转变成了程序化系统的规则,以求创造出更为可信的、感觉像人工构建的空间。
《黄铜之城》最初是以抢先体验版形式发行的。Uppercut Games从最初的发行中学到了哪些经验并融入游戏的最新版本中?
James:对我们来说,发行抢先体验版是一次极其宝贵的体验,它大大改进了游戏的最终版本。我们拥有一个热心的小型社区,为我们提供了详细的反馈和建议,包括应该加入的功能和平衡难度曲线。
设计总监Ed Orman:我们根据抢先体验版的反馈做出的一个具体成果就是“祝福与负担”系统。“祝福与负担”本质上是引入变化的工具,开启该系统可以把关卡的挑战性调整到最适合你的程度。通过加入这个系统,我们进一步扩大了这个游戏的受众面,同时也解决了早期玩家的一些担忧。例如,“休闲”祝福可以取消游戏的时间限制,而这是玩家经常提出的请求。
在2018年5月将《黄铜之城》发行到PS4、Xbox One和PC之后,最近你们又在任天堂Switch上发行了这个游戏。你们是如何针对每种平台进行优化,确保统一的高质量体验的?
James:起初我们发现,我们的关卡对主机来说太大了。我们的Actor和绘制调用太多,主机硬件无法处理。好在我们这个游戏的关卡是程序生成的,所以我们首先更改了关卡生成代码,缩小关卡的规模。然后我们发现,有一大堆Actor是玩家看不到的,但却一直在后台运行。通过降低这些Actor的剔除距离,并将粒子系统和光源之类的东西在离玩家一定距离时完全关闭,我们就使游戏的基本帧率恢复到了不错的水平。
最后的一步工作是检查和分析我们的光照和后期处理设置的成本。我们确定需要让距离场环境光遮蔽保持开启,因为它有助于表现我们的动态光照环境,这就要求我们在必要时降低另一些光照和后期处理设置的保真度来保证性能。这些设置大部分都是可以在运行时通过控制台更改的(你可以在默认的scalability.ini中检查r.变量的主机,从而了解到可以用来调节性能的各种不同功能)。
技术总监Ryan Lancaster:我们第一次将《黄铜之城》部署到Switch时,发现它的性能显然受制于GPU。Switch版具有和当初Xbox One版一样的毛病,就是动态光源太多。作为一个关卡动态生成的游戏,《黄铜之城》里没有静态的光照。在Xbox One上,我们不得不检查Actor中的所有光源组件,设置“最大距离消退范围(Max Distance Fade Range)”,使所有光源都在距离过远时淡出。对于Switch,我们发现动态阴影数量过多,因此不得不作出决定,关闭除阳光之外所有光源的阴影投射。
在控制了GPU时间后,游戏性能又受到了CPU的制约,因为有太多Actor在运行。我们已经设计了一个根据距离剔除机关和AI的系统,因为这些机关和AI多余运行时间是最长的,但是现在对这些系统引入剔除距离又会让玩家看到AI凭空冒出来。当《黄铜之城》里的敌人死去时,它们会重新溶入沙漠的黄沙中。为了解决AI凭空出现的问题,我们就反向应用死亡效果,使敌人从吹起的沙子中化身成型。
另一个主要的性能问题是常见的活动爆发问题(粒子和物理Object太多),这会造成卡顿。在我们升级到4.21并配置了动态分辨率系统之后,这个问题就迎刃而解了。
《黄铜之城》具有绚丽的图形和精彩的光照效果。你们是如何实现这个游戏的视觉效果的?
James:《黄铜之城》是由两名全职美术师和一名兼职原画美术师兼角色建模师制作的。用这么小的一个团队做出现在的成果,我们感到非常自豪!
作为一家小型独立工作室,我们一直在想方设法重复利用先前作品中开发的资源。其中之一就是我们为《Submerged》开发的动态Time-of-Day光照系统。我们把这个系统直接嵌入在《黄铜之城》中。Time-of-Day系统有一堆自定义曲线,使得包括光照颜色、雾气、天空盒、云、间接光照和后期处理设置在内的各种设置都能根据每小时的日夜变化调整。和我们的前一个游戏《Submerged》一样,我们并不打算模拟真实世界的环境,而是要打造理想化的光照色度和色调,作为建筑和场景的补充。
此外,游戏中的一切都是使用我们工作室中共享的一小组Substance Painter材质来填充纹理的。因此我们能够非常迅速地创建资源,它们在表面细节、金属感、粗糙度和色调方面都能完美契合。
然后,所有的环境美术都有其Substance纹理,它们插入到几个主材质的材质实例中,使我们能够对设置进行全局的微调,然后传播到游戏中的几乎每一个资源。
工作室为什么会想到为《黄铜之城》选择阿拉伯风的主题?
Orman:我在童年时代就通过卡通片和电影接触到了《一千零一夜》里的一些故事:都是以非常西方化的方式诠释的神话。后来当我真正阅读了原作(事实上,那是我孩子的读物之一),我发现那是一个比我的想象还要丰富得多的幻想世界。这本书的结构是一连串故事,许多故事中间又嵌套了其他故事,《黄铜之城》是其中一个精彩的故事,讲述了一个因为自身的贪婪而受到诅咒的城市。
在我读到这本书之前,我们已经开始做一个第一人称roguelite游戏的原型,我立刻想到这是我们应该选择的背景。这个决定也开辟了创意之路,让我们想到了用鞭子作为核心的游戏性工具,使用神怪和许愿——各种各样的点子都冒出来了。
市面上已经有很多很有挑战性的roguelike游戏,但其中使用第一人称视角的并不多。工作室为什么会想到为《黄铜之城》选择这个视角?
Orman:这是多种因素造成的。第一,我们有一些做第一人称游戏的经验,做过《部落:复仇(Tribes:Vengeance)》、《霹雳小组4(SWAT 4)》和《生化奇兵》。从成立工作室开始,我们就尝试和制作了许多差别很大的游戏类型,但却一直没有机会回过头来做第一人称游戏。我们感觉这样好像是浪费了我们的经验,所以我们就开始考虑要做什么类型的第一人称游戏。
第二,我喜欢roguelike游戏!几年前我经常玩这种游戏,特别是《Spelunky》和另一些老派的2D游戏。没过多久我就开始想,把这种游戏用第一人称表现出来会是什么样。
《黄铜之城》的战斗很受好评,特别是鞭子的机制,它提供了不同的情境操作,比如击晕敌人,或者把他们拖到陷阱里,等等。你可以说明一下工作室是怎么想到这些战斗设计的吗?
Orman:我们的战斗基础就是那个二连击概念:每场战斗的最佳打法都是先尝试用某种方式操纵敌人,然后对它们输出伤害。
因为我们选择了鞭子作为玩家的超级工具,所以我们就很自然地想到用它作为这些战斗操纵的基础。基本原则是,鞭子可以使敌人进入各种状态,但总的来说不能直接伤害它们。接下来就要考虑敌人的哪些部位是可以被鞭子攻击的——既要合理,又要便于瞄准——然后考虑用鞭子攻击敌人的这些部位将会如何改变它们的状态。
最简单的例子是“用鞭子抽敌人的脸,然后它们就会晕厥一段时间”,不过我们很快就把这扩展到了绊倒、解除武装、拉拽、击退——这些状态或者能为你争取进行实质性攻击的时间,或者能让你通过一些环境因素伤害敌人,比如城里到处都是的机关。
考虑到《黄铜之城》里的机关不仅能伤害玩家,也能伤害敌人,可以谈谈你们是怎么把程序化关卡生成做到游戏里的吗?
James:《黄铜之城》在你每次游玩时都会程序化地生成新关卡,所以每次游戏的体验都是不同的。
在制作程序式生成的游戏时,要注意“程序化”不等于“随机”,机关就是一个很有意思的例子。我们的意思是,在很多情况下,通过创建系统来“随机地”挑选物品或物体生成的位置,或者随机生成一系列相互连接的拼贴都是比较快的,但是这种系统必然会使你很难控制结果。从多种角度来看,这都是很糟糕的:
- 你的游戏最终会成为随机游戏之神决定的样子,而不是你想要的样子。
- 如果系统包含许多随机子系统,要对它进行调整或平衡是非常困难的。
- 它通常有“随机”的外观,却会让玩家感到不可信。比如,“谁会在冰箱前面放个马桶啊?”
- “随机”在玩家看来往往就等于“不公平”,因为我们的头脑习惯于在世界,在大自然,特别是在游戏中寻找规律。玩家会本能地希望了解规则,找到规律,然后运用这些新的知识得到更好的结果。
我们最初在关卡中添加机关时,它们都是随机放置的,结果造成了令人非常苦恼的“不公平”体验。于是和《黄铜之城》中几乎所有东西一样,我们关闭了随机性,编写了一系列关于机关在哪里可以出现、哪里不可以出现的规则。
我们发现把地板机关放在门的前面(虽然起初看来这是反直觉的)是个好主意,玩家可以认识到,“门背后通常都有机关,我到了这里应该小心”。另一个例子是:把墙壁机关设置在拐角后面是非常令人恼火的,因为你在绕过拐角之前很难看到它们,所以我们就禁止拐角旁边的墙壁生成这类机关。我们还尝试在玩家的道路中间生成机关,从而逼迫他们绕行,或者让他们想到用鞭子把敌人拉到这些机关上。
你们工作室用过蓝图吗?
James:我们的大部分游戏Object都是从编程团队创建的代码类衍生的蓝图。这种做法使我们能够同时享受到两者的优点。如果我们需要特定的功能或优化,程序员可以把它添加到基本类。然后团队的美术师和设计师就可以扩展各个衍生的蓝图,添加发射器、光源、音频、动画网格体等新组件,或我们需要的其他任何组件。我们还通过代码对这些蓝图触发事件,然后在游戏中用蓝图脚本生成所需的结果。
我们还有一个可以添加到蓝图的自定义组件库,可以轻松创建新的Gameplay或交互。例如,“鞭子组件”可以添加到任何蓝图Object,从而实现与玩家的鞭子的脚本交互。
工作室有没有特别喜欢的UE4工具或功能?
Lancaster:4.22让我很兴奋。《黄铜之城》的关卡是由许多小网格体组成的,我们希望利用运行时功能的自动实例化大大提升性能。如果效果足够好,我们也许能把一些动态光源投射阴影重新做到Switch上!
你们工作室在开发期间利用过虚幻引擎商城吗?如果利用过又是怎么利用的?
Lancaster:我们用来生成关卡的基础系统实际上就是从虚幻引擎商城购买的一个插件。“Dungeon Architect”使我们在项目早期就有了很好的基础。在项目开发过程中,我们对它进行了许多修改,但毕竟不需要从头开始做,这是很大的优势。
James:在开发《黄铜之城》的过程中,我们从虚幻引擎商城购买了多种资源。有些商城资源没有用在最终的游戏中,我们购买它们只是想看看别人是怎么实现某种功能的,或者只是使用了商城资源中的某个子组件,总之只要能帮我们在最短时间内得到最佳结果就好。特别是材质和粒子系统之类的资源,了解一下别人怎么实现特定结果可能有极大的帮助,可以大大减少你自己的迭代时间。
我们可以期待《黄铜之城》未来的更新吗?
Orman:当然!我们现在就在做几个更新。
首先,我们会更新主机版本:Xbox One、PlayStation 4和任天堂Switch,在这些平台上将能第一次玩到拿着十字弓的亡魂角色。我们的目标一贯是尽快让所有平台享受到同样的游戏特色,所以这个更新是我们最优先的工作项目。
在这之后,我们计划再发布一个免费扩展,重点是为玩家进一步增加游戏的多样性——所以请保持关注!
再次感谢你们抽出时间接受采访,玩家可以在哪里了解更多关于《黄铜之城》和Uppercut Games的当前工作的信息?
https://www.cityofbrassgame.com
https://www.uppercut-games.com