Классический Doom теперь работает внутри Microsoft Paint: проект DoomPaint от технического директора Azure
Технический директор Microsoft Azure Марк Руссинович (Mark Russinovich) выпустил проект DoomPaint, благодаря которому легендарный шутер 1993 года теперь полностью запускается внутри графического редактора Microsoft Paint. Инженер превратил стандартную системную программу в необычный монитор для игрового процесса, не меняя при этом сам код игры.
Как это работает: Paint — лишь экран, а не движок
С технической точки зрения Paint не вычисляет и не запускает игру. Игровой движок на базе ViZDoom работает в фоновом режиме и крутит оригинальную shareware-версию DOOM1.WAD. Каждый отрендеренный кадр автоматически копируется в буфер обмена Windows, а затем вставляется на холст Paint как обычное редактирование документа. Руссинович пояснил: «Paint отрисовывает игру, но не вычисляет её. Paint ничего не вычисляет. Paint никогда ничего не вычислял. В этом вся суть шутки».
Производительность и технические детали
Несмотря на нестандартный способ вывода изображения, DoomPaint способен работать на родных 35 кадрах в секунду (35 Hz) в оригинальном разрешении 320×200 пикселей, а также поддерживает режим 640×400. Движок работает с нормальной скоростью независимо от производительности самого Paint — ViZDoom выполняет в симуляции N тактов на каждый отрисованный кадр, где N вычисляется на основе фактически прошедшего времени. В проекте также реализованы технические костыли, гарантирующие, что Paint без ошибок принимает каждый вклеенный кадр, не прерывая геймплей. Звуковые эффекты и музыка сохранены полностью.
Уникальные механики: путешествие во времени через Ctrl+Z
Необычный подход привел к неожиданным игровым возможностям. Поскольку каждый кадр вставляется как отдельное правка документа, стандартная комбинация отмены (Ctrl+Z) в Paint работает как кнопка «перемотать назад». Если игрок получил урон или умер, достаточно нажать Ctrl+Z, чтобы откатить кадры и попытаться снова. Кроме того, Paint воспринимает каждый кадр как обычный рисунок — в любой момент можно нажать «Сохранить» и получить легитимный скриншот текущего геймплея в формате PNG.
Традиция запуска Doom на нестандартных платформах
Запуск различных программ внутри Doom (или наоборот) стал забавной традицией за последние десятилетия. Энтузиасты портировали шутер на газонокосилки, принтеры, в чат-боты, на игровые приставки и даже на кишечную микрофлору — в последнем случае прохождение игры от начала до конца заняло бы около 600 лет из-за крайне низкой частоты кадров. Известно также, что ChatGPT способен запускать FPS, а ученые обучали человеческие клетки мозга на микрочипе играть в классический Doom. DoomPaint органично вписывается в эту историю как очередной творческий эксперимент с легендарным шутером.
Доступность и исходный код
Исходный код проекта написан с использованием Python и опубликован Руссиновичем в открытом доступе на GitHub в репозитории markrussinovich/DoomPaint. Репозиторий содержит ресурсы и инструкции о том, как запустить игру в MS Paint любому желающему. Релиз включает в себя не только изображение, но также звук и музыку.