Игра на основе карты реального мира

Наверное, каждый мечтал загрузить в любимую игру свой родной город и побегать по знакомым улицам. Скоро у вас появится такая возможность. Встречаем: Generation Streets, игра на основе OpenStreetMap. Суть такова: берём карту, превращаем домики в трёхмерные, натягиваем текстуры, расставляем деревья, уличные фонари, опоры ЛЭП и прочий визуальный мусор. Получается примерно так:

Игра на основе карты реального мира Gamedev, Игры, Компьютерные игры, Карта мира, Openstreetmap, Длиннопост
Загрузить можно практически любую точку планеты, кроме Северного полюса и Антарктиды. Я уже прошел регистрацию в Steam и готовлю игру к публикации, первая версия выйдет в ближайшие 2-3 недели. А пока вот еще скриншоты.


Москва:

Игра на основе карты реального мира Gamedev, Игры, Компьютерные игры, Карта мира, Openstreetmap, Длиннопост

Тольятти:

Игра на основе карты реального мира Gamedev, Игры, Компьютерные игры, Карта мира, Openstreetmap, Длиннопост

Кинель-Черкассы, село в Самарской области:

Игра на основе карты реального мира Gamedev, Игры, Компьютерные игры, Карта мира, Openstreetmap, Длиннопост

Ну и так далее.

Игра на основе карты реального мира Gamedev, Игры, Компьютерные игры, Карта мира, Openstreetmap, Длиннопост

Кстати, в игру будут встроены инструменты для экспорта сгенерированных 3D-моделей в любые форматы, а это значит, что народные умельцы получат возможность создавать моды для других игр, загружая в них карту реального мира. Позднее я, скорее всего, вообще открою весь код под свободной лицензией. Но это потом.

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

Между прочим, псевдо-постапокалиптический сеттинг выбран именно из-за недостатка данных, с его помощью маскируются неизвестные параметры. А еще он позволил рисовать все мосты и эстакады полуразрушенными (это гораздо проще, чем анализировать плоскую карту и пытаться понять, где и как идут съезды с эстакад; и все равно не факт, что угадаю).

Игра на основе карты реального мира Gamedev, Игры, Компьютерные игры, Карта мира, Openstreetmap, Длиннопост

Вид от третьего лица с отдаленной камерой также выбран из-за низкой детализации. На самом деле визуального мусора можно было нагенерировать и побольше, но я уже упёрся в возможности своего самописного движка, который и так не особо блещет производительностью.

# Про геймплей

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

# Про OpenStreetMap

OpenStreetMap - открытая карта, которую рисуют сами пользователи. Как Википедия, но в мире географических карт. Главное отличие OpenStreetMap от, например, народной карты Яндекса в том, что геоданные распространяются под свободной лицензией ODbL, а это значит, что можно скачать исходник всей планеты (около 50 Гб сжатых данных) и делать с этими данными что угодно. Например, вот такую игру.

На основе OSM работают многие сервисы. Вы, возможно, сами пользуетесь каким-нибудь сервисом на основе OSM и даже не знаете этого.

Детализация и точность данных варьируется на разной местности. Некоторые населенные пункты прорисованы с точностью до каждого дерева, на некоторых висит только пара центральных дорог. Крупные города, как правило, прорисованы более детально мелких деревень и сёл, но есть и исключения. Самую знаменитую историю про картографирование села Краснохолм можно почитать на Хабре: https://habr.com/post/211430/

# Про рельеф

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

Игра на основе карты реального мира Gamedev, Игры, Компьютерные игры, Карта мира, Openstreetmap, Длиннопост
Желтая полоса - это пляж. Все, что ниже него, это уже как бы Волга (формально вода по-прежнему на склоне, просто шейдер ее не прорисовывает). Но это скорее исключение из правил, в целом все более-менее прилично.

На этом пока всё, как только игра будет опубликована в Steam, напишу пост с анонсом.
Игра на основе карты реального мира Gamedev, Игры, Компьютерные игры, Карта мира, Openstreetmap, Длиннопост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

Вы смотрите срез комментариев. Показать все
28
Автор поста оценил этот комментарий
А я подпишусь) помню как во времена ГТА мечтал чтобы в игре был мой маленький северный город и я мог бы по нему ходить и чё то делать) технологии из каминг) жду продолжения
раскрыть ветку (75)
23
Автор поста оценил этот комментарий

Воооо, вот ради этого всё и создавалось. Дайте, кстати, ссылку на ваш маленький северный город, посмотрим, насколько он детализирован.

раскрыть ветку (74)
2
Автор поста оценил этот комментарий

Киров!

раскрыть ветку (8)
3
Автор поста оценил этот комментарий

Киров.

Иллюстрация к комментарию
раскрыть ветку (7)
1
Автор поста оценил этот комментарий

Кострома)

раскрыть ветку (5)
2
Автор поста оценил этот комментарий
Кострома.
Иллюстрация к комментарию
раскрыть ветку (4)
1
Автор поста оценил этот комментарий
Что-то подобное уже много лет ждут)) Когда у вас будет время, можно взглянуть на кусочек г. Брянск пл. Партизан?))
раскрыть ветку (3)
Автор поста оценил этот комментарий

Брянск. Кстати, при снятии скриншота обнаружил неправильную этажность. Внёс изменения в код, теперь этажность выбирается на основе площади основания здания (если явно не проставлена в OSM).

Иллюстрация к комментарию
раскрыть ветку (2)
1
Автор поста оценил этот комментарий

А есть ли возможность текстуру неба сделать из реального фото, как в Mount and blade warband? Как по мне это очень прибавляет реализма

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Это уже кто-нибудь мод сделает с нужным вам небом. Все средства для создания модов я предоставлю, правда не сразу.

Автор поста оценил этот комментарий

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

1
Автор поста оценил этот комментарий
Посмотри на Йошкар-Олу
раскрыть ветку (33)
5
Автор поста оценил этот комментарий
Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (32)
2
Автор поста оценил этот комментарий
Можно ли прислать скрин улицы Вагжанова у Московской площади г. Твери? Там высокое здание нестандартной формы - как программа справится с такой проблемой?
раскрыть ветку (8)
1
Автор поста оценил этот комментарий
Оно? Вообще далеко не у всех зданий детально прорисована форма крыши, считайте, что тут повезло.
Иллюстрация к комментарию
раскрыть ветку (7)
1
Автор поста оценил этот комментарий
Да, оно. Жаль, что форму здания не удалось отобразить, оно называется "Рюмка".
Иллюстрация к комментарию
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Такое очень непросто внести в OSM даже если очень захотеть. Пока придется довольствоваться тем, что есть.

Автор поста оценил этот комментарий

а сколько будет весить ваша игра?

раскрыть ветку (4)
2
Автор поста оценил этот комментарий

Базовые файлы около 600-700 Мб, а местность будет подгружаться с сервера. Плюс в зависимости от локализации изначально будет загружен кэш популярных городов, относящихся к текущему языку, чтобы снизить нагрузку на сервер и увеличить скорость загрузки, итого в среднем игра будет занимать около 2 гигов.


Вся планета, к слову, весит около 45 Гб.

раскрыть ветку (3)
Автор поста оценил этот комментарий

Карта или уже обработанная местность?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Карта. Местность обрабатываться игрой живьём, то есть 3D-модели генерируются по мере загрузки.

Автор поста оценил этот комментарий

ну вполне себе лайтово) 

1
Автор поста оценил этот комментарий

А с Чебоксарами как так сделать? :о

раскрыть ветку (4)
3
Автор поста оценил этот комментарий
Чебоксары.
Иллюстрация к комментарию
раскрыть ветку (3)
Автор поста оценил этот комментарий

Удачно ты прямо со зданием моей работы попал)

DELETED
Автор поста оценил этот комментарий
Комментарий удален. Причина: данный комментарий содержит личные данные третьих лиц.
раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

@moderator очень прошу стереть персональные данные

Автор поста оценил этот комментарий

Можно ли прислать скрин Калуги, возле моста на Оку, на Гагарина? Там длинные дома, сильное изменение рельефа и высокий памятник нестандартной формы. Было бы интересно посмотреть, как справится.

Иллюстрация к комментарию
раскрыть ветку (5)
1
Автор поста оценил этот комментарий

Справилось на троечку с минусом. Длинные дома при сильном изменении рельефа пока висят в воздухе, а памятники сейчас прорисованы чуть менее, чем никак. Но рендерер, как собственно и карта, будет жить и дорабатываться. В OSM частенько появляются новые теги, поэтому уметь рисовать вообще всё рендерер не может в принципе. А памятники и архитектурные сооружения сложной формы это вообще отдельная тема. Была попытка сделать репозиторий из 3D-моделей, потом все заглохло, сейчас, вроде, пытаются возродить. Возможно и я к этому руку приложу.

Иллюстрация к комментарию
раскрыть ветку (4)
Автор поста оценил этот комментарий

Ну, памятники стоит отдельно сохранять, в готовых моделях.

Автор поста оценил этот комментарий
Попробуй разбивать длинные дома на мелкие. Или наращивать снизу высоту, например, ещё домами, хоть это и говнокод:)
Автор поста оценил этот комментарий

Класс.  Там вот эти дома вообще волшебные,  идешь по обычному проезду вдоль  подьездов в сторону реки и вдруг обнаруживаешьь что проезд обрывается,  и следующий подьезд на 10 метров ниже,  а ты вообще был на крыше теплопункта,  вкопанного в землю тремя сторонами.  Без 3Д редактора такое наверное никогда не сгенерировать на основе ОСМ

раскрыть ветку (1)
Автор поста оценил этот комментарий

Можно и без 3Д редактора всё сделать, только довольно сложно. Надеюсь, кто-нибудь когда-нибудь сделает. Ну а пока только так.

Автор поста оценил этот комментарий
А Астану из КЗ можете посмотреть?
раскрыть ветку (11)
Автор поста оценил этот комментарий
Астана.
Иллюстрация к комментарию
раскрыть ветку (10)
Автор поста оценил этот комментарий
А вдруг... а поселок Издешково ул. Им. Горького в смоленской области?
раскрыть ветку (6)
1
Автор поста оценил этот комментарий

Привет, ебанутый

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

А чё так сразу. Нашёлся же его поселок, см. выше.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Не, этот чудак узнавал имена у людей и доставал их, здороваюсь всегда, когда видел, вот я и делаю так же, но с ним.

1
Автор поста оценил этот комментарий

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

Иллюстрация к комментарию
раскрыть ветку (2)
Автор поста оценил этот комментарий
Дымка*
Автор поста оценил этот комментарий
Ну почти
Иллюстрация к комментарию
Иллюстрация к комментарию
Иллюстрация к комментарию
Иллюстрация к комментарию
Иллюстрация к комментарию
Автор поста оценил этот комментарий

А можно Санкт-Петербург, район станции метро Проспект Просвещения или г. Сосновый Бор Ленинградской области что-нибудь из центра?

раскрыть ветку (2)
Автор поста оценил этот комментарий

СПб, перекресток у м. Проспект Просвещения.

Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

Выглядит весьма стрёмно, однако же узнается благодаря дому по центру на развилке на заднем плане. Чем дольше смотришь тем знакомее)

Спасибо большое) Ждём релиза!

Автор поста оценил этот комментарий

А можно на Днепропетровск (Днепр), Украина глянуть? Любое место 😊

раскрыть ветку (9)
1
Автор поста оценил этот комментарий

Днепропетровск (Днепр).

Иллюстрация к комментарию
раскрыть ветку (8)
Автор поста оценил этот комментарий
Круто! Покажите Нижневартовск пожалуйста.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Нижневартовск.
Иллюстрация к комментарию
DELETED
Автор поста оценил этот комментарий

Хочу Курск!

раскрыть ветку (3)
Автор поста оценил этот комментарий

Курск.

Иллюстрация к комментарию
раскрыть ветку (2)
DELETED
Автор поста оценил этот комментарий

А более центральные улицы можно? Ленина, Радищева

раскрыть ветку (1)
Автор поста оценил этот комментарий
Иллюстрация к комментарию
Автор поста оценил этот комментарий

можно Харьков?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Харьков.
Иллюстрация к комментарию
Автор поста оценил этот комментарий

Можно посмотреть на станицу Староминскую (Староминский район, Краснодарский край)

раскрыть ветку (2)
Автор поста оценил этот комментарий
Староминская.
Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

спасибо

Автор поста оценил этот комментарий

А овраг в Воркуте есть?

Кстати, а зима будет? Можно же при загрузке карты обращаться к какому-нибудь api погоды, и, в соответствии с этим, симулировать снег/дождь/Град и п.р. С отключением в настройках, конечно. Короче, ТС, щаламывай цену в 2к, я куплю! И уже хочу разработать пару модов :)

раскрыть ветку (7)
Автор поста оценил этот комментарий

Зимы не будет, но я уверен, что кто-нибудь сделает зимний мод. Инструменты для создания модов будут предоставлены.


Овраг в Воркуте получился так себе. Разрешения карты высот не хватило для достоверного рельефа, а на OSM факт оврага никак не обозначен.

Иллюстрация к комментарию
раскрыть ветку (6)
Автор поста оценил этот комментарий

А можно посмотреть на Нижний Новгород? На площадь Советскую и Ванеевский мост (желательно чтоб частный сектор было видно)

раскрыть ветку (4)
Автор поста оценил этот комментарий

Ванеевский мост не нашёл. Откройте http://www.openstreetmap.org, найдите место, пришлите ссылку. (На всякий случай сразу скажу, мосты - больное место, поэтому они рисуются полуразрушенными и вообще мало похожими на реальность.)

раскрыть ветку (3)
Автор поста оценил этот комментарий

Не знаю, какую ссылку присылать, вот координаты: 56.3057, 44.026

раскрыть ветку (2)
Автор поста оценил этот комментарий

Как-то так.

Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

О! Узнал, но с трудом, тут конечно сильно мостик заболел и превратился в обычную наземную дорогу, которой там нет

Автор поста оценил этот комментарий

Копия города XD

Автор поста оценил этот комментарий
Город Ноябрьск, ЯНАО
раскрыть ветку (3)
1
Автор поста оценил этот комментарий
Ноябрьск.
Иллюстрация к комментарию
раскрыть ветку (2)
Автор поста оценил этот комментарий
Есть конечно некоторые неточности в плане зданий, но тем не менее это здорово) буду ждать релиза)
раскрыть ветку (1)
Автор поста оценил этот комментарий

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

Автор поста оценил этот комментарий

Автор, а на Баку можно посмотреть ?

раскрыть ветку (2)
Автор поста оценил этот комментарий
Баку.
Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

Круто! буду ждать

Автор поста оценил этот комментарий

Советская Гавань и Ванино

раскрыть ветку (2)
1
Автор поста оценил этот комментарий
Советская Гавань и Ванино.
Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

Спасибо) а где-то на карте можно указать высоту или этажность домов, подгрузить фасад?

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку