Генератор островов
Придумал сегодня очень простой алгоритм генерации островов для своей будущей игры:)
Может кому нибудь и пригодиться:) 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:Да я знаю что есть много других, более реалистичных алгоритмов. |
Ответ: Генератор островов
Обновил демку. Теперь на берегах песок.
|
Ответ: Генератор островов
Тоже юзал canvas для генерации текстурок, очень удобно однако :)
|
Ответ: Генератор островов
Занимательная штука, должен сказать.
Напомнило о подобном алгоритме который я начал реализовывать во время написания CloudNexus, но не успел из-за временных рамок конкурса. Попробывал уменьшить размер карты, островки выглядят весьма прилично (в плане распределения) для 32х32: Код "форка", с бонусным форматированием и комментариями: http://pastebin.com/F40GiwzN Возможно позже сделаю фрагмент упомянутой игры на JS, чтобы по островкам можно было побегать на ПК и мобильных устройствах. |
Часовой пояс GMT +4, время: 18:51. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot