Популярный шутер оказался отличной моделью для изучения неевклидовой геометрии.

Ошибки случаются у всех — и порой именно они становятся отправной точкой для неожиданных открытий. В начале 1990-х, создавая Doom, программист Джон Кармак решил вручную ввести значение π, полагаясь на память. Он записал девять знаков после запятой — 3.141592657. Позднее выяснилось, что последняя цифра ошибочна: корректный вариант — 3.141592654. Если число просто усечь, девятый разряд равен 3, но при округлении по правилам он превращается в 4.
На геймплей эта неточность не повлияла. Doom остался стремительным шутером от первого лица, где морпех отбивается от демонов на марсианской базе. Невысокая детализация объяснялась не ошибкой в константе, а ограничениями тех лет. Однако спустя десятилетия случайная мелочь привлекла внимание американского инженера Луки Гоццлинга. В 2022 году он представил на хакерской конференции доклад о любопытном эксперименте — что будет, если изменить значение π в исходном коде игры.
Так как проект давно открыт для моддеров, реализовать замысел оказалось несложно. Гоццлинг скачал исходники, подменил константу и стал наблюдать за результатом. При π = 3 мир превратился в дрожащий лабиринт — поверхности искривлялись, колонны тянулись, геометрия теряла устойчивость. Тем не менее уровни оставались проходимыми. Затем инженер заменил π на число Эйлера e = 2.718… и увидел ещё более хаотичную картину: при движении вперёд предметы плыли в разные стороны, а монстры вспыхивали и пропадали без причины. Он пошутил, что подобное ощущение возникает после пары коктейлей.
Наиболее удивительный результат дало значение π⁄2. Пространство распадалось на мигающие фрагменты: освещение скакало, границы комнат таяли, игрок натыкался на невидимые преграды и застревал в пустоте. Виртуальная среда вела себя так, словно исчезли все законы геометрии. Играть в этом хаосе было невозможно.
Чтобы понять, почему одно число так сильно влияет на реальность, нужно вспомнить, что означает π. В школьной геометрии оно определяется как отношение длины окружности к диаметру. Это справедливо только в плоском евклидовом пространстве, где расстояния измеряются по прямым. Стоит изменить геометрию — и постоянная уже зависит от формы мира.
Математики описывают такие варианты через метрики. Представьте Манхэттен с его сеткой улиц. Если отметить точки, расположенные в километре от центра, они образуют не круг, а квадрат. Двигаться можно только по перекрёсткам, поэтому в «манхэттенской метрике» соотношение периметра к диаметру равно четырём.
Даже в нашей реальности эта константа не строго фиксирована. Планета имеет кривизну, из-за чего окружности одинакового радиуса имеют разную длину на разных широтах. Ближе к полюсам они короче, а возле экватора длиннее, поэтому расчётное отношение меньше стандартных 3.14159. На сфере оно зависит от радиуса и профиля поверхности. Подобный эффект возникает и в других криволинейных системах, которые математика называет неевклидовыми: там прямые искривлены, а привычные соотношения меняются.
Однако в случае Doom всё объясняется не физикой, а принципами кода. В 1990-е годы компьютеры обладали ограниченной мощностью, поэтому разработчики старались экономить ресурсы. Тригонометрические функции — синус, косинус, тангенс — вычислялись заранее и записывались в таблицы готовых значений. Такие списки использовались при построении трёхмерных моделей и помогали ускорить расчёты. Чтобы перевести угол из градусов в радианы, его умножают на π и делят на 180. Если ввести неверную константу, все повороты и перемещения теряют точность, и вся геометрическая сетка сцены искажается.
Когда π меньше реального значения, полный оборот в 360° оказывается укороченным: объекты появляются раньше или исчезают до завершения круга. При завышенной величине окружение «сворачивается» само в себя, предметы дрожат и мерцают.
Фактически Гоццлинг превратил легендарный шутер в демонстрацию неевклидовой геометрии и ошибок округления. Его опыт показал, насколько глубоко фундаментальные числа проникают в виртуальные миры. Стоит нарушить связь между углом и длиной окружности — и рушится вся визуальная логика. Для игрока это психоделическое зрелище, а для математика — чистая иллюстрация того, как формулы определяют восприятие реальности.
Интересно, что причиной использования таблиц поиска стала необходимость ускорить обработку. Тогдашние процессоры выполняли лишь несколько миллионов операций в секунду, и каждое дополнительное действие снижало частоту кадров. Чтобы не тратить время, разработчики вводили постоянные вручную. Одна неточность в подобном значении могла нарушить всю систему координат.