История о том, как фиксят баги

Примечание:
Редакция GoHa.Ru посчитала целесообразным рассказать вам о том, насколько комплексным бывает процесс устранения ошибок в играх на примере одного бага в Tom Clancy’s The Division 2, описанного командой разработчиков. А именно — на примере проблемы с Медицинским ульем.

Источник: The Division Development Team

С выпуском Эпизода 1 и Обновления № 5 мы исправили целую кучу ошибок и проблем, связанных со всем контентом, который мы выпустили. Тем не менее, проблемы вокруг Медицинского улья уже долгое время остаются с нами. Обновление игры № 5 вышло с улучшениями данной способности, но еще есть некоторые аспекты, которые мы до сих пор в ней изучаем.

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

Давайте начнем с самого начала — игроки почувствовали, что в некоторых случаях Медицинский улей не работал. Он выпадает на землю, вы умираете… И ничего больше не происходит. Вы должны были быть спасены им, но этого не случается.

Первый шаг на пути к решению — воспроизвести имеющую место проблему. Что происходило в этих случаях? От игроков поступали разные сообщения, но у нас так и не было последовательности шагов для воспроизведения бага. Мы знали, что эта проблема возникает у игроков, и мы сами испытывали ее, но обстоятельства ее происхождения не были ясны. Мы перепробовали все, что могли придумать, все различные ситуации, в которых используется Медицинский улей, и смотрели «за кулисы», в поисках информации о том, как работают связанные с ним скрипты.

Сообщество начало присылать нам видеоролики, на которых видно проблему, что очень помогло нам. Мы видели, как игроки пытались использовать улей. Это позволило нам очертить некоторые ситуации, в которых можно было воспроизвести проблему. Например, игроки колошматили по кнопкам навыков в попытках полечиться, когда они замечали, что умирают, возможно, чтобы вовремя выстрелить из химустановки с «помощником» (прим. переводчика — «Помощник» запускает снаряд, который при взрыве создает облако вещества, восстанавливающего броню. Попадая на вас или ваших союзников, этот порошок моментально восстанавливает часть брони. Порошок, осевший на землю, постепенно восстанавливает броню. Таким образом, вы можете быстро подлечить напарников или постепенно – себя). Мы увидели, что это может привести к тому, что Медицинскому улью не удавалось автоматически выпасть — если кратко, игра пыталась «нажать кнопку» по реализации навыка, но вы можете использовать только один навык одновременно. Таким образом игрок, стучащий по выбранному навыку, блокировал возможность использования второго навыка, и поэтому улей не срабатывал. Мы рассмотрели различные состояния, в которых может оказаться игрок, и убедились, что улей автоматически выпадет и сделает свое дело, несмотря ни на что. Это оказалось исправление широкого действия, которого помогло изрядному количеству игроков.

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

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

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

Оказалось, что улей в большинстве случаев работает так, как и было задумано, но он не никак не сообщает игроку о том, что он был уничтожен NPC, пока вы возрождались. Люди думали, что он на месте, когда его там уже было. Вы не можете видеть индикатор здоровья улья, когда находитесь в лежачем положении из-за ранений, пользовательский интерфейс никак не отображает его поломку, поэтому все это выглядит как настоящий баг. Улей должен быть в прямой видимости от людей, которых он должен оживить. Статусы, такие как шок, мешают процессу. Итак, помимо того, что происходит «под капотом», есть и проблемы «на поверхности».

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

На данный момент мы переработали описание навыка в игре и убрали необходимость нажимать кнопку, чтобы оживить персонажа, если вы находитесь в зоне действия Медицинского улья. В обновлении № 5 мы также позаботились о том, чтобы оптимизировать скрипты, связанные с ульем. Другие изменения в пользовательском интерфейсе активно прорабатываются и будут представлены в будущем обновлении игры, в том числе отображение индикатора здоровья Медицинского улья, независимо от того, сбиты ли вы с ног или нет.

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

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

/Команда разработчиков The Division

Источник: goha.ru