Технический директор Microsoft Azure выпустил проект DoomPaint — оригинальный shareware Doom, который отображается прямо в MS Paint
Игра работает через буфер обмена Windows: каждый кадр вставляется в Paint как обычная правка документа
Скорость достигает 35 кадров в секунду при разрешении 320×200 или 640×400, со звуком и музыкой
Исходный код открыт и распространяется по лицензии MIT, инструкции опубликованы на GitHub
Ещё одна необычная версия Doom появилась на GitHub — и новый проект DoomPaint выделяется сразу по нескольким причинам. Его разработал Марк Руссинович, технический директор Microsoft Azure. Проект запускает подлинную shareware-версию Doom, а MS Paint используется в качестве монитора — окна, в которое выводится изображение игры. Приём с буфером обмена OLE, лежащий в основе DoomPaint, позволяет игре работать с приличной скоростью — до 35 кадров в секунду, хотя иногда, по признанию самого разработчика, частота проседает до уровня «электронных таблиц».
Как это устроено
«Настоящий движок Doom — ViZDoom, платформа, изначально созданная для исследований в области машинного обучения и игровых ботов на основе ZDoom, — запускает подлинный shareware-файл DOOM1.WAD, а недостающие эпизоды дополняются ресурсами Freedoom под лицензией BSD. Игра рендерится без вывода на экран», — объясняет Руссинович на странице проекта на GitHub. «Каждый кадр помещается в буфер обмена Windows и вставляется в холст Paint как настоящая правка документа». По словам разработчика, невысокая частота кадров «является частью очарования» DoomPaint, но 35 кадров в секунду — совсем неплохой результат, особенно по меркам компьютеров девяностых годов.
Источник изображения — tomshardware.com
Чтобы кадры доходили до Paint без сбоев, автору пришлось решить не самую тривиальную задачу: ранние версии программы постоянно перезаписывали буфер обмена, из-за чего Paint иногда не успевал прочитать данные до появления следующего кадра. В итоге DoomPaint публикует единый OLE-объект и лишь обновляет содержащиеся в нём байты изображения, а момент готовности к следующему кадру определяется по тому, когда Paint прочитал предыдущий.
Разрешение, звук и параметры запуска
На GitHub выложены файлы, ресурсы и подробная инструкция по запуску DoomPaint. В зависимости от возможностей компьютера игру можно запустить на полных 35 кадрах в секунду при разрешении 320×200 — именно в этом разрешении работал оригинальный Doom — либо при более крупном 640×400, которое даётся движку тяжелее. Есть звук и музыка: эффекты воспроизводятся через OpenAL, а музыкальные композиции конвертируются «на лету» из формата MUS в MIDI и отправляются на встроенный секвенсор Windows.
Проект поддерживает и другие параметры запуска, среди которых:
--res— выбор разрешения: 320×200, 320×240, 640×400 или 640×480;--map— выбор конкретного уровня, например E1M2;--wad— переключение между исходными эпизодами и ресурсами Freedoom;--skill— уровень сложности от 1 до 5;--no-soundи--no-music— отключение звуковых эффектов или музыки по отдельности.
Перемотка через Ctrl+Z и сохранение через «Сохранить»
Поскольку каждый кадр в буквальном смысле становится очередной правкой документа Paint, у DoomPaint неожиданно появились функции, которых нет ни в одной другой версии игры. Комбинация Ctrl+Z отменяет последнюю вставку кадра — и фактически отменяет смерть персонажа или полученный урон, ведь для Paint это обычная операция отмены. А сохранение файла через стандартное меню Paint в любой момент создаёт настоящий PNG-снимок текущего кадра игры — просто потому, что с точки зрения программы пользователь всё это время что-то «рисовал».
Ближе к концу файла README Руссинович пишет: «Paint отображает игру, но не вычисляет её. Paint ничего не вычисляет. Paint никогда ничего не вычислял. В этом и заключается шутка». Исходный код DoomPaint открыт и распространяется под лицензией MIT.
Кто такой Марк Руссинович
Руссинович пришёл в Microsoft в 2006 году, привнеся с собой инструменты SysInternals, которые с тех пор стали одной из основ диагностики Windows. Сейчас он отвечает за архитектуру, безопасность и надёжность облачной платформы Azure, а в последний год также стал одним из самых заметных голосов, публично указывающих на многочисленные недостатки Windows 11.
Поэтому немного удивительно, что настолько занятой технический директор находит время на подобные эксперименты, как DoomPaint. Впрочем, самые увлечённые программисты и компьютерные энтузиасты пишут код и в свободное время тоже — просто потому, что им это нравится.












