Alt-F4 #2 - 蜘蛛机甲!!! 2020-08-28
翻译 Ph.X
欢迎来到第二期 Alt-F4,由社区驱动的 Factorio Friday Facts 继承者。说真的,我总是能从社区中感到无限惊喜。在第一期发布后的的数小时内,Discord 里就挤满了热情的玩家,都是愿意贡献帮助的热心肠。您可能会发现的一件事就是,现在这个页面的许多地方都获得了一些小小的升级。感谢每一位踊跃参与本项目的志愿者们!
不过本篇博文重点并不在于博客本身,而在于游戏。众所周知,开发者们在 1.0 发布日添加了一种长着怪异长腿的蜘蛛机甲(Spidertron)作为惊喜。它早在 FFF #120(4.5年前)就曾提出过。在发售之际,我们想将本文的重点放在这款多功能载具以及社区对其尝试过的改造方式上。
蜘蛛机甲错过了练腿日 Lovely_Santa
我在看到 1.0 的发布说明时感到特别惊喜!相信其他抢先体验的玩家也会跟我有同感。作为您友善的邻家 Mod 创作者,我不得不仔细研究下蜘蛛机甲的构造,这给了我很多思路,各种全新的 Mod 想法开始萌生。
大多数 Arch666Angel 的粉丝肯定知道我是 Angel’s mods 的作者之一。 由于 Angel’s Exploration 尚处于开发初期,蜘蛛机甲有机会在此大放光彩。我并不打算剧透自己正在酝酿的东西,相反,我更想花时间分享一下开发过程中遭遇的一些困难。
来见见爬行机甲(Crawlertron)吧,这是 Angel 牌机甲,他将加入 Angel’s vehicles 的 Crawler 家族之中。我对新的爬行机甲提出的的要求之一是他的体型。我希望他变得更小,非常小。这意味着我必须在蜘蛛机甲的定义中引入比例因子,以便能够按比例缩小他。正如读者中的某些 Mod 作者已经知道的那样,他拥有游戏中最大的原型之一。在花费了几个小时和数杯甜点之后,我用比例因子定义了所有内容,可以开始加载游戏查看结果了。将爬行机甲缩小(缩放系数 < 1)的代码中不会出现什么明显的错误,因此我决定将其放大(缩放系数 > 1),结果是:
估计你能看出来,他的腿长得跟麻秆一样细!这都没折断可真是个奇迹!回到我的爬行机甲腿部定义中,我没能找到任何错误,因此我选择在异星工厂 Discord 的 Mod 开发频道寻求帮助。Klonan(Wube 开发团队成员,请参见这个页面,顺便来两瓶啤酒)甚至表示,若要让腿部能够正确缩放需要重写异星工厂游戏引擎的部分代码。同时,Klonan 建议我试试缩小它的比例,至少看看是否能奏效。好吧,来看一下:
我想你已经能意识到发生这种情况的问题所在,这和之前一摸一样!可见并不是所有的东西都能拿出来直接用,这可能会带来一些有趣的副作用。我相信这一问题将在未来的更新中解决。同时,我也在开发者那里注册了错误报告。我可能在未来的更新中回来,以展示爬行机甲的进展以及他的腿部康复疗程。
Mod 聚焦:蜘蛛机甲工程师(Spidertron Engineer) Robynthedevil
一种仿制自节肢动物的合成种族正在这个星系肆虐。只需一个该硅基生命形式的成员就可以将整个星球的资源转化为切割的金属和极端的酷热,旨在服务于一个单一目的:生产更多。这一机器人将屠杀在任何敢于游荡在外的当地动植物,并有条不紊地制造愈加复杂的机械和更加强大的武器。这个过程将一直持续下去,直到他们最终有能力将无数的克隆混蛋发射到群星之间,来寻找丰富而毫无戒备的行星。蜘蛛机甲冷酷无情而且不屈不挠。他们既不会睡觉,也不会怜悯。他们的工厂必须扩张。
我们所了解的异星工厂故事情节与当今许多其他的基地建设/生存游戏相似:工程师坠毁在未知的世界中,需要求生并发展到足以逃脱的技术(读作:发射大量火箭)。这是一个引人入胜的主意,但是在我们游玩异星工厂游戏的核心内容时,它始终处于思维的边缘。
从游戏一开始,蜘蛛机甲工程师就用一台冷酷的蜘蛛机甲机器人取代了我们所熟知的工程师。沿途有一些技术可以升级您的角色(即蜘蛛),以替换原版的护甲升级。即便是这样相对较小的变化,也确实给游戏带来了完全不同的感受。有了这个 Mod ,我发现自己可以更轻松地进行更大范围的游戏。我知道这并不适合所有人(特别是蜘蛛恐惧症患者),但对我来说,它只改变了游戏里很小的一部分,而使得前提和结局变得非常引人入胜。
内部机制:蜘蛛机甲武器切换器(Spidertron Weapon Switcher) Xorimuth
蜘蛛机甲武器切换是一个让蜘蛛机甲得以发射任何类型武器的 Mod。在这篇文章中,我将讨论其背后的工作方式。但首先,来看一下它在实际操作中效果如何:
如果您以前从未编写过 Mod,那么您可能不了解的一点是,异星工厂中的许多内容在 游戏运行时 是无法改变的,其中包括武器射程,机器的贴图以及对我而言重要的:载具的武器槽。Mod 当然 可以 改变蜘蛛机甲的武器,但是只能在游戏的加载阶段通过创建一个全新“类型(type)”的蜘蛛机甲来改变。
我克服这种限制的方法是创建五种“类型”的蜘蛛机甲,每种武器一个。因此,当你在游戏中切换武器时,Mod 实际在做的事情是:
- 保存有关蜘蛛机甲的所有相关数据,例如其库存内容和位置
- 删除当前的蜘蛛机甲
- 创建一个装备着下一种武器的全新蜘蛛机甲
- 将所有保存的数据插入新的蜘蛛机甲中
所有这些步骤都在一个时间片内完成,这可以使玩家感到(几乎)无缝切换。(还某些副作用,例如所有远程控制装置与蜘蛛机甲的连接断开,都需要通过本文所述范围之外的进一步工作来弥补。)
蜘蛛机甲有关的一切数据传输都很好,但有一个是数据是没有意义的:弹药。若你已经装备了霰弹枪并装填了 300 发霰弹弹药,当你切换到了火焰喷射器时,霰弹弹药不应(也不能)转移到火焰喷射器弹药槽中。
为解决这个问题,我准备了一张表格来记录每种蜘蛛机甲。在步骤 1 中,当前弹药清单存储在键值为“霰弹枪”的表格中,而在步骤4中,获取了键值为“火焰喷射器”下的弹药,并将其放入新的蜘蛛机甲的弹药槽中。玩家拿起蜘蛛机甲时,该蜘蛛机甲的所有弹药并将回收至玩家的背包中,如果背包里没有足够的剩余空间,则将其洒在地上。
征稿
供稿流程自上周以来进行了大幅度的完善(事实上现在实际上已有一个不错的流程了)。如果您熟悉 GitHub,请查看 project repo,其中介绍了您应如何供稿。如果您并不了解 GitHub,也不必失望,Discord 中的成员随时愿为您提供帮助。只需加入并询问大家!如果您想知道要写些什么,请查看第一期,在底部有为您提供的建议。
在此我要特别感谢 Thaui,Dr.MagPie,xthexder,Lovely_Santa 和 Conor 在整个行动中的协助,他们在一两天内就建立了这个出色的网站并投入运营。另外,感谢 Landmine,给了我们制作了 Logo!