DOOM работал на КПК ASUS MyPal 2,5 года и наконец упал
Выпущенная в декабре 1993 года после невероятного ажиотажа среди ПК-геймеров, подключенных к тогда еще новому Интернету, игра DOOM установила стандарты зарождающегося жанра шутеров от первого лица и была настолько популярна, что «Doom-клон» долгие годы оставался общепринятым обозначением для подобных игр. Геймеры потратили миллионы, если не миллиарды часов на эту игру за почти 32 года с момента ее выхода, но вряд ли многие из них оставляли игру запущенной непрерывно в течение более двух лет. Как минимум один человек сделал это, и результат... она упала.
Администратор сайта LenOwO под ником Minki сообщает, что ему удалось воспроизвести ожидаемый крах, запустив WinDOOM на карманном ПК ASUS MyPal A620 2003 года выпуска, работающем под управлением тогдашней Windows Mobile на SoC Intel XScale ARMv5. Minki отмечает, что устройство было модифицировано для использования «самодельного ИБП на базе элемента 18650, который, в свою очередь, был подключен к USB-порту маршрутизатора для постоянного питания 5В». Он оставил систему работать и в основном забыл о ней до вчерашнего дня, когда заметил всплывающее сообщение на устройстве с жалобой на сбой приложения:
Сбой в операционной системе Windows Mobile 2003 на ASUS MyPal. / Изображение: minki/LenOwO
Как и большинство портов того времени, WinDOOM основан на оригинальном исходном коде 1997 года и воспроизводит большинство функций — и большинство ошибок — оригинальной игры. Как и большинство крупных коммерческих проектов, DOOM имеет множество известных багов даже в финальном релизе 1.9. Среди них — любопытная особенность: при воспроизведении внутренних «демо»-файлов (обычно для заставки) значение «gametic» не сбрасывается при запуске нового демо. Это значение используется для отслеживания игрового времени и увеличивается со скоростью 35 Гц (35 раз в секунду), независимо от цикла рендеринга.
Не нужно быть математиком, чтобы понять, что значение gametic, которое никогда не сбрасывается, со временем достигнет огромной величины. Главный программист движка DOOM Джон Кармак, несомненно, знал об этом, но, вероятно, счел, что это не имеет значения, поскольку значение хранится как 32-битное целое число со знаком. Это означает, что оно может достичь максимального значения в 2 147 483 647 тиков до переполнения. Поведение при переполнении целочисленного значения в языке C не определено, но на ПК с архитектурой x86 это всегда приводит к переходу к максимальному отрицательному значению -2 147 483 647. Неудивительно, что игра обрабатывает это не очень изящно, то есть происходит крах, по крайней мере, на Windows Mobile 2003.
Конечно, есть много других способов уронить DOOM, например, загрузка невалидного уровня. / Изображение: GitHub/AXDOOMER
При 35 тиках в секунду для переполнения значения gametic требуется около 1,95 года. Это немного меньше, чем оценка Minki, но кто знает, как долго КПК проработал до того, как он заметил сообщение об ошибке на экране. Судя по фото, 22-летний карманный компьютер не получает много внимания. Также возможно, что Doom4CE, порт WinDoom для Windows CE, который, вероятно, использовал Minki, снижает частоту игровых тиков до 30 Гц для лучшего pacing кадров и снижения нагрузки на железо; это было распространено в консольных портах DOOM, таких как версии для Jaguar и Super NES. Если это так, то для переполнения значения gametic потребовалось бы около 2,26 лет, что ближе к заявленным 2,5 годам.
Как бы то ни было, вывод таков: не оставляйте DOOM работающим на два года — или, вероятно, любую другую игру, по крайней мере, если это игровой клиент, а не выделенный сервер. Другие мысли, вызванные экспериментом Minki, включают в себя признательность за научную строгость (экспериментальную проверку даже нерелевантных выводов) и clever reuse «старого» железа. Это, похоже, является темой форумов LenOwO, так что респект этой компании за то, что они делают то, до чего другим просто не было дела.
Источник: Tomshardware.com
Интересный факт: Оригинальный движок DOOM, созданный Джоном Кармаком, несмотря на свой возраст, продолжает оставаться объектом изучения и модификаций. Сообщество энтузиастов до сих пор создает новые моды и порты игры для самых неожиданных платформ, включая калькуляторы, умные часы и даже кассовые аппараты.
0 комментариев