Статьи
Картография

“Через двести метров башня” или как я делал карту из Доты в стилистике 2ГИС

Время прочтения: 6 минут
Однажды листая Reddit я увидел пост, где была изображена карта города Los Santos из игры GTA San Andreas. Меня привлекло оформление в формате карт Google:
Картография в вымышленных мирах — это отдельная тема для обсуждения и дискуссий. Другой вопрос — внешняя оболочка самой карты. Одно из ключевых правил визуализации — учет человеческого восприятия. Мы с вами можем представить паттерны картографической айдентики из игр, книг, фильмов. Самый яркий пример — если я упомяну карты Дж. Р. Р. Толкина в легендариуме “Властелин колец”, то вы сразу представите “барашки” лесных массивов и каллиграфические надписи топонимов. Многие любят этот стиль визуализации и переносят его на объекты реального мира. Даже я когда-то рисовал карту Москвы:
И в то же время интересен обратный процесс: как будут выглядеть территории вымышленных миров в стилистике картографии реального мира? Я уже брался за подобные задачи, к примеру, заключая транспортную сеть из игры “Дальнобойщики 2” в оболочку OpenStreetMap:
Мне понравился этот процесс, поэтому захотел взять в работу что-нибудь еще из мира компьютерных игр — решил вспомнить студенчество и отдать дань уважения игре Dota 2, где небольшой размер игрового поля оптимален для апробации. В качестве стиля карты остановился на цветовой палитре 2GIS.
Dota 2 — компьютерная многопользовательская командная игра от компании Valve Corporation. Игровой процесс заключается в том, что игроки делятся на две конкурирующие фракции (силы Света и силы Тьмы) до пяти игроков в каждой. Цели игры — уничтожить вражеского Древнего, а также защитить своего. Все матчи проходят на игровом поле, где каждая из фракция занимает свою половину карты, разделенную рекой, силы Света — в левом нижнем углу, силы Тьмы — в правом верхнем.
Сам процесс формирования карты условно разделен на пять шагов, каждый из которых связан с созданием и редактированием определенных элементов на карте.
Итак, открываю QGIS, добавляю изображение и начинаю работу.
Дисклеймер: Dota 2 постоянно обновляется, добавляются новые механики и особенности, в том числе меняется и карта. Я взял за основу карту из версии 7.33, когда произошли последние наиболее значимые изменения ландшафтов.

Шаг 1. Опорные точки

Первая проблема, которая сразу же возникла и потенциально могла создать трудности в дальнейшем — добавленный в QGIS растр карты не имеет пространственной привязки и, соответственно, для него не подойдут “земные” единицы измерения расстояний и площадей. Было найдено довольно простое решение: я построил регулярную точечную сеть на всю карту с шагом в 50 пикселей изображения:
Такая сеть опорных точек решает сразу несколько задач. Во-первых, как было сказано выше, это очень удобный инструмент для масштаба. А во-вторых, использование регулярной сети позволяет строить геометрически правильные контуры объектов. Мы привыкли, что 2GIS — это городские карты, и следовательно, на них читается строгая геометрия планировки урбанизированных территорий. Поэтому в дальнейшем я много раз буду опираться на эту сеть в ходе построения векторных слоёв ландшафтов и дорог.
Переходим к оцифровке.

Шаг 2. Ландшафт

Если вы взглянете на игровое поле, то первое, что бросается в глаза — два разных типа местности, разделенные рекой. Согласно лору игры, территорию делят две фракции — Силы Света (Radiant) слева внизу и Силы Тьмы (Dire) справа вверху. Для Radiant характерен зеленый цвет, для Dire — серый.
Если говорить о конечной визуализации в стиле городской карты, то конфигурацию ландшафта Dota 2 в нашем случае можно интерпретировать следующим образом — лесные/каменистые островки — это кварталы, тропинки между ними — улицы. Такая классификация упрощает подходы к выбору объектов для оцифровки. Вот, например, такими получились некоторые полигоны лесных островков Сил Света (как я говорил выше — в качестве упрощения контуров использовал опорные точки):
А вот часть лесных контуров Сил Тьмы:
В совокупности, все выглядит следующим образом:
Можно заметить, что полигоны ландшафтов довольно точно обозначили сеть дорог и тропинок. Поэтому переходим к шагу рисования транспортной сети.

Шаг 3. Дороги

С дорогами ситуация немного сложнее. В первую очередь необходимо учитывать, что карта разделена на три основных полосы (Lane) для каждой фракции: верхнюю, нижнюю и среднюю — Hard Lane, Easy Lane и Mid Lane. Фактически, это будущие магистрали нашей карты. Я решил соблюсти правила геометрии, и построил квадрат, где левая нижняя вершина это база Сил Света, а верхняя правая — Сил Тьмы. Диагональ квадрата — тот самый Мид:
После этого приступил к созданию векторного слоя дорог. Здесь я опирался на основные правила создания транспортной карты, где углы линий должны быть кратными 45 градусам. Также старался не усложнять геометрию самой линии, и сильно не повторять конфигурацию тропинок:
Фактически, методика повторяла принцип построения, описанный в статье о создании транспортных карт в QGIS. Все тропинки, а также Hard Lane, Easy Lane и Mid Lane формируют следующую сеть дорог:
Здесь стоит отметить один нюанс. При построении некоторые линии дорог будут накладываться и/или пересекать уже созданные контуры ландшафтов. Это не очень красиво, плюс будет нарушаться формат городской карты, где между дорогами и кварталами есть четкое разделение. Поэтому я ввел внутреннее правило: между полигонами ландшафтов и линиями небольших тропинок расстояние должно составлять одну опорную точку, а между магистралями (лейнами) — две. Вот результат:
Также я поправил геометрию магистральных линий: добавил скругления слева сверху и справа внизу, а на точках, где расположены башни построил кольцевые развязки. Представляю вашему внимаю транспортную сеть Dota 2:
Добавим сюда откорректированные полигоны ландшафтов:
Как вы заметили, я уже на этапе формирования слоев решил использовать цветовую палитру карт 2GIS. Для лесных территорий сил Света взял цвет #c9dd92 (в 2GIS соответствует газонам и зеленым зонам), для Сил Тьмы — #bfc1c3 (в 2GIS соответствует промышленным территориям). Всё красиво, но чего-то не хватает. Верно, строений.

Шаг 4. Постройки

На карте Dota 2 есть большое количество построек. Но я ограничился следующими ключевыми объектами:
  1. Фонтаны (Fountain) — сооружения, находящиеся в зоне возрождения героев каждой фракции;
  2. Древние (Ancient) — ключевые объекты, находящиеся внутри баз каждой фракции, являясь главными целями для противника
  3. Башни (Towers) — линия защиты для фракции, атакующая вражеского врага в определенном радиусе. Подразделяются на 4 уровня: в конце лейна, посередине лейна, на возвышенностях базы и перед Древними.
  4. Казармы (Barracks) — в них появляются крипы (creeps) — базовые существа, неподконтрольные никакому игроку.
  5. Командные постройки (Buildings)
  6. Лавки (Shops)
В ходе расставления построек опирался на интерактивную карту Dota 2, и если вы далеки от мира Доты, то рекомендую покликать этот ресурс.
Каждая постройка расположена довольно близко к своему месту на карте, однако из-за генерализации слоев ландшафтов и дорог иногда возможны незначительные смещения:
Мы знаем, что у 2GIS есть возможность просмотра карты в режиме “3D здания”. Поэтому в таблице атрибутов векторного слоя я создал целочисленное поле, значения которого в дальнейшем будет использовано для параметров высоты в стилизации “2.5D” в QGIS:
Вроде всё готово, переходим к формированию итогового макета.

Шаг 5. Финальный макет

В рамках этого шага была оцифрована река, а также добавлен фон (#faf4e3). Наверное, самый приятное — собрать все слои вместе и посмотреть, как это выглядит в совокупности:
Добавив небольшую подпись получаем итоговый вариант:
На этом примере можно с уверенностью сказать, насколько большую роль в картографическом материале играет цветовая палитра. Узнаваемые цвета, шрифты и форматирование той или иной платформы позволяет преобразовать вымышленный мир в привычную нам картину реального.
Безусловно, карта открыта для совершенствования и добавления новых элементов. Но пусть это останется для версии 2.00 🙂
Материал подготовил Александр Боровлёв