Лучшее  🚀
16.10.2022 в 18:23 Evernews

Как работает Doom в «Блокноте»: рассказывает Сэм Чиет

Фреймворк для блокнотных игр все еще в разработке.

Кстати, на сайте читать удобнее

Разработчик Сэм Чиет сумел сыграть в Doom при помощи «Блокнота»: изображение из игры выводилось прямо в стандартный текстовый редактор Windows. В интервью ArsTechnica Сэм рассказал, как это работает.

Организация игры в Doom через «Блокнот», объясняет Сэм, кажется сложным делом, но на самом деле все просто. В основе проекта лежит Chocolate Doom, порт оригинальной Doom на язык C#. Приложение, созданное Чиетом, покадрово анализирует все, что выдает игра.

Каждый кадр, созданный Chocolate Doom, преобразуется в ASCII-графику. Сперва для каждого пикселя усредняются данные цветового канала — это позволяет определить его яркость и подобрать соответствующий символ.

Теперь сыграть в Doom в «Блокноте» могут все

Для подбора Сэм составил специальную таблицу символов, каждому из которых назначена яркость. Например, самые темные пиксели рисуются символами «@» и «$» (просто потому, что они занимают много места), а самые светлые — «.» и «\».

Конвертация очень простая и, скорее всего, «неправильная». Но она работает и это единственное, что имеет значение. Фокусы вроде этого всегда в равной степени радуют и разочаровывают!

Сэм Чиет

Часть символов приходится отбросить. Дело в том, что шрифт в «Блокноте» прямоугольный, а пиксели квадратные: чтобы сохранить пропорции изображения, Сэм выкидывает каждую вторую строчку сгенерированного изображения.

Остается поместить сгенерированный текст в редактор. С управлением проблем нет: приложение Сэма перехватывает все нажатые клавиши, направляя их в игру.

Я краду ссылку на внутренний текстбокс [редактора], просто сливаю в него свою память через «сообщения» операционной системы, а затем заставляю [редактор] все перерисовать.

Сэм Чиет

К сожалению, у «Блокнота» нет буфера кадров и поддержки вертикальной синхронизации, имеющихся у обычных графических приложений. Именно поэтому изображение в проекте Сэма сильно мерцает.

Возможно, решение уже найдено: Сэму предложили использовать сразу два «Блокнота», имитируя двойную буферизацию. Разработчики намерен попробовать реализовать эту идею: Сэм думает, что может сработать.

Сейчас Чиет работает над фреймворком, позволяющий переносить в «Блокнот» любые игры. Параллельно Сэм экспериментирует с Paint, еще одним стандартным редактором Windows; по словам разработчика, «если DoomPad был просто фокусом, то моя работа с MS Paint потянет уже на эпизод Дэвида Блейна».

Читать далее