2

我正在使用 Roblox Studio,并且遇到了地形生成器。它具有文本输入“种子”,并且始终具有一些默认数字/代码。我一直很担心种子是什么,以及 Roblox Seeds 上是否有某种列表。这是该功能的屏幕截图: Roblox Studio 上的 Terrain Editor 屏幕截图

我一直在乱输入随机数,这影响了地形风格。我也多次搜索 Roblox Seeds,但只找到了游戏和群组。

如果我能列出所有 Roblox 种子以及它们的工作原理,我将不胜感激。

4

2 回答 2

7

高性能标记是正确的。让我解释一下为什么。

地形生成器、云生成器和海洋模拟器都使用数学波浪、随机和噪声函数来构建有趣且可信的形状。除了生成器之外,种子值对任何人都无关紧要。该值使其能够非常快速地可靠地产生可重复的结果。计算机程序需要找到优化一切可能的方法,存储地形信息可能需要大量数据!因此,智能系统不会全部保存,而是会在需要时尝试重新生成地形。地形中的每个点都可以使用复杂的数学函数重新计算,您的种子值在该计算中起着重要作用。

例如,假设您想绘制一些 2D 山丘。您可以使用正弦波来描述这些山丘的高度。

for distanceAway = 0, 1, 0.1 do
    local hillHeight = math.sin( distanceAway )
    print( hillHeight )
end

因为您使用数学函数来描述山丘,所以您可以立即知道,它应该是山顶、山谷底部还是介于两者之间的某个地方。并且每次运行它都会是一样的!

但也许这些山丘看起来都太相似了。您可以通过向高度添加一些随机数来为这些山丘添加一些变化和抖动。

for distanceAway = 0, 1, 0.1 do
    local hillHeight = math.sin( distanceAway ) + math.random()
    print( hillHeight )
end

这可能看起来像是一个很好的补充:山丘现在有更多的变化,它们可能有点不寻常的尖刺,但至少它们不是一遍又一遍的相同的山丘......但现在我们遇到了一个问题。当我们再次要求同一座山时,它就不一样了!

local distanceAway = 10
local hillHeight = math.sin( distanceAway ) + math.random()
print( hillHeight )
hillHeight = math.sin( distanceAway ) + math.random()
print( hillHeight )

想象一下,你正在环游世界,你在山顶上发现了一块非常酷的岩石或树。所以你走开去找朋友,但当你回来时,山顶现在变成了一个山谷。无论你走到哪里,都会是这样。任何地方都没有持久的世界可以重温!

因此,让我们使用来自噪声函数的伪随机数来代替随机数。这一次,让我们也提供一个种子值!

local seedValue = 0.2357
local distanceAway = 10
local hillHeight = math.sin( distanceAway ) + math.noise( distanceAway, 0.5, seedValue )
print( hillHeight )
hillHeight = math.sin( distanceAway ) + math.noise( distanceAway, 0.5, seedValue )
print( hillHeight )

美丽的!提供种子数允许噪声函数每次重新创建相同的随机数。现在我们有了可重现的地形生成,它也有一些有趣的变化!

如果您想了解噪声的其他用途,可以查看德克萨斯大学制作的精彩幻灯片,深入探讨随机数和噪声。

我希望这有助于解释为什么 Roblox 地形编辑器允许您提供“种子”值。据我所知,没有一个包含所有不同种子的主列表。但是,如果您找到一个好的,请务必与您的朋友分享该号码,以便他们也可以尝试!

于 2019-11-03T16:46:02.357 回答
1

种子基本上是一个使地形不同的数字,例如,你想要一个有大洞穴的部分,你得到种子,你粘贴它,你想要的地形就会出现,每个种子都是不同的,所以尝试尽可能多的种子想要并找到你最喜欢的 :3

于 2020-05-25T08:43:26.403 回答