Бывший сотрудник Valve Том Форсайт поделился воспоминаниями из 2013 года. Тогда команда тестировала VR-версию легендарной игры Half-Life 2, но столкнулась с неожиданным препятствием – забавным, но серьезным багом.
Как баг сорвал разработку
По словам Форсайта, опубликованным в социальной сети, VR-сборка игры ломалась уже через несколько минут после запуска. В ключевой сцене охранник должен был впустить игрока в комнату, но двери просто не открывались. Это нарушало весь скрипт и делало прохождение невозможным.
Форсайт привлек коллег, включая авторов оригинальной игры. Тесты выявили: проблема не ограничивалась VR. Она появлялась даже в обычной версии, если пересобрать игру современным компилятором.
Техническая причина неисправности
Оказалось, что за дверями стоит другой охранник. В оригинальной версии его позиция рассчитана с невероятной точностью. Когда двери открываются, они слегка толкают NPC. Тот почти незаметно поворачивается, и в старой сборке этого достаточно, чтобы ботинок вышел из траектории. Игра продолжается нормально.
Но в новой версии поворот получается меньшим. Палец на ноге охранника остается на пути, двери блокируются. Игрок ждет скрипт, который так и не запускается.
Корень проблемы – в технике. Старые сборки Half-Life 2 использовали вычисления x87 с определенной точностью с плавающей запятой. Новый компилятор перешел на SSE, и крошечные различия в математике изменили физику. Это и вызвало хаос.
