Mars 吸引力:打造极具复古吸引力的大亨风格游戏

《Mars Attracts》由Outlier Games开发,目前已在Steam上提供抢先体验版,它为大亨类型提供了一个狡诈的玩法,让玩家不得不经营一个外星动物园。我们采访了 Outlier Games 的技术总监 Paul Froggatt,了解他们的最新版本是如何发布的 - 从与标志性 IP 合作到做出正确的技术决策以支持一个复杂主题公园模拟
你能向读者们介绍一下火星景点的起源吗?你是怎样找到这个 IP 的?
《Mars Attracts》最初有一个游戏概念:一款狡猾的大亨游戏 - 绑架人类到外星动物园当展品。在构思和原型设计的基础上,我们接着开始寻找能给游戏世界增添个性的IP。
我脑海中最早出现的游戏是《火星袭击!该团队是 1996 年 Tim Burton 电影的忠实粉丝,在调查了电影所依据的原始复古科幻汽车的版权后,我们爱上了这些汽车。我们联系了Topps(拥有Mars Attacks!IP),并且当他们对我们的离奇的游戏构思很感兴趣时,他们感到非常开心。
在有了游戏的概念和IP后,团队就变大了,我们开始制作游戏了!在技术上,最让人生畏的是在《Evil Genius》、《Dungeon Keeper》、《Theme Hospital》和《过山车大亨》中以一个小型(5-6 人)团队制作完整版大亨游戏的复杂性。
让我们更具体地谈谈这些挑战 - 你们在把《火星袭击!》的世界放到主题公园模拟器里时 - 遇到了哪些广告创意素材和技术障碍?你是如何将其独特的黑色幽默感转化为游戏玩法的?
制作《Mars Attacks》公园模拟时最具创意挑战性的要素之一实际上与 IP 无关 – 该类型有如此多的精彩条目,以至于人们对这种类型的游戏有着基本的功能、日常特色和复杂性。经过数年的努力,该基础功能终于达到了可以与其他游戏类型并肩作战的水平。在配置好后,用Mars Attacks!机制来区分游戏会简单很多(也很有趣)。开会讨论最可怕的折磨人类的方式永远不会过时。
Mars Attracts 以“复杂、按需的角色 AI”为特色,驱动着主题公园每位客人和员工的行为。你能大致介绍一下它的工作原理吗?你们是怎样同时管理这么多角色的决策和动作的?
我们实际上就是这么做的!在开发过程中,角色 AI 的结构发生了一些变化。
每个角色都有一套需求(饥渴、兴奋等),并根据自己对需求的满意程度来排序。然后,他们根据需求在列表里寻找附近的解决方案(比如饿肚子、饿肚子等等)。如果他们能找到要做的事情,就会分配一个任务让他们去做。如果没有,则进入列表的下一个需求。
在构建该系统时,我们需要学习的一个关键知识是将任务分为两个部分 - 目的地和意图。起初,我们并没有将意图分开;例如,一个饥饿的角色会“走到食品摊前”,但我们发现,这成了更复杂行为的限制 - 一名客人可能会走到食品摊前买一些食品,但看门人可能会走到食品摊前修理食品。有了多元素任务系统后,我们就可以为角色制作更多的变体。
在技术层面,寻路使用Unity和网格图的A*寻路插件。有趣的是,不同的任务有着不同的图表,如果人类想逃出生天,他们会用图表来找出穿过墙壁和障碍物的路径(对障碍物使用移动惩罚,这样他们就会绕着障碍物走动)。这意味着如果人类愿意,他们可以通过你修剪整齐的公园开辟一条毁灭之路。
与更传统的骨骼动画相比,决定采用基于网格的动画系统的背后是什么?您是否必须做出权衡,这些选择如何影响您的美术和动画工作流程?
游戏有可能会同时出现数百名(或最终数千名)玩家。我们希望在不牺牲性能的情况下聚集大量人员,我们发现动画组件占用了大量的性能带宽。
为了解决这个问题,我们为公园的客人们改用了网格动画,预先烘焙动画,让大量角色能有更高性能的动画。
缺点是很难为访客添加变体(因为每个变体都需要自定义烘焙),我们发现相对短的动画效果最好。
这款游戏从 IP 到整体外观和感觉,都充满了一种怀旧感。你们使用了哪些特定的技术或视觉元素来捕捉特定的美学、实现想要的“外观”?
在怀旧与新奇之间找到平衡是我们工作的一大重点。在视觉方面,色调和建筑设计的灵感来自于复古未来主义——游戏里没有任何东西看起来过于流畅,而都是20世纪60年代火星文明的样子。

在谈到技术基础时,是什么让你的团队选择了通用渲染管线 (URP)?这种视觉风格和角色密度对项目有何好处?
《Mars Attracts》的视觉效果旨在让人想起该类型的经典和复古科幻小说,同时满足玩家对现代游戏的期望。主要考虑的因素包括:a) 能否用一名 3D 美术师制作出所有内容;b) 能否让游戏即使在低端机器上也能有良好的性能。URP 的可访问性和稳定性非常适合构建我们想要的环境。
你还用了什么方法来确保游戏流畅运行?在如此规模的模拟中,你们有哪些最有效的优化策略?
Unity Profiler在确定瓶颈方面非常宝贵。由于访客数量众多,大多数性能改进都是围绕访客 AI 的低效问题。
比如,想象一下一个大型公园,玩家可以参观1000座不同的建筑。如果客人饿了,他们必须在1000栋建筑里来回走动,看看他们是否上菜。如果有,它会检查建筑的状态,确保它们有库存食物、没有损坏、有人员等等。如果这些建筑都不可用,可以针对客人的下一个需求(如口渴)重复这一过程,再重复10-15次。那就乘上500位客人1000 栋建筑 x 10 个建筑 x 500 位客人 = 500 万张支票。
为了解决这个问题,我们在公园内实施了Search Regions(搜索区域),让游客只能“看到”自己所在区域或附近区域的建筑物。这样一来,需要检查的建筑数量可能减少到 100 栋,因此 100 栋建筑 x 10 栋建筑需要 x 500 位客人 = 500,000 次检查。节省大量资金,对玩家没有任何实质影响。

回过头想想,在项目变得更为复杂时,您早期做出的一项架构决策中,有哪一项得到了真正回报?
UnityEvents。我们经常使用这些功能。我们之前的项目 This Means Warp 学到的一个关键知识是模块化的独立代码至关重要。使用 Unity Events 在类之间进行通信大大减少了硬编码链接,并且使构建新功能变得更加容易。
你用颗粒覆盖着色器向玩家展示重要的视觉信息。能否详细介绍一下?
是的,我们有一个自定义着色器,它可以根据网格中存储的值更新材质。让用户能直观地看到一块瓷砖有多漂亮或干净,或者它离某个生境的建筑物有多近。我并不是这样制作的,所以就它的工作方式而言,我只想说.................................................................................

Unity Asset Store中是否有任何证明特别有价值的工具,如果有,为什么?
BGDatabase – 所有建筑统计数据和本地化字符串都从Google图纸中提取。这使得大规模更新内容、从本地化合作伙伴那里获得反馈等变得更加容易。BGDatabase 帮助将这一点无缝引入 Unity,我们将其用于每个项目。
你會為 ⁇ ��발자 創造一款大亨風格的遊戲 特別是在模擬中涉及大量AI代理的遊戲 提供什麼建議?
我强烈建议研究基于网格的动画,以提高这么多角色的性能。同样,Profiler的使用也非常关键。
我希望我们之前想到的一件事是保存/加载。我们使用了 EasySave3 插件,但直到抢先体验版发布前才将保存和加载集成到游戏中。保存和加载支持确实会增加一些开销,使其适用于所有功能,因此我们确实节省了一些时间一次性处理所有功能,但我们没有考虑过这会对加快开发过程中的测试速度产生影响。能够生成一个包含数百名客人的环境,提供逼真的游戏体验,这对于调试和优化大型公园超级有用。
发布前有人给我的一个相关提示:将玩家保存的游戏附加到任何游戏内的反馈报告中。对重现问题超级有帮助!

Mars Attracts目前已在PC上发布。在我们的官方Steam Curator页面了解更多Made with Unity游戏。在Unity博客和资源中心阅读更多开发者的故事。
