种子(世界生成):修订间差异
XiaoXin666(留言 | 贡献) 小 (回退AlexTheBest(留言)所做的编辑 unsourced information) 标签:回退 |
小 (→重复生成: 使语句通顺) |
||
第85行: | 第85行: | ||
[[File:Duplicate Caves.png|thumb|种子164311266871034的地下,可见洞穴沿Z轴重复生成]] |
[[File:Duplicate Caves.png|thumb|种子164311266871034的地下,可见洞穴沿Z轴重复生成]] |
||
某些种子会在游戏内部中返回0,<ref>http://stackoverflow.com/questions/3065554/can-javas-random-function-be-zero</ref>引起[[洞穴]]和其他结构的无限生成。<ref>{{bug|MC-111378|||Won't Fix}}</ref> |
某些种子会在游戏内部中返回0,<ref>http://stackoverflow.com/questions/3065554/can-javas-random-function-be-zero</ref>引起[[洞穴]]和其他结构的无限生成。<ref>{{bug|MC-111378|||Won't Fix}}</ref>在[[Java版]]1.13以前的版本中,<code>107038380838084</code>种子会在第一次被调用时返回0,而<code>164311266871034</code>会在第二次被调用时返回0,而这两个调用结果会分别与X坐标或Z坐标相乘,从而使生成结果与某一个方向的坐标无关,导致洞穴、[[废弃矿井]]和水下峡谷等结构分别在X和Z轴上重复生成。<ref>https://www.reddit.com/r/MCPE/comments/5i6sae/recursive_infinite_mineshaft_seeds_on_mcpe/</ref>由于未知原因,<code>4165936693698546884</code>种子会在X轴上生成无限循环废弃矿井并在Z轴-250至-500左右的地下生成无限循环洞穴。<code>388513357548740</code>种子会在X轴上生成无限循环废弃矿井。<ref>https://www.mcbbs.net/thread-1218506-1-1.html{{dead link}}</ref>由于未知原因,水下洞穴和常规峡谷的生成添加了[[wzh:盐 (密码学)|盐]],自Java版1.13后它们不在这个种子中受到影响。不过,如果上述两个种子减去1,那么水下洞穴和常规峡谷将会重复生成,例如<code>107038380838083</code>,但其他结构则不再重复。已有理论分析这些种子也会影响要塞中不同方块类型的分布和恶地中陶瓦的图案,但尚无切实证据证实。 |
||
其他一些地物也会受到影响,例如装饰性结构。它们通常沿对角线生成。<ref>https://www.youtube.com/watch?v=UtNXUMrSIxQ</ref> |
其他一些地物也会受到影响,例如装饰性结构。它们通常沿对角线生成。<ref>https://www.youtube.com/watch?v=UtNXUMrSIxQ</ref> |
2025年3月12日 (三) 04:31的版本
请协助补充相关内容的描述,讨论页可能有更多细节。
种子(Seed)是用于Minecraft世界生成的一个整数。[1]
兼容性
不同平台上的种子在某种意义上是兼容的,同一种子在不同平台所生成的地形特征和生物群系是一样的,但生成结构的位置一般不同。种子在同一平台上的不同版本之间可能兼容。
- 在Alpha v1.2.0至Beta 1.7.3期间基本一致。
- Beta 1.8版本完全更改了世界生成。
- 1.2因为加入了丛林而更改了陆地上生物群系的分布。
- 1.7.2再次重写了世界生成。
- 1.13更改了洞穴的生成,加入了新的水域生物群系,以及调整了变种生物群系和部分结构的位置。
- 1.14加入了竹林生物群系,同时更改了村庄和其他一些结构的位置。
- 1.16更改了下界的生成并加入更多生物群系。
- 1.18加入了多种新的山地和洞穴生物群系,同时大幅度更改了主世界的噪声生成器,彻底重写了世界生成机制。
- 1.19加入了红树林沼泽和深暗之域。
- 1.20加入了樱花树林。
上面未提及每次更新加入的新结构,但它们通常不会伴随整个世界生成的大更改。
基岩版:
原主机版的种子更新大致和Java版的更新周期一致。
世界生成
当游戏准备生成一个世界时,游戏会调用一个被称作Perlin噪声的算法,生成一个伪随机数,这个数决定了世界的样子。但由于伪随机算法的性质,若算法初始输入的数值(种子)是相同的话,算出的最终结果是相同的。这就是种子的意义:使用相同的种子可以生成出多个相同的世界。
当世界生成算法更新(通常是加入新的生物群系)后,相同的种子就不会生成相同的地形。这也是某些不同的游戏版本中,相同的种子无法产生相同的地形的原因。
一个世界生成后,其种子便已经确定。默认情况下游戏会自动选择种子(使用系统时间)。但玩家也可以手动设置。使用相同的种子可以重复玩相同的世界,种子也可以用于与其他玩家分享世界。种子的设置可以用数字(包括负数)、字符等,非纯数字种子会被自动转换成一个32位的整数。
如果将旧版本的世界导入到新版本中,则新生成的区块会基于新的种子,因此并不一定会与旧区块吻合(这个现象在Java版Beta 1.8和1.7.2中非常常见,而对于1.18,新旧区块交界的地上和地下均有特殊算法使地形平滑过渡)。被删除的区块会重新生成,但只要种子或生成算法其中一个有所不同,区块就会不同。
必须注意的是种子其实只是输入到伪随机算法中的值,而不是世界真正的名字。根据某个种子生成的世界的特征并不注定与种子的字面含义有关。例如使用一个生物群系的名称作为种子,生成的世界也并不会以此作为主要的生物群系。
查看种子
想要确定一个世界的种子,在Java版中,玩家需要执行命令/seed
。玩家也可以在重建世界的界面中找到种子,也可以用编辑世界界面中导出的世界生成设置中找到它。
在基岩版中,种子可于世界选项界面中查看。也有种子模板,为玩家提供预设的种子,以在出生点附近生成具有特定特征的地形。此外,在测试版中,屏幕顶端会显示这个世界的种子码。
而服务器的种子可以在server.properties中的seed
栏找到。
技术细节
Realms
在Java版中,玩家可以在聊天栏输入/seed
来查看种子。在基岩版中,种子在Realms Plus中是不可见的。
Java版
如果种子输入框中的内容包含非数字字符(除非是数字开头的一个+
或-
)或超过Java中long类型所能表示的范围(-9223372036854775808
~9223372036854775807
),那么Java中的String.hashCode()
函数会用来将其转换为数字。由于输出的数据类型为int
,此函数将Minecraft能生成的种子数量限制为232(4,294,967,296)。为了达到完整的可能的世界数量(264,即18,446,744,073,709,551,616),必须输入纯数字种子或使用默认的世界种子。
基岩版
和Java版一样,基岩版中也有264,即18,446,744,073,709,551,616种可能的世界。如果种子输入框中的内容包含非数字字符(除非是数字开头的一个+
或-
)或大于等于20个字符(-9223372036854775808
~9223372036854775807
),那么游戏将会将其转换为数字
版本间重叠
所有种子在Java版和基岩版会产生相同的地形和生物群系分布,但结构和结构位置、矿石分布和生物生成等并不相同。
过时内容
在洞穴与山崖第二部分以前,Java版和基岩版尚未实现地形同步。-231(-2,147,483,648)至231-1(2,147,483,647)间的种子在Java版和基岩版会产生相似的生物群系分布(但仍有区别),但地形特征、结构位置、矿石分布和生物生成等有明显差异。
在基岩版1.18.30以前,无论是使用数字还是字符串,都有总共232(4,294,967,296)种可能的世界。这个结论对于64位版本的Windows 10版同样成立。
怪异生成
使用某些特定的种子可以观察到许多奇特的生成。
更改地形而不更改结构
在Java版1.17.1及以前的版本,世界生成的随机数算法使用java.util.Random
类的线性同余算法,而这一算法在生成随机数时种子只有后48个二进制位对随机数有效果。因此,如果两个世界的种子二进制后48位相同,则它们部分结构有着相似的分布,并且两者有极为相似的末地和下界。
平行种子
在Java版1.17.1及以前的版本,将-7379792620528906219
减去一个种子后得到的种子生成的主世界会有着和原种子除海洋群系外完全相同的生物群系分布,但地形并不一致。
重复生成
请协助补充相关内容的描述,讨论页可能有更多细节。

某些种子会在游戏内部中返回0,[2]引起洞穴和其他结构的无限生成。[3]在Java版1.13以前的版本中,107038380838084
种子会在第一次被调用时返回0,而164311266871034
会在第二次被调用时返回0,而这两个调用结果会分别与X坐标或Z坐标相乘,从而使生成结果与某一个方向的坐标无关,导致洞穴、废弃矿井和水下峡谷等结构分别在X和Z轴上重复生成。[4]由于未知原因,4165936693698546884
种子会在X轴上生成无限循环废弃矿井并在Z轴-250至-500左右的地下生成无限循环洞穴。388513357548740
种子会在X轴上生成无限循环废弃矿井。[5]由于未知原因,水下洞穴和常规峡谷的生成添加了盐,自Java版1.13后它们不在这个种子中受到影响。不过,如果上述两个种子减去1,那么水下洞穴和常规峡谷将会重复生成,例如107038380838083
,但其他结构则不再重复。已有理论分析这些种子也会影响要塞中不同方块类型的分布和恶地中陶瓦的图案,但尚无切实证据证实。
其他一些地物也会受到影响,例如装饰性结构。它们通常沿对角线生成。[6]
在基岩版中,种子289849025
、1669320484
和由ddnqavbj
生成的0
会沿对角线重复生成洞穴、峡谷和一些装饰性地物。[7]1000686894
和-1171867832
的种子会导致在Z轴上无限生成废弃矿井。[7]任何计算为4294967296 × n + 1669320484
的种子同样会生成具有相同地形特征的世界。[7]
历史
Java版pre-Classic | |||||||
---|---|---|---|---|---|---|---|
rd-131655 | 加入了一个简单的世界生成器,会生成大小为256×64×256的杂乱地形。 | ||||||
rd-132211 | 更改了世界生成器,现在只会生成由草方块和圆石组成的平坦地形。 | ||||||
rd-20090515 | 地形不再是平坦的了,现在地形会有高低起伏。 | ||||||
世界顶部为一层草方块,下面有几层泥土,底层为石头。 | |||||||
rd-161348 | 悬崖生成得更频繁了。 | ||||||
Java版Classic | |||||||
0.0.3a | 现在地下会生成洞穴。 | ||||||
0.0.12a | 世界生成器更新。 | ||||||
2009年8月25日 | 展示了再次进行更新的世界生成器。 | ||||||
现在会生成更多的悬崖。 | |||||||
Java版Indev | |||||||
0.31 | 20091223-2 | 公布了等轴距级渲染的屏幕截图。 | |||||
20100106 | 现在可以在生成世界时选择岛屿、浮岛、平坦或原始作为世界类型。 | ||||||
可以选择正方形、长形或下深作为世界形状。 | |||||||
可以选择小、正常或大作为世界大小。 | |||||||
20100107 | 下深浮岛地图现在有多层岛屿。 | ||||||
现在可以选择世界主题,有正常和地狱。 | |||||||
20100110 | 现在岛屿生成更多的沙子。 | ||||||
20100113 | 海洋现在生成无限的水。 | ||||||
20100122 | 水现在可以自然生成于海平面上和浮岛上。 | ||||||
减少洞穴被水淹没的可能性。 | |||||||
Java版Infdev | |||||||
20100227-1 | 对世界生成的地形改变:在旧版本上使用任何给定的种子现在会生成一个不同的世界。 | ||||||
世界生成已大大简化(去除了沙子、团簇等),以使无限世界生成的实现更易于使用。 | |||||||
20100227-2 | 红砖块金字塔的生成发生了变化——它们现在总是会到达顶部的一个点,而不是有时会被截断,从而产生“砖方形截锥体”。 | ||||||
20100313 | 海洋现在比以前大得多。 | ||||||
20100320 | 重新引入了团簇,其作为单个方块零星生成。 | ||||||
重新实现了树的生成。 | |||||||
20100325 | 团簇生成更改为目前的类型。然而,团簇生成使用了浮点数,导致其在距离过大时生成失败。 | ||||||
加入了洞穴,会代替所有方块生成而不只是地形方块。 | |||||||
20100327 | 对世界生成的地形改变:在旧版本上使用任何给定的种子现在会生成一个不同的世界。 | ||||||
移除了洞穴。 | |||||||
移除了花随机斑块。 | |||||||
33,554,432处的Infdev石墙不再生成。相反,边境之地将会生成在12,550,824。 | |||||||
20100413 | 树现在是大型的树。 | ||||||
沙子和沙砾现在会在世界中再次生成。 | |||||||
20100420 | 对世界生成的地形改变:在旧版本上使用任何给定的种子现在会生成一个不同的世界。 | ||||||
世界生成时会考虑更少地生成山脉。 | |||||||
20100608 | 所有的树现在都是小树,大树不再生成。 | ||||||
20100611 | 对世界生成的地形改变:在旧版本上使用任何给定的种子现在会生成一个不同的世界。 | ||||||
现在会生成大型岛屿。 | |||||||
地形现在会生成得足够高以至于达到世界高度限制,导致地形被截断。 | |||||||
独石柱现在会生成。 | |||||||
树的生成量现在有所变化。 | |||||||
20100616-1 | 对世界生成的地形改变:在旧版本上使用任何给定的种子现在会生成一个不同的世界。 | ||||||
海洋中的地形生成现在是不同的。 | |||||||
重新加入了洞穴。 | |||||||
花和蘑菇的随机斑块现在会生成。 | |||||||
涌泉现在会自然生成。 | |||||||
熔岩现在会自然生成,具体生成方式未知。 | |||||||
Java版Alpha | |||||||
v1.2.0 | preview | 对世界生成的地形改变:在旧版本上使用任何给定的种子现在会生成一个不同的世界。 | |||||
Java版Beta | |||||||
1.3 | 允许玩家自定义地图种子。 | ||||||
1.8.1 | 调试屏幕现在显示当前世界的种子。 | ||||||
Java版 | |||||||
1.2.1 | 服务器将不再向客户端发送种子。 | ||||||
1.3.1 | 12w18a | 由于单人游戏的实现方式与多人游戏合并,世界的种子不再显示在调试屏幕上。 | |||||
12w21a | 加入了/seed 命令,用于显示当前世界的种子。 | ||||||
1.7.2 | 13w36a | 世界生成算法发生改变,这意味着使用一个旧版本存档,原先未加载的区块将生成不同地形。 | |||||
1.13 | 18w06a | 重写了世界生成系统(未更改地形),并且移除了自定义世界类型。 | |||||
1.18 | exp1 | 重写了世界生成系统。重制了洞穴和山地以及地形高度系统。移除了放大化和巨型生物群系。 | |||||
exp2 | 重写了世界生成系统(未更改地形)。 | ||||||
21w41a | 更换了世界生成过程中所使用的随机数生成器,导致地形与之前的版本不同。 | ||||||
21w43a | 噪声生成器再次被完全更改,新生成的世界不与之前快照的一致。 | ||||||
1.18.2 | 22w03a | 数字0的种子不再被游戏解释成48。 | |||||
输入的种子前后的任何空格现在都会被去掉。 | |||||||
携带版Alpha | |||||||
0.1.0 | 加入了种子。此时仅支持32位种子用于地形生成。 | ||||||
0.9.0 | build 1 | 更改了地形生成。 | |||||
基岩版 | |||||||
1.17.30 | 1.17.30.23 | 完全更改了世界生成,属于实验性玩法。 | |||||
1.17.40 | 1.17.40.20 | 在实验性玩法中再次更改了世界生成。 | |||||
1.18.0 | 1.18.0.20 | 将实验性玩法中的生成更改应用到了默认世界中。 | |||||
1.18.0.22 | 更换了世界生成过程中所使用的随机数生成器,导致地形与之前的版本不同。 | ||||||
1.18.0.24 | 地形生成机制再次被完全更改,新生成的世界不与之前测试版的一致。 | ||||||
1.18.30 | 1.18.20.21 | 现在可以使用64位种子创建世界,以同步Java版。 | |||||
游戏现在支持数字-9至9的种子。 |
你知道吗
- 自Java版1.7.2至1.12.2的版本间,通过更改源代码并将第6个genlayer的值
[需要更多信息]从2更改为0,可以在Java版中得到原主机版的生物群系生成,除了蘑菇岛。 - Herobrine的最早截图来自种子
478868574082066804
,在Alpha v1.0.16_02生成。 - Herobrine的恶作剧直播来自种子
3609313613745973624
,在Alpha v1.0.17_04生成。
官方使用的种子
在Java版中,下面这些种子在某些时候曾被官方地图和资源使用过:
- 演示模式的世界种子可以在完整版中输入
North Carolina
(对应数字为-343522682
)得到。 - 主菜单全景图的世界种子如下:
- 自Beta 1.8-pre1至18w22c使用的种子是
2151901553968352745
或8091867987493326313
[8],需要Beta 1.6.6至Beta 1.7间的版本来生成。 - 1.13使用的种子是
1458140401
,即18w22a
,在18w22a获取。 - 1.14使用的种子是
2802867088795589976
,在18w48a获取。 - 1.15使用的种子是
-4404205509303106230
,在19w40a获取。 - 1.16使用的种子是
6006096527635909600
,在20w13a获取。 - 1.18使用的种子是
2151901553968352745
,在21w40a获取。 - 1.19使用的种子是
-1696067516
,即thewildupdate
,在22w15a获取。 - 1.20使用的种子是
8554477380691140270
,在23w14a获取。
- 自Beta 1.8-pre1至18w22c使用的种子是
- 原始的默认资源包图标(pack.png)显示的世界种子是
3257840388504953787
,在Alpha v1.2.2生成。[9]此地形也可在Alpha v1.2.0至Beta 1.7.3间的版本生成,不过会有细微差别。 - Skull on Fire这幅画的世界种子是
-6984854390176336655
或-1044887956651363087
,在Alpha v1.1.2_01或更早的版本生成。[10]
外部链接
- AMIDST Project:种子/世界浏览器(英文)
- Chunkbase Minecraft Apps:在线种子/世界浏览器(英文)
- Minecraft Seeds on Reddit:社区驱动的Minecraft种子库(英文)
- Minecraft Seeds:由社区人员驱动的MC种子库(英文)
- MineAtlas:种子/世界浏览器/查找器(英文)
- Minecraft Seed HQ:MC种子库(英文)
- LookingForSeed:按分类查找Minecraft种子(英文)
仅Java版
- Seed Hunt:MC种子库(英文)
- Minecraft Seeds
- SeedCracker:猜测来自多人游戏的种子(英文)
- Seeder:种子/世界浏览器和查找器(英文)
- Random Seed Reader:Java本地工具(英文)
参考
- ↑ http://mojang.com/2011/02/23/a-short-demystification-of-the-map-seed/
- ↑ http://stackoverflow.com/questions/3065554/can-javas-random-function-be-zero
- ↑ MC-111378 — 漏洞状态为“不予修复”。
- ↑ https://www.reddit.com/r/MCPE/comments/5i6sae/recursive_infinite_mineshaft_seeds_on_mcpe/
- ↑ https://www.mcbbs.net/thread-1218506-1-1.html
[失效链接] - ↑ https://www.youtube.com/watch?v=UtNXUMrSIxQ
- ↑ 跳转到: 7.0 7.1 7.2 MCPE-95011
- ↑ https://www.reddit.com/r/Minecraft/comments/hthrmk/big_news_we_have_found_the_seed_of_minecrafts/
- ↑ https://www.reddit.com/r/MinecraftAtHome/comments/iocx6f/packpng_seed_was_found_explanation_tutorial_and
- ↑ https://www.reddit.com/r/Minecraft/comments/iqg3ey/the_original_screenshot_seed_of_the_minecraft/
导航
[隐藏] | |||||
---|---|---|---|---|---|
版本 | |||||
开发周期 |
| ||||
技术 |
| ||||
多人游戏 | |||||
游戏订制 |
[隐藏] | |||||||
---|---|---|---|---|---|---|---|
版本 |
| ||||||
开发 |
| ||||||
技术性 | |||||||
多人游戏 | |||||||
特色功能 |