Ремастеринг игрового контента, или как создать 800 единиц контента за семь месяцев
Как переделать весь контент в игре в короткие сроки, какие методы в этом помогут, с какими трудностями мы столкнулись и как их решали.
Итак, перед нами стояла задача переработки почти всего контента в игре: графического пайплайна, роботов, пушек, визуальных эффектов, карт и т. д. Для этого нужно было внести множество технологических изменений в существующий код и поддержать эти изменения со стороны контента. Этот процесс занимает немало времени, но мы не могли остановить разработку самой игры для внесения всех этих изменений, ведь одно из требований к ремастеру — параллельная разработка с основным продуктом. Поэтому в первую очередь нам необходимо было выстроить процесс работы программистов и художников команды War Robots Remastered в рамках основного проекта. И для решения этой проблемы мы пошли по пути итерационной разработки и системы обратной совместимости.
Примечание: прежде, чем перейти к описанию того, что и как мы делали, стоит упомянуть, что, несмотря на наше желание написать просто о сложном, этот материал все-таки требует некоторой технической подкованности.
Организация технического процесса работы над ремастером
Разработка War Robots ведется в системе управления версиями git по модели git-flow. В проекте есть основная ветка (develop), в которую по мере готовности вливаются ветки фичей (features). Из основной ветки создаются релизы, которые затем уходят в прод.
В эту схему мы добавили три элемента:
- Ветку Remastered-develop, содержащую весь актуальный контент для проекта War Robots Remastered. Мы договорились о том, что эта ветка будет обратно совместимой с актуальной основной веткой игры. Это значит, что в этой ветке будут использоваться те же технологии и все фичи из ветки develop.
- Ветки фичей для ремастера: Remastered/feature/branch. В этих ветках ведется работа над фичами, относящимися к контенту и графическому пайплайну ремастера. Они создаются от Remastered-develop и вливаются в нее же.
- Ветки фичей для поддержания обратной совместимости feature/branch: в этих ветках ведется работа над технологиями, необходимыми в первую очередь для ремастера, но несовместимыми с основной веткой War Robots. К таким фичам относятся система загрузки ассетов, система управления качеством (Quality Manager) и т. д.
Процесс работы получался следующим:
- В Remastered-develop постоянно заливалась ветка develop с актуальным кодом и контентом основного проекта;
- Геймдизайнеры, художники и графические программисты, работающие над контентом для ремастера, работали в ветках Remastered/feature/branch;
- Все новые технологии, ломающие обратную совместимость, сначала попадали в develop War Robots, а потом уже в develop War Robots Remastered.
Такая схема позволила нам работать над проектом итеративно, не опасаясь того, что War Robots Remastered не будет содержать тех же фичей, что и основная версия игры.
Однако поддержание обратной совместимости имеет свою цену: все фичи, кардинально меняющие технологии на проекте — например, система загрузки ассетов, — необходимо вносить сначала в основную ветку War Robots, а потом уже в ремастер. Это нетривиальный процесс: раз эти фичи подают в develop, значит, они попадают и в релизы. А чтобы вывести фичу в релиз, ее необходимо согласовать с годовым релиз-планом проекта, выбрать релиз, в который ее сможет забрать и поддержать команда основного продукта, и полноценно протестировать силами QA-отдела. Это увеличивало время разработки ремастера. Однако, как плюс, мы получили то, что на момент релиза War Robots Remastered большинство технологий уже были обкатаны в продакшене, и мы снимали часть технических рисков с запуском проекта.
Как мы переделывали контент для трех качеств ремастера и чем нам помог переход на Unity 2018
Итак, когда фундамент заложен, и у нас появилось понимание того, как будет организован процесс работы над проектом, пора приступать к самому ремастеру. И первая проблема, которую мы будем решать с момента старта проекта и почти до самого его релиза, — это его размер.
За свою семилетнюю историю War Robots успела обрасти множеством фичей и еще большим количеством контента. К моменту релиза ремастера в игре существовали:
- 81 робот;
- 109 пушек;
- 83 единиц эквипа: щиты, модули, встроенные абилки;
- 10 дронов.
Весь контент необходимо было пересобрать в Unity: обновить материалы, анимации, VFX и подготовить все это в трех качествах: Ultra Low Definition (ULD), Low Definition (LD), High Definition (HD). А после пересборки — еще и протестировать.
Итого мы имеем: 81 робота, 109 пушек, 83 эквипа, 10 дронов в трех качествах — 849 единицы контента.
В Unity используется понятие префаба (шаблона) как единицы контента. Это отдельный объект, включающий в себя модель, текстуры, материалы, анимации, визуальные и звуковые эффекты, сконфигурированные геймдизайнером. И его можно использовать в процессе работы приложения.
Сборка нового префаба робота из готовых ассетов в Unity может занимать от 1 до 3 дней, его полное тестирование, включая логику и визуал, — от 2 до 3 дней. Несложно подсчитать, что на сборку и тестирование одних только роботов у нас ушло бы 11 месяцев, и это без учета рисков в виде задержек со стороны подготовки арта, багов и т.д. Это нас не устраивало, ведь мы хотели завершить проект менее, чем за год.
Перед нами стояла еще одна проблема: единожды собранный робот в трех качествах не мог оставаться неизменным в течение целого года. В War Robots постоянно исправляются какие-то баги, меняется баланс, добавляется что-то новое. И если раньше геймдизайнеру нужно было внести изменения в один префаб робота, то теперь необходимо было это сделать в четырех местах: в основном проекте War Robots и в трех префабах качеств на War Robots Remastered. Это существенно увеличивало риск возникновения ошибок в связи с человеческим фактором, а мы хотели бы этого избежать.
Нам необходимо было автоматизировать процесс сборки контента и облегчить процесс тестирования. К счастью, в момент старта проекта War Robots Remastered в релиз-плане «ванильной» War Robots был запланирован переход на новую на тот момент версию Unity 2018 LTS. Эта версия Unity добавляла в движок новую технологию Prefab Variants, которой мы и решили воспользоваться.
Наша идея заключалась в том чтобы создать единую базу для каждого робота (пушки, дрона и т. д.), содержащую всю игровую логику и общие компоненты для всех качеств: настройки абилок, звуков, точки креплений пушек и т. д., — а также создать префаб-варианты для каждого пресета качества (ULD, LD, HD), которые будут содержать только визуальную составляющую: геометрию, материалы, VFX.
Для примера — базовый префаб робота Cossack и его HD-префаб вариант:
Красным выделены объекты, присущие только HD-качеству: скелет, геометрия и материал, а также дополнительные звуковые эффекты.
Схема разделения префабов:
Заметим, что на схеме отображено четыре качества, а не три: Legacy, ULD, LD и HD. Качеством Legacy было принято называть контент из основного проекта War Robots. Также сам механизм разделения на базовые (base) префаб-варианты стал одной из фичей основной игры по поддержке обратной совместимости с War Robots Remastered.
Такая схема построения контента решала две проблемы:
- Внесение изменений в префаб теперь можно было делать только один раз. При изменении общих значений для всех качеств, таких как настройки абилок, геймдизайнер редактирует только base префаб, а при изменении визуальной составляющей — только префаб необходимого качества.
- Сокращается время тестирования единицы контента. В случае с четырьмя независимыми префабами QA необходимо было протестировать и логику, и визуал каждого префаба в отдельности. В новой же схеме тестирование логики проводится только один раз, что сокращает время тестирования единицы контента на 70%.
Что касается самого процесса разделения префабов на базу и префаб-варианты, для этой задачи силами программистов был создан отдельный инструмент, который позволил автоматизировать этот процесс.
Как уже упоминалось ранее, создание нового префаба робота в War Robots может занимать от 1 до 3 дней работы геймдизайнера — и это очень много, когда дело касается более 80 префабов роботов. Однако, благодаря общей базе и префаб-вариантам нам уже не нужно было создавать робота целиком — необходимо было лишь заменить ему визуальные компоненты.
Префаб-варианты качеств ULD, LD и HD отличаются между собой всего несколькими элементами:
- материалом (шейдером и набором текстур);
- набором LOD-ов;
- структурой VFX (набором систем частиц).
Замена этих компонентов легко поддается автоматизации.
Однако изначально у нас было только одно качество: Legacy, которое мы получили на выходе работы инструмента по разделению на префаб-варианты. Legacy-качество отличалось от ремастерных качеств, помимо прочего, еще и структурой скелета и анимациями. И если замену материалов, лодов и VFX-ов мы легко могли автоматизировать, то замена скелета анимаций требовала ручных усилий от геймдизайнеров для настройки новых точек креплений пушек, VFX и т. д. В результате мы создали два инструмента для геймдизайнеров: утилиту по портации префаба Legacy в качество ремастера и инструмент для генерации качеств HD, LD, ULD из готового качества ремастера.
Процесс создания ремастер-контента со стороны геймдизайнера теперь стал разделяться на следующие этапы:
- Геймдизайнер использует инструмент для портации Legacy-качества в ремастер-качество (обычно в LD). Этот инструмент заменяет скелет, анимации, материалы и VFX.
- Геймдизайнер вручную донастраивает ремастер-префаб: указывает новые ссылки на точки креплений пушек, VFX и т. д. На выходе этого этапа мы имеем один полноценный префаб-вариант для ремастер-качества.
- Геймдизайнер запускает инструмент по генерации остальных качеств, автоматически заменяющий оставшиеся визуальные компоненты.
Такой процесс позволил сократить время сборки одного робота в трех качествах с трех дней до пары часов.
Помимо этого, мы получили инструмент, который позволит нам в дальнейшем интегрировать ассеты любых качеств в пару кликов мыши — например, Medium Definition (MD) и Ultra High Definition (UHD).
В текущем виде инструмент по созданию и инспектированию роботов выглядит так:
С появлением системы автоматизации сборки контента мы получили еще одну возможность — автоматически проверять его целостность. На данный момент мы проверяем следующие вещи:
- настройки освещения рендеров;
- использование правильных материалов и текстур в префабах;
- наличие самих префабов в билде;
- настройки лодирования.
Эти проверки выполняются автоматически при каждой сборке билда. Где они проходят, кто их запускает и в каком виде получает результат — вполне себе тянет на тему для отдельной статьи, поэтому пока остановимся на этом.
Суммарно внедрение процесса автоматизации сборки контента позволило нам собрать и протестировать более 800 единиц контента всего за 7 месяцев, а не порядка трех лет, как было оценено изначально.
Подводя итоги: какие практики хороши при переделке контента для крупного игрового проекта
- При работе над таким большим проектом, как War Robots, невозможно вносить крупные изменения одномоментно. Только итерационный процесс позволяет внедрять технологии, кардинально меняющие структуру проекта в продакшене.
- Итерационный процесс позволяет тщательнее протестировать новые технологии в продакшене. На момент запуска ремастера мы протестировали и закрыли большинство рисков, связанных с их использованием.
- Грамотное использование gitflow, декомпозиция задач и контента и работа над поддержкой обратной совместимости позволяет избежать множества конфликтов в ходе внесения изменений в проект несколькими независимыми командами. Но важно, чтобы все члены команды понимали схему работы над проектом, и лиды координировали свои действия при планировании задач на свои отделы.
- Не стоит забывать о силе автоматизации: чем объемнее проект, тем больше в нем однотипных задач, которые можно автоматизировать. В таких случаях несколько недель работы программистов могут сократить работу других отделов на несколько месяцев.
Это наша третья статья о том, как делаются ремастеры. В ней мы начинаем рассказывать о различных технических аспектах разработки. В следующей статье читайте о том, как происходит один из самых трудоемких процессов обновления игровой графики — ремастеринг карт.
Griffin здорового человека
Помню страный фильм про подобного меха был, вот только название увы не помню.
Сюжет приблизительно таков...малый нашел меха, который был в состоянии работать, а (страну толь планету оккупировали) и жили они как рабы. Но потом он меха смог запустить и с этого началось восстание.
Вот тоже смотрю и не пойму почему Гриффин на фотке был неправильный.
Полная ерунда ваш ремастеринг, куча багов и игра зависает у большинства игроков , каждая обнова больше и больше багов и исправлять не спешат , лучше бы занялись исправлением чем выпуском нового
Существует определенный перечень устройств (например, с недостаточным объемом памяти), на которых игра падает, и он игрокам известен. Хотя мы старались оставить игру на максимуме лоу-энд девайсов, у ремастера неизбежно выросли системные требования, что отрезало часть устройств.
В прошлой статье мы рассказывали, какого метода раскатки релизов мы придерживаемся — там мы описываем, что большинство багов, которые можно закрыть, закрываются на протяжении пары недель с начала выкатки. Да, проблемы есть, но они типичны для всех игр-сервисов, и с ними обычно ничего не поделаешь.
Если вы рассуждаете с позиции игрока, и есть конкретная проблема, лучше обратиться во внутриигровой саппорт. Поможем, чем сможем :)
Значит ремастер делали не зря. Их же делают спецом чтобы игра плохо работала на новом поколении устройств, не?
Прочитал с любопытством. Хотя ничего необычного в процессе не увидел, но хорошо структурировано) 👍