Знак высокой эффективности правильный. Позвольте мне объяснить почему.
Генераторы ландшафта, генераторы облаков и симуляторы океана используют математические функции волн, случайных чисел и шума для построения интересных и правдоподобных форм. Значение посевного материала не имеет значения ни для кого, кроме генератора. Это значение позволяет быстро и надежно получать воспроизводимые результаты. Компьютерные программы должны найти способы оптимизировать все возможное, а хранение информации о местности может быть большим объемом данных, которые нужно удерживать! Таким образом, вместо того, чтобы сохранять все это, умные системы будут пытаться регенерировать местность всякий раз, когда это необходимо. Каждое место на местности можно пересчитать с помощью сложной математической функции, и ваше начальное значение играет важную роль в этом расчете.
В качестве примера предположим, что вы хотите нарисовать несколько 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 позволяет вам указывать значение «Seed». И, насколько мне известно, не существует общего списка, составленного из всех различных семян. Но если вы найдете хороший, обязательно поделитесь номером со своими друзьями, чтобы они тоже могли его попробовать!
person
Kylaaa
schedule
03.11.2019