Геймдев-детектив: как Obsidian несколько месяцев искала причину загадочных смертей напарников в The Outer Worlds

Проблему пытались решить ещё до релиза игры.

Геймдев-детектив: как Obsidian несколько месяцев искала причину загадочных смертей напарников в The Outer Worlds

Один из лидов QA-отдела в Obsidian Entertainment, Тейлор Своуп (Taylor Swope), рассказал в своём твиттере о том, как в студии несколько месяцев не могли установить причину одного из багов, устранённых лишь в патче версии 1.2.

Игроки неоднократно жаловались, что некоторые квесты, связанные с компаньонами, помечались в журнале как проваленные — игра утверждала, что напарник мёртв, хотя с ним всё было в порядке. Ситуацию затрудняло то, что напарники в The Outer Worlds могут погибнуть только на уровне сложности «Сверхновая».

Мы сталкивались с этой проблемой ещё до релиза игры — был один или два случая, но никто из QA не мог воспроизвести ошибку. Вопреки всем усилиям, узнать об ошибке какие-либо подробности мы не могли.

Установить причину было так сложно из-за невозможности определить, когда именно произошёл баг. Каждый известный случай обычно описывался так: «В последние десять часов что-то пошло не так и теперь у меня сломался квест».

Нам пришлось определить, где находились те скрипты и строчки кода, из-за которых игра может подумать, что этот персонаж мёртв.

Тейлор Своуп, лид QA-отдела в Obsidian

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

После этого в Obsidian построили возможную причинно-следственную цепочку.

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

Члены команды QA перепроверили множество теорий, включая неверные переменные о высоте и ошибки физического движка, но ни одна из них не подтвердилась. К тому времени The Outer Worlds уже вышла и с багом начали сталкиваться простые пользователи.

Разгадку Своуп обнаружил почти случайно, когда увидел один из отчётов о баге от игрока. Тот упомянул о странной ошибке — он видел, как NPC лезет вверх по воздуху, будто по лестнице. И тут разработчик понял, как напарники поднимались на невозможную на корабле высоту.

Баг обнаружили в системе взаимодействия NPC с предметами окружения, которую в Obsidian называют «мебель» (furniture). В неё входит большая часть действий персонажей — например, «сесть на стул», «опереться на стену» или «использовать терминал». Проблема была в том, что любые подобные взаимодействия отключались, как только игрок вступает в диалог.

Использование лестницы же состояло из двух разных взаимодействий с «мебелью». Первое — взяться за лестницу и начать лезть по ней, второе — остановиться и слезть с неё.

Поэтому, если игрок вступал в беседу с кем-то, когда кто-то ещё поднимался по лестнице, то персонаж попросту не смог бы остановиться.

Тейлор Своуп, лид QA-отдела в Obsidian

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

Как оказалось, Своуп уже писал о ситуации в своём твиттере, когда пытался «поймать» баг.

Если хотите знать, как проходит моя неделя — у меня на стене висит бумажка с надписью: «Что может убить неубиваемое?»
Это была мебель.
435435
88 комментариев

Комментарий недоступен

200
Ответить

Увидеть и описать - это полбеды. А лютый пипец начинается, когда не получается его воспроизвести :)

77
Ответить

В этом прелесть программирования - иногда приходится сталкиваться с невероятным. Люди вокруг ходят, крестятся, говорят, что это сверхъестественное, а ты ищешь объективные причины бага.

15
Ответить

Вот зря недооценивают. Когда мы в нашу маленькую инди-команду взяли QA - это было счастье.

4
Ответить

Комментарий недоступен

8
Ответить

https://ru.wikipedia.org/wiki/%D0%AD%D1%84%D1%84%D0%B5%D0%BA%D1%82_%D0%94%D0%B0%D0%BD%D0%BD%D0%B8%D0%BD%D0%B3%D0%B0_%E2%80%94_%D0%9A%D1%80%D1%8E%D0%B3%D0%B5%D1%80%D0%B0

Я думал, мне эту статью придется кидать только доморощенным футболистам и про-геймерам, но нет.

75
Ответить

не могут себе позволить такого эксперта как ты

36
Ответить