创建 2D 倾斜的自上而下地形而不是完全平坦的地形

Creating 2D Angled Top Down Terrain Instead of Fully Flat

类似于 Factorio 游戏,我正在尝试创建“3D”地形,但当然在 2D Factorio 中似乎做得很好,创建的地形看起来像这样

在那里你可以看到地形的边缘和非常明显的曲线。在我自己的 2D 游戏中,我一直在尝试思考如何做同样的事情,但我能想到的所有方法似乎都很慢或 CPU 密集。目前我的地形是这样的:

简单的 2D 四边形纹理和绘制在屏幕上,每个四边形都是 16x16(除了水,从技术上讲它是背景但现在它不重要),我怎么能开始改变我的地形看起来更像 Factorio 或其他“2.5D”游戏,他们是否只是使用不同的纹理并检查瓷砖相对于其他瓷砖的位置?还是他们采取了不同的方法?

在此先感谢您的帮助!

您提供的示例仍然是 2D 纹理(技术上)。但是由于纹理本身是 'fancy 3D',它们看起来是 3D/2D 角度的。

所以你最好的选择是升级你的纹理。 (并为实体添加阴影以获得额外的深度)。

编辑:

您询问的边缘可能是通过检查 'tile' 是否是边缘来布局的,如果是,它会在背景顶部添加边缘纹理。而实际的瓷砖本身也是一个平面图像(就像水一样)。之后添加一些阴影,3D 幻觉就完成了。

我希望这能回答您的问题,否则请随时提出澄清。

我是异星工厂的开发者,但我没有做过,所以我只能告诉你我所知道的大概情况。

有一个基本的方法,然后有可选的改进。

无论哪种方式,您都需要两件事

  1. 适合您要处理的每种情况的纹理集
  2. 规则集"local topology -> texture"

所以你有你的 2d 瓦片地图,你在它上面移动一个 window,只要它匹配一个模式,你就应用一个合适的纹理。

您可能不想在每个刻度的 运行 上都这样做,而是在生成地图(或地图段 - Factorio 需要时生成新区域)时计算所有内容。

我会用你的照片和我的 imba ms 绘画技巧来演示。

这是此类规则的示例。绿色是陆地,蓝色是水,灰色是"I don't care"。 实际上,您将需要很多这样的规则来涵盖所有情况(我相信有 100 多个)。

在您的情况下,此规则适用于两个突出显示的位置。

这就是您拥有一台工作发电机所需的一切。

您需要在此处做出一项决定。如您所见,海岸线 运行s 在瓷砖内部,而不是瓷砖之间。所以你需要选择它是 运行 通过最后一个地块,还是最后一个水块。因此图片可以是这两个地图的结果(我的模板示例将来自左侧):

两种选择都可以。事实上,Factorio 最近才从左边的 "shoreline on land" 切换到右边的 "shoreline on water"。请记住,您需要调整 walking/pathfinding 来解决这个问题。

现在请注意,示例中一个模式匹配的两个区域看起来不同。这可能是两个可能的改进使结果更好的结果。

首先,对于一种情况,您可以拥有更多不同的纹理并随机选择一个。您将需要在游戏保存中保留该选择,以便它在加载后看起来相同。

还有一个更高级。虽然基本算法已经可以为您提供不错的结果,但有些事情它做不到。 您可以使用跨越多个图块的更大模板和更大纹理。这样您就可以绘制更大的紧凑地形块,而不受所有瓷砖都需要连接到所有(有效)其他瓷砖这一事实的限制。