Minecraft 种子的原理:从一串数字到整个世界
每个 Minecraft 世界都始于一个称为种子的数字。游戏把这个数字输入世界生成器,就产生了地形、生物群系、洞穴和结构。再次使用同一个种子,你会得到同一个世界。
本指南讲解种子究竟是什么、文本种子如何变成数字、为什么游戏版本很重要,以及 Java 版和基岩版如何处理种子。它还会展示种子地图如何利用这一点,在你探索之前就显示你的世界。
什么是种子
种子是构建世界的随机数生成器的起始值。Minecraft 的生成并不是真正随机的,而是伪随机:给定相同的起始值,每次产生的数字序列都相同。
在 Java 版中,种子是一个 64 位有符号整数,也就是说它可以是从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 的任意整数。可能的种子约有 18 百亿亿个,远远超过任何人能探索的数量。
种子并不存储世界,它只是钥匙。游戏会根据种子和区块坐标按需生成每个区块。这就是为什么种子可以用一个简短的数字分享,而保存的世界却可能占用数 GB。
相同种子,相同世界
如果你在相同版本和相同游戏版本中输入相同的种子,你会得到相同的:
- 地形形状、山脉、河流和海洋
- 生物群系布局
- 洞穴系统和矿石位置
- 结构位置,例如村庄、要塞和神庙
- 世界出生点区域
有些东西并非仅由种子决定。生物生成、天气,以及玩家建造或破坏的一切,都取决于游玩过程中发生的事。
这就是种子地图得以实现的原因。种子地图运行与游戏相同的生成规则,并绘制结果。在 SeedMapView 种子地图上输入你的种子,你就能从空中看到你的世界,包括你还没去过的结构。
文本种子如何变成数字
创建世界时,你可以在种子框里输入文字而不是数字。游戏必须先把这段文字转成数字。
- 如果文本是有效的整数,Java 会直接把它用作种子。
- 如果是其他任何文本,Java 会用 Java 的 String hashCode 函数处理它,把文本变成一个 32 位的数字。
- 如果你把输入框留空,游戏会随机选一个种子。
由于 hashCode 给出的是 32 位的结果,文本种子只能覆盖 18 百亿亿个可能世界中的大约 4.3 十亿个。两个不同的词甚至可能产生同一个数字,也就是同一个世界。
用文本转种子转换器查看一个词会变成哪个数字。如果你想在种子地图上加载文本种子,这很方便,因为种子地图需要数值。
为什么游戏版本很重要
种子只是配方的一半,另一半是生成器代码,它会随更新而变化。同一个种子在不同版本中可能产生非常不同的世界。
| 更新 | 变化内容 |
|---|---|
| 1.13 | 新的海洋生成和海洋结构 |
| 1.16 | 新的下界生物群系和堡垒遗迹 |
| 1.18 | 地形全面改造:更高的世界、新洞穴、新的生物群系系统 |
| 1.19 | 深暗之域和远古城市 |
| 1.20 | 樱花树林和古迹废墟 |
| 1.21 | 试炼密室 |
更新世界只会改变更新之后生成的区块。已探索的区域保留旧地形。在种子地图上,请始终选择你的世界创建时的版本,或你关心的区块所属的版本。
Java 版和基岩版的种子
自 1.18 起,Java 版和基岩版使用匹配的地形和生物群系生成。在两者中输入相同的数字种子,陆地、海洋和生物群系会高度吻合。
结构则是另一回事。每个版本使用自己的结构放置规则,所以同一个种子下,村庄、神庙等结构通常出现在不同的位置。这就是种子地图要求你选择版本的原因。
基岩版过去使用 32 位种子,而现代版本和 Java 版一样接受 64 位种子。对于文本种子,先把词转换成数字是在两个版本中获得相同世界的最稳妥方式。详情请阅读 Java 版与基岩版种子。
查找和选择种子
要找到你已有世界的种子:
- Java 版:在聊天中输入 /seed。单人游戏中可用,在服务器上需要有权限。
- 基岩版:打开世界设置。种子显示在“游戏”页面。
完整步骤见如何查找你的种子。
如果你想要一个具有特定特征的新世界,例如出生点有村庄或附近有蘑菇岛,可以浏览最佳种子列表,或使用种子查找器搜索符合你需求的种子。
种子的误解与常见问题
种子引起了很多困惑。以下是一些常见的误解:
- “种子存储了整个世界。”并不是。种子只是起始值。每当区块加载时,游戏都会根据它构建世界。
- “每个种子都是独一无二的。”对数字而言,是的,每个种子对应自己的世界。对文本种子而言,两个不同的词可能哈希成同一个数字,得到同一个世界。
- “好种子在每个版本都适用。”不一定。1.16 中一个著名的种子,在 1.18 或更高版本中可能完全认不出来,因为地形生成器变了。
- “负数种子更差。”不会。负数种子和正数种子一样有效,一样多样。
- “种子决定生物生成和战利品掉落。”基本不是。生物生成和掉落取决于游玩过程中的随机事件,而不是世界种子。
有些玩家还会疑惑,为什么自己的世界和网上看到的种子不一样。通常的原因是游戏版本不同、版本类型不同,或者文本种子的拼写或大小写不同。文本种子区分大小写,所以“Minecraft”和“minecraft”会产生不同的世界。
分享种子时,请务必附上游戏版本和版本号。这样,任何人都可以加载完全相同的世界,或在种子地图上查看。把种子连同版本一起记下来,在你以后想重新开始同一个世界时也有帮助。如果你想了解 Java 版和基岩版的结构为什么不同,请阅读 Java 版与基岩版种子。
常见问题
相同的种子会得到相同的世界吗?
会,只要你使用相同的版本和相同的游戏版本。更换版本可能会改变地形和结构。
Minecraft 一共有多少种子?
Java 版的种子是 64 位数字,所以可能的种子约有 18 百亿亿个。文本种子只能覆盖其中的约 4.3 十亿个。
如果我把文字当作种子输入会怎样?
Java 会用 String hashCode 函数把文本转换成数字。这个数字才是真正的种子。
Java 版和基岩版的种子相同吗?
自 1.18 起,相同的数字种子在两个版本中会产生非常相似的地形和生物群系。结构的放置则不同。
我能更改现有世界的种子吗?
不能直接更改。种子在世界创建时就已固定。你可以用不同的种子创建一个新世界。