Четыре важнейшие практики DevOps, которые сделают все ваши игры особенными

Перейдите от "горячих" исправлений к быстрым итерациям и релизам.
Введение
Работать по 60 часов в неделю за несколько месяцев до релиза? Всю ночь корпеть над кодом, чтобы несколько раз в неделю исправлять чудодейственные ошибки? Добавлять новые функции в последнюю минуту, буквально перед запуском?
Эта отрасль печально известна своим ритмом "кранч-кранч-кранч". А вы, возможно, тот, кому нравится это безумие. Но если в конце финансового года не будет получен доход, вы должны спросить себя, почему?
Возможно, запуск оказался слишком сложным для одного из ваших ключевых разработчиков, который уволился и отложил релиз. Может быть, какое-то ночное исправление запустило цепную реакцию последующих ночных исправлений. Может быть, функция, созданная в последнюю минуту и не прошедшая должного тестирования, грозила обрушить весь проект. Каким бы ни был конкретный сценарий, ясно одно: Вы были здесь слишком много раз.
Если эти тактики не кажутся вам стоящими, это потому, что, несмотря на ваши подвиги, вы не даете клиентам того, чего они хотят. Умение писать шейдеры, анимировать воду, придумывать уровни или настраивать CDN - это лишь часть того, что требуется для успешного создания ценностей для игрового сообщества. Чтобы преодолеть пропасть и перейти к прибыльному производству, вам понадобятся более важные навыки - применение систем и процессов, которые направят вашу энергию в одно русло: создание отличных игр для ваших фанатов.
Чтобы превратить студию из хаоса, основанного на кранчах, в страну продуктивных и эффективных рабочих процессов, нужны разумные методы DevOps. Цель - вернуть команде самый ценный ресурс - время, чтобы они могли работать над тем, что действительно важно.
Но сколько времени вы сможете вернуть, избавившись от хруста? По словам Джоша Никсдорфа, технического директора Electronic Arts, прошло много лет: "С точки зрения моей команды, один из самых важных показателей, который мы отслеживаем, - это сэкономленные годы усилий. По мере продвижения по пути DevOps их количество также увеличивалось в геометрической прогрессии: начиная с 20 лет, когда мы впервые попробовали DevOps, и заканчивая 1000 лет назад".
Перейдя к более упорядоченному и целенаправленному процессу разработки, вы дадите своей команде возможность предоставлять игрокам лучший опыт, а вам - возможность предоставлять его чаще. Эта электронная книга знакомит с основополагающими принципами и процессами DevOps, характерными для среды разработки игр, и рассказывает о нескольких важнейших инструментах DevOps, необходимых для обеспечения бесперебойной работы технологического стека студии.
Почему DevOps?
Разработка игр становится все сложнее с выходом каждого поколения консолей. Игроки все больше ожидают лучшей графики, частых обновлений после запуска и великолепной поддержки. Если ваша игра полна ошибок на старте, восстановить ее будет крайне сложно, если вообще возможно. Как сказал президент Xsolla Крис Хьюиш в интервью GamesIndustry.biz, "вы всегда можете развить успех, но вы не можете вырасти из пепла неудачного запуска".
Чтобы максимизировать ценность игроков, необходимо изучить свои процессы и инструменты, а затем выявить возможности для оптимизации. Позволят ли ваши текущие рабочие процессы поддерживать игру в течение долгого времени? А как насчет будущих проектов?
Студийные команды обычно сосредотачивают свое внимание на том, как разработчики и художники могут выполнять все более сложные задачи. Но из-за такой сосредоточенности слишком легко упустить понимание процесса. Например, если программист будет чаще останавливаться и проверять свою работу (процесс DevOps), он будет тратить меньше времени на исправление ошибок.
Без такого понимания процесса студиям не выжить:
- Перегруженные работой разработчики, которые постоянно работают в режиме "кранч".
- Релизы с ошибками и негативными отзывами
- Повсеместное разочарование, вызванное запутанными планами развития
- Напрасная трата сил
Решение заключается в применении практик и инструментов DevOps, которые оптимизируют и сокращают циклы разработки, что позволяет добиться стабильной производительности игр. Преимуществ слишком много, чтобы их перечислять, но вот некоторые из них:
- Автоматизация процессов, освобождающая разработчиков от повторяющихся задач
- Проактивное, а не реактивное принятие решений
- Непрерывная интеграция и развертывание, обеспечивающие игрокам более качественный контент
- Гораздо меньше переутомления, стресса и выгорания
А выплата в конце финансового года? Больше, чем вы можете себе представить: более счастливые сотрудники, более счастливые клиенты и более счастливые бухгалтеры.
Четыре основные практики
Вам не нужен инженер DevOps, чтобы начать использовать преимущества подхода, подобного DevOps, в своей среде разработки. Даже разработчик-одиночка сможет повысить свою производительность, просто поняв эти четыре важнейшие практики DevOps.
Надежный контроль версий: Практически для любого программиста резервное копирование изменений в коде является таким же автоматическим действием, как моргание. Простая фиксация гарантирует, что работа будет в безопасности и не будет перезаписана и потеряна. Но разработка игр предполагает управление и отслеживание гораздо более широкого спектра иногда огромных активов, созданных распределенными художниками и другими людьми. Это диктует необходимость в полноценной системе контроля версий с мощным набором функций.
Автоматизация сборки (CI/CD): Непрерывная интеграция (CI) означает автоматическое объединение работ из одного или нескольких источников в центральный репозиторий. Непрерывная доставка (CD) - это автоматическое создание новых сборок по мере разработки. Внедрение автоматизированного конвейера CI/CD - лучшая практика в agile-методологии, обеспечивающая последовательный и автоматизированный способ сборки, упаковки и тестирования вашей игры.
Управление артефактами: Помимо кода и активов, управляемых системой контроля версий, артефакты включают в себя широкий спектр зависимостей, таких как базовые образы, пакеты программ, диаграммы Helm, метаданные и другие косвенные, но важные ресурсы. Менеджер артефактов дополняет систему контроля версий, поддерживая центральное хранилище абсолютно всего, что необходимо для создания или развертывания приложений или игр.
Частое и автоматизированное тестирование: Подход DevOps разрушает традиционные силосы разработчиков и контролеров. Например, разработчики пишут код небольшими кусками и проводят собственные тесты, прежде чем отправить его в основную кодовую базу для сборки. В идеале это тестирование должно быть непрерывным и автоматизированным. Релиз-кандидаты становятся более совершенными, а команды QA гораздо глубже изучают производительность игры.

1: Надежный контроль версий
Сведите к минимуму конфликты при слиянии и потери работы
Когда художники и программисты постоянно сталкиваются друг с другом, или когда конфликты при объединении приводят к дублированию или потере работы, виновником обычно является Version Control. Чтобы применить лучшие практики контроля версий в среде разработки игр, вам понадобится система с уникальными возможностями.
С практической точки зрения, файлы кода невелики, независимо от их длины. Однако графика в играх для консолей нового поколения и ПК может быть сравнительно огромной, поэтому пропускная способность сети становится решающим фактором. Извлечение и перемещение этих активов из центрального хранилища должно быть таким же быстрым и простым, как и для любых других активов разработки.
Самая большая проблема большинства решений для контроля версий? Удобство использования - для всех.
Программисты обычно хорошо разбираются в интерфейсах командной строки и сложных методах разветвления версий, в то время как художникам может показаться сложным просто нажимать кнопку Save достаточно часто. Но их рисунки и анимации так же важны для конечного пакета, как и кодовая база.

Система контроля версий для разработки игр должна предоставлять разработчикам сложные и подробные возможности, но при этом быть очень доступной для менее технически подкованных пользователей. В противном случае инженеры будут тратить свое время на то, чтобы снова и снова объяснять, как работает система.
Интуитивно понятный графический пользовательский интерфейс может значительно облегчить координацию сложных разветвлений и слияний с программистами, художниками и дизайнерами, одновременно работающими над разными уровнями и версиями, предназначенными для разных платформ.
Прослеживаемость означает возможность точно определить, когда и где был изменен актив и в каких ветвях он используется, и это важная возможность и для команд контроля качества. Кроме того, минимальным требованием является обеспечение безопасности всех ваших репозиториев, веток, меток и путей.

2: Автоматизация сборки (CI/CD)
Больше времени уделяйте созданию, меньше - управлению сложными конвейерами и инструментами.
Неизменной темой всех практик DevOps является разбиение работы на более мелкие фрагменты. С маленькими устройствами легче обращаться, их проще тестировать и быстрее оптимизировать. Вы также сведете к минимуму напрасные усилия, если наткнетесь на стену или решите сменить направление.
В разработке игр это означает частое объединение ваших текущих изменений с чужими и создание новых сборок. Создавать сборки вручную не так уж сложно, но это отвлекает от другой работы, и время, которое на это уходит, может быстро увеличиться. Как и во многих других практиках DevOps, автоматизация является ключевым фактором.
Автоматизированный конвейер сборки связан с вашей системой контроля версий, отслеживает изменения и создает новые сборки при каждом коммите или при превышении определенного порога количества изменений. Это означает, что разработчики могут выявлять и исправлять недостатки на ранних стадиях, пока ситуация не вышла из-под контроля. Это позволяет поддерживать код и активы в более надежном и готовом к выпуску состоянии. Если по каким-то причинам вам понадобится откатить изменения, последняя успешная сборка будет готова к работе. Кроме того, другие команды могут легко получить доступ к сборкам для обновления и своевременной обратной связи.
В культурном плане подход DevOps к автоматизации Build Automation смещает приоритеты вашей команды на то, чтобы убедиться, что их работа выполнена правильно, прежде чем переходить к новым функциям. Они продвигаются вперед постепенно, опираясь на небольшие успехи, а не делают длинные спринты и падают без сил. Это повышает уверенность в себе и значительно снижает вероятность сорвать чужую работу из-за того, что ваш код был не дописан.

3: Управление артефактами
Приведите свою игру в нужное состояние
После того как CI/CD-система создает новую сборку, она обычно отправляет ее в репозиторий артефактов, где менеджер артефактов регистрирует ее со всеми зависимостями и другими необходимыми компонентами. Именно поэтому управление артефактами является важной практикой DevOps в разработке игр.
Артефакты могут поступать из самых разных источников, например, от штатных разработчиков, контрактных художников или из любого количества публичных репозиториев с открытым исходным кодом. Менеджер артефактов обеспечивает загрузку и архивирование всего этого важного содержимого, проверяя версии и утверждения, сканируя на наличие проблем с безопасностью и т. д. Существует множество возможных точек отказа.
Конечно, любая полезная система управления артефактами имеет минимальные требования. Он должен уметь управлять метаданными для поддержки версионности и фильтрации на основе лицензирования. Она должна позволять разработчикам устанавливать, какой контент и как долго будет храниться. И, что немаловажно, она должна быть построена как система высокой готовности, чтобы избежать простоев.
По сравнению с простым назначением некоторого ведра S3 в качестве хранилища проекта, внедрение реального менеджера артефактов имеет значительные преимущества. Это означает, что ведение общей библиотеки для всех ресурсов проекта улучшает сотрудничество, особенно между художниками и инженерами. Все ресурсы регистрируются и отслеживаются, что обеспечивает предсказуемость и повторяемость сборок. И это освобождает всех членов команды от управления развертыванием, чтобы они могли кодировать, анимировать, проектировать или делать то, что у них получается лучше всего.

4: Частое и автоматизированное тестирование
Реагируйте на обратную связь и работайте оперативно
Два принципа определяют эффективную практику DevOps для QA:
Частое тестирование на ранних этапах разработки
Автоматизированные рабочие процессы QA
Плотник измеряет дважды, чтобы отрезать один раз. Другими словами, они решают задачу для переменной длины и затем проверяют свою работу, прежде чем перейти к следующему этапу производства. Разработчики могут делать то же самое, составляя более короткие блоки кода и перепроверяя их, прежде чем писать больше. Грань между разработчиком и QA стирается.
Частые проверки кода разработчиками окупаются, когда сборки проходят автоматизированное тестирование. Каждый раз, когда компилятор помещает новую сборку в репозиторий, она тестируется. При непрерывном автоматизированном тестировании вероятность того, что ошибки выйдут за пределы разработки и станут причиной проблем в производственном коде, гораздо ниже. А те, что выживут, будут не такими вирулентными.
Тем не менее, все мы знаем, что ошибки случаются. Автоматизированное QA-тестирование сопровождается автоматической отчетностью, как по протоколам тестирования, так и после выхода игры на рынок, по данным устройств, на которых она работает. Как только отдел контроля качества или пользовательская установка сталкиваются с аномалиями, система сообщает конкретные данные о сбоях и исключениях, что позволяет быстрее устранить их. Часто проблемы еще не очевидны для конечного пользователя и устранимы до того, как они проявятся в виде заметных сбоев.
Из всех практик DevOps для среды разработки игр частое автоматизированное тестирование, возможно, является самой важной. Игроки хотят регулярно получать новый контент, и студии испытывают огромное давление, чтобы успеть к дате запуска с новыми, прорывными функциями. Но если у одного значимого авторитетного лица будет неудачный опыт, а потом еще и неудачный день, последствия могут быть катастрофическими. Правильное выполнение QA крайне важно.
Игровые студии делают все возможное
DevOps и agile-практики - это, по большому счету, обычные рабочие привычки. Но когда они применяются к играм со сложным кодом, тысячами активов и неумолимыми ограничениями производительности, студиям требуются специальные инструменты DevOps для обеспечения тщательного контроля исходного кода, непрерывной интеграции и доставки, безопасного и надежного управления артефактами, а также частого автоматизированного тестирования.
Использование инструментов DevOps, тесно интегрированных с вашей платформой разработки, повышает их эффективность. Ниже перечислены лишь некоторые из тысяч создателей Unity, использующих нашу растущую библиотеку инструментов DevOps для улучшения рабочих процессов и создания потрясающих игр.
Студия: Альта
В ролике Creator Spotlight на Twitch-канале Unity Альта рассказала о том, как они используют Unity Version Control (Plastic SCM), чтобы ускорить цикл выпуска игр и регулярно обновлять контент для своей большой и растущей фанбазы. "Мы используем Plastic SCM для контроля исходных текстов. Это позволяет нам иметь ответвления от разных версий проекта", - говорит Борами Унн, игровой директор Alta. "Мы создаем новую ветку для каждой функции, а затем для любого рискованного начинания внутри каждой функции мы создаем подветви".

Студия: KO_OP
KO_OP - это студия совместных игр, базирующаяся в Монреале. Они искали решение для контроля версий, которое устранило бы преграды между художниками и инженерами в процессе работы над их последним проектом, Goodbye Volcano High. "Gluon[рабочий процесс для художников Version Control в Unity] стал приятным сюрпризом", - сказал Джейкоб Бломмештайн, разработчик из KO_OP, в своем исследовании Unity. "Художникам не нужно было ничего знать о разветвлении или слиянии. Они просто добавляли свои файлы .psd, и версионирование было прозрачным".

Студия: Sycoforge
В интервью, опубликованном в блоге Unity, генеральный директор Микела Рименсбергер (Michela Rimensberger) рассказала о том, как функция Version Control в Unity помогает компании Sycoforge и ее сообществу работать вместе, чтобы воплотить в жизнь амбициозную игру Return to Nangrim. "С технической точки зрения Unity Version Control стал спасением для совместной работы, - говорит она. "Мы опробовали множество различных инструментов версионирования и быстро поняли, что ни один из них не подходит для нужд компании, занимающейся разработкой игр. Некоторые из них были удобны для программистов, но у художников они вызывали приступы пота. С помощью Version Control мы нашли настоящее изменение в игре. Она проста в использовании как для непрограммистов, так и для программистов".

Студия: Cryptic Studios
Дочерняя компания Perfect World, Cryptic Studios, использует Backtrace для автоматизации отслеживания ошибок и недочетов. "Backtrace изменил наш подход к изучению и использованию данных об авариях", - сказал старший продюсер Cryptic Studios Брент Лэмб в электронной книге по Unity, выпущенной в этом году. "Все чувствуют себя комфортно, выполняя запросы и понимая, как обстоят дела в одной из наших игр".

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