



Глючная дверь стала причиной невыхода VR-версии Half-Life 2
Бывший разработчик Valve Том Форсит рассказал в треде в Mastodon о том, как компания пыталась перенести Half‑Life 2 в VR, однако это обернулось критической проблемой из‑за глючной двери в самом начале игры. В результате официальная VR‑версия игры так и не вышла.
Valve занималась VR‑версией шутера в 2013 году. Уже тогда разработчики обнаружили баг в одной из самых ранних сцен игры, когда метрокоп должен провести Гордона Фримена через дверь — эта самая дверь попросту не открывалась, хотя код игры оставался прежним. Сначала баг списали на VR‑режим, однако по мере компиляции оригинальной версии игры выяснилось, что проблема возникает и там.
По словам Форсита, софтлок возникал из‑за разных методов считывания физики игры. В оригинальной версии охранник стоял настолько близко к двери, что его носок пересекал её траекторию. При открывании дверь задевала модель и выталкивала метрокопа со своего пути, что позволяло двери беспрепятственно открыться.
При разработке VR‑версии разработчики использовали инструкции SSE вместо x87 при компиляции, в результате чего физика игры начала считаться по‑другому. Проблема заключалась в «плавающей точке»: поскольку в старой версии игры использовалась 80-битная точность, а в новой — 32-битная или 64-битная, значения параметров округлялись неточно. Таким образом, результаты вычислений стали отличаться на тысячные или даже миллионные доли единицы — и этого было достаточно, чтобы сломать игру. Как итог, носок модели охранника больше не успевал уйти с траектории двери, из‑за чего та не могла открыться.
Поначалу команда разработчиков посчитала это небольшой локальной проблемой — модель метрокопа сдвинули вбок на несколько миллиметров. Даже эта задача оказалась очень ресурсозатратной, говорит Форсит:
Читать на habr.com