Учусь программировать. Первый 2Д редактор карты.

Nov 13, 2014 14:26

ч.4 Учусь программировать. Настоящий поиск пути. А*.
Чтож, первый поиск пути готов, хоть и кривоватый, но вполне работоспособный и его даже можно зайдествовать. Нужно браться за что то более сложное. Поскольку модельщик я тот еще, на время я решил отказаться от 3Д и следующей целью стал редактор 2Д карты.

В свое время довольно много времени я посвятил Героям 3. Я прошел все кампании, клепал свои карты и миссии. Тогда еще не было мега 3Д игр с суперграфикой, и герои казались фантастически красивой игрой.

И я до сих пор считаю редактор карт Heroes III эталоном редактора для двухмерных карт. Раньше я не задумывался сколько труда вложено, чтобы создание новой карты было настолько простым и даже увлекательным занятием - это было как самом собой разумеющееся. А теперь я решил подойти к этому с точки зрения разработчика.
Полазив по всемирной сети, я также провел некоторые сравнения, какие есть еще интересные реализации 2Д редакторов. Просмотрев кучу видео демонстраций в очередной раз убедился насколько эталонный редактор продуманный и в тоже время простой и удобный. В некоторых других редакторах например отсутствовал автотайлинг земли и для того чтобы создать красивую территорию приходилось нажимать кучу лишних кнопок, выбирая нужный кусочек земли и собирать территоию буквально как пазл. В других, к примеру для создания дерева или домика требовалось собирать его из нескольких кусочков, что так же требовало дополнительных усилий.

Поэтому решительно откинув их я стал пристально всматриваться в мой эталонный редактор :).




Редактор 3 героев был у меня постоянно на виду и я по несколько раз проделывал одни и те же действия чтобы понять механику того или иного процесса. Это было очень увлекательно.

Первое что у меня получилось больше напоминало упрощенный вариант Painta. Я научился расставлять нужный мне кусочек атласа на карте. Поскольку атласом на тот момент было простенькое разноцветное изображение поделенное на квадратики, получилосьвот такая штука:

image Click to view



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

Вторая большая сложность была связана с правильным автоматическим подбором нужного кусочка земли (тайла).
Но еще сложнее оказалась задача, а как совмещать разные типы земли, чтобы было красиво и в то же время не требовало каких то дополнительных усилий. Ведь для того, чтобы совместить 8 различных видов земли потребовалось бы несколько сотен вариаций нарисованных тайлов.
Снова обратившись в редактору Heroes3 и посоздовав землю, я увидел, что переходы осуществляются не в отношении каждая к каждой, а всего двумя типами - земля и песок.
То есть между разными типами земли, например трава и снег был обязательно промежуток земли или песка.

Это замечательно, но все равно рисовать пришлось бы много. К тому времени я уже откопал атласы самих героев 3 и на каждый вид там приходилось около 50-60 рисунков, поэтмоу я остановился на одной промежуточной земле (этакий песочек). Поколдовав немного с кодом я получил вот такой вариант.
На видео уже получившаяся полуавтоматическая расстановка земли. Как видно приходится по несколькораз проводить по одним и тем же участкам, чтобы выбрался правильный кусочек. Но это уже было намного удобнее, чем расставлять каждый кусок отдельно выбирая его на панели.

image Click to view



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

Этот был именно тот нужный мне пинок :))).
И я снова углубился в код и редактор Героев 3, заново рассталвя землю, выискивая суть алгоритма и снова правя код. И уже через несколько часов добился правильного автозамещения нужных мне кусочков.
Затем, как и в редакторе Героев 3 добавил несколько размеров кисточек, чтобы еще больше ускорить отрисовку земли.
По ходу дела, я сразу же писал чистый 2Д поиск пути по алгоритму А*. Поскольку реалтайм поиск пути у меня уже был, я решил попробовать себя в пошаговой логике и скажу Вам, что это оказалось сложнее, поскольку требовались более точные расчеты пути, поскольку выбор менее адекватного пути ботом смотрелось убого.

image Click to view



Следующей адачей, которую я поставил перед собой стала возможность учитывать разные типы земли, уменьшая/увеличивая количество доступных очков передвижения. А также создание графического контента. Спрайт прототипа персонажа я создалв JRPG редакторе, а вот остальной контент я рисовал в ручную. Поскольку я не линуксоид, этот был момент открытия графического редактора GIMP. Как уже писал я ни разу не художник, но потратив пару недель на ежедневные тренировки в рисовании у меня стали получаться довольно красивые рисунки :))).
На тот момент я оставил кодинг и только и делал что рисовал. Я трижды полностью перерисовывал атлас замли, а это без малого около 500 миникартинок объединенных в одну. Почему их оказалось так много ? Я решил, чтобы не было однообразной земли, нарисовать по несколько видов кусочков одного типа. Нарисовал около 100 спрайтов контента. Зато теперь могу сказать, что познакомился с работой 2Д художника.

Нарисовав некоторое количество, появилась новая задача - правильная расстановка контента на карте, чтобы персонаж обходил деревья горы и т.п. И снова возникли сложности, поскольку выставляя к примеру гору, а затем дерево - дерево оказывалось всегда впереди горы, даже если по идее гора была больше. Или к примеру, если персонаж был установлен позже всех, то проходя за дереов он все равно отображался поверх него. Пришлось изучать зависимость слоев отображения и писать систему правильной расстановки предметов, чтобы не было неадекватного наложения спрайтов. Также была написана система переопределения проходимости клеток и редактор установки контента, опять же на примере редактора Героев 3.

И вот что получилось у меня в конце :), видео снял сегодня, поскольку на этом этапе я пока забросил этот проект и переключился на 3Д редактор карты похожего стиля и 3Д поиск пути.

image Click to view



Продолжение следует...

2Д редактор карты, учусь программировать, unity3d

Previous post Next post
Up