forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Генератор островов (http://forum.boolean.name/showthread.php?t=16777)

den 11.05.2012 21:49

Генератор островов
 
Придумал сегодня очень простой алгоритм генерации островов для своей будущей игры:)
Может кому нибудь и пригодиться:)
JavaScript демка (обновляем страничку для генерации)

А теперь для заинтересовавшихся рассказываю суть:
0) Имеется карта. Заполняем её водой.
1) В точке (x0, y0), радиусом r рисуем круг суши.
2) Задаем рандомное число n (у меня оно лежит в пределах [5 ; 10])
3) Теперь повторяем n раз следующее действие: рисуем круг суши, в рандомных координатах, где x принадлежит [x0-r ; x0+r], а y соответственно [y0-r ; y0+r]. И рандомным радиусом, в пределах [0.2r ; 0.5r].
4-5) Делаем тоже самое, что и в пунктах 2-3, но заполняем круги водой.

Пол дела сделано. Осталось сгладить карту. Я делал так:

6) Перебирал все квадраты 2*2 ячеек, усреднял значение высот, и задавал каждой ячейке этого квадрата, это усредненное значение. Если не ошибаюсь, данный метод называется сглаживание по квадрату.



ps:Да я знаю что есть много других, более реалистичных алгоритмов.

den 13.05.2012 15:29

Ответ: Генератор островов
 
Обновил демку. Теперь на берегах песок.

moka 13.05.2012 22:36

Ответ: Генератор островов
 
Тоже юзал canvas для генерации текстурок, очень удобно однако :)

YellowAfterlife 14.05.2012 11:14

Ответ: Генератор островов
 
Занимательная штука, должен сказать.
Напомнило о подобном алгоритме который я начал реализовывать во время написания CloudNexus, но не успел из-за временных рамок конкурса.

Попробывал уменьшить размер карты, островки выглядят весьма прилично (в плане распределения) для 32х32:

Код "форка", с бонусным форматированием и комментариями: http://pastebin.com/F40GiwzN

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


Часовой пояс GMT +4, время: 18:51.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot