【饥荒】关于随机地图生成的方式

来源:互联网 发布:江西 知乎 编辑:程序博客网 时间:2024/04/28 15:50

介绍世界的生成方式

原文

我注意到,几乎没有人知道如何在饥荒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, 用来填充剩余部分,它们的数量是随机的。

(未完待续)

2 0
原创粉丝点击