介绍世界的生成方式

原文

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

(未完待续)

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

  1. 这些坑别踩!游戏随机地图生成开发经验分享

    当时虽然简单实现了目的,但后来自己也感到世界地图的呈现并不十分完美,恐怕也就只值95分.为了精益求精且给自己找点事做,便想对大地图的呈现方式做些微调. 之前略有瑕疵的世界地图 为何选择2D? 素材好找 ...

  2. [Unity]Roguelike随机地图生成(一)

    初步随机地图生成 基础房间生成 房间门的判断 基础房间生成 首先需要确定每次房间生成都是在上一个房间的哪个方向上生成,为此需要声明一个枚举值来记录上下左右四个方向 创建脚本RoomGenerator, ...

  3. 随机地图生成--自己的一次尝试

    最近照着网上的元胞自动机随机地图生成算法自己尝试着写了一下,发现效果不是很满意 local count1 = Tile_map.CheckNeighborWall(i,j)--1层墙的数量 local ...

  4. 《Dead Cells》的随机地图生成

    而对于平台动作(Platformer)类型的 Roguelike 来说,精妙的关卡设计显得更加重要了,于是大家也在考虑其它方式,比如预生成大量关卡模块再随机选择.整合,或者混合两种方式来做.预生成关卡 ...

  5. 一个简单的2DRoguelike游戏随机地图生成思路

    首先我们要先明确一张Roguelike地图里包含的最基本元素是什么,我的理解是房间与通道.我们可以将一张地图抽象成是房间与房间通过通道来连接. 那么基于这个大前提,我的思路如下. 以图中红色格子为中心 ...

  6. 游戏随机地图生成方法

    对于大多数的游戏来说,内容的消耗都是开发商非常棘手的问题,而随机生成地图的做法则大大增加了游戏的可重复性,并且可以丰富玩家的体验.最近,海外一名资深开发者在博客中分享了他做随机生成地图的方式,以下请看 ...

  7. 随机迷宫生成算法浅析

    摘要 本文对随机迷宫生成进行了初步的研究和分析,并给出了两种不同的生成算法.最终的算法结合了图的深度优先遍历.通过对比两种算法之间,可发现,在实际问题中,结合了离散数学的方法往往非更有效率且效果更佳. ...

  8. 【大作业】基于MATLAB的PRM算法的路径规划设计(随机地图+GUI+源码+报告)

    基于MATLAB的PRM算法的路径规划设计 下载链接: [Matlab期末大作业]基于MATLAB的PRM算法的路径规划设计(大报告+源代码+注释) 课题内容和要求 学会运用MATLAB 解决实际优化 ...

  9. unity c#《自己做游戏》之 设计一个可以生成复杂解密地图的随机地图系统 第一篇 设计地图规划,每日更新!!!

    随机地图,或是随机地牢,有很多实现方式.目前比较流行的方法是使用随机房间+剖分三角形加 prime算法生成. 还有一种方式就是反解有权图.个人认为反接有权图布局逻辑更可控一些. 需求 随机生成地图,且 ...

最新文章

  1. python简单代码演示效果-演示python如何创建和使用一个简单的元类的代码
  2. python 点击按钮采集图片_python多线程采集图片
  3. 从CLI监视OpenJDK
  4. Flask爱家租房--订单支付(支付过程)
  5. arcgis字段计算器无法赋值_Arcgis空间连接工具的妙用
  6. linux input输入子系统分析《四》:input子系统整体流程全面分析
  7. Linux IPC POSIX 共享内存
  8. RailsCasts中文版,#15 Fun with Find Conditions 使用hash为查询条件以便生成正确语法的SQL查询...
  9. Excel-查找和引用函数
  10. Vue3 京东到家项目实战第一篇(首页及登录功能开发) 进阶式掌握vue3完整知识体系
  11. 春风十里不如你、与IPC的邂逅
  12. 最好的网络拓扑制作软件
  13. eoLinker-AMS接口管理系统 项目管理教程
  14. matlab显示.mat格式多光谱图像
  15. 史上最全最新前端面试题(不定期更新,有问题欢迎评论区对线)
  16. 访问认证(三):Bearer
  17. 跟我学AngularJs:AngularJs入门及第一个实例
  18. 爱了,爱了,一款拯救直男的开源神器!
  19. html表格线条粗细,css 细线表格 css制作table细线表格常用属性
  20. Fabric 1.0源代码分析(40) Proposal(提案)

热门文章

  1. 微信不显示王者荣耀连接服务器,王者荣耀省级不显示,王者荣耀不用微信怎么登录...
  2. 说完列表说字典,说完字典说集合,滚雪球学 Python
  3. s7五杀大数据英雄_S7入围赛战报:首个五杀!LYN击败GMB
  4. 面试总结-拉开2014校招的序幕
  5. 添加网络计算机名,windows10系统,更改计算机名后,网络中看不见自己的电脑了。...
  6. java实现远程控制
  7. 西科大 软件体系结构内容总结
  8. linux 查看磁盘分区格式
  9. 删除word中一段话的空格
  10. 【软件下载】换新电脑记录下下载的软件时所需地址