如何在我制作的随机2D地牢中确定正确的墙片?

2024-05-29 05:02:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python(和PyGame)制作了一个随机的基于2D瓷砖的地牢生成器,它是一个基本的2D墙壁和地板瓷砖阵列,工作非常好,充满了房间和走廊。但现在,我想在房间和走廊里走走,看看有没有更好的墙壁精灵(左上角,右上角,等等)

编辑:为了扩展一点而不进入整个过程,将创建一个空的2D数组(作为标高贴图),该数组由0个值(空)组成。随机大小的房间“放置”在二维阵列中的随机位置,并通过走廊连接。房间和走廊的值为1(楼层)。用一个正方形的墙精灵勾勒出房间和走廊的轮廓很容易,但我想要有形状的动态墙(角落、末端,诸如此类的东西)

我尝试了几种不同的方法——生成地下城,然后检查边并替换墙部分,或者在生成时在每个房间周围创建墙部分,但是在走廊与房间交叉的地方以及墙部分的确定顺序总是存在问题

我搜索过谷歌、Roguebasin等,但我找不到任何关于这方面的信息。我找到的每个随机生成器只使用2个简单的精灵(地板和墙壁)。我不想让我的“墙”看起来很普通。我还想避开预制房间,因为我希望它是完全随机的

我已经被困在这两个星期了。我正在用Python制作自己的引擎,有很多随机生成地下城的例子,但我想更进一步,让地下城看起来很棒,有漂亮的角落,水平和垂直的墙,等等

我是否将墙部件合并到生成中?或者我会用一个选择正确部分的算法检查生成的地图,还是有其他我没有想到的东西?还是我的拳打得太高了,我应该坚持一个基本的流氓式的设置吗

这是一个我希望它看起来如何(或类似)的模型。正如您所见,我对像素艺术和精灵并不陌生,但我希望计算机能够随机生成房间和走廊,并填充正确的墙部分:

Dungeon Mock-Up


Tags: 编辑过程数组pygame精灵房间瓷砖地牢
2条回答

我在Unity的Tile Rule功能上找到了一个视频,并为Tile设置了规则,以便Tile对周围的Tile做出反应

下面是我观看的视频的链接,它给了我这个想法: Tilemap: Rule Tile

我现在已经成功地将瓷砖规则编码到我的游戏中,效果非常好——地图随机生成,房间通过走廊连接,然后围绕地板瓷砖工作,根据我的规则指定正确的墙部分

希望这将成为任何从事同样工作的开发人员的路标

以下是随机生成的标高的屏幕截图,其中墙现在自动生成:

EverDark - walls complete

以下是我使用Excel设计的规则:

EverDark - tile rules

黑色背景上的记号表示该空间需要一堵墙,蓝色背景表示该空间需要一层楼。我不确定是否有更快或更好的方法,但这对我来说很有效

我不太明白你的意思,但我可以说你需要定义哪个“瓷砖”将与哪个瓷砖配对,就像你不想将地砖与墙砖配对一样

若你们让那个逻辑和代码一起工作,你们就可以让墙角和普通墙成对 或与墙壁配对的门件

还有很多视频,你可以制作一个地图,一个由灰度图像训练的人工智能,它可以理解你的墙壁、地面、门的位置,并生成像你的风格一样的地图

相关问题 更多 >

    热门问题