Я пробую кое-что в Unity3d и обнаружил, что не могу создать простой генератор мира. По сути, я хочу, чтобы генератор мира создавал мир, подобный поколению мира OpenTTD (только для ландшафта и воды, а не для зданий, лесов или чего-то еще).

Проблема, с которой я столкнулся, заключается в том, что я могу прийти только с вещами, которые больше заканчиваются в направлении генерации мира вроде Minecraft, а это именно то, чего я не хочу. Обычно я получаю какое-то минное поле из блоков вместо красивого мира, такого как OpenTTD.

Интересно, есть ли у кого-нибудь опыт создания мира и может ли он указать мне правильное направление.

К сожалению, у меня нет кода, который я мог бы показать, потому что я удалил свой код в ярости от множества сбоев.

Прошу прощения, если я разместил это не в том месте, но это казалось единственно логичным местом.

1
DijkeMark 28 Фев 2014 в 01:56
1
 – 
Kissiel
28 Фев 2014 в 02:00

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
                }
            }
        }
    }
1
Shredder2500 1 Мар 2014 в 20:51
Благодарим за ваше предложение. Я нашел такой, который называется шумом Перлина. Я смотрю на этот шум LibNoise и perlin, который по умолчанию находится в unity3d, насколько я понимаю. Вы знаете какие-нибудь примеры использования LibNoise?
 – 
DijkeMark
1 Мар 2014 в 01:26
Да, в него встроен шум Перлина, шум mathf.perlin, но у вас нет особого контроля над ним. Для теста скорости вокселя я собираюсь отредактировать свой ответ, чтобы добавить то, что я сделал.
 – 
Shredder2500
1 Мар 2014 в 02:16
Хорошо, спасибо, я скоро попробую. Я дам вам знать, что у меня в итоге получается
 – 
DijkeMark
1 Мар 2014 в 15:55
Это будет выглядеть так, как в моем видео, поэтому, если вы хотите, чтобы он выглядел как местность, вам нужно выполнить тест высоты, также я не буду обновлять ответ с этим тоже
 – 
Shredder2500
1 Мар 2014 в 20:49
Хочу поблагодарить вас. Теперь я могу создать простую сетку ландшафта с шумом Перлина.
 – 
DijkeMark
4 Мар 2014 в 00:33