Я пробую кое-что в Unity3d и обнаружил, что не могу создать простой генератор мира. По сути, я хочу, чтобы генератор мира создавал мир, подобный поколению мира OpenTTD (только для ландшафта и воды, а не для зданий, лесов или чего-то еще).
Проблема, с которой я столкнулся, заключается в том, что я могу прийти только с вещами, которые больше заканчиваются в направлении генерации мира вроде Minecraft, а это именно то, чего я не хочу. Обычно я получаю какое-то минное поле из блоков вместо красивого мира, такого как OpenTTD.
Интересно, есть ли у кого-нибудь опыт создания мира и может ли он указать мне правильное направление.
К сожалению, у меня нет кода, который я мог бы показать, потому что я удалил свой код в ярости от множества сбоев.
Прошу прощения, если я разместил это не в том месте, но это казалось единственно логичным местом.
1 ответ
Я использую LibNoise для создания миров. Здесь перенесен на Unity. Я использую его здесь, но без градиента или чего-либо еще, поэтому он никогда не обрезается, чтобы сделать "Рельеф". В самом C ++ libnoise есть множество руководств по созданию ландшафтов, ссылка на c ++ libnoise
Мой тест скорости вокселя:
Perlin perlin = new Perlin((double)frequency, (double)lacunarity, (double)persistence, octaves, seed, QualityMode.High);
RidgedMultifractal fractal = new RidgedMultifractal((double)frequency, (double)lacunarity, octaves, seed, QualityMode.High);
ModuleBase noise = new Add(perlin, fractal);
for (int x = 0; x < chunkSize; x++)
{
for (int y = 0; y < chunkSize; y++)
{
for (int z = 0; z < chunkSize; z++)
{
if (noise.GetValue(global) < .5) // or if you want it to look like terrain change to (chunkPos.y * chunkSize) + y <= (Noise.GetValue(global + 1) / 2) * height
{
//add here
}
}
}
}
Похожие вопросы
Новые вопросы
random
Этот тег предназначен для вопросов, касающихся случайных чисел и их генераторов, будь то псевдослучайных или действительно случайных.