Состоялся релиз Bus World – почему это наша последняя 3D игра на Unity

С момента основания нашей независимой студии KishMish Games в 2016 году, все наши проекты (кроме нескольких визуальных новелл) мы делали на движке Unity. Однако, одновременно с окончанием работ над нашей самой крупной и сложной в разработке игрой Bus World, пришло понимание, что движок нужно менять. В этой статье расскажем немного о сложностях, с которыми приходилось справляться за 4 года разработки этой игры и о том, куда мы хотим двигаться дальше.

Начинать рассказ о Bus World невозможно без упоминания более раннего нашего проекта Bus Driver Simulator (разработка велась с 2016 по 2019 год). Будучи командой из всего нескольких человек, мы замыслили реализовать свой родной город (подмосковный Серпухов) в компьютерной игре. Жанр может показаться для кого-то необычным – симулятор водителя автобуса. Однако сразу после анонса мы смогли найти заинтересованную аудиторию. Так как у всех в команде был многолетний опыт работы с движком Unity, вопрос о его выборе даже не стоял.

Состоялся релиз Bus World – почему это наша последняя 3D игра на Unity Разработка, Gamedev, Steam, Unity, Unreal Engine, Инди, Симулятор, Длиннопост

Естественно, из-за мизерного бюджета и малого размера команды (даже над Bus World, нашей самой большой игрой, никогда не работало более пяти человек одновременно), нам приходилось идти на некоторые компромиссы, особенно заметные в части графики.

Игра вышла в релиз в декабре 2019. Но ещё до этого мы задумались над тем, чем мы хотим заниматься дальше. У нас осталось много наработок по Bus Driver Simulator, и мы понимали, что хотелось бы сделать игру с ещё большим количеством разнообразного контента и игровых ситуаций. Поэтому, за основу были взяты базовые вещи из Bus Driver Simulator, но сформирована концепция необычного симулятора, где во главе угла будут стоять сценарии с уникальными сюжетами по спасению людей в условиях техногенных и природных катастроф. А учитывая наш опыт по созданию локаций, построенных на основе реально существующих мест, мы решили, что одной из игровых карт будет Чернобыль 1986 года. В Bus World можно встретить угрозу радиации, лесные пожары, цунами, и даже извержение вулкана. Помимо катастроф, в некоторых сценариях разыгрываются более спокойные сюжеты, где игроку предстоит выполнить маршрут с серьезной поломкой автобуса, а также поучаствовать в съемках фильма. Для любителей выполнять маршруты без всяких особых условий, по аналогии с BDS, мы добавили свободный режим, в котором игроки в том числе могут строить и свои собственные маршруты.

Состоялся релиз Bus World – почему это наша последняя 3D игра на Unity Разработка, Gamedev, Steam, Unity, Unreal Engine, Инди, Симулятор, Длиннопост

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

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

Если сначала мы были воодушевлены новыми графическими возможностями, то спустя некоторое время мы столкнулись с суровой реальностью. Сразу оговорюсь, что некоторая информация может быть немного устаревшей, так как мы используем версию Unity 2021.1 и HDRP 11.

Оказалось, что в HDRP нет даже отрисовки травы на террейнах (земле)! Пришлось писать собственную систему, которая хорошо бы работала на больших картах, при этом была настраиваемой и требовала не слишком много ресурсов компьютера. Мы пробовали и готовые решения от сторонних разработчиков, однако они плохо работали с нашей большой картой и динамической подгрузкой частей игровой локации. Финальный, получившийся у нас вариант, нам нравится. Однако стоит учитывать, что будь эта система исправно работающей на HDRP по умолчанию, потраченное на создание этой системы время (3-4 месяца) можно было бы потратить на проработку других важных вещей.

Состоялся релиз Bus World – почему это наша последняя 3D игра на Unity Разработка, Gamedev, Steam, Unity, Unreal Engine, Инди, Симулятор, Длиннопост

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

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

Состоялся релиз Bus World – почему это наша последняя 3D игра на Unity Разработка, Gamedev, Steam, Unity, Unreal Engine, Инди, Симулятор, Длиннопост
Состоялся релиз Bus World – почему это наша последняя 3D игра на Unity Разработка, Gamedev, Steam, Unity, Unreal Engine, Инди, Симулятор, Длиннопост

Постоянные вылеты по непонятным причинам тоже серьезно усложнили ход работы над игрой. Стоит отметить, что они бывали и при работе на Built-In пайплайне, но обычно удавалось найти причину (например, определенный плагин мог вызывать вылеты) и исправить проблему.

В целом, сложилось впечатление, что пайплайн ещё очень сырой и недоделан. Но повторюсь, что мы работали на версии 11, а сейчас появилась 14. В новой версии, например, добавилось красивое отображение воды. А мы на это тоже потратили много времени. Правда, а в нашем случае нужно было ещё сделать сильные волны от цунами, поднимающийся уровень воды и эффект, когда камера находится под водой.

Состоялся релиз Bus World – почему это наша последняя 3D игра на Unity Разработка, Gamedev, Steam, Unity, Unreal Engine, Инди, Симулятор, Длиннопост

Но самым большим минусом HDRP для нас стали его высокие требования к ресурсам компьютера и практически полная невозможность оптимизации. В своих играх мы работаем над оптимизацией практически постоянно параллельно с добавлением нового контента. Но на HDRP выделяли почти год под на оптимизацию созданных локаций (изначально они делались под Built-In).

Состоялся релиз Bus World – почему это наша последняя 3D игра на Unity Разработка, Gamedev, Steam, Unity, Unreal Engine, Инди, Симулятор, Длиннопост

Но были и проблемы, не связанные с HDRP.

Например, Unity забили болт на некоторые баги, найденные в движке 10 лет назад, несмотря на то что все новые разработчики сталкиваются с ними и пишут о них на форуме.

Вот только несколько подобных проблем:

https://forum.unity.com/threads/the-8-year-old-terrain-undo-bug.1301742/

https://forum.unity.com/threads/ri-hid-failed-to-create-device-file.202934/

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

Состоялся релиз Bus World – почему это наша последняя 3D игра на Unity Разработка, Gamedev, Steam, Unity, Unreal Engine, Инди, Симулятор, Длиннопост

Также проблемным кажется импорт моделей в формате FBX. У Unity оси Z и Y поменяны местами, и при импорте FBX движок пытается перевернуть их сам, но делает это криво и все ломает. Объекты импортируются визуально верно, но в параметрах их трансформов выставляются какие-то совершенно непонятные значения, которые не исправить никак, кроме переимпорта. Особенно это критично при скелетной анимации, когда повернутые на 90 градусов кости ломают модель напрочь. Импорт работает корректно только при очень специфичных настройках, на вычисление которых потребовалось немало времени.

Сейчас складывается впечатление, что Unity подходит только для 2D игр и простых 3D, а не таких, как у нас, с большой игровой местностью. Некоторые считают его движком для мобильных игр, но всё же производитель постоянно делает ставку и на показ новых технологий, которые нужны в больших 3D играх. Мы же ждали более активного развития движка именно в этом направлении, но так и не дождались и приняли решение, что Bus World будет нашей последней 3D игрой на Unity. Отставание его от других движков на рынке, например Unreal и Unigine, постоянно становится всё больше. Мы уже проводили некоторые эксперименты с вставкой отдельных частей наших игровых локаций в упомянутые выше движки и были удивлены, насколько визуально богаче они выглядят по умолчанию, без дополнительной сложной настройки.

В последние дни особенное возмущение движком Unity вызвано добавлением новой платы за каждую установку игры (с ценой до 20 центов за каждую установку). Ранее достаточно было заплатить определенную сумму подписки за год (или помесячно). Многие игровые разработчики уже заявили, что компания потеряла доверие и они категорически не согласны с нововведением. Некоторые компании уже анонсировали переход на другие движки именно из-за новой платы за установки.

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

А если вы хотите ознакомиться с нашей игрой Bus World, которая вышла в релиз сегодня, приглашаем на её страницу Steam.

Если вы тоже работаете в игровой индустрии, напишите, на каком движке работаете вы и всё ли вас в нём устраивает.

Спасибо за внимание!

Лига Разработчиков Видеоигр

6.8K постов22.2K подписчиков

Добавить пост

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

ЗАПРЕЩЕНО:

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

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

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


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

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

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

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

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