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

种子(世界生成)

来自Minecraft Wiki
跳转至: 导航搜索
此页面的部分内容由于太久没更新而已过期。
你可以帮助我们来更新此页面
调试屏幕中图表之上显示当前世界的种子。

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

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

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

而当世界生成算法更新后,相同的种子也不会生成相同的地形。

这就解释了为什么相同的种子可以在相同游戏版本里创造出相同的世界,而不同的种子、不同的游戏版本都不可以。

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

如果旧版本的世界导入到新版本中,则新的区块会给于新的种子,因此并不一定会与旧区块吻合(这种现象在冒险元素更新后广泛出现)。被删除的区块会重新生成,但只要种子或生成算法其中一个有所不同,区块就会不同。

必须注意的是种子其实只是输入到伪随机算法中的值,而不是世界真正的名字。生成一个世界不需要一个手动确定的种子。例如,若使用一个生物群系的名称(如"swamp",沼泽)作为种子,生成的世界并不会以沼泽作为主要的生物群系。

种子提取[编辑 | 编辑源代码]

要确定一个世界的种子,载入这个世界并查看调试屏幕

在快照 12w21a 以及1.3正式版以后,调试屏幕不再会显示种子。玩家需要打开控制台并输入命令/seed

目前除了使用外部命令和直接读取地图文件外,多人模式中的客户端无法查看服务器世界的种子。

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

Java 中的String.hashCode() 函数用于将包含非数字字符的种子转换成纯数字。此函数输出的数据类型限制了游戏在使用非纯数字种子生成世界的总数量(约40亿)。直接使用纯数字作为种子则可以使游戏发挥出最大的生成世界数量的能力(约1800亿亿)。

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

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 世界生成算法发生改变,这意味着使用一个旧版本存档,原先未加载的区块将生成不同地形。

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

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

  1. http://mojang.com/2011/02/23/a-short-demystification-of-the-map-seed/