After Dark - часть 1

<p><i>Сегодня я расскажу вам про разрабатываемую мной игру After Dark.</i></p><p><i>Публикации будут выходить несколькими частями. Первая часть посвящена зарождению идеи и особенностям генерации уровней.</i></p>

Сегодня я расскажу вам про разрабатываемую мной игру After Dark.

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

Все началось с того, что в свое время меня восхитила игра Ingress, тем, что она была привязана к реальному миру и мне захотелось попробовать сделать нечто подобное.

Я начал изучать статьи в сети, искать что-то похожее, что было бы OpenSource, чтобы взять его за основу и развивать уже в нужном мне направлении. Так я начал изучать OpenStreetMap, открытую базу геоданых, развиваемую и поддерживаемую сообществом.

В качестве игрового движка я выбрал Unity Engine, так как в момент начала разработки игры, уже достаточно в нем разбирался.

В начале я разрабатывал 2D игру, по типу Ingress, но потом подумал, а почему бы не превратить ее в 3D, ведь все необходимое для этого есть. Большинство строений в OSM имеют данные о высоте или о количестве этажей и этого уже достаточно для того, чтобы строить 3D объекты.

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

Так After Dark стал трехмерным. Далее для улучшения визуализации была добавлена поддержка отдельных типов крыш (плоская, купол, полусфера и т.д.), поддержка цвета фасадов и крыш, отдельные текстуры для разных материалов поверхностей и т.д. ну и конечно важным фактором является поддержка параметров min_height и min_level которые указывают на какой высоте начинать строить объект, так как некоторые части зданий могут не стоять на земле, а парить в воздухе.

After Dark - часть 1

Кроме зданий, в игре имеется отображение разных типов дорог, в зависимости от класса дороги и указанного материала поверхности, ей присваивается текстура и задаётся ширина. Пешеходная зебра — это тоже отдельный вид дороги, у которой используется текстура с альфа-каналом, которая накладывается сверху на автомобильную дорогу.

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

Дополнительными объектами являются водоемы и различные виды парков, с текстурой травы и размещенными деревьями.

After Dark - часть 1

Игра использует систему плиток - tiles, которые автоматически создаются по мере движения игроков.

Алгоритм выглядит так:

сначала создаётся пустой участок плитки, сверху на него натягивается текстура местности, дальше загружается geojson с описанием местности и на его основе загружаются все объекты, после чего строится навмеш для указанной плитки. Каждая плитка представляет собой отдельный террейн.

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

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

Уже незадолго до размещения в Steam увидел там похожий проект: Generation Streets:

В очередной раз убедился, что в этом мире, ничто не уникально)

Всем, кому интересно, добавляйте игру в желаемое:

9
1 комментарий