Я создаю простую игру RTS сверху вниз. Я планирую «случайным образом» генерировать карты на лету, когда мне это нужно. Я планирую все это работать в «проходах»:
- Заполните местность всей травой
- Вернитесь и добавьте несколько случайных всплесков гравия.
- Округлить гравий
- Нарисуйте горный пейзаж на втором слое
- Вокруг горы
- и т. д.
Теперь взгляните на эту картинку ниже:
Я сделал это вручную, используя мой редактор карт, но я планирую, что это будет в основном результатом после, надеюсь, паса / шага 3.
Как мне решить, когда и где разместить гравий так, чтобы он был по крайней мере неправильной формы и достаточно спорадическим, чтобы выглядеть естественным?
Спасибо, если можете! Любая помощь приветствуется!
Как примечание стороны:
Каждый проход, в основном, проходит через все мои тайлы (карта разделена на тайлы 40х40), примерно так:
for (int x = 0; x <= GRIDMAX - 1; x++) {
for (int y = 0; y <= GRIDMAX - 1; y++) {
//Terrain(x, y, 0) = SomethingHere;
}
}
источник
По сути, вы можете использовать Perlin Noise поколения для создания ваших карт. Вы должны сэмплировать сгенерированную карту высот и назначить гравийные блоки частям карты, которые имеют высоту выше определенной.
Вот отличный справочный пост о том, как реализовать такую систему и различные типы ландшафта, которые вы можете создать.
В примерах гораздо больше шагов, чем нужно, но концепция та же.
Подробнее о мире поколения Minecraft
http://www.gamedev.net/blog/33/entry-2227887-more-on-minecraft-type-world-gen/
источник