本站文本内容除另有声明外,均在知识共享 署名-非商业性使用-相同方式共享 3.0 协议下提供。(详情…本站文本内容除另有声明外,均在知识共享 署名-非商业性使用-相同方式共享 3.0 协议下提供。(详情…中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!Minecraft中文Wiki微博正在更新!或许有兴趣去看看Minecraft中文Wiki微博正在更新!或许有兴趣去看看想与其他用户进行编辑上的沟通?社区专页正是为此创建的。想与其他用户进行编辑上的沟通?社区专页正是为此创建的。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。需要管理员的协助?在管理员告示板留言也许可以帮到您。

种子(世界生成)

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

Minecraft种子(Seed)是一个由一个或多个字符(包括正整数和负整数)组成的一个值,游戏根据这个值创建每一个Minecraft世界。[1]

注意[编辑 | 编辑源代码]

种子在不同平台上兼容,并且同一平台上的不同版本之间可能不兼容。

世界生成[编辑 | 编辑源代码]

当游戏准备生成一个世界时,游戏会调用一个算法,生成一个伪随机数,这个数决定了世界的样子。但由于伪随机算法的性质,若算法初始输入的数值(种子)是相同的话,算出的最终结果是相同的。这就是种子的意义:使用相同的种子可以生成出多个相同的世界。

当世界生成算法更新(通常是加入新的生物群系)后,相同的种子就不会生成相同的地形。这也是某些不同的游戏版本中,相同的种子无法产生相同的地形的原因。

一个世界生成后,其种子便已经确定。默认情况下游戏会自动选择种子(使用系统时间)。但玩家也可以手动设置。使用相同的种子可以重复玩相同的世界,种子也可以用于与其他玩家分享世界。种子的设置可以用数字(包括负数)、字符等,非纯数字种子会被自动转换成纯数字。

如果将旧版本的世界导入到新版本中,则新生成的区块会基于新的种子,因此并不一定会与旧区块吻合(这个现象在Java版Beta 1.81.7.2中非常常见)。被删除的区块会重新生成,但只要种子或生成算法其中一个有所不同,区块就会不同。

必须注意的是种子其实只是输入到伪随机算法中的值,而不是世界真正的名字。根据某个种子生成的世界的特征并不注定与种子的字面含义有关。例如,即使是使用一个生物群系的名称作为种子,生成的世界并不会以此作为主要的生物群系。

有问题的世界生成[编辑 | 编辑源代码]

一个黑森林的不完全渲染。

该段落仍需完善。请您帮助我们扩充内容

有问题的世界生成是指区块不能正确加载并导致某些区块无法渲染。 某些种子可能由于Java的Math.random()函数会返回0,导致世界地形会在x或z轴上重复生成。(见#你知道吗

查看种子[编辑 | 编辑源代码]

要确定一个世界的种子,玩家需要执行命令/seed。在基岩版中,种子可于世界选项界面中查看。

技术细节[编辑 | 编辑源代码]

Java版[编辑 | 编辑源代码]

Java中的String.hashCode()函数用于将包含非数字字符的种子转换成纯数字。此函数输出的数据类型限制了游戏在使用非纯数字种子生成世界的总数量(232,即4,294,967,296)。由Minecraft随机生成的多人联机世界的种子调用了nextLong()函数,可能只有248种。

基岩版[编辑 | 编辑源代码]

基岩版中的种子,无论是使用数字还是字符串,都有总共232(4,294,967,296)种可能的世界。这个结论对于64位版本的Windows 10版同样成立。这是由于基岩版使用了32位的梅森旋转算法,只接受32位的种子。

原主机版[编辑 | 编辑源代码]

原主机版主要遵循Java版种子的世界生成。

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

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

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

  • 某些种子会在游戏内部中返回0,[2]引起洞穴和其他结构的无限生成。[3]
    • 107038380838084种子会在第一次被调用时返回0,而164311266871034会在第二次被调用时返回0,导致一些结构分别在X和Z轴上循环生成。
      • 诸如Cubic Chunks mod 的Mod 将采用前三个调用而不是前两个调用来生成地形。这导致164311266871034在Y轴上无限地生成洞穴,240144965573432在Z轴上无限地生成洞穴。[4]
    • 这个特性是Java独有的,因为基岩版没有在第一次或第二次调用时返回0的种子(但是,257678572会在第6次调用时返回0)。[5]
    • 这个特性在原主机版也可以看到。
  • 只有种子的某些部分会被用于生成的世界上的特定特征。仅通过将种子转换为二进制并调整所需位,就可以生成具有相同洞穴系统和生成结构的多个不同的世界。[6]
    • 例如种子发生器只使用种子的前48位来生成洞穴和恶地
  • 在创建世界时输入种子0将自动生成随机种子。种子0仍然可以以“creashaks organzine”作为种子进入。[7]
    • 这是由于开发者决定的,因为许多游戏当提供种子选项时,都会使用0作为“随机”,“无限”或“不在乎”的标志。
    • 在种子为0的世界中,/seed 指令会报错,无论你是不是管理员。‌[需要验证]
  • 基岩版中,输入1位数的种子(从-9到9)也将生成随机种子。 解决方法是键入“ddnqavb”,然后输入“a”到“s”中的任何其他字母。 例如,“ddnqavba”将生成种子“-9”。

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

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