本站文本内容除另有声明外,均在知识共享 署名-非商业性使用-相同方式共享 3.0 协议下提供。(详细信息…

种子(世界生成)

来自Minecraft Wiki
跳转至: 导航搜索

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位的种子。

历史[编辑 | 编辑源代码]

Pre-classic
rd-160052 添加了一个简单的世界生成器。
Classic
0.0.12a 世界生成器更新。
0.24_06 世界生成器又更新。
生成更多的悬崖。
Indev
2009年12月25日 公布了等轴距级渲染的屏幕截图。
2010年1月6日 现在可以在生成世界时选择岛屿、浮岛、平坦或原始作为世界类型。
可以选择正方形、长形或下深作为世界形状。
可以选择小、正常或大作为世界大小。
2010年1月7日 下深浮岛地图现在有多层岛屿。
现在可以选择世界主题,有正常和地狱。
2010年1月11日 现在岛屿生成更多的沙子。
2010年1月13日 海洋现在生成无限的水。
2010年1月22日 水现在可以自然生成于海平面上和浮岛上。
减少洞穴被水淹没的可能性。
Beta
1.3 允许玩家自定义地图种子。
1.8.1 调试屏幕开始显示当前世界的种子。
正式版本
1.2.1 服务器将不再向客户端发送种子。
1.3.1 12w18a 由于单人游戏的实现方式与多人联机合并,世界的种子不再显示在调试屏幕上。
12w21a 添加/seed命令,用于显示当前世界的种子。
1.7.2 世界生成算法发生改变,这意味着使用一个旧版本存档,原先未加载的区块将生成不同地形。

你知道吗[编辑 | 编辑源代码]

  • 某些特定的种子,如107038380838084,会在游戏内部代码中返回0[2],导致游戏生成无限的由洞穴及其它结构构成的阵列。

外部链接[编辑 | 编辑源代码]

参考[编辑 | 编辑源代码]