Игры

Не евклидовый Doom

Забавный факт — в классической игре Doom используется неправильное значение постоянной 𝛑 — Джон Кармак просто неправильно запомнил 10 знак после запятой.

Поскольку игра уже давно выложена в open-source, пытливые хакеры решили проверить, как это вообще влияет на игру. Поскольку игра разрабатывалась для 386 процессора, не имевшего поддержки 3D ускорения, то вся графика рассчитывается непосредственно игрой, причем для ускорения расчетов используются таблицы значений тригонометрических функций — поиск в таблице занимает меньше ресурсов, чем расчет функции.

Для начала хакеры поменяли значение числа 𝛑 на 3.1415926535 (то есть правильное) и запустили игру. Не изменилось практически ничего — всё же увидеть какой-то эффект на VGA-экране немного сложно. Потом начались эксперименты — игра не запустилась при 𝛑=4 и при 𝛑=2𝛑. При 𝛑=3 запустилась, но начались интересные эффекты. Игра запускалась при последовательном уменьшении значения 𝛑 до e, 𝛑/2 и даже до 0.00001, но при этом движение игрока приводило к движению стен, других предметов до полной неиграбельности — поскольку определение препятствий все же работало. При 𝛑≤0 игра просто не запускается.

Можно посмотреть, как это выглядело — это доклад на хакерской конференции 2022-го года, английский там довольно понятен, впрочем, можно даже и не слушать.