Представлен проект DOOMQL (SELECT * FROM HELL) — Doom в SQLite
Представлен открытый проект под названием DOOMQL (SELECT * FROM HELL). Это играбельный шутер от первого лица, буфер кадров которого представляет собой SQL-запрос в SQLite. Исходный код решения написан на Python и опубликован под лицензией MIT.
«DOOMQL начался с намеренно неразумного вопроса: что, если бы SQLite был игровым движком, а не просто местом хранения данных в игре? В результате получилась небольшая оригинальная игра в стиле Doom, в которой SQL управляет движением, столкновениями, врагами, боем, прогрессом и каждым пикселем RGB на экране. Здесь нет SVG, браузера, Canvas или игрового движка, а играбельная среда выполнения не содержит графического кода на Python», — пояснил автор проекта.
Как SQL превращается в изображение? Для каждого кадра SQL считывает таблицы игрока и карты и выдаёт одну строку на пиксель:
Второе представление SQL преобразует эти строки RGB в цветные блоки терминала ▀. Хост Python не выполняет отрисовку: он передает в SQLite необработанные ключи, время и размер терминала, а затем выводит результат выполненного запроса без изменений.
Полный видимый кадр возвращается одним запросом:
SELECT scanline FROM render_frame ORDER BY y;
DOOMQL — это оригинальный рейкастер, похожий на Doom, а не порт Doom. Он не содержит кода Doom, данных WAD, карт, графики, аудио или логотипов и не связан с id Software или её издателями и не поддерживается ими.
Финальное физическое отображение выполняется терминалом. SQL вычисляет каждое значение RGB и выдаёт каждую инструкцию цвета терминала; Python записывает эти байты без изменений. Рассматривайте пользовательские базы данных как доверенные входные данные.
Модифицированная база данных может заменить сохранённый SQL-код во время выполнения и внедрить текст в терминал,
Читать на habr.com