Игра на карте реального мира вышла в Steam
После долгих спотыканий о подводные камни Generation Streets наконец-то вышла в Steam:
https://store.steampowered.com/app/887970
Кто не помнит, о чем речь, можете прочитать первый пост, либо просто посмотреть на картинку:
Generation Streets на пути в Steam
Игра на основе карты реального мира, анонсированная в предыдущем посте, наконец-то на пути в Steam. Прошу прощения у подписчиков за задержку, двухнедельная доработка неожиданно затянулась аж на два месяца и все еще идет. Но главное - почти все процедуры для публикации в Steam пройдены, страничка уже висит в разделе "Скоро выйдет", игру можно добавлять в вишлист: https://store.steampowered.com/app/887970/Generation_Streets...
А еще у игры появился скромный трейлер:
Доработки в основном носили технический характер, также решался вопрос с локальным кэшем геоданных. Решение следующее: игра будет содержать кэш тяжеловесных и/или популярных мест (крупных городов) и кэш большинства населенных пунктов тех стран, которые соответствуют выбранному языку. В результате размер игры будет порядка 4 гигабайт и с большой вероятностью нужные территории уже будут в кэше. Отсутствующие территории будут загружаться из сети.
Релиз запланирован на 3 октября.
Надеюсь, никаких подводных камней уже не будет.
Игра на основе карты реального мира
Наверное, каждый мечтал загрузить в любимую игру свой родной город и побегать по знакомым улицам. Скоро у вас появится такая возможность. Встречаем: Generation Streets, игра на основе OpenStreetMap. Суть такова: берём карту, превращаем домики в трёхмерные, натягиваем текстуры, расставляем деревья, уличные фонари, опоры ЛЭП и прочий визуальный мусор. Получается примерно так:
Москва:
Тольятти:
Кинель-Черкассы, село в Самарской области:
Ну и так далее.
Кстати, в игру будут встроены инструменты для экспорта сгенерированных 3D-моделей в любые форматы, а это значит, что народные умельцы получат возможность создавать моды для других игр, загружая в них карту реального мира. Позднее я, скорее всего, вообще открою весь код под свободной лицензией. Но это потом.
Отмечу, что хоть многие населенные пункты в OpenStreetMap прорисованы достаточно детально, геоданных почти никогда не хватает для того, чтобы отрисовывать объекты такими, какими они являются в реальной жизни. Скажем, у зданий очень часто не указана ни высота, ни количество этажей, ни тип здания (жилое, промышленное, еще какое-то), ни уж тем более цвет и материал отделки. Все эти параметры движку приходится в буквальном смысле угадывать либо просто выбирать случайным образом. Поэтому, загрузив свой город и найдя свой дом, не надо ждать стопроцентного совпадения. Будет похоже и узнаваемо, но не более. Не говоря уже о том, что некоторые населенные пункты могут быть вообще не прорисованы.
Между прочим, псевдо-постапокалиптический сеттинг выбран именно из-за недостатка данных, с его помощью маскируются неизвестные параметры. А еще он позволил рисовать все мосты и эстакады полуразрушенными (это гораздо проще, чем анализировать плоскую карту и пытаться понять, где и как идут съезды с эстакад; и все равно не факт, что угадаю).
Вид от третьего лица с отдаленной камерой также выбран из-за низкой детализации. На самом деле визуального мусора можно было нагенерировать и побольше, но я уже упёрся в возможности своего самописного движка, который и так не особо блещет производительностью.
# Про геймплей
Геймплей я сделал максимально простым и ненапряжным - это экшн с массовым отстрелом условных пришельцев и собиранием выпадающих из них кусочков энергии. Никаких прокачиваний и никакого доната с лутбоксами. Геймплей сделан почти для галочки, его основная задача - придать смысл беготне игрока по игровому миру и приукрасить процесс разглядывания местности.
# Про OpenStreetMap
OpenStreetMap - открытая карта, которую рисуют сами пользователи. Как Википедия, но в мире географических карт. Главное отличие OpenStreetMap от, например, народной карты Яндекса в том, что геоданные распространяются под свободной лицензией ODbL, а это значит, что можно скачать исходник всей планеты (около 50 Гб сжатых данных) и делать с этими данными что угодно. Например, вот такую игру.
На основе OSM работают многие сервисы. Вы, возможно, сами пользуетесь каким-нибудь сервисом на основе OSM и даже не знаете этого.
Детализация и точность данных варьируется на разной местности. Некоторые населенные пункты прорисованы с точностью до каждого дерева, на некоторых висит только пара центральных дорог. Крупные города, как правило, прорисованы более детально мелких деревень и сёл, но есть и исключения. Самую знаменитую историю про картографирование села Краснохолм можно почитать на Хабре: https://habr.com/post/211430/
# Про рельеф
OSM не хранит данные о рельефе, поэтому за картой высот пришлось обращаться к другим источникам. В глобальном масштабе планеты данные весьма детальные, но при приближении всплывает много неточностей и смещений. Например, в Тольятти у Комсомольского района есть крутой склон к Волге. Возвышение на карте высот смещено к югу, из-за чего вода затекает прямо на склон. Такие нестыковки приходится ретушировать при помощи шейдера:
На этом пока всё, как только игра будет опубликована в Steam, напишу пост с анонсом.
Герои Overwatch на карте
Посетила меня шальная мысль разместить на карте всех персонажей игры Overwatch.
Получилось занятно.
Персонажи из Европы:
(Отметил Бастиона в Германии, так как он там "переродился".)
Северной Америке (много персонажей из США):
России и Азии:
(Не знал, где разместить Гендзи. Решил все же в Японии. Хотя он тоже переродился в Непале)
Африка:
Австралия:
Южная Америка (Одинокий Лусио):
На карте нет Уинстона, так как он с Луны
Ссылка на интерактивную карту https://yandex.ru/maps/-/CBeF4QHrPC