Последнее обновление: январь 2020 г., текст на 10 минут чтения.

Лучшие методы стабильной сборки игры с меньшим числом ошибок

What you will get from this page: Tips on maintaining a stable and flexible build to save yourself time and money. Get pointers on using version control, utilizing your changelists, clean cheat functionality, bug tracking and more

After years of shipping large titles with even larger teams, typical AAA studios know how to keep their productions on track and maintain a clean and stable build. Sascha Gundlach, from MetalPop Games, highlights how independent game developers can adapt the AAA approach to their own production. 

With a clean build, it’s easy to change or add things, as well as maintain and debug features. Overall, you’ll be able to develop your game faster and more efficiently.

Преимущества чистой сборки

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

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

Инди-разработчикам подойдут не все методы крупных студий. Но есть множество бесплатных (или доступных) способов обеспечить стабильность и чистоту сборок, которые подойдут любым студиям.

Даже если вы работаете самостоятельно, эти советы помогут вам выпускать качественные сборки для вашей игры. 

Используйте системы управления версиями

Даже сегодня, в условиях доступности систем управления версиями (VCS), существуют команды, которые используют в работе общие папки или простые облачные хранилища. Разработка без системы управления версиями — это вождение без ремня безопасности. Ремень может создавать некоторые неудобства или ограничивать движения, но при столкновении с деревом на полной скорости он спасет вам жизнь.

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

Есть множество бесплатных способов снизить этот риск. Perforce, Git и SVN — у всех этих сервисов есть бесплатные версии. А если учесть существование Unity Teams, который напрямую интегрирован в Unity, то работа становится еще проще.

История папок Perforce с отображением всех изменений

Используйте списки изменений

Помимо безопасности, VCS предлагают возможность формирования обзорных списков изменений, позволяющих контролировать процесс работы. На картинке выше показана история папок Perforce с отображением всех изменений.

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

Кроме того, это упростит формирование описаний выпусков и аналогичной документации, особенно если использовать префиксы для изменений, например: 

  • !B: исправление ошибки.
  • !V: изменение или улучшение внешнего вида.
  • !G: изменение игрового процесса.
  • !X: изменение, которое не следует включать в описание выпуска.

После загрузки изменений в VCS и сопровождении их описаниями с префиксами, вы можете запустить скрипт, который рассортирует все пункты и сформирует простой и понятный документ с описанием изменений.
В идеальном случае внесенные изменения должны выглядеть примерно так:

!V увеличены размеры эффекта частиц для взрыва;

!B исправлена неполадка, приводившая к вылету при взятии оружия;

!G увеличена эффективность лечения аптечками.

Ясно описывая все свои действия, в нужный момент вы упростите себе написание списка изменений. Это гораздо эффективнее, чем ручной анализ последних изменений для ручного составления списка изменений.

Игровой код интерфейса с заметным выделением обходных решений и незавершенного кода

Соблюдайте гигиену сборки

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

  1. Никакого кода, нарушающего работоспособность
    Не сохраняйте изменения, если знаете, что они нарушают работу сборки. Если вы еще не закончили разработку функции, но хотите сохранить изменения, то либо выключите ее, либо отложите изменения, чтобы они не испортили проект для остальных сотрудников. Команда не должна застрять на нерабочей сборке из-за того, что вы добавили неработающий код.
     
  2. Никакой жесткой привязки клавиш
    Очень удобно, когда чит или отладочная функция привязаны к определенной клавише. «Давай назначим денежный чит на клавишу F12 — никто же не нажмет ее, верно?»
    Но жесткая привязка таких функций к клавишам опасна тем, что она легко забывается. Вы можете случайно выпустить эту сборку в общий доступ, или кто-то при тестировании случайно нажмет эту клавишу и испортит вам отчеты об ошибках.
     
  3. Помечайте плохой и отсутствующий код
    Иногда приходится «лепить из того, что было». Даже если вы всеми силами хотите избежать этого, в какой-то момент вам придется прибегнуть к временным обходным маневрам. Добавляя такой код, помечайте его понятным и удобным для поиска текстом. Помечайте его текстом //HACK, а отсутствующий код — текстом //TODO. Это упростит поиск по коду на предмет наличия таких участков и последующую доработку.
     
  4. Засорение журнала
    Документирование кода полезно и помогает выявлять неполадки. Но иногда полезно убирать мусор из журнала, чтобы не пропустить важные предупреждения и ошибки. Если вы не работаете активно над какой-то функцией, консоль должна быть чистой и пустой, чтобы вам была заметна любая возникшая проблема.
     
  5. Имена и правила наименования файлов
    Со временем ваша сборка может разрастись до сотен или даже тысяч файлов. Поэтому очень важно определить ясные правила именования и соблюдать их.

Приступая к новому проекту, постарайтесь определить понятные вам правила именования, и заставьте себя соблюдать их. Проект, в котором файлы называются по принципу texturetestFinal01.png или backup22.fbx, быстро превращается в гордиев узел.

Регулярно проверяйте и исправляйте имена файлов в проекте.
Вот несколько советов:

  • используйте «говорящие» имена;
    AttackButtonBehavior.cs вместо atkBtn.cs;
  • используйте принцип camelCase или PascalCase;
    notsocleanfilename.cs читается хуже, чем MyCleanFilename.cs;
  • используйте символ подчеркивания, чтобы выделить важную информацию в имени:
    WoodenHouse_Blue, WoodenHouse_Green, и т. д.
Меню читов в разрабатываемой нами игре Galactic Colonies

Поддерживайте чистоту функциональности читов

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

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

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

Это снизит риск случайного выпуска игры с включенными читами. Единый центр управления читами обеспечит работоспособность и расширяемость игры.

Кроме того, такой подход ускорит применение читов и сэкономит время на разработку. Простое нажатие кнопки в удобном и приятном окне отладки намного быстрее, чем ручной ввод значений в скриптах.

Даже доску в Trello можно использовать для упрощения отслеживания багов

Контролируйте и отслеживайте баги

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

Методы борьбы довольно просты, и заключаются в том, что ваши специалисты по контролю качества находят и регистрируют баги в вашем баг-трекере. Затем они назначают задачи разработчикам, которые устраняют неполадки и отмечают, что работа проведена. И наконец, специалисты по контролю качества проверяют наличие неполадок и помечают их как устраненные. Простой трехступенчатый процесс, так? 

Стоп, что? У вас нет целого отдела по контролю качества? Тестированием занимаются сами разработчики?

Не переживайте — для борьбы с багами нужно немного. 

Во-первых, надо отслеживать баги. Это простая задача, даже если вы работаете один.

Выберите подходящее средство (а их полно, как бесплатных, так и доступных) и настройте его. Если вам это кажется излишне сложной задачей, то используйте Excel или вообще простой бумажный блокнот. Важно организовать центр сбора информации и отслеживания проблем. Организовав такую систему, вам потребуется одно — дисциплина. Кривая сборка замедляет производство и может даже приводить к новым проблемам.

Вот несколько советов о том, как держать баги под контролем.

Пятница — день исправления ошибок

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

Не откладывайте работу в долгий ящик

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

Не тратьте все свое время на пожар

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

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

 

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

Понравился ли вам этот контент?

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

Согласен