Roblox Terrain Generator中的种子是什么?

问题描述 投票:0回答:1

我正在使用Roblox Studio,并且遇到了Terrain Generator。它具有文本输入“ Seed”,并且始终具有一些默认编号/代码。我一直对种子是什么以及Roblox种子上是否有某种清单感到困扰。这是该功能的屏幕截图:Screenshot of Terrain Editor on Roblox Studio

我一直在乱输入随机数,这已经影响了地形样式。我也曾多次搜索过Roblox Seeds,但只找到了游戏和组。

如果能在所有Roblox种子以及它们的工作方式上列出某种清单,我将不胜感激。

roblox
1个回答
1
投票

高性能标记是正确的。让我解释一下原因。

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

例如,您想绘制一些2D山丘。您可以使用sine wave描述这些山丘的高度。

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 )

想象您正在穿越世界,您在山顶上发现了一块非常酷的岩石或树木。因此,您走开去寻找朋友,但是当您返回时,山顶现在是山谷。到处都是,就像那样。没有持久的世界可以在任何地方重访!

因此,我们使用noise function中的伪随机数代替随机数。这次,我们也提供一个种子值!

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 )

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

如果您想查看噪声的其他用途,有一个奇妙的slideshow made by the University of Texas可以深入介绍随机数和噪声。

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

© www.soinside.com 2019 - 2024. All rights reserved.