Как тентакла из Half-Life заново научили правильно хватать учёных
У первой Half-Life длинные и сложные отношения с багами разного рода, но один из них особенно заметный и взрослый: ещё два десятка лет назад в известной сцене, где тентакл утаскивает учёного прямо на глазах игрока, рассинхронизировались анимации. Лишь с юбилейным апдейтом Valve наконец придумала способ исправить этот баг.
Как выглядел баг.
Сотрудник Valve Бен Бёрбэнк (Ben Burbank) рассказал историю бага и как он его исправил:
- Баг дал о себе знать спустя примерно полтора года после релиза Half-Life: рассинхронизация появлялась на компьютерах с ОС Windows 2000 или новее.
- Баг не системный, то есть проявляется только в одной сцене. По версии Бёрбэнка, ошибка случилась из-за того, что лишь в этой сцене за всю игру необходимо тщательно синхронизировать разные анимации — причём в середине есть осложняющий сегмент, где объект пролетает сквозь пространство до того, как запустится анимация.
- Valve собиралась исправить этот баг одновременно с релизом юбилейного апдейта, но вмешались другие приоритеты.
- Рассматривалось три опции исправления:
- Попробовать переписать код. Неплохой вариант, но он потребовал бы заново протестировать абсолютно все скриптовые сцены, а не только сцену с тентаклом. Кроме того, не факт, что это бы помогло.
- Изменить анимации в сцене. Тут имелись свои нюансы: например, новый триггер должен был включаться таким образом, чтобы у игрока не было шанса аккуратно заглянуть в дверь и убить учёного до того, как запустится анимация, — это сломало бы всю сцену.
- Изменить карту, чтобы тайминг работал верно.
- Valve выбрала изменить карту. Однако повторная компиляция карты на современных системах создавала бы нежелательные изменения в файле карты, потому что оригиналы компилировались на Windows 95 и Windows 98. Любое изменение могло привести к небольшим, но раздражающим багам с коллизиями и поиском путей.
- В итоге Бёрбэнк не стал рекомпилировать карту, а отредактировал её руками в HEX-редакторе.
Теперь триггер анимации срабатывает при открывании двери (некоторые моды от сообщества делали это при помощи декомпилированных или рекомпилированных версий карт) вместо момента, когда игрок проходит сквозь дверь. Таким образом мы убеждаемся, что игрок не может застрелить учёного до того, как всё начнёт «синхронизироваться». Сегмент НЕМНОГО отличается, но теперь выглядит ближе к тому, как работали альфа-карты в оригинале.
Баг был настолько старым, что некоторые даже считали, будто он существовал всегда: например, рассинхронизированную анимацию показывали в недавнем официальном документальном фильме о разработке Half-Life. Поэтому многие и не удивились, что столь известный баг не починили в юбилейном издании.
Однако теперь, когда вышел ещё один патч и баг устранили, на сабреддите Half-Life случился маленький праздник: тема с исправленной анимацией тентакла стала одной из самых популярных за последние дни.
Как выглядит исправленная версия.