本文转自Unity Connect博主 超级汽水
一个简易的房间类 Roguelike 游戏地图生成系统
如果你还不知道《元气骑士》是什么游戏,也许你可以去看看这个视频
https://space.bilibili.com/87721937
地图显示方式
- 随机大小的矩形房间。
- 随机的房间数量。
- 通过走廊连接每个房间。
- 每个图都有 俩个特殊房间:“出生房”、“传送房”。
地图生成思路梳理
- 因为在原版游戏中房间并不是完全的正方形,所以我们在设计时要考虑到边长的问题。
- 虽然游戏中的房间数量是随机的,但是也是有一个范围的。所以需要按照生成地图的最终面积来做一个约束。
- 走廊连接算是游戏中的一个难点,因为走廊的长度是不确定的要在生成房间后根据房间的位置和大小来确定走廊的生成位置以及长度。
- 在游戏中,每一个大关卡包含多个小关卡,每个小关卡中又包含了多张地图,每个地图中又有多个小房间。这样说可能有点不太好理解我画了张图来帮忙理解:
实现思路以及简化
在之前已经发过俩篇文章介绍tilemap生成随机地图的方法,如果对tilemap不太了解可以先去看看:
使用tilemap制作随机地图(1)
使用tilemap制作随机地图(2)
整体的实现流程如下:
1 .根据用户定义创建一张足够大的地图 (这里的地图指每个小关所有房间所在的大地图)。
2 .假设大地图中所有位置布满大小相同的房间 (这里的房间边长一定要奇数,比较好操作),然后根据所需的房间总数来删掉多余的房间。