这个组件是做什么用的?
先直接看最终效果图吧这次给大家的是基于艾兰岛编辑器制作的随机地图生成组件,有以下几点特色:
- 每次调用生成函数都将生成不同的房间组合。
- 可通过参数调整生成房间的广度。
- 记录所有房间到数组中,方便后续操作
- 每次随机地图生成后,都提供字符地图
- 图中亮红色的方块,是表示需要封堵的门
随机地牢的算法有很多种,本人参考了网上的的一些算法,但受限于艾兰岛编辑器,在数据结构,代码逻辑上基本重写了。
此外,一般的随机地牢系统是连房间,过道都是通过代码生成的(其实这个我也写了一个),但艾兰岛在0.12版本中,提供了焊接功能(英文叫baking,就是一般建模软件里的“烘培”功能),如果将房子,走廊都焊接为实体后,生成算法最消耗资源的创建实体,就能大大降低消耗。
这个组件的随机地牢算法不是完美算法,但个人认为不完美的随机算法,才是实用的算法
本次组件本质来说,只提供了核心算法+思路,组件拖入游戏时,会发现许多大的建筑焊接方块,这些都是为了演示用的。
如何使用组件
组件安装
下载地址:链接:https://share.weiyun.com/5Pupg5a 密码:5evbb2
0.12版本的组件文件格式与目录都修改了,可以通过艾兰岛编辑器,直接打开本地目录
将提供的yland文件放入Scenarios目录下,重启游戏就能打开,你可以将核心功能保存为个人组件重复使用(后续可以通过创意工坊直接下载组件)
组件制作流程
- 制作房间模板
- 实体模板吸入房间模板
- 在实体模板中调用 组件的 房间模板初始化函数
- 游戏开始-> 调用地图生成函数
房间模板制作要求
- 每个房间的中心点必须在左下角顶点。
tips:如何设置焊接物体的中心点在左下角:
每次在选中要焊接的物体(或者编辑焊接时),按住ctrl,鼠标单击左下角方块2次,此时左下角方块成为所有方块中最后一个选中的物品,焊接后,中心点就是最后选中物体的中心点(包括旋转)
- 必须保证焊接后的房间旋转都是 0,0,0(这个也与最后一块选中物体的旋转有关)
- 在拖入的组件中,各位会看到许多焊接好的地基样子的方块,这些示例是展示也是建议,各位在制作房间时,不同方向的门都需要单独制作要给房间。
组件函数调用说明
组件只需要关注2个函数:房间模板初始化函数,生成地图函数。
2个函数都在随机地牢系统 中
房间模板初始化函数
在实体模板中调用(必须保证实体模板中已吸入搭建好的房间)
参数
参数 | 类型 | 格式 | 是否必须 | 说明 |
---|---|---|---|---|
room_template | 逻辑 | 必须 | 按图直接使用此对象 | |
e-co | 数值 | 非必须 | 东边的门距离房间右下角方块数,不填表示此房间在这个方向上没有门 | |
s-co | 数值 | 非必须 | 南边的门距离房间左下角方块数,不填表示此房间在这个方向上没有门 | |
w-co | 数值 | 非必须 | 西边的门距离房间左下角方块数,不填表示此房间在这个方向上没有门 | |
n-co | 数值 | 非必须 | 北边的门距离房间左上角方块数,不填表示此房间在这个方向上没有门 | |
room-size | 必须 | 房间左上角在X,Z轴上与左下角的方块数 |
地图生成函数
参数
参数 | 类型 | 格式 | 是否必须 | 说明 |
---|---|---|---|---|
地牢广度 | 数值 | 必须 | 控制房间生成层数,数值越大,房间生成越多,最大广度必然只生成一个门的房间 | |
起始房间方向 | 字符 | 填 E,S,W,N中的一个,或者不填 | 非必须 | 不填则随机一个方向 |
起始房间坐标X | 数值 | 必须 | 生成房间时的方块数 | |
起始房间坐标X | 数值 | 必须 | 生成房间时的方块数 | |
长度比例 | 数值 | 必须 | 建筑物地基的方块长度 |
注:
- 长度比例可以理解为地基使用哪个尺寸的方块,比如313, 意思就是3个单位长度,1个单位高度,3个段位宽度的方块,每个单位为0.375
- 随机系统在计算时,都是按照1个单位来计算的。后续实际生成时,都会 计算坐标*长度比例 * 0.375