Как одна строчка кода испортила Warhammer Online

И другие истории о небольших ошибках, которые приводят к серьёзным последствиям.

Не так давно автор мода для Aliens: Colonial Marines улучшил поведение искусственного интеллекта в игре, изменив всего одну букву в файле конфигурации. Эта история вызвала бурное обсуждение, а создатели игры даже открыли у себя на сайте вакансию редактора, «который «любит искать опечатки в коде».

Как одна строчка кода испортила Warhammer Online

Патрик Клепек, журналист Vice, решил напомнить читателям, что история Aliens: Colonial Marines далеко не уникальна. Например, в марте 2018-го игроки выяснили истинную причину странного поведения искусственного интеллекта в Civilization VI. Зачастую управляемые компьютером правители полностью игнорировали экономику и военное дело и вкладывали все ресурсы в религию. Как оказалось, виной всему был баг: слово «yield» (доход) в коде игры было записано как «yeild».

Журналист решил выяснить, насколько часто в индустрии происходят подобные казусы, и задал соответствующий вопрос в твиттере. С ним связалась Лия Миллер, одна из создателей MMORPG Dark Age of Camelot и Warhammer Online: Age of Reckoning, и рассказала свою историю.

Как одна строчка кода испортила Warhammer Online

Вскоре после того, как разработчики Mythic Entertainment выпустили Warhammer Online, в их адрес стали поступать многочисленные жалобы от игроков. Все, как один, утверждали, что игра ощущалась медленной, а управление неотзывчивым. Ничего более конкретного недовольные игроки сказать не могли.

Члены нашей команды перерабатывали боевую систему, пытаясь cделать так, чтобы она ощущалась более быстрой, и искали изъяны в работе серверов. Но фидбэк был таким расплывчатым, что исходя из него никто не мог вычленить конкретную причину проблемы.

Лия Миллер

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

Как одна строчка кода испортила Warhammer Online

Спустя полгода недавно устроившийся в компанию программист заметил нечто странное в коде игры — в нём содержалась строчка, доставшаяся Warhammer Online по наследству от предыдущей игры студии — Dark Age of Camelot. Она была связана с телефонными линиями — строчка была родом из тех далёких времён, когда высокоскоростным подключением могли наслаждаться лишь избранные, а пользоваться телефоном и играть онлайн одновременно было невозможно.

Он работал в компании недавно и ещё не был знаком с кодом. Возможно, именно поэтому он изучил эту секцию кода пристальнее, чем кто-либо до него.

Лия Миллер, геймдизайнер
Dark Age of Camelot
Dark Age of Camelot

Как только разработчики избавились от этой «древней» строчки, Warhammer Online немедленно заработала так, как и должна была — быстро и «гладко».

В коде Dark Age of Camelot была строчка, которая искусственным образом устанавливала скорость обмена определённых типов данных между клиентом и сервером. Думаю, она служила для того, чтобы улучшать пропускную способность, но, помимо этого, она могла быть частью системы, созданной для того, чтобы игроки, подключённые по телефонной линии, оставались конкурентоспособными в PvP.

Лия Миллер, геймдизайнер

В Dark Age of Camelot эта задержка была практически незаметна — система была рассчитана на стандартные компьютеры своего времени. Однако затем Mythic Entertainment решила использовать тот же самый код для Warhammer Online, совершенно забыв об этой строчке.

Миллер не утверждает, что игра провалилась исключительно из-за ошибки в коде, но она точно не сыграла разработчикам на руку. К тому моменту, как код успели починить, большая часть игроков уже «мигрировала обратно в World of Warcraft».

Как одна строчка кода испортила Warhammer Online

Другие разработчики также поделились историями о масштабных багах, вызванных незначительными ошибками в коде. Например, разработчик Мэтт Лэйси признался, что как-то раз выпустил игру, которая вылетала в 100% случаев в високосный год, а создатель Semblance рассказал о строчке кода, которая из-за ошибки «съедала» 41 fps, так что в 2D-платформер приходилось играть при 19 кадрах в секунду.

Как одна строчка кода испортила Warhammer Online

Брайан Шарп, один из разработчиков Deus Ex 2, рассказал о том, как ему в течение трёх лет приходилось неправильно писать слово «acquired» (приобретённый), потому что на самом раннем этапе разработки кто-то впечатал его с ошибкой («aquired»).

Сам журналист вспомнил о знаменитом своей сложностью уровне из Super Mario 64 — в какой-то момент выяснилось, что проплывать через подводные кольца настолько тяжело по вполне определённой причине. Из-за мелкой ошибки в коде физическое расположение колец не соответствовало их визуальному отображению.

9292
61 комментарий

Буквально сегодня столкнулся с такой проблемой. Заканчивал добавление нового босса в свою игру. Прописал ему анимацию появления, уничтожения и три типа поведения. Финальная проверка! И тут оказалось, что босс в случайные моменты начинает двигаться без причины. Я перелопатил весь код паттернов, проверил взаимодействия с другими объектами, даже вырезал целые куски кода - все бесполезно. И вот, когда уже совсем отчаялся заметил одну строку. Удалив ее, все заработало. А дело оказалось в том, что изначально для отладки босса я настроил ручное управление им, и, по всей видимости, одну строку пропустил, когда чистил код от мусора.

20

Потому что код управления боссом надо выносить в интерфейс с 2мя реализациями. Одна ручная и вторая на основе ии :)

4

YS VIII на ПК шла медленно, потому что в 100% случаев рендерилась в 4к разрешении. Но там не в одной строке ошибка, просто отсутствовала поддержка 1080р и 720р.

12

Хм, разве у пк-бояр не стоят поголовно 1080ti? В консолесрачах это главный аргумент - 4к 60фпс

6

Escape from Tarkov - пример, где вся игра - баг и большая ошибка.

20