世界生成与探索
程序生成不只是自动铺满地图。本章从未知、距离、地标、稀有性和种子出发,讨论 Minecraft 为什么能让算法生成的世界仍然值得探索,以及这种设计怎样在长期更新中发生变化。
第一次离开出生点时,玩家通常并不知道前面有什么。
也许翻过山就是村庄,也许是一片海,也许只是更多森林。地图没有提前把所有地点标出来,任务系统也不会承诺“向东 800 米一定有奖励”。很多时候,玩家只是因为一个很简单的念头继续往前走:
那边会有什么?
这正是程序生成最容易被说得过于简单的地方。算法当然可以自动制造大量地形,但“生成了很多东西”并不等于“这些东西值得探索”。如果每个方向都差不多,如果所有结构都密集到随处可见,或者反过来什么都找不到,那么地图再大也可能很快变得乏味。
所以这一章不讨论噪声函数怎么写,也不解释区块生成管线,那些属于卷三。这里更关心玩家实际感受到的问题:
一个由算法生成、甚至可以延伸得极远的世界,为什么仍然会让人觉得前面值得去看看?
1探索为什么会成立
1.1未知本身不够,还要能形成差异
探索首先需要不知道,但“未知”本身还不够。如果每次翻过山都已经知道后面一定是同样的森林,那么未知只剩下信息没加载,而不是期待。真正有意义的探索,需要不同区域在地形、资源、视觉、结构或行动方式上产生差异。
Minecraft 的 Overworld 并不是把一张固定地图藏起来让玩家揭开,而是持续生成新的区域。玩家不知道前方是什么,但又知道那里大概率仍然遵守熟悉的世界规则:方块可以挖,水会流,夜晚会来,物品可以带回来。
这种组合很重要:
局部是未知的,规则却大体熟悉。
如果连基本规则都每走几百格就换一次,探索会更像不断进入新小游戏;如果什么都不换,又只是把同一片地面复制得更远。Minecraft 更常做的是在稳定规则上改变地形、群系、结构和资源分布。
1.2距离让发现有成本
探索还需要距离。一个地点如果点击地图图标就能瞬间到达,它仍然可以有内容,但“旅行”本身就不再构成体验。Minecraft 的移动速度、昼夜、食物、背包容量和返程路径,会让远方产生实际成本。
看到一座很远的山和真正走到山脚下,是两件事。途中可能要渡河、绕悬崖、过夜、补给,甚至临时搭桥和留下路标。这样一来,地形不只是背景,也参与了玩家到达目的地的过程。
这和上一章的库存问题正好接上:背包有限、物资有限,所以“再走远一点”从来不是完全免费的。
1.3能返回,地点才会逐渐有意义
探索不只向外扩张,玩家还会回来。第一次经过某座山时,它只是陌生地形;后来这里可能多出矿道入口、桥、火把、临时营地,甚至一条连回基地的铁路。地点因为被反复经过,逐渐从“随机生成的一块区域”变成玩家能够辨认和记忆的地方。
这依赖两个条件:世界足够稳定,而且玩家的修改能够被保存。如果每次回来地形都会重新随机,Minecraft 仍然可以有很强的新鲜感,但就很难形成道路、地标、家和长期基础设施。
因此,程序生成与持久世界并不是两个互不相关的系统。生成负责给出一个尚未认识的地方,持久性则允许这个地方在之后继续积累意义。
这不是固定循环。很多玩家甚至不会回到同一个地方。但它说明了为什么 Minecraft 的探索经常和建造、运输、库存连在一起,而不是一个独立的“开地图”小游戏。
2世界怎样制造差异
把 Minecraft 的生成简单分成“噪声、群系、结构”并不算错,但从设计上看,更有用的是区分它们给玩家带来的不同差异。
2.1地形决定怎么走
山脉、平原、河流、海洋、洞穴首先改变的是移动方式和视野。
平原让远处很容易被看见;森林挡住视线;山地制造高差和绕路;海洋要求船或更长的沿岸路线;大型洞穴则把探索方向从水平拉到垂直。
这也是为什么 Caves & Cliffs: Part II 不只是一次“增加新方块”的更新。1.18 扩展了世界高度与深度,重做了山脉、洞穴和地形生成,并让地形形状不再总是由群系直接决定。官方当时甚至把“整体 world generation 的变化”本身作为更新核心之一。12
这类变化会直接改变玩家如何阅读世界。
同样是一片森林,长在平地上和长在巨大山坡上,旅行方式完全不同;同样是地下,狭窄矿道与能容纳整座基地的大型洞厅,也会让“探索洞穴”变成不同体验。
2.2群系决定这里像什么,也影响这里有什么
群系不只是换一套颜色。它会同时改变植被、天气、部分生物、地表材料和一些资源条件。玩家看到雪原、沙漠、红树林或樱花树林时,不只是在欣赏不同皮肤,也会对“这里可能出现什么”形成预期;这种预期很重要,因为探索需要可读性。
如果世界只有完全随机的局部变化,玩家很难形成方向感;群系则把复杂差异组织成可以命名的区域。玩家可以说“基地北边是沙漠”“沿河走会到丛林”,于是世界开始有了能够交流的地理。
1.18 之后,这种关系又变得更灵活:地形形状与群系不再像旧版本那样紧密绑定,同一个群系可以出现在不同高度和地貌中;地下也加入了 3D biome,使 Lush Caves、Dripstone Caves 能出现在地表群系之下。3
这说明生成系统并不是越“规则简单”越好,而是需要在可辨认的类别与足够多的组合之间取得平衡。
2.3结构让远方出现具体目标
地形和群系让世界有差异,但结构会把这种差异进一步变成具体地点。
村庄、沙漠神殿、海底神殿、林地府邸、废弃矿井、Stronghold、Ancient City 等结构,会让玩家产生非常明确的句子:
我想找到一座村庄。
我还没见过 Ancient City。
Stronghold 到底在哪?
它们和普通地形最大的区别,是更容易成为“目的地”。
但结构如果过密,也会带来另一个问题:世界会逐渐像主题乐园,每走几分钟就撞见一个明确景点。探索会从“观察环境、决定方向”变成“把图鉴上的地点一个个打勾”。
所以结构密度并没有一个绝对正确答案。更值得问的是:
这个地点应该让多数玩家自然撞见,还是应该让它成为一次专门寻找?
不同结构可以有不同答案。
3种子让随机世界可以被复现
程序生成并不等于每次都不可预测。Seed 把一个生成结果的起点压缩成一个可以分享的输入:玩家可以告诉朋友一个种子,对方重新创建世界时,就能获得大体对应的生成结果。
这让随机世界出现了一种很特别的社会属性:世界可以被发现,也可以被转述。 玩家会分享漂亮出生点、罕见地形、速通种子、适合建造的山谷,甚至只因为“这个地方很好看”而把种子发给别人。
但种子并不是一张永远不变的地图。生成算法会随版本变化。Caves & Cliffs: Part II 就明确改变了 Overworld 的地形生成;Bedrock 1.18 的发布说明也直接提醒,旧种子在新版本中不再保证生成与过去相同的世界或出生位置。3
因此真正能复现世界的,不只是一个数字,而更接近:
种子 + 游戏版本 + 对应的生成规则
Java 与 Bedrock 的结果也不能简单假设完全一致。
这件事在游戏设计上很有意思,因为它让 Minecraft 的世界既有偶然性,又有一定可交流性。玩家可以说“我碰到一个很好的地方”,也可以进一步说“你也可以去看看”。
4稀有性怎样产生寻找,而不是单纯浪费时间
4.1“找不到”有时是探索的一部分
如果所有东西都保证在出生点附近出现,玩家当然不会因为运气不好而错过,但距离和稀有性也会随之失去意义。某些结构之所以让人记得住,部分原因就是它们并不随处可见;林地府邸、海底神殿、Ancient City 等地点,往往需要真正走出去寻找。
这并不意味着“越难找越好”。
如果目标非常重要,却缺少任何线索,玩家可能只是在无意义地扩大搜索半径。稀有性只有在玩家仍然相信“继续找有可能值得”时才会产生期待;一旦变成纯粹重复劳动,就只剩挫败。
4.2Minecraft 经常用线索,而不是直接取消距离
Minecraft 对一些重要地点会提供不同程度的指引。Explorer Map 能把特定结构的大致位置交给玩家;Eye of Ender 会指向 Stronghold;指南针、地图、坐标、地标以及玩家自己修的道路,又帮助玩家保持方向。
这些工具有一个共同特点:它们通常减少盲目搜索,却不一定把旅行本身删掉。知道目的地在哪,和已经到达那里,仍然是两件事。
这也是探索与任务列表之间很重要的区别之一。任务列表更关心“你是否完成”;探索系统还必须考虑“你怎样发现、怎样到达、途中看见什么”。
当然,玩家完全可以使用种子地图网站、/locate、Mod 或外部工具直接获得精确位置。Minecraft 允许这种玩法存在,也不需要假装所有玩家都必须保持信息纯净。
对设计来说更重要的是默认体验:
游戏应该隐藏多少信息,又应该在什么时候给玩家更明确的方向?
5当世界生成本身成为更新内容
早期玩家很容易把 worldgen 当成底层背景:它负责把地图铺出来,真正的“新内容”则是新方块、新怪物、新物品。Caves & Cliffs: Part II 很明显地改变了这种印象。
1.18 把 Overworld 的高度扩展到更高和更深的范围,加入新的山地与洞穴生成、地下群系、aquifer、重新分配的矿物等。官方发布说明还特别强调 world blending,使旧世界在升级后能够在已有区块附近继续生成新地形,而不是要求所有玩家重新开档。34 这意味着世界生成本身已经不只是底层实现,也可以直接成为一次更新的主要内容。
5.1改地形,就等于改玩家的行为
山更高,不只是截图更壮观,它会改变攀登、视野、建筑选址和运输。洞穴变大,也不只是换了一套地下美术,它会影响照明、战斗距离、资源暴露方式、矿井路线和地下建造。
矿物重新分布,更直接改变了“去哪里挖什么”的经验。Java 1.18 的发布说明明确提到,不再存在一个对所有矿物都最优的单一高度,玩家需要在不同资源之间做取舍。2
所以世界生成不是被动背景,它会改变玩家熟悉的路线、判断和知识。
5.2但更新又不能轻易抹掉旧世界
对 Minecraft 这种长期游戏来说,重做生成器还有另一层麻烦:玩家已经住在旧地图里。
1.18 的 world blending 就是很典型的例子。开发团队不仅要让新地形更好看,还要处理新旧区块相接时的断层,并让已有世界继续获得新的高度和地下空间。4
这让程序生成和我们在卷一谈过的“保存”问题再次连起来:生成算法可以重写,但玩家的世界不能因此被当成一次性缓存。
6程序生成什么时候会失去探索感
程序生成很容易给人一种错觉:只要组合数量足够大,内容就不会用完。实际并不是这样,因为玩家并不会计算有多少种可能地形,而是会识别模式。
当看过足够多森林、村庄和洞穴以后,新区域可能在数学上从未出现过,但在体验上已经“差不多见过”。这就是程序生成最典型的上限之一:组合可以很多,意义未必很多。
几个问题尤其值得警惕:
6.1差异太小:地图很大,但处处相似
如果区域之间只有轻微噪声变化,却没有视觉、资源、路径或玩法差异,那么继续旅行很容易变成单纯扩大已探索面积。
6.2差异太密:每一步都在展示新东西
反过来,如果所有稀有结构、特殊群系和事件都被塞得很密,世界虽然刺激,却很难留下“远方”。玩家还没来得及形成路径和区域感,下一个景点已经出现。
6.3奖励太明确:探索退化成清单
如果每一种群系和结构都只对应一个必须收集的奖励,玩家自然会开始把地图当成 checklist。
这并不一定是坏事——收集本来就可以很好玩——但它和“因为不知道前面有什么,所以继续走”是两种不同动力。
因此,世界生成真正困难的不是“做出足够大的随机空间”,而是在几组张力之间不断取舍:
| 张力 | 太少 | 太多 |
|---|---|---|
| 差异 | 到处相似 | 难以形成稳定认知 |
| 稀有性 | 发现没有惊喜 | 寻找变成重复劳动 |
| 结构密度 | 世界显得空 | 世界像景点清单 |
| 指引 | 只能盲找 | 旅行与观察失去意义 |
| 生成变化 | 更新缺少新鲜感 | 老世界与旧经验被破坏 |
没有一个固定数字能同时解决这些问题。
7这一章留下什么
世界生成最容易被误解成“自动制造很多内容”。这一章更值得留下的是几件具体的事:
- 探索需要未知,但未知必须建立在稳定、可理解的规则上;完全随机并不会自动变得有趣。
- 地形、群系和结构承担不同职责:前者影响移动与视野,中者组织区域差异,后者更容易成为明确目的地。
- 距离、返程和库存让发现产生成本;能反复返回,则让随机地形逐渐变成玩家认识的地方。
- 种子让程序生成拥有可复现和可分享的一面,但真正的结果还依赖版本与生成算法。
- 稀有性可以制造期待,也可以制造无意义搜索;好的指引往往减少盲找,而不是直接取消旅行。
- 世界生成一旦被重做,就会改变探索、采矿、建造和玩家知识,因此它本身就是游戏设计,而不是单纯的技术背景。
- 程序生成的组合数量可以极大,但玩家最终感受到的是差异是否有意义,而不是排列组合有多少。
下一章《生物、战斗与威胁》会继续看世界的另一层:当环境里出现会移动、会攻击、会交易、会繁殖的生物以后,玩家对空间和风险的判断又会发生什么变化?
注释
-
Mojang Studios,《World Generation in Java Available for Testing》,2021 年。官方在 1.18 实验阶段明确说明,这次更新不仅增加洞穴和山脉,也会重做整体 terrain generation,并列出新高度、洞穴、山地群系、地下群系与 terrain / biome 解耦等变化。 ↩
-
Mojang Studios,《Minecraft: Java Edition 1.18》,2021 年。发布说明记录了 1.18 的新群系、洞穴、aquifer、矿物分布等,并明确指出矿物不再共享一个统一的最佳开采高度。 ↩ ↩2
-
Mojang Studios,《Minecraft - Caves & Cliffs: Part II - 1.18.0 (Bedrock)》,2021 年。官方记录了高度与深度扩展、3D biomes、新洞穴、世界融合,以及旧种子在 1.18 后不再保证生成相同世界或出生位置等变化。 ↩ ↩2 ↩3
-
Mojang Studios,《Caves & Cliffs Part II: The Features》,2021 年。官方说明 world blending 允许旧世界继续使用新的生成规则,同时减少新旧区块之间明显的断层;也解释了 1.18 中 terrain shape 与 biome 不再总是绑定。 ↩ ↩2