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

时间:2018-11-03 18:20:18

标签: java lwjgl

与游戏Factorio类似,我试图创建“ 3D”地形,但是当然在2D Factorio中似乎做得很好,创建了看起来像enter image description here

的地形

在这里您可以看到地形的边缘及其非常明显的弯曲。在我自己的2D游戏中,我一直试图思考如何做同样的事情,但是我能想到的所有方法似乎都很慢或占用大量CPU。目前,我的地形如下所示: enter image description here

简单地在屏幕上进行纹理处理和绘制的2D正方形,每个正方形为16x16(从技术上讲,水是背景,但现在不重要了),我怎么能开始将地形更改为更像Factorio或其他“ 2.5” D”游戏,他们是否只是简单地使用不同的纹理并检查图块相对于其他图块的位置?还是他们采用不同的方法?

在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

我是Factorio开发人员,但我没有这样做,所以我只能告诉您我的一般认识。

有一种基本的实现方法,然后有一些可选的改进。

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

  1. 要处理的每种情况的纹理集
  2. 一组规则“本地拓扑->纹理”

因此,您拥有了2D瓷砖贴图,并在其上移动了一个窗口,只要它与图案匹配,就可以应用适当的纹理。

您可能不想在每一刻都在运行时执行此操作,而是在生成地图时(或地图线段-Factorio在需要时生成新区域)全部计算。

我将用你的照片和我的绘画技巧来演示。

这是此类规则的示例。绿色是土地,蓝色是水,灰色是“我不在乎”。 实际上,您将需要很多这样的规则来涵盖所有情况(我认为100 +)。

A rule for terrain texture selection

对于您而言,此规则将适用于两个突出显示的位置。

enter image description here

这是拥有正常工作的发电机所需要的。

您需要在这里做出一个决定。如您所见,海岸线在图块内部而不是在图块之间延伸。因此,您需要选择是贯穿最后一块地砖还是最后一块水砖。因此,该图片可能是这两张地图的结果(我的模板示例来自左图):

Shoreline_drawing

两个选择都可以。实际上,Factorio最近从左侧的“陆上海岸线”切换到右侧的“水上海岸线”。请记住,您将需要调整步行/寻路以解决此问题。

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

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

另一个更高级。尽管基本算法已经可以为您带来不错的效果,但有些事情是它做不到的。 您可以使用跨多个图块的较大模板和较大纹理。这样,您就可以绘制较大的地形块,而不受所有图块都需要可与所有其他(有效)其他图块连接的事实限制。

答案 1 :(得分:1)

您提供的示例仍然是2D纹理(技术上来说)。但是,由于纹理本身是“精美3D”,因此它们似乎是3D / 2D倾斜的。

因此,最好的选择是升级纹理。 (并为实体增加阴影)。

编辑:

通过检查“平铺”是否为边缘,可以对所需的边缘进行布局,如果是,则可以在背景顶部添加边缘纹理。而实际的瓦片本身也是平面图像(就像水一样)。之后添加一些阴影,然后完成3D幻觉。

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