介绍世界的生成方式
我注意到,几乎没有人知道如何在饥荒mod里建立新的地图,所以我想分享我的知识。如果在任何事情上我错了,请纠正我或给我信息.
世界生成的组成是?
第一部分: 预制物和静态布局
中英对照
预制物 –> Prefabs
静态布局 –>Static Layouts
预制物是,额…. 就本文来言是在地图上最小的单位,你在世界上看到的所有东西都是有预制物组成的.本文不准备创建任何预制物,只有说明如何让预制物显示在地图上.
静态布局是一系列的预设物安照特定的布局显示在地图上,每一次生成静态布局都是相同的.例:猪王,传输机零件.它们每次出现都是相同的.
译者注:猪王四周围的方尖碑都是相同的位置.
这两部分合在一起是因为每次生成是都是相同的.
第二部分:房间与造型
房间是在生成地图时第一个开始随机生成的,它包含 contents (内容,包括预制与静态布局), tags(标签) values(地表).
房间的标签确定了这个房间的特殊性,而value确定了地表,你将会发现自己站在什么地表上.
contents 定义为一个表,包括下列变量,
变量名 | 介绍 |
---|---|
countstaticlayouts | 一个表,包括你想要在这个房间里的静态布局 |
countprefabs | 一个表,包括你想要在这个房间里的预制物 |
distributepercent | 一个小数,确定预设物分布的几率 |
distributeprefabs | 一个表,规定每个预设物的几率 |
prefabdata | 确定如何修改预制物 |
乍一看,distributeprefabs和 countprefabs 看起来是相似的,但实际上他们是作用于两个不同的时候的.
distributeprefabs 不需要为每个预设物设置特定的数量,当你需要他均匀分布时使用这个.
例:在森林里所有的树时均匀分布的,但是没有一个特定的数量.
countprefabs当你需要一个特定的数量时使用.
countstaticlayouts类似于countprefabs,当显然它是用于静态布局的.
prefabdata用于设置预制物的起始条件,例:树木是一级还是两级,蜘蛛洞穴一级两级?
当然,你应该不需要使用prefabdata来控制树木的生长状态,因为不使用的话,会随机生成树木,我想……没有人会喜欢一个树林里所有的树木都相同吧?但是,你应该使用prefabdata来控制蜘蛛洞穴的生成,比如全部是一级的.
造型是介于静态布局与房间中的一种,它是在生成地图时生成的,大小有点像静态布局,但是他的随机方式像房间.
第三部分:任务,锁和钥匙
一个任务有5个重要的组成部分:
变量名 | 描述 |
---|---|
Locks | 确定任务是如何连接到其他任务的. |
Keys | 另一半,确定两个任务是否可以连接到彼此 |
Rooms | 本质上,这个任务由什么组成 |
room_bg 和 background_room | 用来充填其它区域 |
当世界生成时通过各自的task,检查key和locks,将可以匹配的task联系起来。
key和locks 对应的列表可以在locksandkeys.lua里找到。
key和locks主要是用来保持平衡的。
Rooms是用来填充整个世界的,你应当定义一个特定数量的Room。相反的 room_bg 和 background_room, 用来填充剩余部分,它们的数量是随机的。
(未完待续)