工业队长吧 关注:448贴子:941
  • 5回复贴,共1

船长日记#45:火车轨道(机翻)

只看楼主收藏回复

啊,大家。马雷克船长在这里提供了更多关于火车的信息——我们最期待的功能将在更新 3 中推出。这一次,我将向您介绍有关火车轨道、设计和历史的所有信息。我还有一些火车概念图等待您的反馈。
在我们开始之前快速宣布:本周是 Steam 上的模拟节,我们正在庆祝所有关于模拟的事情,所以如果您在市场上寻找更多模拟游戏,一定要看看!
火车概念艺术我们正在与一位设计师合作,为我们的火车模型设计概念艺术。我们的目标是让我们的火车看起来像是由以前见过火车但无法获得任何蓝图的工程师创造的——从本质上讲,就是从头开始重新发明它们。这种方法确保我们的列车具有独特的外观,并且不会与任何现有模型过于相似。
以下是柴油列车的四个概念。一种设计更小、更朴素,而另一种则更“笨拙”。我们正在考虑提供两台 T1 内燃机车。较大的一个可能是一个强大的爬山者,最高速度较低,非常适合应对陡峭的坡度。它们都是 10 米长。
第二是针对我们现代蒸汽机的设计。我们仍然不确定蒸汽火车最终是否是一种选择,但我们正试图看看它会是什么样子,所以这里有两种变体。第一个更圆润,是蒸汽机的经典之作,第二个更矩形。
让我们知道您喜欢哪一个以及为什么。如果您有一些真实世界的机车示例,我们应该从中汲取一些灵感,也请分享它们!
列车轨道设计火车的设计工作,尤其是火车轨道的设计工作,可以追溯到 2022 年,当时我们首次开始探索游戏中的火车概念。这项工作随后被搁置一旁,因为我们有更重要的事情要做,但今年,我们正在进一步发展它。
离散与连续在早期的原型中,我们已经在考虑火车轨道建造的一个关键方面:我们想要离散的还是连续的火车轨道?我所说的“连续”是指可以使用曲线自由构建并且不受网格限制的轨道。离散轨道将是单独的、预定义的、网格对齐的部分。
离散(左)与连续(右)火车轨道示例
我们一直在玩和研究许多与连续轨道构建有关的游戏。我喜欢制作漂亮而平滑的火车轨道,它允许任何方向和转弯半径,并为设计铁路提供了很大的自由度。
然而,我还记得由于碰撞检测不精确和捕捉不良,使用连续铁轨创建复杂的火车轨道交叉口非常繁琐且令人沮丧。例如,从 A 到 B 构建一个段是不可能的,但从 B 到 A 的同一段突然就可以了。
离散轨道的优点是它们提供精确且可重复的构造规则,从而更容易一致地设计复杂的轨道,尤其是在宫殿狭窄且每块瓷砖都很重要的情况下。
《工业队长》是一款基于网格的游戏,连续元素经常与其他基于网格的机制发生冲突,例如碰撞检测、复制/粘贴和蓝图。虽然实现连续轨道在技术上是可行的,但我们决定使用离散的片段。
简单与复杂作品离散的轨道部分必须是预定义的,它们将最终确定可以构建的内容。问题是,我们应该减少一些更简单的棋子,让它们的组合形成更复杂的交叉点,还是提供一组合理的交叉点,不允许轨道交叉?
从复杂性的角度来看,拥有一组不能相互交叉的预定义轨道片段会好得多。这将使我们能够将轨道制作为常规实体,并让现有的游戏系统处理诸如建筑、碰撞检测、倒塌等事情。甚至我们的 3D 艺术家也对能够为每个开关建模并手动交叉以使其看起来更逼真的选项感到兴奋(我猜他仍在努力提高他的工作安全性,就好像这是可能的一样),因此我们研究了这个选项。
我们的 3D 艺术家在推销我们的十字路口如果可以手动建模时会看起来多么美丽时提到了这张照片。如果您不知道,这些被称为铁路钻石,您可以在此视频中了解有关它们的所有信息。
因此,我们开始设计不同种类的轨道件和交叉路口,效果相当不错。每个轨道部分都由一条曲线表示,该曲线必须从网格点开始和结束,并且其结束方向必须是 45° 的倍数。这将为我们提供一个 8 向铁路网络。我们还为双轨交叉口准备了一套类似的设备。
用于 8 向旅行的初始离散火车轨道件组。黑线是需要在网格点上开始和结束的中心曲线。为简单起见,省略了轨道枕木和导轨一组扩展的双轨交叉路口。
请注意,我们可以使用 90° 旋转和翻转(反射)来获取此处未显示的所有其他方向。
接下来,我们想考虑添加一个不那么紧密的半径。然后是一个 UI 问题,即如何让玩家选择正确的棋子。
似乎这还不够,我们实际上在考虑支持超过 8 个基本方向。让列车网络只能以 45° 为增量,感觉限制性太强,视觉上不令人满意。因此,我们做了一些原型,结果发现 x:y 的比率为 1:2 和 2:1 (27°) 是可能的,它允许在 16 个方向上铺设轨道。
使用 16 个方向的半圆原型。
这是棺材上的最后一颗钉子,用于非重叠的轨道件。现在,就27°轨道而言,列举以前设计的所有交叉点是完全不可行的。
单一但重叠的火车轨道(获胜者)因此,我们放弃了所有这些原型,并回到绘图板,设计了一组最小的部件,可用于构建所有先前设计的交叉路口等。幸运的是,没过多久就到了这套:
一套最小的火车轨道件(初始版本)。使用此设置并允许 90° 旋转和翻转,可以在所有 16 个基本方向上构建,并且所有先前显示的交叉点都可以由这些方向组成。
与之前的碎片海洋相比,看到如此小的一组轨道非常令人满意,尽管需要进行自定义碰撞检测以允许它们重叠。
这组轨道真的很强大。新的第 16 圈允许在没有任何额外棋子的情况下按两格移动,而添加一个直线棋子可以移动任意数量的格子。唯一需要的特殊部分是移动一格。
由两个 27° 转弯组成的 Shift-by-Two-tiles 示例。
设计开启离散网格有 16 个方向很棒,但它带来了一个关于转弯的问题。请记住,每个棋子都需要在一个网格点上开始和结束。现在,让我们考虑一下转弯。
流行测验:如果你在一个半径为 14 的矩形网格上画一个圆,那么这个圆将恰好相交多少个整数坐标(网格点)?提示:至少会是 4 个,对吧?在 0°、90°、180° 和 270° 处,该点恰好距中心 14 个单位。还有吗?也许在 45°?不。没有更确切的交叉点。45° 处的点的 x 和 y 坐标将为 r * sin(45°),它永远不会是整数。
这意味着将一个圆沿其周长以 45° 的增量捕捉到 8 个网格点将导致变形。更糟糕的是,如果我们将一个圆捕捉到 16 个网格点,它将变成我们所说的“土豆”形状。你得到多少土豆形状取决于半径。一些半径是幸运的,导致马铃薯相对较少。但有些人是不幸的,完美的圆恰好在网格点之间,从而产生真正的土豆。
将圆捕捉到圆周长周围的 8 点和 16 个点到整数网格的示例。请注意,对于半径为 14 个单位的单位,畸变不如半径为 18 的畸变那么严重。
从上图中,您可以看到,网格对齐的细分越多,变形就越大。我们仍在考虑提供 45° 和 27° 段,以提供灵活性和流畅性之间的选择,具体取决于播放器的偏好。我们甚至可以添加 90° 转弯,以实现完全无失真的转弯。你想使用它们吗?
圆的 8 个(左)和 16 个(右)细分的比较。16 向明显更像土豆形状,但为潜在的叉子提供了两倍的连接点。
我们检查了从 14 到 30 的所有偶数半径,以确定当分为 16 个网格对齐的段时,哪个效果最好。大约一半的测试半径是可以接受的,但我们的目标是将可用的半径选项限制为 2 或 3 个,以减少独特列车轨道件的数量。最终,我们选择了 14、22 和 30 块瓷砖。此决定是与坡度约束一起做出的,因此请继续阅读以了解更多信息。
年级在设计火车列车部件时,坡度(坡度)很重要。动态地形和高程工作是 Captain of Industry 的两大特点,因此我们需要轨道来穿越不同的高度。正如之前的船长日记 #44 中所解释的那样,我们决定采用最陡峭的 1:8 斜坡(12.5% 坡度),这偏陡,但在游戏中效果很好。我们还决定包括 1:16 (6%) 和 1:24 (3%) 的不太陡峭的坡度选项,以增加铁路设计和机械的深度(有些火车可能太弱而无法爬上陡峭的坡度)。在您阅读有关成绩转折的信息后,这些成绩选项还有其他原因会更加明显,但我们不要太超前。
直线轨道上的坡度相对简单,我们需要 3 种类型。首先是“坡道起步”部分,将坡度从平坦变为 12% 坡度。第二个是“坡道”部分,它只是延续了这个斜坡。第三部分是“坡道末端”,从坡度开始,到平坦结束。
我们使用的一个技巧是,坡道起点和坡道终点部分仅增加 0.5 瓦片的高程,而坡道部分的增量高度为 1 瓦。这个看似武断的规则有两个好处。首先,坡道起点/终点件的长度只能是原来的一半,因为它们不需要那么高,从而节省了空间。其次,这消除了第四块,该块将开始和结束是平坦的,但会改变一个格的高度。我们现在可以从斜坡开始和斜坡结束来组成这首曲子。
以半格高度结束的坡道如何使坡道起点/终点部分变短并消除上升一格的部分的示例。
为了达到 1:8 的目标坡度,坡道片必须长 8 格,这对于 0° 片来说很容易,但 27° 和 45° 的直线必须近似。45° 片长为 √2=1.41,我们最接近 8 的方法是做 6 * √2 = 8.49。27° 棋子的长度为 √5=2.24,我们最接近 8 的方法是做 4 * √5 = 8.94。这意味着斜坡件的坡度并不完全恒定为 12.5%,但波动略大。幸运的是,这并不是太明显。
弯曲的斜坡最后,火车轨道的残局老板离散化,弯曲的斜坡。正如我们在上一章中所确定的,倾斜件的长度需要为 8(或接近 8)才能符合 12.5% 的标准坡度,但半径决定了转弯件的长度,并且由于“土豆形状”问题,并非每个半径都合适。
我们在游戏中最紧凑的半径是 14 格,因为火车和货车模型会开始在角落相交,而且有更紧凑的转弯看起来太不现实了。如果我们做一些快速的数学运算,半径为 14 的圆的周长为 88。如果我们想要 16 个细分,那就是 88/16 = 5.5。好吧,这远不及 8,5.5 的距离将导致 18% 的等级。更糟糕的是,我们的 16 个细分实际上并不均匀;它们是 27° 和 18°,而不是 22.5° 的两倍,因此无论半径如何,16 个细分的倾斜曲线都是不可行的。
但是等等,还有希望!让我们考虑一下 8 向圆细分,得出 45° 的段。它们的长度都相同,是 88/8 = 11。可惜,这也不接近 8,但也许我们可以完成这项工作,因为有倾斜的曲线是有益的。为了使长度为 11 的转弯符合 12.5% 的坡度,我们需要准确地从该坡度开始,然后使其稍微不那么陡峭,但再次在 12.5% 处结束。这使得坡道变得有点“波浪形”,但事实证明它并没有那么糟糕,所以我们选择了它。
结论总之,我们开发了一种基于网格的列车轨道系统,支持 16 个基本方向、三个曲线半径和三个等级。轨道可以自由连接,形成复杂的交叉路口和列车网络。如果您想了解更多关于《工业队长》中火车主题的信息,您可以观看我们的直播录像,我将对此进行更详细的介绍。所有讨论的章节都带有时间戳,以便于导航。
如果您对此主题有任何疑问或反馈,我们很乐意在我们的 Discord 上听取您的意见。我还(几乎)每周周六 10:30 PDT 在 YouTube 和 Twitch 上直播,因此您也可以在那里提出问题。
下次,我们将讨论如何处理信号(火车交通规则);我们实际上正在研究无信号的列车路线,敬请期待!
马雷克上尉出来了。
PS:马雷克上尉将于8月14日左右抵达东京,进行高速列车的研究。如果你想出去玩和谈论火车(或其他任何事情),请在 Discord 上给我发个 DM!


IP属地:贵州1楼2024-08-06 17:36回复
    什么时候上线啊?


    IP属地:安徽来自Android客户端2楼2024-08-26 14:32
    收起回复
      2025-05-13 06:16:41
      广告
      我在他那个更新上面看到这个的英文版


      IP属地:安徽来自Android客户端3楼2024-08-29 18:02
      回复
        也没有讲什么时候更新。


        IP属地:安徽来自Android客户端4楼2024-08-29 18:02
        回复


          IP属地:贵州来自Android客户端5楼2024-09-02 01:37
          回复