Способы генерации 2D ландшафта
|
|
LetsOffBrains | Дата: Пятница, 11 Января 2013, 05:21 | Сообщение # 1 |
Project SoRDeLKa
Сейчас нет на сайте
| Генерация ландшафта без корейского рандома, как такое реализовать? Понятно можно использовать ключ, именуемый семенем(seed), но же с ним делать? Использовать одну функцию для генерации одной вещи с применение множителей из ключа? Или есть еще варианты? Может без ключа?
|
|
| |
vasua99 | Дата: Пятница, 11 Января 2013, 08:22 | Сообщение # 2 |
GNU follower
Сейчас нет на сайте
| Рандом, для генерации ландшафта нужны специальные алгоритмы. Типо фракталов. Сам когда то пытался написать такую ерунду :-)
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
GECK | Дата: Пятница, 11 Января 2013, 11:48 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| Шум перлина же. Берешь любую понравившуюся функцию от координат точки, например такую: Код float Noise2D(int x, int y){ int n = x + y * 57; n = (n<<13) ^ n; return ( 1.0f - ( (n * (n * n * 15731 + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0f); } это будет "рандом", который строго определен для любой точки карты. А дальше все зависит от фантазии.
Всё гениальное просто. И хреново работает.
|
|
| |
LetsOffBrains | Дата: Пятница, 11 Января 2013, 12:01 | Сообщение # 4 |
Project SoRDeLKa
Сейчас нет на сайте
| Прошу пояснить мне: (n<<13), 1.0f, & 0x7fffffff, 1073741824.0f Нужно это чем-то заменять, вероятно, но без понимания... =)
И цифры 57, 13, 15731... это множители от которых и будет зависеть вид мира?
|
|
| |
GECK | Дата: Пятница, 11 Января 2013, 17:37 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| По сути, можно взять любую функцию с потолка. Например (a*x + b*y + c) % d и поиграть с коэффициентами. А потом на основе этого рандома генерируешь шум перлина, а потом как-нибудь извращаешься над ним и получаешь ландшафт. Повторюсь, все зависит от фантазии
Всё гениальное просто. И хреново работает.
|
|
| |
Сибирский | Дата: Пятница, 11 Января 2013, 17:42 | Сообщение # 6 |
Javatar
Сейчас нет на сайте
| Рекурсивно наслаивай вокруг определенных точек различные породы по порядку.
|
|
| |