Minecraft种子(Seed)是一个由一个或多个字符(包括正整数和负整数)组成的一个值,游戏根据这个值创建每一个世界。[1]
世界生成
当游戏准备生成一个世界时,游戏会调用一个算法,生成一个伪随机数,这个数决定了世界的样子。但由于伪随机算法的性质,若算法初始输入的数值(种子)是相同的话,算出的最终结果是相同的。这就是种子的意义:使用相同的种子可以生成出多个相同的世界。
当世界生成算法更新(通常是加入新的生物群系)后,相同的种子就不会生成相同的地形。这就是某些不同的游戏版本中,相同的种子无法产生相同的地形的原因。
一个世界生成后,其种子便已经确定。默认情况下游戏会自动选择种子(使用系统时间)。但玩家也可以手动设置。使用相同的种子可以重复玩相同的世界,种子也可以用于与其他玩家分享世界。种子的设置可以用数字(包括负数)、字符等,非纯数字种子会被自动转换成纯数字(见下)。
如果将旧版本的世界导入到新版本中,则新生成的区块会基于新的种子,因此并不一定会与旧区块吻合(这种现象在冒险元素更新后广泛出现)。被删除的区块会重新生成,但只要种子或生成算法其中一个有所不同,区块就会不同。
必须注意的是种子其实只是输入到伪随机算法中的值,而不是世界真正的名字。根据某个种子生成的世界的特征并不注定与种子的字面含义有关。例如,即使是使用一个生物群系的名称作为种子,生成的世界并不会以此作为主要的生物群系。
查看种子
要确定一个世界的种子,玩家需要执行命令/seed
。在携带版中,种子可于世界选项界面中查看。
技术细节
Java 中的String.hashCode()
函数用于将包含非数字字符的种子转换成纯数字。此函数输出的数据类型限制了游戏在使用非纯数字种子生成世界的总数量(232,即4,294,967,296)。由Minecraft随机生成的多人联机世界的种子调用了nextLong()
函数,可能只有232种。
携带版
携带版中的种子,无论是使用数字还是字符串,都有总共232(4,294,967,296)种可能的世界。这个结论对于64位的Windows 10版同样成立。这是由于携带版使用了32位的梅森旋转算法,只接受32位的种子。
历史
Java版pre-Classic | |||||
---|---|---|---|---|---|
rd-160052 | 添加了一个简单的世界生成器。 | ||||
Java版Classic | |||||
0.0.12a | 世界生成器更新。 | ||||
0.24_06 | 世界生成器又更新。 | ||||
生成更多的悬崖。 | |||||
Java版Indev | |||||
2009年12月25日 | 公布了等轴距级渲染的屏幕截图。 | ||||
2010年1月6日 | 现在可以在生成世界时选择岛屿、浮岛、平坦或原始作为世界类型。 | ||||
可以选择正方形、长形或下深作为世界形状。 | |||||
可以选择小、正常或大作为世界大小。 | |||||
2010年1月7日 | 下深浮岛地图现在有多层岛屿。 | ||||
现在可以选择世界主题,有正常和地狱。 | |||||
2010年1月11日 | 现在岛屿生成更多的沙子。 | ||||
2010年1月13日 | 海洋现在生成无限的水。 | ||||
2010年1月22日 | 水现在可以自然生成于海平面上和浮岛上。 | ||||
减少洞穴被水淹没的可能性。 | |||||
Java版Beta | |||||
1.3 | 允许玩家自定义地图种子。 | ||||
1.8.1 | 调试屏幕开始显示当前世界的种子。 | ||||
release | |||||
1.2.1 | 服务器将不再向客户端发送种子。 | ||||
1.3.1 | 12w18a | 由于单人游戏的实现方式与多人联机合并,世界的种子不再显示在调试屏幕上。 | |||
12w21a | 添加/seed 命令,用于显示当前世界的种子。 | ||||
1.7.2 | 世界生成算法发生改变,这意味着使用一个旧版本存档,原先未加载的区块将生成不同地形。 |
你知道吗
外部链接
- Random Seed Reader:Java本地工具
- AMIDST Project:种子/世界浏览器
- Chunkbase Minecraft Apps:另一个种子/世界浏览器
- MineAtlas:种子/世界浏览器/查找器