欢迎光临散文网 会员登陆 & 注册

Forest地形之一:总体说明

2023-03-05 13:26 作者:the鸭脖  | 我要投稿

如果玩家明白了地图生成的逻辑,那么TA就能在成为高手的道路上走出巨大一步,这很神奇。所以开了新坑,希望向大家介绍DST的地图到底是个什么东西。看过这个系列,预计可以解释地图上80%以上的现象,个人认为这样的文章是非常有价值的。

DST中,地上服务器称为forest(森林),地下服务器称为cave(洞穴)。本系列旨在完整介绍整个forest地形,本文是这一系列的第一篇。作为总体说明,本文为后续所有内容打下最初的基础,因此非常重要,建议仔细阅读。

我会以尽可能直白的方式帮助大家理解代码的逻辑,不过说实在话,我其实没什么看代码的功底,所以可能流于表面,甚至出错。反正是抛砖引玉,有大佬来做指正或讲解就更好了。



第一节:forest地形生成的总体说明

《Don't Starve 》(以下简称DS)和《Don't Starve Together》(以下简称DST)这个系列,有DS原版、巨人国、船难、猪镇、DST,而且还分DS洞穴、火山、冒险模式、DST洞穴等等,每一个世界都有自己的一张地图。因此存在一个“地图集(leveltype)”。

地图集基本可以算是最大的分类了,太大了以至于没有什么意义,这里也只是提一嘴。我们的讲解着眼于DST的地上世界。

这里建议大家,打开DST,点击“创建新世界”,跟着文章的脚步一一对照着学习,看看我们会遇到哪些东西!


一、世界(Levels)

1.id参数

创建存档遇到的第一个界面就是让你选“生存”、“无尽”、“轻松”、“荒野”或者“暗无天日”这些游戏模式。在代码中,用“id”这个参数记录玩家选择了何种模式。例如,生存模式的id是“SURVIVAL_TOGETHER”,无尽模式的id是“ENDLESS”,暗无天日模式的id是“COMPLETE_DARKNESS”。

2.name与desc参数

选择了游戏模式,接下来会看到创建世界的第一页,选完人数之后,让你填世界的名字什么的。所谓name参数就记录了玩家填写的存档的名字,默认为“xxx的世界”。desc参数是description,也就是玩家填写的世界描述,默认是空的。

3.overrides参数

再后面,就是调节各个项目的比例或类型。每个项目一开始都是默认值,当玩家自定义了这些数据时(例如将胡萝卜改为“大量”),自定义数据就会覆盖(override)默认值。这些修改的内容被整理为一个overrides表格,指明了世界上有哪些项目被玩家自定义。

4.世界(levels)文件夹

还有一些其他参数,就不再细说了。如果你打开DST的文件夹,map下面的第一项就是一个叫“levels”的文件夹,这个文件夹里基本包括了上面提到的那些参数。它从根本上规定了一个全默认的世界大致会是什么样,后续服务器生成世界的动作,基本是在此基础上进行的。

5.forest世界

完成各类设定后,就可以创建一个新世界了!进来看一看。

forest整个世界是正方形的,主要分为大陆、海洋、岛屿三部分。海洋地形通常是依托于大陆(和月岛)的走势而定,大陆(和月岛)是我们主要关注的区域。


二、地形(tasks)

现在我们的目光集中在大陆。稍微玩过游戏的朋友就会发现,整个大陆上有不同的“地形”。“地形”指的是“我现在在一片青草地上,有草和小树枝,有树,有花,还有浆果”,“我现在在一片森林里,有很多树,很多蜘蛛”,“我现在在一片草原上,有一些草和兔子,还有牛”。

青草地、森林、大草原……这是不同地形给人带来的最直观的差异,也是大多数人进入饥荒世界最初的体验。换句话说,整个大陆由一些不同的地形组成。后文中,我以“【 】”将地形名称高亮。

地形是如何生成的呢?创建一个世界,稍微探索一下,会发现这个世界上总有一两片青草地,总有一两片森林,总有一两片沙漠,而且四周永远都是海,听说远海还有个月岛,我是新手,没敢出海。

只要有这种印象,你就已经掌握了第一条规律:某些地形是必然会出现的。

做的好!事实上,forest的大陆有十种【地形】是必刷的,例如玩家们普遍知道每个存档都会有一只猪王。还有十种【地形】是随机的,在生成时“十选五”。即从十个里面选五个生成,另外五个则不生成。例如玩家会发现,有时地图上只有猪王那一个村子,而有的时候,除了猪王村,还额外存在一个没有猪王的小猪村,这说明这个小猪村就是随机出现的。

所以可以总结:DST的大陆一共有20种地形,10种必刷,另外10种“十选五”随机刷。每张地图的大陆由10种必刷地形+5种随机地形=共15种地形构成

大陆的地形构成

三、区块(rooms)

进一步,如果研究【地形】,就要弄清楚每种【地形】里面有什么,依旧从玩家最熟悉的猪王为例。观察下面的地图,怎样描述猪王所处的环境?

一只猪王

或许你会这样说:猪王在红色桦树林里的一片绿草地上。

关键在于,这片绿草地,是不是明显不同于它外围的红树林?是不是显得很突兀?

其实,红树林就是一片【地形】,这块突兀的绿草地告诉我们:就像【地形】与【地形】之间可以划分开来一样,【地形】内部同样可以被划分为一些更小的区域。这种相对独立的小区域,下文称为“区块”,并以“[ ]”高亮。

有了[区块]这一概念,就可以这样说:猪王所在的绿草地是【红树林】地形里的一个[区块]。[区块]构成【地形】,【地形】构成大陆,形成了这样简单的三级关系。

并不是所有的[区块]都起着举足轻重的作用,有核心区块和背景区块之分。例如在红树林这片地形中,绿草地无疑是一个重要的区块,因为上面有重要的资源点:猪王。这种重要的、能够体现该地形最重要特征和核心资源的[区块],本文称之为“主区块”。还有一些区域,没有什么重要资源,例如红树林里无非就是桦树而已,相对来说不重要,往往是一种“背景区块”。

首先确定世界上有哪些【地形】,再确定每个【地形】中的“主区块”,这些“主区块”不会占据【地形】中所有的空间,剩余的部分以“背景区块”填充

区块生成规律的简易模型

四、资源(prefabs)

再进一步,每一个[区块]内又有什么呢?例如,猪王所在的这片绿草地,上面有猪王、猪屋。

  • “猪王”,晚上会睡觉、玩家可以与它交易,有音效,有动画,是不可分割的工作单元。

  • “猪人”,由进食机制、战斗机制、寻路机制等等综合而成一个实体,有音效、有语言包、每个动作有自己的贴图,也是游戏里不可分割的最小的工作单元。

  • 还可以考虑其他资源。例如胡萝卜,有再生机制、腐烂机制、有贴图、可以被烹饪、可以被吃,被吃给玩家多少三维回复…总之这个胡萝卜也是不可分割的最小的工作单元。

以此类推,如果试图进一步探索[区块]的内部构成,我们对世界资源的划分就已经到了极限:我们无法再进一步拆分这些实体,否则猪人就不是猪人,胡萝卜也不是胡萝卜了。这些最小的工作单元,在代码中叫做“预制件、预设物(prefabs)”,下文中就更直观的叫它们“资源”好了。所以,考察[区块]的内容,就是考察资源如何生成。

一个[区块]内的资源,主要以三种方式出现:

  • 固定布景(layouts)“固定布景”是布局完全固定的一套资源。“布景”其实意思就是它是一个完整的小景观。例如,“猪王”是一个固定布景,永远由猪王、几根方尖碑、地板地皮构成(事实上地板地皮外侧还有一圈草地地皮),而且彼此的排列布局永远不会变。那么就把这几个永远不变的资源,打包成一个东西——“默认_猪王”,这就是一种固定布景。再例如,绚丽之门是一个大门+三朵花+草地地皮,彼此的排列同样永远不会变,于是也打包成一个东西“默认_起点”,这也是一种固定布景。

  • 随机资源随机资源是种类和比例固定、数量不定、均匀散布在空间中的资源。首先,一个区块随机资源的“丰富程度”(不是绝对的数量)有多有少。比如森林里各类资源富足,无论是树还是猪房,各种东西非常密集。沙漠里各类资源匮乏,空旷荒凉,虽然有针刺树和岩石,但出现频率很少。其次,随机资源的种类固定。例如桦树林里有桦树、小树枝、蘑菇、花、猪房等等,但不可能在桦树林看到高鸟巢穴,它不在桦树林的资源列表中。最后,随机资源之间的比例相对稳定。无论数量如何,永远是桦树最多。不可能蘑菇超级多、多到比桦树都多,那就不像桦树林了。

  • 固定资源。以高脚鸟巢为例,我们希望高脚鸟巢少量的生成,于是给了它一个很小的比例。那就有一种可能是,运气太差,一个都没生成出来,这个世界上一个高脚鸟都没有,这反而又不是我们想要的了。为了保证“一定会生成某一数量的某种资源”,除了上述不指定数量的随机资源以外,程序还会直接指定某些资源的数量,这里称为固定资源。例如,2022年10月份有一项更新,让“高脚鸟必定生成在世界上”,就是直接指定某些区块一定会生成1个高脚鸟巢,再看其他鸟巢会不会随机的生成。

不同类型的资源,在游戏中起着不同的作用。固定布景通常用于核心资源点,例如猪王、龙蝇、月台、绿洲,它们都是固定布景。这种打包好的一套资源,能够保证随机环境下核心资源点的优先性、稳定性、完整性(“猪王被地形卡掉了"是无法想象的)。固定资源,能够保证“至少生成若干个”。而随机资源均匀散布在区块里,数量不确定,营造地形氛围。

至此,关于地形生成,我们已经认识到这种层级结构:资源是游戏中最小的工作单位;每个区块的资源可大致分为固定布景、固定或随机资源;区块彼此不同,构成地形;地形彼此不同,构成大陆;大陆、海洋、岛屿构成联机版的地上世界;地上、洞穴、单机版、DLC等所有的地图共同构成《饥荒》的地图集

五、卵石路

另一个比较奇特的地图元素是卵石路。玩家普遍不清楚卵石路为何会出现,又为何这样斗折蛇行。事实上卵石路的路径与[区块]息息相关,它会将所有重要的区块串在一起,构成一条...区块链。

卵石路之所以九曲回肠的原因

每个地形都只有一条卵石路,经过所有的主区块,且不经过背景区块。这种特征导致卵石路成为我们识别一个地形中主区块的关键手段,也是开局探图必须关注的项目。希望大家在学习和游玩的过程中,能够重视卵石路这一元素。

除了普通卵石路以外,地图上往往还有一条更漂亮、更清晰的卵石路,下文中称为真卵石路。真卵石路的路径与“小猪村”有关,“小猪村”是一种随机地形,因此不一定会生成。当地图上没有小猪村地形时,真卵石路和普通卵石路一样,存在于单一地形,依次通过主区块而不通过背景区块。当地图上出现小猪村地形时,真卵石路会连接猪王和小猪村这两个[区块],横跨好几个地形、无视主区块和背景区块,还可能与其他地形的普通卵石路重叠

这是真卵石路首要的路径规则,如果你注意到一条真卵石路没有严格经过主区块,而是随意的横跨好几个地形,或者,某个地形已经有卵石路了(就不应该再有其他小路),可是同时还有一条真卵石路与之重叠,你就可以断定,这张地图上大概率是生成了小猪村,而且真卵石路的一端是猪王,另一端是小猪村。

两种不同的卵石路。如果发现真卵石路和普通卵石路重叠,那么该地图上大概率出现了小猪村

六、地形勾稽

上面介绍的都是“地图上有哪些地形”,还有一个重要的问题是“地形如何排列组合”。玩家可能有以下问题:

  • 地形是一个接一个排成一列?还是向中间汇聚成一朵花?或者是形成一个环?

  • 哪些地形可能连在一起?猪王、蜂后和龙蝇的地形会连在一起吗?

  • 有没有什么地形有很多河道和内陆湖?有没有什么比较奇葩有趣的地形?

  • 月岛与大陆的关系是怎样的?怎么找?

学习这些内容需要玩家对各类地形十分熟悉,所以等介绍完各种地形之后,再来看这些内容。

七、地图上的其他细节

最后要说的是,地图上还有很多有趣的东西。它们或者看起来就像一种地形(大理石雕像和发条生物),或者其作用、生成与地形相联系(虫洞、切斯特),或者是比较有特色的彩蛋(芦苇彩蛋、高鸟彩蛋),或者是一具骷髅(前辈),或者与cave有关(落水洞)…这些随机的元素与地形本身共同构成了一个多彩的世界,有些更是对地图大大的加分,以后看情况尽量介绍给大家。



结语与前瞻

DST的大部分内容,完全依托于“随机地图”这一重要特征展开。然而,游戏地图这种影响全局的基础设定,如果完全随机,那游戏就乱了套了。所以无论是地上还是洞穴,DST的地图其实有许多固定的生成规则,即规律可循,很值得研究和学习。

本文是Forest地形系列的第一篇,也是本系列最为重要的一篇文章。介绍了饥荒Forest地形的整体生成逻辑以及关键概念,例如“资源(预制件)”、“固定布景”、“区块”、“地形”、“卵石路”等,为大家树立了最基础的世界观,后面所有的内容都是在此基础上展开的,所以希望大家能耐心的看个明白。

现在我们已经知道DST大陆由20个地形构成。下篇文章就来看看这些地形都是怎么样的。如果发现任何错漏、有任何意见或建议,欢迎通过各种方式与我联系。喜欢本文的话不妨长按点赞一键三连,谢谢大家。我们下篇文章再见。

Forest地形之一:总体说明的评论 (共 条)

分享到微博请遵守国家法律