种子
游戏《Minecraft》中的世界生成依据
在Minecraft中,种子(Seed)是一个由一个或多个字符(包括正整数和负整数)组成的一个值,游戏根据这个值创建每一个Minecraft世界。
注意事项
种子在不同平台上不兼容,并且同一平台上的不同版本之间可能不兼容。
世界生成方式
当游戏准备生成世界时,游戏会调用算法,生成一个伪随机数,它决定了世界的样子。但由于伪随机算法的性质,若算法初始输入的种子是相同的,算出的最终结果也是相同的。
当世界生成算法更新后,相同的种子就不会生成相同的地形。这也是平台某些不同的游戏版本中,相同的种子无法产生相同的地形的原因。但在村庄和掠夺更新后,村庄和结构发生变化,但地图的特征没有变化。
一个世界生成后,其种子便已经确定。默认情况下游戏会使用系统时间自动选择种子,但玩家也可以手动设置种子。种子可以用于与其他玩家分享世界。种子的设置可以用数字(包括负数)、字符等,非纯数字种子会被自动转换成纯数字。
如果将旧版本的世界导入到新版本中,则新生成的区块会基于新的种子,因此并不一定会与旧区块吻合。被删除的区块会重新生成,但只要种子或生成算法其中一个有所不同,区块就会不同。
种子其实只是输入到伪随机算法中的值,而不是世界真正的名字,根据某个种子生成的世界的特征并不注定与种子的字面含义有关。例如,即使是使用一个生物群系的名称作为种子,生成的世界也并不会以此作为主要的生物群系,也不会在该生物群落中产生玩家。
漏洞
有问题的世界生成
有问题的世界生成是指区块不能正确加载并导致某些区块无法渲染 ,不过可能会在一段时间后好起来。某些种子可能由于Java的Math.random函数会返回0,导致世界地形会在x或z轴上重复生成。
查看方法
在我的世界:JAVA版中要确定一个世界的种子,玩家需要执行命令/seed。‌‌在我的世界:基岩版中,种子可于世界选项界面中查看。
技术细节
Java版及原主机板
Java中的String.hashCode函数用于将包含非数字字符的种子转换成纯数字。此函数输出的数据类型限制了游戏在使用非纯数字种子生成世界的总数量(232,即4,294,967,296)。由Minecraft随机生成的多人联机世界的种子调用了nextLong函数,可能只有248种。
原主机版主要遵循Java版种子的世界生成。
基岩版
基岩版中,种子无论是使用数字还是字符串,都有总共232(4,294,967,296)种可能的世界。这个结论对于64位版本的Windows 10版同样成立。这是由于基岩版使用了32位的梅森旋转算法,只接受32位的种子。
历史背景
相关知识
参考资料
种子(世界生成).中文Minecraft Wiki.
Seed (level generation).英文Minecraft Wiki.
最新修订时间:2024-08-20 22:50
目录
概述
注意事项
世界生成方式
参考资料