Лучшее  🚀
13.12.2019 в 20:10 Evernews

Восхождение смерти: как в The Outer Worlds лестницы убивали бессмертных спутников

Теперь персонажи наконец смогут выйти из бесконечного смертельного подъема.

Кстати, на сайте читать удобнее

Еще во время тестирования The Outer Worlds разработчики заметили необычный баг: пару раз тестеры сообщали, что игра считает их спутников погибшими. Это было практически невозможно — спутник может умереть только на высшей сложности.

В Obsidian не смогли сходу воспроизвести баг и оставили все как есть. После релиза The Outer Worlds выяснилось, что ошибка встречается и у игроков. Руководитель отдела тестирования Тейлор Своп решил отыскать баг — и в конце концов ему это удалось.

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

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

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

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

Тейлор Своп

В конце концов выяснилось, что неуязвимые спутники не совсем неуязвимы. Разработчики выяснили, что на самом деле неуязвимость распространяется только на атаки, но спутники могут получить урон другим способом. Например, упав с высоты.

Здесь возникала следующая проблема: на корабле просто нет места, где можно упасть с большой высоты и умереть. Тейлор потратил кучу времени на поиски бага, который мог бы забрасывать спутника куда-то не туда, но так ничего и не нашел.

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

Тейлор Своп

Отыскать решение помог рассказ одного из игроков. Он упомянул совершенно другой баг: спутник этого игрока почему-то карабкался вверх по невидимой лестнице. Тейлор исследовал вопрос и понял — вот оно.

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

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

Тейлор Своп

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

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

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

Читать далее