MoreRSS

site iconCodingNow | 云风

coder ( c , lua , open source ),不用微信和QQ的大佬。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

CodingNow | 云风的 RSS 预览

异星工厂太空时代游戏总结

2024-11-20 14:16:26

在马山攀岩的最后一天,异星工厂的太空时代扩展包发售了。回到家中就开始玩,肝了 300 个小时,前天晚上终于通关了。准确说是系统告诉我赢得了游戏,但我知道后面还有很多事情要做。和原版一样,虽然发火箭名义上赢得了游戏,但白瓶科技是在火箭之后才有的;这次抵达了星系边缘就告诉我赢得了游戏,但钷素科技包(黑瓶)的原料都没见到。不过,我得暂时放一放,最近在这个游戏上花掉了所有时间,都没做别的事情。先写一篇总结,最近的体验太多,需要记录一下。不然热乎劲过了就忘了。

虽然太空时代最精彩的部分在五个风格迥异的星球,让玩家体验不同的方式玩这个游戏。但我想先谈谈 2.0 在基础系统上所做的工作。


去年我们做 Red Frontier 时,我就想去掉玩家操控的角色,以上帝视角来玩游戏。

虽然过去异星工厂也有 Brave New World 这样的 Mod ,去掉了玩家角色,但所有的操作都是通过无人机完成的。我试过一下,相比有玩家角色,它的操作并不舒服。虽然在游戏初期,操作一个 Player 在地图上跑来跑去有点烦,但真去掉了这个 Player 反而不知道游戏该怎么玩了。我觉得是因为通过无人机下达指令,反馈不够即时,这有点像 RimWorld 或缺氧那样控制工人间接完成任务,玩起来总有点别扭。而操控 Player 虽然有跑路的烦恼,但同时也限制了同一地点能做的事情。在同一时间,玩家的选择变少了,精力可以聚焦在有限的选择上。

其实在原版异星工厂中,通过雷达(开启远程地图上的视野)、布置无人机平台和维修无人机(用来代替玩家的建造操作),再放几个黄箱(用来做物流中转),玩家几乎可以做任何远程操作。再有只机器蜘蛛,几乎不需要 Player 到场。但实际上我玩的时候,还是需要指挥小人去到每个场地(尤其是在太空探索 Mod 中)工作。这次的 Space Age 这个扩展包专门为太空平台设计了专门的远程操作模式,很好的回答了该如何设计无角色模式该怎么交互。

我觉得这个模式的创新玩法在于禁用了无人机,同时没有了箱子作为物流中转,整个基地(太空平台)只有一个大的枢纽(唯一储物箱)。这个枢纽就像是 Player 的背包,在手操时,玩家有且只有它做中转地。这就极大的减少了手动控制上的选择:

  • 枢纽(以及所有箱子)中的物品都是自动合并,自动排序,不再支持手动指定每个格子。
  • 点击有物品的物品格,就可以把物品转移到枢纽中。
  • 选择面板上的物品图标,再点击目标格,就可以把对应物品从枢纽移到对应位置。
  • 拆掉建筑时,建筑及其建筑的附属物品回到枢纽中。
  • 如果操作会向枢纽转移物品,这时若枢纽空间满,这个操作会被挂起(界面显示一个红叉),直到有足够空间才会继续。
  • 某些物品,例如矿石,设定了间接转移时直接销毁属性。即,如果一个操作本应间接导致这个物品应该回到枢纽,就销毁它。这防止了拆除一条装满矿石的传送带因为枢纽空间不够而拆不掉。

一开始玩的时候可能还不太适应,但熟悉了以后还是挺方便的。或许这个模式还不够好,但我看来(尤其是自己设计过一版)已经尽最大可能把各个方面都照顾到了。我曾经想在我的游戏中设计一个类似的东西,改了三四版都不太满意。


液体在原版中我觉得有缺憾,尤其是太空探索这样的 Mod 大大增加了液体的总类数量,在太空平台上经常报告因为会连接不同液体而禁止修建一节管道或带液口的机器,烦不胜烦。而实际上因为有多种液口的机器在修建后是允许旋转的,事实上又可以把多种液体管道混接在一起,一不小心就让水管中充满了油。我在自己的游戏中也尝试改良过几版液体管道的交互,最终也不算满意。

我对异星工厂 1.0 的流体系统有过深入研究 ,自己实现过一次,知道这个问题不太好解决。

这次太空时代给出的答卷是,去掉修建时检查不同液体连接的限制,让玩家自己处理液体混道的问题。同时在水泵上增加了过滤器,帮助玩家处理这个问题。我试了一下在太空平台上利用两条主管道(一进一出)联通平台东西两区的三种液体,加了很少的信号控制就可以完美工作。这让人感觉,2.0 简化了流体规则 是有意义的。我认为最大的意义就在于此:把 1.0 中难以预测(但看起来更真实)的流体行为变得更加确定,玩家可以在确定性上自己解决复杂的流体混道,实际上扩展了玩法。这次的混道控制其实在 1.0 中也是可以通过信号控制完成的,但不够确定(尤其是用水泵抽干管道中的液体方便引入新液体无法准确控制)所以事实上没人会如此操作。


2.0 这次极大的增强了信号控制。作为老玩家,迟早会用信号控制来实现复杂的自动化。我一开始就按 1.0 的思路去做信号控制,玩着玩着才发现 2.0 提供了更多便捷。

信号线以及电线不再需要消耗实体物品,这在搭建信号网络时少了很多烦心事。

新增了选择运算器可以直接对信号排序,筛选出指定信号,这个在实现回转寿司带时简直是神器,再也不用连一大堆比较运算器了。原本有蓝图支持,设计好一些控制模块也不是难事,但在太空平台上寸土寸金,能用一个原件就解决问题简直是太棒了。而传送带也可以以整条为单位读取信号,再也不用一节节的连接信号线。过去要摆上一大摊才能把多种物品混装在同一条传送带上,现在只需要两三个元件,简洁了很多。

回转寿司带的要点在于不用装满、每种物品都有一点,这样才能让不同机器都可以共享物流。多用于制造效率要求不高,但种类很多的场合。太空平台上使用它可以让布局紧凑美观。因为太空平台上禁用了无人机,而箱子只有唯一枢纽,最多就 32 个口。如果想扩展储存空间还需要占用 2 个。做个复杂工厂需要仔细计算枢纽的每个出入口的使用。过去用两个长抓可以从一个出口分出两种物品,而 2.0 中可以直接通过信号控制爪子的筛选器,方便了很多。理论上可以通过信号控制从一个出口拉出任意种类的物品,用过信号后,我在游戏中几乎不再直接设置爪子的信号条件了(直接把条件放在外面,控制爪子的过滤器更有弹性)。

这次可以从机器读到更多信号:包括爪子的抓取物、机器的储存箱、核电站的温度等等,大大简化了过去需要通过间接控制去构造的复杂机构。例如以前想节约使用核燃料棒(不烧过头)何其麻烦,现在直接读取核电站的温度和储备燃料数量就够了。

同时,2.0 又可以用信号控制更多事情,而不仅仅是开启和禁用机器。生产机器甚至可以用信号去换配方,可以实现在太空平台上用几个机器生产多种类物品。由于更换配方也变成了自动化的一部分,这次的机器的基础设定也完善了。过去每个机器只有燃料箱、输入箱和输出箱,分别储存燃料、原料和产品。这次增加了第四个回收箱,用来保存由于更换配方导致的多余不用的物品。回收箱我在设计自己的游戏中也有类似设定,但没有异星工厂 2.0 中的规则完善。


以上是我对 2.0 核心系统的改进印象最为深刻的部分。其实还有很多交互上的小细节(QOL),大大提升了游戏体验。例如物流在视觉上的呈现,地下管、液管的连接都可以一目了然;蓝图提供了参数化控制;火车可以远程驾驶;无人机建造过程增加了强制替换指令等等。数不胜数,无法尽数列出。

下面再谈谈太空时代增加的新玩法。


品质系统准确说并不是 2.0 的核心系统,准确说是作为一个 Mod 的形式引入的。品质系统有人爱也有人恨,总的来说我是很喜欢的。

  • 通过品质插件,有概率得到高品质的产品。
  • 全部用同一品质的原料可以制造出相同品质的产品。但配方必须准确指定品质。
  • 液体没有品质。
  • 高品质物品能扩展某种特有属性,比较有用的有电线杆,可以通过提高品质增加覆盖范围与连接距离。在太空探索 Mod 中,远距离大范围电线杆深得我的钟爱,这次通过提高品质实现了。个人装备的品质提升增加了我的不少游戏时间:武器可以提升射程、无人机平台可以增加直接控制的无人机数量等等。

和大多数游戏的相同物品升阶系统不同。很多游戏可以通过巨量低阶物品合成相同的高阶物品,但品质系统的品质提升是在生产环节中进行的。对喜欢大规模自动化产线的爱好者来说,品质插件就是毒药。因为原本生产线最难处理的就是副产品,而品质插件的引入相当于给每个环节都增加了相当多种类的副产品:虽然手动操作时,低概率产出的高阶产品是个欣喜,但高阶原料是不能在低阶配方中使用的,掺进一个就会堵住产线。这是自动化线最不想要的。

而稳定生产特定品质的产品需要一致品质的原料。由于高品质原料的产出不确定(概率决定),所以规模化下难以计算。

流体无品质的设定是神来之笔。因为在生产链上只要有一个纯流体原料的产品,就无法靠输入稳定品质的原料得到稳定产出。例如钬板只靠钬溶液生产,而钬溶液通过钬矿石熔炼。这就导致了高品质钬矿石其实对生产高品质钬板毫无作用,反而需要大批化工厂分门别类的熔炼钬矿石(每种品质矿石处理需要针对品质的配方)。

品质系统很好的为游戏提供了“多种有意义的选择”。

玩家可以通过漫长的生产链,在每个环节上增加品质插件,各个环节都有机会提升下一级产品的品质,但增加了产线的不确定性导致设计产线的难度;也可以先批量生产固定品质的原料,再用稳定的方式合成同品质的下一级物品。

加入回收机的设计,即可以逆转大多数配方,以 1/4 的概率返还原料,为玩家设计超长产线提供了可能。玩家可以无限次的生产、分解物品,在这个过程中缓慢提高品质,同时不产生太多低品质副产品;也可以通过扩大低品质产品的生产规模,精选出其中高品质产品,这个过程需要的产能小得多,但需要额外考虑低品质产品如何消耗以适应自动化生产。

在游戏过程中,明显可以感受到获得不同物品的高品质版本的方法不同。不是简单的想办法得到一批高品质原料、如传说级铁板、铜板、石料就可以加工出一切传说级物品的。前面提高用钬溶液阻断钬矿石和钬板之间的品质生产链就是一种手段。

而像制造生物实验室的异虫卵、制造蜘蛛的鲜鱼、制造装甲的核燃料,获得这些原料的高品质版本都非常困难。以至于有个成就是“吃下一条传说级的鱼”目前几乎没看到有人达成。


太空时代本质上是建立在核心系统上的官方 Mod ,这和玩家 Mod 并无区别。让核心系统围绕 Mod API 进化而不是不断在核心上增加新的游戏内容,是异星工厂最为独特的地方。

玩家一砖一瓦搭飞船去不同星球探险,这个主题并不新鲜。太空探索这个 Mod 把这点实现的相当好。迷上异星工厂,我就是从太空探索 Mod 开始的。但这次官方的太空时代并不是太空探索的重复。太空时代想提供给玩家的,我认为是:对于不同的基础条件的环境,应该如何建立起可以加入太空物流的自动化产线,把这个环境下的独特产品输送出去。

相比太空探索,太空时代完善了飞船运力设定。没有太空探索中的轨道物流,一切只能靠火箭。计算太空物流成本贯穿游戏始终。这也为不同星球不同环境的经营奠定了基础。如果物流太廉价,不同环境就没有了区别。

太空时代提供了五个截然不同的环境。

新地星就是原版的环境,有无限的水,无限的地盘,生产会导致污染引来虫子的进攻。玩家需要以铁、铜、石、油四种原料为基础建立起产线。但为了加快玩家融入核心玩法的速度,太空时代大幅度的简化了新地的科技树。现在只需要研究到第三种科技瓶蓝瓶,即开采了原油后就可以发火箭上天了。配方上也大大的简化。但同时把高效的防御手段(重炮),改造地形的能力(悬崖炸弹)从前火箭时期去掉,移到了太空时期。

原本的 1.0 里,不加 Mod ,不做千瓶工厂,原版的生产线就不难搭建。而这次太空时代中,初期在新地游戏,更是轻松了许多。

新地星的发展最重要的是解决两个问题:电是怎样来的,怎么平衡污染导致的虫子进攻强度。电的问题大体上有两个方案:用大量地皮铺设太阳能板和开发核电站。玩家在这里可以做出截然不同的选择,占地面积大导致需要防守区域更大;核电站的设计有很多乐趣和变化,但不如太阳能农场易维护。尤其在太空时代里,太阳能版和电池的生产配方简化了不少,量产非常容易。而发展核电的难度则相比 1.0 并没有简单太多。

雷神星、祝融星、句芒星三者是并行开放的,玩家可以自由选择次序。先开发哪一个,都可以对另外两个的开荒有额外帮助。这比线性选择好得多。从这点上,看得出来受太空探索的设计思路影响很深。但太空时代为不同星球提供了完全不同的游戏环境。

在雷神星,电力几乎是无限的,而水变成了珍惜资源。取代水的是无限的重油。这让游玩思路发生巨大的变化。更重要的是,生产线倒了过来。在这里引入和回收机,用来逆向所有的生产配方,当铁板是从齿轮逆向出来、铜板来自于铜丝、蓝片和红片变得廉价,绿片变成了生产链的末端,一切都不一样了。

雷神星的游戏主题是副产品处理。矿产原料一下就给了 12 种,如果在生产链的前端加入品质插件,那是海量种类的原料。处理多种原始矿产这个主题,我在太空探索的地核钻机中玩过。如何消耗干净所有的矿产是个很有挑战的玩法。

祝融星也缺水,但铁铜石这些原料变成了几乎无限。从岩浆提取出铁水和铜水,同时副产品产出石头。基于流体原料搭建产线很不一样。这个思路可以一路延申到太空平台上:太空平台只有枢纽一个储物空间(但后期增加了传送带的堆叠上限后,也可以看成是箱子的等价物),但液体可以分门别类用不同的管子储藏。而锻造机本身也可以作为一个大型容器使用,在太空平台上,使用铁板的产线可以围绕一个生产铁板的锻造机建设,而铁板锻造机之间则可以用管道联通。

祝融星开荒最大的挑战是撼地虫。这个概念明显来源于沙丘。在开荒初期,玩家开着车跑去矿区,蓝图一铺开始采矿;人得照看着,虫子一来,赶紧拆掉矿机跑路。这个时候,连背景音都是咚咚咚的沙锤声。

干掉掘地虫同样有很多不同的选择。它的电击抗性比较低,如果先完成了句芒开荒造出特斯拉武器会简单一点。但我的选择是从新地运来铀矿石合成原子弹,一发致命。在原版游戏中,我几乎没有制造过核武器,这次终于派上用场了。

句芒星加入的变质系统是三个星球中(我认为)最有趣的。简单说就是句芒的大部分本地原料和产品都是有时效的,过期不用就会变成另一种东西。这带来的产线设计思路上很大的不同。过去简单的把原料往传送带上一堵,只考虑带子和爪子这些物流元素的带宽已经行不通了。需要仔细计算物流时间。

大多数东西是越新鲜越好,需要防止变质。不新鲜的东西制造出来的东西也不新鲜,生产链一长,最终的产品科技瓶的保质期就会大有不同。再加上太空物流时间,抵达新地科研时的效能会大打折扣。像虫卵这样的东西,变质后变成虫子会更加麻烦。句芒和新地不同,虫子几乎是不会主动骚扰你的,变质产生的威胁才是主要需解决的问题。而另一些东西又需要变质产物,比如铜矿和铁矿,就是细菌变质来的,还需要专门用一个容器等待它变质。

从空间到时间的产线搭建思路是个巨大的转换,带来的游戏体验非常不一样。在游戏的中后期,跨星系工厂的整体自动化运转,最需要玩家关心,不断检查的就是句芒星这个环节。

另外,在句芒星开荒时,电力非常有限。农业产能却是无限,不需要考虑其它环境中矿采光了需要开新矿的问题。大部分的机器都是靠额外的营养素而不是电力驱动的。这有点像原版中前电力时期的燃烧机。这种不依赖电网的玩法过去在一些 Mod 中很流行。著名的工业时代就是用管道蒸汽驱动蒸汽时代的。而用传送带输送营养质,同时考虑营养质变质问题比管道蒸汽更有挑战也更有趣。

最后的玄冥星开荒,我玩的时候最为容易。主要是有先玩的玩家告诉我很难,我做了非常充分的准备,反而很轻松的渡过了开荒期。

前几个星球开荒,如果飞船从外部做一些补充可以跳过很多难的部分;但什么都不带,从降落开始从零开始建设也是可以挑战一下的。但玄冥星必须从飞船上空投资源。尤其是轨道上不自产石头,基建必须的混凝土只能通过星际物流补充。

玄冥星的主题是热能处理。在原版中,只有研究核电站建设时才会好好研究热能传导的机制。或者像我这样像做一个类似的游戏,动手实现一次才知道热传导和液体物流有很大的不同。尤其是热管没有地下管道,必须在地面格连接起来,其它物流系统都需要为它让路。玩过玄冥星后,相比前段时间玩过的 Frost Punk 2 ,这才是真冰气时代嘛。一切机器都需要挨着热管,否则就会冻结而停工。

热管要需要发热塔保温,温度随着时间流失,所以热管面积越大流失越快。而发热塔要填燃料,本地燃料来自于炼油,但炼油需要电。发热塔需要把温度升到 500 度才能开始发电。整个循环依赖链条一不小心就断了。带一个核电站和足够的核燃料以及一套火箭发射平台去开荒会容易很多。但我自己玩的时候忘记了,等到空投到玄冥星已经回不去了。就此体验了一把基地冷启动的过程。靠太空船上空投的一点点碳(还需要留一些造炸药防御轨道上的陨石)把发热塔烧到 500 度是很有技巧的,必须让燃烧速度大于热量散失速度。先烧 165 度用普通锅炉蒸汽发电或许是一个选择,但制造锅炉用的石料很难记得带上。

玄冥星的体验很奇妙。在开荒期,电用起来要精打细算。运营个无人机平台都是奢侈之举。因为机器和传送带管道都必须紧挨热管保温的设定,平时很少用的长抓一下子就变得有用起来。物流布局方案也变得很大的不同:一切都围绕着保温(更少的热管面积)来设计。而到了核聚变科技出现,电又变得异常廉价,整个基地都值得重新设计。


总的来说,这次太空时代给我的体验就是官方主导着往精巧的小工厂设计上发展,而非不断扩大规模在不同层面实现自动化。这恰巧对上了我的胃口,所以 300 小时的通关过程一直充满了乐趣。

太空时代很好的解答了在太空探索中提出的问题:

玩家为什么要在多个地方经营多个工厂?因为每个地方都又独特的产品,高昂的星际物流成本导致基础产品必须本地生产。

怎样避免建立多个工厂的体验重复?提供截然不同的环境和独立的规则,给出不同的挑战。

随着不同地点的数量增多,不断增加玩家的心智负担如何解决?每个环境最终都可以达成完全自动化,只要不需扩大生产规模,就可以稳定运营下去。任何自动化工厂都会有纰漏,玩家只需要低频率维护,每次找到影响自动化的点即可。像新地控制污染防守虫子这样的玩法就不必扩展到其它星球,污染不需要是核心玩法规则的一部分,它只是一个特有环境玩法。

完善远程控制的交互,这样玩家就不需要在游戏世界里不断奔波。


虽然太空时代只是原版的一个 Mod ,它是官方出品,其实和一众玩家 Mod 地位并无太大区别。但不愧是做了几年,最终带给我太多乐趣。非常期待玩家社区受它的启发制作出更多好玩的 Mod 。

一些进展

2024-10-25 15:57:44

最近去了一趟南宁马山县。攀岩一周,身体很累,心里很舒服。这周除了爬石头,什么都没想,脑子全部放空了。

“一款好游戏,胜过两款伟大游戏”…… 这世上最容易做的就是“多”,如果我们不小心,就可能会把三四款游戏都塞进一个游戏里。有时候,决定什么内容不该加到游戏里,比决定什么内容该加进入更加总要。—— 《席德梅尔的回忆录》

这几天,读了本书《席德梅尔的回忆录》:《文明》是在陪产假中诞生的,它一开始更像是《铁路大亨》的延续,一个全球规模的《模拟城市》,一个实时模拟游戏。它开发了很久都没有找到正确的方向,一度项目被搁置。而重新继续这个项目后,经过了搁置期的思考,才试着将其改为回合制游戏。

席德还有款失败的作品《恐龙游戏》,他从 1991 年开始鼓捣这款游戏的原型,到 2000 年第 6 届 E3 展后彻底放弃。一开始几个版本像是恐龙版文明,核心玩法是基因衍化,但随机基因突变并不好玩;其后简化了复杂的规则,却变得很无聊。“好像不是你在玩计算机,而是计算机在玩你。如果游戏要一下子表达太多东西,那简化游戏设计会有帮助;但如果你在一款回合制游戏上投入了足够多的时间,你就会希望能够控制所有有趣的决策”。

回合制走不通,游戏原型转为了即时制。席德之前就有一款成功的即时制游戏《葛底斯堡战役》。但这个《恐龙争霸》却因为恐龙题材难以嫁接足够多的远程武器以至于无法平衡。

然后,这款恐龙游戏又演化成了口袋妖怪,或是更接近恐龙万智牌。平平无奇的“借鉴”让这款游戏毫无新意。卡牌形式很好玩,但是“这些卡牌的互动方式与《万智牌》太像了。如果你能加入自己的想法,那借鉴一点创意是可以的,但我从来不觉得恐龙游戏有足够多的新元素可自证清白。”席德忍受不了这一点,最终彻底放弃了这个项目。


当我重新拾起自己项目的思路,我觉得我希望它还是一款以策略(而非成长)为主的游戏。我希望单局游戏时间不长,而玩家会面对多种有意义的选择,没有最优解,而是在风险收益间权衡,为长期做规划,同时应对短期挑战(控制损失在可接受范围内)。游戏会有很多随机元素,随机意味着不确定行,玩家一定程度上是在做风险管理。这让想到《Rogue's Tale》,虽然从 steam 评价上看是毁誉参半,但我非常喜欢它。

如果投骰子产生的随机数难以把握,靠自己构筑卡组,以抽卡形式来控制随机性或许更容易接受一些。我很喜欢桌面游戏《Dominion》,所以第一次看到卡牌构筑形式的《杀戮尖塔》时就立刻爱不释手。我想可以考虑一下这种形式的策略游戏。在 steam 上用关键词搜索时,看见了《星际孤儿》。正好,它也是一款以太空船为主题的生存游戏。玩了一百多个小时后,我觉得非常对我的胃口。它也是一款卡牌构筑游戏。steam 评价不算太好,但我不赞同多数差评的意见:它其实不是一款看脸的游戏,虽然看起来系统会刷出一些难解的事件、商店里买不到需要的牌,但这恰恰是玩家需要做“风险管理”的部分。会玩之后,默认难度其实非常简单。真正的难度是从第四级难度开始,需要精心策划每张出牌。

它绝对不是又一个“杀戮尖塔”,其创新点在于“需要玩家持续规划几个回合出牌次序和组合”。而把规划周期拖长看,随机性的影响是微不足道的。玩家要做的是留足备用方案应对不同的可能,并用各种手段消除随机性增加确定性。同时,某个时候不打某一张牌这个决策的重要性就提升了。这在杀戮尖塔类游戏中是比较少见的。

我很喜欢这个游戏策略性带来的感觉,当然,我也不想换个皮再做一个,更不是再来一个杀戮尖塔。只是想到用卡牌形式来玩游戏比较有趣。


初步的想法是设计一些足够简单的卡片,用卡片组合的方式来触发游戏中的行动。把卡片分成几类:房间卡、行动卡、物品卡、船员卡。大致对应地点、行动主体、行动对象和动作。打出一串卡片来完成各种操作。例如,在空房间安装一台机器,需要指定位置的房间卡,安装这个行动,需要的机器卡;而机器则是通过(装有生产机器的)房间卡,操作行动,蓝图和材料卡片可以创造出机器卡放入卡组……

而系统扮演的是一个不对称规则的对手,由设计者实现设计好一个个情景的卡组,洗乱后以机械规则一次打出。玩家就可以看到系统发出的陨石、磁暴等等危机以卡片形式打出。

在游玩过程中,玩家还是在指挥着船员在太空船上进行建造、科研、制造、休整、战斗这些工作,只不过以打牌的形式表达。因为行动被拆解为简单元素,类似 RTS 那样点选一个单位,选择行动及其目标被拆解为多张卡片;每张卡片只有一些基本元素,但组合能表达的行动会很丰富,这样卡组不用太大,避免了巨量卡片组成的卡组不可控,而抽卡机制又保留了一些随机因素。多张卡片的组合使得玩家需要规则几个回合的操作:保留哪张,丢掉哪些,筹齐想要做的事情。

卡牌形式的一个优势是可以先做一套实体卡来试试玩法。现在有《Tabletop Simulator 》这样的神器,根本不需要剪刀和画笔。

btw, 似乎卡牌游戏用不到 3d 场景。接下来我还想找个时间好好为 Ant 实现一套 2D 管线,或者直接从里面抽出需要的代码来,重新做一个简单的 2D 引擎。

我对电子游戏的分类

2024-10-11 14:03:42

“首先,设计师创建了一些游戏机制。然后,他们把这些游戏机制用一些具有代表性的虚构元素包装起来。在游戏过程中,这些机制之间会产生一系列事件。这些事件会触动玩家潜意识中的触发器,从而激发出情感。最后,这些情感交织到一起,变成了一种综合的体验。” —— Tynan Sylvester 《Designing Games: A Guide to Enginerring Experiences》

我非常认同 Rimworld 作者 Tynan 对电子游戏的定义:游戏是一种制造体验的人工系统。游戏用一种工程手段制造体验,目的是激发人类的情感。在《体验引擎》的书中论述,追踪情感的真正源头非常困难,因为情感的触发由大脑的潜意识处理,自动表达的。即使不知道为什么会产生某种情感,我们的理性还是会想当然的为之安排一个原因。这些想当然的原因往往是错的。这种现象被称为情感错位,因为情感错位的存在,想要了解游戏如何影响我们是十分困难的事情。

我最近把游戏开发工作中的具体实现停了下来。因为我意识到,游戏核心固然是设计一些机制,程序实现可以把这些机制做出来并加以测试,但游戏机制只是手段而不是目的。我对游戏设计的理解还不够,所以还需要继续以设计游戏的角度去挖掘游戏深层次的东西。以游戏爱好者的角度去玩那些好评如潮的游戏体会游戏带来的乐趣是不够的,还需要多玩一些毁誉参半但制作者有自己想法的作品。当然,还需要回避一些仅仅是把已有游戏换一个虚构层做出来的仿冒品。

成为好的 Designer 之前,必须做一个更好的 Gamer 。我相信自己比之前是一个更好游戏玩家。因为相比之前,我可以更快的学习游戏规则,忽略游戏的表象,直接去感知作者想表达的东西。玩一些 steam 上只有几个评价且好评率不高的游戏,即使是半成品,对我来说也不算是太难的事了。具体游戏的评价,我大多直接写在 steam 上,而这里,我想记录一些最近想到的比较形而上的总结。

对于非社交属性的单人游戏,我认为有三个设计方向:目标、挑战、沙盒。

第一,设计者设计了一件步骤繁多的事情,让玩家在游戏规则(机制)内,一步一步的完成这件事。玩家在游戏过程中获得的长期体验,很大程度来源于有一个预设的目标,一步步抵达终点。

我过去非常喜爱的 JPRG 类型就是典型。近两年玩的比较多的 Factorio ,尤其是星际探索 Mod 也是如此。完成游戏目标这个过程,虽然主干是设计者设计的,但整个路线则可以让出一些不确定的部分让玩家自己填充。另外,我花的时间很多的(数值成长)放置类游戏更是如此。在游戏过程中,游戏者在意的是我在推进游戏进程,最终有一个完结。往这条路线设计的游戏,通常不具备重玩价值,但可以把单次游戏时间设计的很长。例如异星工厂的星际探索 Mod ,我就玩了 1000 小时以上。虽然像 JRPG 几乎都设计了二周目,甚至多周目玩法,但并非真正的重玩,而是为喜欢这个游戏过程的玩家额外设计的延长线。

在这个思路下,是否有战斗系统,战斗系统偏重策略性还是操作性;是基于故事线的角色扮演,还是上帝视角的基地建设,或是自动化工厂…… 这些不同的游戏机制都是为其(玩家一步步推进游戏进程直到完结)服务的。所以,在游戏机制设计的同时,同时设计好在这个机制下玩什么同等重要。后者就是所谓的关卡设计工作。

我在很多年前制作过一款(网络)卡牌对战游戏。游戏规则几乎照搬的卡片召唤师(CULDCEPT)。一开始的想法是,卡片召唤师是一个非常有趣的卡牌对战游戏,如果我们搬到网络上让玩家有一个平台玩应该是很有趣的。为了方便玩家学习复杂的游戏规则,我们制作了对规则逐步深入的多场和系统对战的教学关。当时让我费解的是,大部分(70%)注册用户在玩完长达几个小时的教学关后就离开了游戏,甚至没有尝试和人对战过一次。如果说游戏不好玩吧,这些玩家大多又没有在教学关之间流失。这些教学关设计得并没有太大挑战,在我看来只是体验流畅,并不生硬的传达了教学任务,但并不好玩。花上几个小时,好不容易学会了一个不算太简单的卡牌游戏规则,为什么不想和人玩上一盘呢?我现在的回答是:这个教学任务本身就是一个目标感很强的游戏,哪怕它不好玩,但完成目标这件事都足以驱使玩家完成它。至于后面的人和人的对战,那是完全不同的另一类游戏体验了。

第二,设计者设计了一套规则,并辅以随机性元素生产关卡,让玩家完成一个个挑战。因为随机性元素的存在,玩家需要根据自己对规则的理解,每次都需要重新判断如何应对。玩家在游戏过程中获得的体验,以学习和能力成长为主。获得信息,有所领悟。应对挑战,由失败而激发斗志。

最近几年流行的 Roguelike 元素游戏都可以归为此类。也包括各种生存类游戏。这类游戏的单局时间不会太长,玩家把单局游戏看成是一次短期的挑战任务,随机性元素或精心设计的关卡让玩家检验自己对游戏机制的理解。如果可以引导玩家进入心流状态,单局时间拉得很长也没关系。例如著名的再来一回合文明系列。

这类游戏通常更注重重玩价值。随机性在这里是一个非常重要的元素。这里的随机性指的是游戏机制中的变量,它其实未必是用随机算法任意组合出的东西。只是表示游戏机制中有许多变量参数可供组合变化,玩家需要充分理解机制,才能应对挑战。所以像 baba is you 这样的 puzzle game ,我也把它归为此类。它的关卡并不是随机产生,都是作者精心设计的。我花大量时间玩这种 puzzle game ,并不是为了通关,而是想尝试不同的挑战。

这种游戏对玩家的终点是彻底理解了游戏机制。但设计者如果长期开发的话,可以通过不断扩展和完善游戏机制让玩家一直保持游戏乐趣。

第三,游戏只是一个沙盒,在一套自洽规则下的模拟。在过去,我无法理解像 Townscape 这样仅仅只是随便搭几个房子的模拟器为啥能被称为游戏,且好评如潮。而像 minecraft 这样火爆全球的游戏,很多玩家仅仅只是在里面搭搭积木。玩家自己随意的规划目标,然后自己完成这些目标。游戏本身仅仅充当了一个沙盒模拟装置。

我对此类游戏提不起太大的兴趣,但似乎又无法将其归于上面两类之中。但想想我在异星工厂中曾花掉几十小时就是为了设计一个全自动生产并方便扩建的工厂,似乎也很符合这类游戏提供给玩家的体验。


这三类游戏的设计方向并非互斥。好的游戏往往可以同时提供不同方向上的体验,只是有所偏重。我现在分析游戏设计时,倾向于把它作为最高层次的分类标准,然后再给游戏贴上诸如银河城、平台跳跃、基地建设、自动化、RPG 等等标签。

最近玩的几个游戏

2024-09-23 16:47:19

这个月没有写什么程序。月初停下手头的开发工作,花了一周时间,作为 Indieplay 评委试玩了 200 多个参选游戏中的 100 多个。这个工作暂停之后,我就对前两个月对自己想做的游戏产生了许多疑惑。虽然写了不少代码,但仅限于基础玩法的外在功能:我实现了一整套类似边缘世界和缺氧里的工人系统,让小人可以在场景中活动起来,采集物资,建设建筑。让机器可以通上电运转起来,把原料加工为成品。但这些似乎只是一种模拟过程,而并非游戏。

我感觉自己对游戏到底想展现怎样的游戏体验没有清晰的认识。虽然在这篇采访中 也提到,(缺氧的最初设计是)“希望整个游戏运行在一个开放的(虽然简单的)模拟之上”。但我觉得模拟毕竟不是游戏,难以给玩家提供丰富的游戏体验。或者说,至少对于我这样的玩家,没有清晰的游戏目标和挑战是不行的。而且,实现一个丰富的游戏环境模拟面临的挑战我现在还无法评估,至少在当下,这不是我优先想做的东西。

我给游戏定下的基调是基地建设加生存挑战类型,或许应该有一些资源管理和 Roguelike 元素。工人管理或自动化元素是我比较喜欢的,但玩过几千小时类似游戏后,我感觉这些元素只是给予玩家体验的一种手段,并非目的。单独玩某个特定玩法,或许也能有趣,但体验却会大相径庭。

比如,我这个月花了不少时间玩 Shapez 2 。这是一个把自动化做到极限的游戏。玩家不再需要考虑能源、制造成本等问题,也没有敌对势力,只需要专心铺工厂,研究如何把工厂规模扩大并保持生产效率最大化。看起来, Factorio 关掉虫子后,也是在干这个事,但我玩下来体验其实是不同的。如果单纯想玩自动化规划,Shapes 显然更轻松有趣;但从游戏性上来说,我更喜欢 Factorio 一点。

我还玩了几天 The Crust 。这个游戏在我的愿望单里放了很久,一发布就开始玩了。我想这是一个 Factorio 和 Rimworld 的混合体。前半部分有很大的 Factorio 成分,玩到十几小时之后,又掺入了殖民地管理和工人分配的玩法。目前它处于 EA 阶段,感觉很多东西还不太成熟。仅就现在完成部分来说,我不是特别喜欢。它的自动化部分略显粗糙,殖民地管理部分又似乎不太完善。关键是交互体验非常糟糕(需要打磨),科技树的平衡更是一言难尽。而它又不像 Factorio 那样有一个坚实的游戏内核,可以通过 Mod 不断扩展玩法;玩起来的体验更依赖于设计好的场景来推动。

最近另一个让我略微失望的游戏是 Frostpunk 2 。一代是我最喜爱的游戏之一,这次 2 的豪华版可以提前 3 天玩游戏,我迫不及待就下单了。用了一天时间快速通关。玩这个游戏,有很大成分是我最近在思考生存类的基地建设游戏该怎样设计。如果没有一代珠玉在前,这也算是不错了。可惜玩过一,核心体验非常雷同。这是一个标准的由预设关卡驱动的基地建设游戏,无尽模式比较无趣。挑战预设剧本是我获得乐趣的主要来源。失败再挑战的循环,让我在一代中花了几十上百小时。但一旦理解了核心规则,抛开“通过玩家抉择来叙事”这个独特的体验,专心考虑如何提高各种数值,游戏不算太难:和一代一样,只需要快速发展科技,回避那些看起来符合短期利益的选择,不采用激进方案,就能达到最优解。这次的二代场面变得宏大,去掉了一代修房子安排工人的微观管理,让游戏体验变成了类似 Excel 表单中的各种进度条。这让我感觉体验不如一代。

和前面提到的 The Crust 一样,这个游戏也有超出同类游戏平均水平的画面质量。这类游戏拥有的高画质反而让我在玩之前就倒扣了期待分,我的这个直觉几乎每次都是对的。如果游戏画面无法帮助玩家更好的理解游戏内涵,那就毫无意义。比如 Frostpunk 2 ,玩家根本不需要关注里面的建筑细节,那么游戏画面精细的刻画建筑就是在浪费开发成本。玩家更关注每个区域的状态和功能,真不如直接给每个区块标记上颜色就够了。而现在默认的画面,看上去场景就是白茫茫一片,关键建筑,即使按住 Alt 凸显出来,还是没有区分度。甚至于,如果有个文本表单都比现在的华丽画面强(不至于让玩家找不到北)。

我最近几年对 Minimalist 极简游戏特别有好感。没有画面加成,极简风的游戏会把注意力放在游戏设计上。一旦核心玩法出众,就很难被掩盖。极简画风也不容易在游戏过程中分心,画面更注重表达游戏规则,学习成本通常更低。例如,我前几天完了一堆塔防游戏,发现最近的新作中,还是极简塔防 最为有趣。

最近玩的比较多的另一个有塔防元素的游戏是 Drill Core 。我感觉它受到了 Dome Keeper 的启发,但青出于蓝。目前在 steam 的评价中,有许多负面评价集中在挖掘过程里随机性带来的损失对体验的伤害。但我一口气玩了数十小时候,反而觉得那些是设计好的玩法,是游戏特点之一。例如挖掘过程中遇到的落石、喷火块、烦人的地龙,都可以通过合理的规划而避开。游戏似乎故意设计成无法具体对单个工人下指令,必须通过布置任务和设置优先级的方式这种间接的方式控制工人的行为。在充分了解规则后,这反而是一种挑战。只不过现在这种交互方式过于隐晦,而规则又不明确,导致有时体验比较糟糕。在微观管理为主的游戏中,玩家需要的其实是确定性规则,过于智能的 AI 未必是好事。这点我是在去年设计工厂类游戏中学到的:因为想为手机设计的缘故,局限于手机的不便交互,我们去掉了传送带,而使用更智能的无人机运营物流。智能规则导致了物流中的许多不确定性,反而没有传送带这种确定规则好玩了。

随机性带来的不确定性也未必是坏事。但围绕随机性的游戏体验应该是教会玩家做风险管理。例如我最喜欢的 Roguelike Rogue's Tale 就是这样一个风险管理游戏。我最近还发现了另一个被玩家批评随机性太强的游戏叫做 Derelict_Void 。我还没怎么玩,暂时不予评价。关注它是因为这个游戏似乎包含了我目前想做的游戏的各种元素:太空生存、基地建设、资源管理…… 看起来它受到更早的一个游戏 OutThere 启发:基于非常有限的资源探索宇宙,尽可能的活动下一个目的地。玩家需要非常小心的平衡氧气、水、有机物、燃料的使用,尽量养活合适数量的船员。没有和敌对势力的战斗(像 FTL 那样),但依然有极大的生存压力。

Ant 引擎的一些改进计划

2024-09-03 11:21:09

我独自开发游戏已经有三个月了。这三个月里,我是 Ant Engine 唯一活跃用户,这是一个很好的机会来挖掘对于一个独立游戏开发者来说,引擎哪些地方有缺失。现阶段,我还是希望把精力放在游戏开发上多一些,所以引擎方面恰恰够用就好。虽然,完善引擎这件事做起来会更愉快,因为这些工作对于我比较顺畅,容易想清楚,游刃有余;而一个人开发游戏,更多的时候是手跟不上心而产生的烦闷。

我还是想挑战一下自己,把游戏设计好,实现好。引擎方面的事情,把想到的东西先记录一下。或许完成手头的游戏项目,沉淀更多,再回头做引擎,愉悦感更强一些。

首先,可视化编辑器 对我来说不重要。所以暂时就不维护了。我更需要的是一些快速验证眼下游戏设计中想法的功能,这些就在游戏 demo 中顺带实现就好,看起来没必要放在编辑器里。这和现阶段没有美术参与也有关系。因为对我自己做独立游戏来说,我不在乎开发进度,先做美术还是后做美术,区别不是很大。本来我自己就喜欢传统 roguelike ,几个 ascii 字符就能脑补所有的美术表现。我想,游戏原型阶段就不需要美术在编辑器里做创作了,用一些几何体就够用。这也是为什么我在三个月前最先完善的就是 Ant 引擎中预制几何体 这个功能的原因。

我在使用 Ant 引擎的时候,发现因为缺乏具体 API 文档而只能不断的阅读源代码(毕竟有很多模块不是我自己动手写的,无法全部了然于心)。而且并非每个模块的设计都满意,这让我经常有修改引擎的冲动。做了一段时间后,我找到一个方法来解决这个开发问题。我可以额外再做一个精简版的框架,按目前开发游戏的需求,从最基本的功能做起,逐步完善。这样就能隔绝引擎已经做好的部分:好用的模块直接做一些浅封装,有问题的部分可以多花些精力做不侵入(破坏老代码)的改进。

本来根据游戏类型的不同,使用引擎的方式就会有很大差异。我希望可以有不同的这样的框架针对具体类型游戏做二次封装。这样,在二次封装上写游戏的花,后面就可以更放心的裁剪底层实现。我更希望让 ECS 框架还原成更原始的设计:面向数据,避免添加太多的辅助模块。

最近还有许多工作是在 UI 上。我对 RmlUI 的方案还是比较满意的。毕竟类 web 的开发有极大的用户基础,各种边角被人打磨过。不过目前的一些实现细节,尤其是 UI 层和游戏层的消息通讯部分存在设计问题。

现在 UI 层和游戏渲染(以及逻辑)处于两个隔离的 Lua VM 中,跑在不同线程上,依赖消息通讯交换数据。引擎简单的封装了消息通讯过程,提供了 RPC 方法。但从游戏逻辑倒 UI 阻塞 RPC 调用,直接使用的话必定产生死锁。这是因为游戏逻辑通常放在 ECS 的一个 system stage 中执行,而处理 UI 层的 RPC 请求在另一个 stage 。为了回避这个死锁问题,需要小心的利用 ltask 的一些异步功能。我做了一些简单的封装后,情况好了一点。这个封装抽象出一个 model 对象,自动在两个层之间做数据同步(只同步差异部分)。在游戏逻辑这边设置 model 的状态,就可以直接在 UI 上展示出来。这个封装还很粗糙,需要我自己多做一些 UI 模块后再改进。

由此,我猜想 ECS 里面可能还需要提供一个 async 的 stage 可能好点。现在的 stage 里如果调用了 ltask.call ,就完全塞死当前帧了。加一个 async 的 stage ,让这里 yield 出去的流程,在下一帧回来这个stage 继续做。这样也可以取代 instance 创建的 onready callback 。只需要把一些消息处理过程放在 async stage 就可以更自然的写。前几个月就做过一点类似的尝试 ,感觉还没想好,暂时不打算把这个特性加到引擎中。


动画模块 是目前引擎比较欠缺的部分。只是我在做游戏原型时还用不上。如果未来做动作向的游戏,这方面的需求就更大了。这个的开发优先级比较低,等实际用起来再解决。

材质系统 看起来更值得改进。尤其是我在开发过程中,遇到一个简单的需求:运行时把一个对象改为半透明渲染,折腾了我好几天。最后我还是采用了去年开发游戏过程中使用的方案,为编辑器做好的预制件数据打上 patch ,为每个预制件预生成一个半透明材质的方式。然后在运行时根据需要,在不透明和半透明预制件中做选择(因为现在引擎不支持运行时给对象赋予完全不同的材质)。

说起这个半透明材质问题,我认为本质上还是性能优化问题导致的。理论上,我们可以让所有的对象都是半透明材质,把透明度调为 1.0 ,它就呈现出不透明的状态。调成 0 就消失了。但是,对于渲染来说,不透明和半透明(以及不显示)性能上有本质差别,这会导致不透明的 3d 物体和半透明 3d 物体底层渲染管线都有极大的差别,远非改个材质参数这么简单。或许在 2D 引擎中,这个差别并不大,但对开发者来说,最好不管是 2D 管线还是 3D 管线,都不必在意实现的困难,用起来设置个参数就可以了。这也是引擎要极力解决的问题。在这个(半透明)问题上,我和引擎开发团队的同学讨论了两个晚上,有了一些新的想法。以后有时间我想重构(并简化)相关底层代码。

目前,我不打算在手机平台上开发游戏。这存粹是个人对游戏体验的喜好:我对在触摸屏手机上玩游戏完全失去了兴趣。那么 Ant Engine 的最大努力:直接在开发机上对手机设备上的游戏损失调试,看起来意义就不大了。未来我想把为了实现这个特性而给引擎带来的复杂度做一些简化。尤其是远程调试、VFS 同步、触摸屏支持等。同时,可以增强许多 PC 开发上的体验:尤其是美术资源自动编译这块。我希望可以尽量减少额外的编译环节,让引擎能直接加载更多的通用格式的文件(图片、模型等)。

尤其是材质编译模块,是目前引擎中最为复杂的模块之一。我认为设计也是有问题的(不应该如此复杂)。这一块在上个月开发团队里做了一个晚上的讨论,改进方向下次专门写一篇 blog 介绍。

另外,还有一个大块的计划是重新用 Vulkan 编写 gfx 层,而不再使用 bgfx 这种跨平台方案。这也是后话了。相较用 Vulkan 实现新的 gfx 层,我更希望有机会好好做一套 2D 管线(以及独立的 2D gfx 层)。毕竟 2D 的 gfx 层要简单的多,可以把重心放在如何提供更好的(独立)游戏开发体验上。

想做的事情太多,一件件来吧。

Just for fun