Культовая игра Doom прекратила работу после 2,5 лет непрерывного запуска на карманном компьютере ASUS MyPal, что стало ожидаемым событием из-за особенностей программного кода. Программный сбой произошел не случайно — причина была известна давно, и она связана с механикой отслеживания времени в игре.
Об этом сообщает ProIT
Технические детали эксперимента
Инцидент зафиксировал администратор сайта Minki на устройстве, похожем на ASUS MyPal A620 с установленной Windows Mobile 2003. Для обеспечения длительной работы портативный компьютер был модифицирован: к нему подключили собственный блок бесперебойного питания на основе литиевых аккумуляторов 18650, который получал постоянное питание через USB-порт маршрутизатора. Система оставалась без присмотра до тех пор, пока не появилось сообщение об ошибке в игре.
По словам разработчиков, WinDOOM — порт Doom для этой платформы — использует оригинальный код 1997 года, который сохраняет многие функции и недостатки классической версии. Одной из таких особенностей является переменная для отслеживания времени игры, которая увеличивается со скоростью 35 раз в секунду. Со временем это число достигает максимального значения для 32-битного целого — 2 147 483 647. На платформе x86 после этого происходит переполнение до минимального значения, с чем игра не справляется и аварийно завершает работу.
«Это произошло, Doom запустили на видеокарте. Без процессора и другого»
Причина сбоя и особенности портов Doom
На частоте 35 тактов в секунду достижение этой границы занимает примерно 1,95 года непрерывной работы. Однако неизвестно, сколько на самом деле времени прошло до появления сбоя, так как экспериментальная система не контролировалась постоянно. Есть предположение, что в этом случае использовался порт Doom4CE для Windows CE, в котором частоту обновления могли снизить до 30 Гц для улучшения производительности. Такие изменения были типичными для портов Doom на игровые консоли.
Известно, что даже финальная версия Doom 1.9 содержала многочисленные баги, а главный разработчик движка, Джон Кармак, знал об этом явлении, но не считал его критическим, так как никто не ожидал, что игра будет работать непрерывно более двух лет. Однако спустя более двух десятилетий технологический эксперимент доказал, что это возможно. Возникает вопрос, выдержит ли такое нагрузку какая-либо из современных игр?
