【异星工厂】星期五报道 #385 - 小行星收集器


3楼猫 发布时间:2023-11-23 10:37:03 作者:Wube Software Language

您好,我们已经在FFF-381报道中展示了太空平台的工作方式。这次让我们更多地谈谈使这一切成为可能的机器 —— 小行星收集器。

概念起源

当我在创造早期的太空平台概念并试图确定可移动飞船的外观时,我们知道我们想要通过某种方式将小行星的一部分运送到飞船上,但尚未决定如何执行这个想法。在这个早期阶段,所有新结构都有非常简单的图形。

尽管游戏从灰色盒子开始,但最好尽快用看起来更合适的东西替换它们。最早的替代物通常是一些具有合适形状的快速模型,其实就是一些拼凑件(将现有图形修补在一起),或者来自我制作的模组。小行星收集器的功能当初由侧装结构实现。如果我们持续这样的设计,那么它可能会使用某种牵引光束来拉动小行星块。牵引梁(或电动抓钩等)是这种情况的简单后备选项,因为它是一个简单的动画和编码概念。

【异星工厂】星期五报道 #385 - 小行星收集器-第0张

但牵引光束的风格感觉不太适合异星工厂,它比较魔幻、空灵、科幻。我想要一些更机械的东西,阿尔伯特同意了我的建议,牵引光束的设计因此被淘汰了。并不是说异星工厂没有高科技的东西,只是如果可以的话,最好以一种更具体、更工业化的方式来做。

我制作了很多替代方案,这里有 5 个,以及一些概念验证草图。

1.火箭制导鱼叉或袋子

小型火箭在撞击时将小行星块包裹在袋子中,然后用拖绳将其拉至收集器口。

【异星工厂】星期五报道 #385 - 小行星收集器-第1张

2. 一个像插入器一样的长臂

就像一个插入器,但专门用于抓取小行星块。它将把大块放入机器“嘴”中或直接放在后面的皮带上。

【异星工厂】星期五报道 #385 - 小行星收集器-第2张

3. 桨

与插入器臂类似,只是它不需要抓住行星块,它只需将其击入收集器的方向即可。

【异星工厂】星期五报道 #385 - 小行星收集器-第3张

4. 凹口

收集器本身只是平台一侧的一个洞,仅收集碰巧落入其中的行星块。它与一组楔形块配对,你可以将其添加到平台的前面,如此一来,当你在移动并且有行星块碰到楔子时,你就可以将行星块引导到收集器孔处。这个想法一开始听起来很有趣,因为它使船的前部形状变得很重要,但缺点是大多数船最终都会变成 V、W 或 WWW 形状。

【异星工厂】星期五报道 #385 - 小行星收集器-第4张

5.灵活的蛇臂

与插入式抓臂不同,它会作用在与小行星块和平台本身相同的平面上,这意味着它需要蜿蜒绕过任何突出的防御设施。这是一个有趣的建造选项,因为平台形状会影响拦截时间。

灵活的抓臂可以做一些很酷的事情。我从一组草图中寻找不同的机器结构和收集器嘴形状。这种抓臂本身与现实世界中蛇形机器人的设计最为相似,由于它固定在一端,因此被称为“触手”。还值得注意的是,我将粉碎功能从小行星收集器移到了专用机器上,这使得破碎机可以被一些游戏后期的高级配方再次使用,并扩大平台的中部。

【异星工厂】星期五报道 #385 - 小行星收集器-第5张

以下是我向科瓦雷克斯展示的概念创意。到目前为止,大家对蛇形或触手的想法持怀疑态度,因此我必须解释概念创意来赢得人们的支持,否则我们可能会回到原点。幸运的是,科瓦雷克斯一看到我的想法就同意了,其他人也被说服了,赫鲁萨的介入使这一切成为现实。

【异星工厂】星期五报道 #385 - 小行星收集器-第6张

从概念到现实

现在退一步,让我们谈谈游戏玩法是如何同时展开的。

作为平台生产周期的一个重要特征,收集器在埃伦德尔的手中以灰盒的形式出现,那是一个更简单的时代。那时小行星还不纳入考虑范围!所以这台机器只是一个组装机,不断地凭空制造出碎片。

自从我们在游戏中加入了小行星,第一个收集它们的装置就会在它周围投射一个简单的矩形。任何进入的行星块都会立即被传送到收集者的库存中。没什么华而不实的东西,但足以进行游戏测试。

下一个进步是机械地收集小行星。雷塞丁通过实施埃伦德尔早期的鱼叉想法拉开了这个设计想法的序幕:

视频01

由于有效覆盖范围相对较长,最佳策略是将收集器远离收获过量的平台边缘。这种设置几乎不需要玩家做出任何决策。整个边缘区域可以专用于炮塔,而内部则提供足够的空间来卸载和处理行星块。这么做最重要的原因是,鱼叉或抓臂在平台层面上越过其他建筑物寻找大型行星块的视觉效果很是可疑。

合乎逻辑的结论是收集器应该有权利进入开放空间。这恰好在防御和资源收集之间创造了一种有趣的动态,并奖励有效的传送带。就在那时,埃伦德尔正在整合一种更具有机感的、可弯曲抓臂的概念,最终将其纳入游戏中。

触手之日

现在轮到我来思考如何实现这一切了。通过列出预期的行为,我可以将任务分成多个单独的功能 - 就像您在玩异星工厂时所做的那样。根据增量自行移动。

⚙ 创造出抓臂样式 —— 仅此而已,没有其他行为或功能。

⚙ 移动抓臂。

⚙ 将抓臂绕平台摆动,不会夹住或碰撞。在所有情况下都可行吗?

⚙ 我们需要使收集器不会因为争夺相同的行星块而浪费时间。

出于易扩展的原因,我决定将特定姿势表示为分段线 - 从底部开始的一系列角度。此外,每个姿势都包含一个扩展值。这样抓臂就可以沿着曲线的长度上下滑动,而无需计算任何新的点。

抓臂姿势表示为角度和伸展量列表,用于绘制收集器臂的连杆旋转。

【异星工厂】星期五报道 #385 - 小行星收集器-第7张

【异星工厂】星期五报道 #385 - 小行星收集器-第8张

接下来我尝试添加一条控制曲线,使抓臂运动产生一些摆动,但结果有点......

视频02

计划变更

在考虑如何完善收集器时,我想它应该可以在扩展后收获额外的行星块。由于抓臂表示为一系列角度,因此我们可以通过简单地混合每个单独的角度来规划起始姿势和所需姿势。

理想情况下,我们希望抓钩以一致的速度移动。然而,由于是混合角度,所以速度变化很大。根据抓臂延伸到 10 个单位还是 20 个单位,将底座旋转 5° 会导致完全不同的结果。尽管移动收集器的弧线看起来是圆形的,但实际上它是一个复杂的形状,不容易测量。

因此,我找到了一种方法,可以快速将所有角度加权在一起,并将抓臂位置投影到一个圆上。然后,我测量圆周上两个抓臂姿势之间的距离,以获得对行进距离的一致估计。

视频03

还有一个设计相关问题,抓臂会以很多不同的方式在两个姿势之间移动,这是因为上面提到的角速度关系。抓臂越短,转动的速度就越快。但弧线的缩回和伸出也需要一些时间才能达到最佳距离。

我花了一些时间尝试解决这个数学问题并给出真正的解决方案。然后我意识到我可以用更少的努力达成目标。我不用寻找绝对最佳的弧线,而是以某个固定的间隔选择弧线,计算每个弧线的距离并选择最佳的那个。在实践中,您无法判断路径是否与最佳弧线相差 ±0.5 个单位。

【异星工厂】星期五报道 #385 - 小行星收集器-第9张

显示可移动的三个路径。转弯半径的增量被突出显示。

但在这个时候,我们开始争论因此而产生的游戏性能成本。科瓦雷克斯非常喜欢抓臂,但希望确保所有相关链接不会影响拥有数十个平台的大型工厂。为此,我们可以使用上一步骤。由于我们已经确保抓钩以可预测的速度行进,因此我们不需要每次更新其位置。一旦找到所需的路径,我们就会存储其距离。然后我们增加一个内部数字,该数字将会记录抓钩沿着这条路径移动了多远。仅当抓臂对玩家可见时,我们才会评估实际的抓臂位置中值。

绕过障碍

完成对抓臂运动的规划后,我们开始讨论路径问题。最初的想法是拉出一个经典的 A* 并绘制出所有相邻的图块,以找到从每个图块到收集器的最短路径。然而,图块占用了大量空间,并且生成的路径为锯齿状,看起来很糟糕,需要进一步处理。此外,收集器经常位于开阔的地方。每次有行星块漂浮时就逐块遍历有些大材小用。

根据这一观察,我决定制作出一个导航网格。导航网格将覆盖大矩形开放区域。然后它投射光线来查找这些矩形角之间的所有直接连接。每当玩家构建平台图块时,导航网格的构建和维护都需要一些计算能力,但作为回报,更频繁的寻路速度会大大加快。更好的是,我们在导航网格上找到的路径是最短、最简单的。

【异星工厂】星期五报道 #385 - 小行星收集器-第10张

视频04

旧的图块导航,锯齿状的路径,最终的导航网格系统。

为了使多边形导航网格路径更完美,我使用非均匀 B 样条 (NURBS) 对其获取近似值,它可以将尖角变得平滑。 NURBS 的优点在于它非常可靠地紧贴引导点。这使得它在 3D 建模应用程序中非常受欢迎。

除了平滑之外,我还使用了一些其他小技巧来增强外观:

⚙ 每个收集到的块之间具有最小的回撤距离(以防止被“吸尘器”收集)。

⚙ 当目标位于直线方向时,抓钩水平回撤并着陆(以防止被“pogo”收集)。

⚙ 随机地稍微摆动每只抓臂,以阻止它们同时转弯。

⚙ 随机地稍微摆动每只抓臂,以阻止它们同时转弯。

视频05


终极捕获器

我刚开始使用收集器时遇到了一个问题,那就是平台速度。有了高质量的推进器,平台可能会移动得很快,以至于炮塔无法足够快地转动,以及时射击即将到来的小行星。我知道这对收集器来说也可能是一个大问题。

收集器不能只是每帧测试每个块,还需要缩小选择范围。为此,每次产生新块时,它都会向前投射一条线,并沿途向告知所有收集器。

由于限制因素是抓臂的可用性,因此抓臂在完成之前的任务时会检查传入的行星块。这种设计为我们提供了空间,可以根据给定的抓臂到达该位置所需的时间来向前预测行星块的位置并安排准时会合。此外,超快的行星块不再构成问题,因为即使是那些也会提前得到消息。抓臂移动到位,并在块接触收集区域时拦截它们。

视频06

通过与收集器的连接预测块移动(加速)。

结论

一旦完成所有主要工作,只需调整一些小的细节即可。比如建造限制、蓝图、复制粘贴等。由于 Navmesh 和 NURBS 游戏设计系统都是新代码,因此需要编写大量测试、追踪边缘情况并微调性能。

总的来说,在我们的游戏测试中,我们很高兴地说,小行星收集器的工作做得非常好,为平台提供了我们所希望的独特外观和游戏玩法。

一如既往,我们期待收到您的意见。

#steam游戏#     #异星工厂#    #wube software#   #开发日志#  #自动化# 


© 2022 3楼猫 下载APP 站点地图 广告合作:asmrly666@gmail.com