Лонгрид о том, почему вышедший в релиз симулятор Bus World станет последней крупной 3D-игрой на Unity для студии KishMish Games. И дело далеко не только в новых правилах монетизации, о которых стало известно 12 сентября.
Почему изначально был выбран Unity
Прежде, чем говорить о проблемах игрового движка Unity, с которыми нам (команде KishMish Games) пришлось столкнуться за последние годы, лично я хотел бы отдать этой технологии должное.
Когда многие из нас начинали знакомиться с игровой индустрией в период 2012-2016 годов, движок Unity в определённом смысле был прорывной технологией, поскольку это был один из немногих на тот момент бесплатных, кросс-платформенных, универсальных движков для разработки игр с кучей сторонних ассетов и подробной документацией. По большому счёту, достойных альтернатив с таким обилием возможностей и преимуществ, на тот момент ещё не было. Так что почти все наши игры мы разрабатывали на движке Unity, а последующие проекты так или иначе наследовали часть наработок из предыдущих игр.
Наша текущая ситуация
Безусловно, каждую следующую игру мы стремились сделать более проработанной и качественной, добавляли новый функционал, создавали больше контента, внедряли новые технологии.
Нашей самой крупной и сложной в разработке игрой стал автобусный симулятор Bus World, который мы разрабатывали целых 4 года, и вот, наконец, выпускаем в релиз на площадках Steam, Epic Games Store, VK Play и прочих.
Именно на этом проекте пришло понимание, что в обозримой перспективе движок нужно менять.
Наследие Bus Driver Simulator и идея Bus World
Начинать рассказ о Bus World невозможно без упоминания более раннего нашего проекта Bus Driver Simulator, работа над которым в том или ином виде велась в период с 2016 до 2022 года. Будучи командой из всего нескольких человек, мы замыслили реализовать свой родной город (подмосковный Серпухов) в компьютерной игре. Жанр может показаться для кого-то необычным – симулятор водителя автобуса. Однако сразу после анонса мы смогли найти заинтересованную аудиторию. Так как у всех в команде был тот или иной опыт работы с движком Unity, вопрос о его выборе даже не стоял.
Ещё во время разработки Bus Driver Simulator мы задумались над тем, чем мы хотим заниматься дальше. У нас осталось много наработок по этой игре, и мы понимали, что хотелось бы сделать игру с ещё большим количеством разнообразного контента и игровых ситуаций.
Поэтому, за основу были взяты базовые вещи из Bus Driver Simulator, но сформирована концепция необычного симулятора, где во главе угла будут стоять сценарии с уникальными сюжетами по спасению людей в условиях техногенных и природных катастроф. А учитывая наш опыт по созданию локаций, построенных на основе реально существующих мест, мы решили, что одной из игровых карт будет Чернобыль 1986 года.
В Bus World можно встретить угрозу радиации, лесные пожары, цунами, и даже извержение вулкана. Помимо катастроф, в некоторых сценариях разыгрываются более спокойные сюжеты, где игроку предстоит выполнить маршрут с серьезной поломкой автобуса, а также поучаствовать в съемках фильма. Для любителей выполнять маршруты без всяких особых условий, по аналогии с Bus Driver Simulator, мы добавили свободный режим, в котором игроки в том числе могут строить и свои собственные маршруты.
Вероятнее всего, мы бы не взялись за работу над игрой или пошли каким-то иным путём, если бы знали, сколько сложностей нас ждут в следующие 4 года разработки. Причём подавляющее их число было вызвано особенностью движка Unity и выбранного пайплайна HDRP. Начну с последнего.
HDRP
Несколько лет назад HDRP был анонсирован компанией Unity как рендер пайплайн для современных AAA-игр. Так как в нашей игре важную роль играет красивая картинка, мы хотели максимально поднять уровень графики, и решили перейти на этот пресловутый HDRP. И это стало одной из самых главных ошибок, так как оказалось, что он безмерно сырой, и многие вещи пришлось делать самостоятельно.
Если сначала мы были воодушевлены новыми графическими возможностями, то спустя некоторое время мы столкнулись с суровой реальностью. Сразу оговорюсь, что некоторая информация может быть немного устаревшей, так как мы используем версию Unity 2021.1 и HDRP 11.
Оказалось, что в HDRP нет даже отрисовки травы на террейнах (земле)! Пришлось писать собственную систему, которая хорошо бы работала на больших картах, при этом была настраиваемой и требовала не слишком много ресурсов компьютера. Мы пробовали и готовые решения от сторонних разработчиков, однако они плохо работали с нашей большой картой и динамической подгрузкой частей игровой локации. Финальный, получившийся у нас вариант, нам нравится. Однако стоит учитывать, что будь эта система исправно работающей на HDRP по умолчанию, потраченное на создание этой системы время (3-4 месяца) можно было бы потратить на проработку других важных вещей.
Также сюрпризом HDRP для нас стало отсутствие Particle Shader, с помощью которых можно настроить туман, дым и прочие эффекты. Для этого тоже пришлось использовать стороннее решение.
Отсутствие нормальной системы отображения разных погодных условий и времени на небе также вызвало необходимость в использовании сторонних технологий. Со временем мы добавили не только возможность смены времени суток и погоды в свободном режиме, но и реализовали дождь. Самым сложным было настроить отображение стекающих капель по стеклам и работу стеклоочистителей.
Постоянные вылеты по непонятным причинам тоже серьезно усложнили ход работы над игрой. Стоит отметить, что они бывали и при работе на Built-In пайплайне, но обычно удавалось найти причину (например, определенный плагин мог вызывать вылеты) и исправить проблему.
В целом, сложилось впечатление, что рендер-пайплайн HDRP очень сырой и просто не доделан. Я допускаю, что на актуальной версии HDRP какие-то вещи были исправлены, ведь в более новой версии, например, добавилось красивое отображение воды, на которую мы тоже потратили много времени в своё время. Правда, в нашем случае нужно было ещё сделать сильные волны от цунами, поднимающийся уровень воды и эффект, когда камера находится под водой.
Но самым большим минусом HDRP для нас стали его высокие требования к ресурсам компьютера и практически полная невозможность нормальной оптимизации. В своих играх мы работаем над оптимизацией практически постоянно параллельно с добавлением нового контента. Но на HDRP нам пришлось выделить целый год на оптимизацию созданных локаций (изначально они делались под Built-In).
Надо отдать должное специалистам из нашей команды. В процессе разработки игры им всё-таки удалось снизить системные требования игры в несколько раз, проявляя смекалку и находя нестандартные решения. Но если вы откроете и почитаете отзывы в Steam, то обнаружите, что большая часть игроков недовольна именно оптимизацией. И их можно понять, ведь Bus World всё ещё очень требователен к железу. Увы, мы подошли к той планке, когда что-то ещё улучшить в этом плане, не портя уровень графики, крайне сложно, поэтому, чтобы в полной мере насладиться игрой, игрокам нужно иметь достойное железо.
Сырость новых фич
Технология HDRP является одним из показательных примеров. Как оно периодически бывает, компания Unity выпускают какую-то фичу (технологию) для своего движка под видом революционной в очень сыром виде, после чего проходит несколько лет, а она зачастую всё ещё остаётся в сыром и недоделанном виде, затем компания Unity анонсирует и выпускает уже как бы новую фичу (технологию), которая должна решать ту же самую проблему, что и предыдущая, но эта самая новая технология выпускается вновь в сыром и недоделанном виде, и далее так происходит по кругу.
Зачастую разработчики вынуждены откатываться на более старые версии или старые технологии, которые в рамках движка Unity уже считаются устаревшими и уже не поддерживающимися, но являющиеся более стабильными и прогнозируемыми в своей работе.
Сколько грандиозных штук внедряли в движок Unity: DOTS, ECS, Collab, SRP и т. д. Анонсировали дорожные карты по развитию тех или иных фичей. А потом претворяли в жизнь обещанное с опозданием на несколько лет или совсем никак. Вообще, в телеграмме есть канал «Геймдев, который мы заслужили«. Вряд ли я бы смог лучше данного автора описать то, что происходило с разными технологиями в Unity на протяжении последних 4-5 лет.
Другие проблемы с движком
Любопытно, но во время разработки мы сталкивались и с проблемами, которые никак не были связаны с 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 сцен, которые подгружаются динамически в соответствии с местом нахождения игрока. Отдельно загружаются и террейны – они поделены на ещё более мелкие части. В общем, здесь нам вновь пришлось изобретать велосипед. К сожалению, движок Unity плохо приспособлен к созданию больших и детализированных карт.
Также проблемным кажется импорт моделей в формате FBX. У Unity оси Z и Y поменяны местами, и при импорте FBX движок пытается перевернуть их сам, но делает это криво и все ломает. Объекты импортируются визуально верно, но в параметрах их трансформов выставляются какие-то совершенно непонятные значения, которые не исправить никак, кроме переимпорта. Особенно это критично при скелетной анимации, когда повернутые на 90 градусов кости ломают модель напрочь. Импорт работает корректно только при очень специфичных настройках, на вычисление которых потребовалось немало времени.
Резюме
Сейчас складывается впечатление, что Unity подходит только для 2D игр и простых 3D, а не таких, как у нас, с большой игровой местностью. Некоторые считают его движком для мобильных игр, но всё же производитель постоянно делает ставку и на показ новых технологий, которые нужны в больших 3D играх. Мы же ждали более активного развития движка именно в этом направлении, но так и не дождались и приняли решение, что Bus World будет нашей последней крупной 3D-игрой на Unity.
Отставание Unity от других движков на рынке, например Unreal и Unigine, постоянно становится всё больше. Мы уже проводили некоторые эксперименты с вставкой отдельных частей наших игровых локаций в упомянутые выше движки и были удивлены, насколько визуально богаче они выглядят по умолчанию, без дополнительной сложной настройки.
Новая бизнес-модель
В последние дни особенное возмущение движком Unity вызвано добавлением новой платы за каждую установку игры (с ценой до 20 центов за каждую установку). Ранее достаточно было заплатить определенную сумму подписки за год (или помесячно). Многие игровые разработчики уже заявили, что компания потеряла доверие и они категорически не согласны с нововведением. Некоторые компании уже анонсировали переход на другие движки именно из-за новой платы за установки.
Мы, со своей стороны, также категорически против новой бизнес-модели компании Unity. Мы видим, куда движется Unity все эти последние несколько лет, и это будущее выглядит для нас непривлекательно. Поэтому мы приняли решение, что наша следующая большая 3D-игра будет не на Unity. Стоит понимать, что это означает и обучение членов команды, и отказ от множества наработок на имеющемся движке.
Но в перспективе лет мы думаем, что это правильное решение, имеющее позитивные последствия, в первую очередь в виде появления новых более качественных и современных игр от нашей команды.
Заключение
Если вы тоже работаете в игровой индустрии, напишите, на каком движке работаете вы и всё ли вас в нём устраивает. Также не стесняйтесь делать уточнения, если я где-то написал неточность.
P. S. Наша игра Bus World только-только вышла в релиз, поэтому оставлю ссылку для всех, кому интересно.