C# 在 2d 自上而下的瓷砖网格中生成类似湖的形状

问题描述

我是游戏开发的初学者,想使用瓷砖地图创建自上而下的游戏。我使用 Godot 作为我的游戏引擎,但通用的 C# 解决方案没问题。

我想在瓦片地图中生成湖泊,但由于我的经验不足,我想不出任何可行的想法。之前我尝试过使用 Simplex,但由于无法控制湖泊的生成位置,我决定不使用它。

性能有些重要,但世界将是有限的,而不是程序化的,类似于泰拉瑞亚。

我对任何在电子游戏中合理的想法持开放态度。

解决方法

因此,对于有限的世界大小,我可以为您勾勒出一种您可以尝试的方法。它不是特定于语言的,但您应该能够(轻松)使用 C# 做到这一点:

  • 平铺世界用位图表示:0=陆地,1=水
  • 要生成湖,请将起始图块标记为水并将其坐标添加到队列中
  • 从队列中取出一个点。对于那个瓷砖和每个方向,随机决定相邻的瓷砖是否也是水。将新添加的图块添加到队列中。
    • 通过不同方向的不同概率控制湖泊形状
    • 通过限制迭代次数或通过与起点的距离减少新水瓷砖的机会来控制湖泊的大小
  • 重复直到队列为空。

让我知道这是如何实现的 - 我只使用我的心智代码模拟器对其进行了测试,所以里程可能会有所不同;) 如果您在实施该方法时需要帮助,请随时提出。