Представлен публике инициатива DOOMQL (SELECT * FROM HELL) — Doom в SQLite

2 мин
Представлен публике инициатива 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-код во время выполнения и внедрить текст в терминал, поэтому не открывайте недоверенные файлы с параметром --db.

Тригонометрия с плавающей запятой может немного отличаться в сборках SQLite и math-library, поэтому детерминированное воспроизведение гарантируется только в одной и той же среде.

Читают сейчас

Forbes: цифровой оператор «Сбербанк‑Телеком» протестировал работу в режиме мультисети

14 часов назад

Forbes: цифровой оператор «Сбербанк‑Телеком» протестировал работу в режиме мультисети

Оператор связи «Сбербанк‑Телеком» стал обладателем технологии мультисети, пишет Forbes со ссылкой на собеседника, близкого к компании. По его словам, уже прошло тестирование работы в этом режиме. Пред

Учёные: современная жизнь толкает человеческий разум к пределам возможностей

14 часов назад

Учёные: современная жизнь толкает человеческий разум к пределам возможностей

В новой статье, опубликованной в журнале Behavioral Sciences, социологи из сингапурских научных учреждений проанализировали предыдущие исследования и теории, чтобы сформулировать следующий вывод: стре

ЕС выписал AliExpress рекордный штраф в размере €550 млн за торговлю нелегальными товарами на платформе

14 часов назад

ЕС выписал AliExpress рекордный штраф в размере €550 млн за торговлю нелегальными товарами на платформе

Европейская комиссия выписала китайскому маркетплейсу AliExpress штраф в размере €550 млн за неспособность предотвратить продажу на платформе нелегальные товары, включая вредную одежду, косметику и ку

Исследование: Claude Code отправляет в 4,7 раза больше служебных токенов, чем OpenCode

15 часов назад

Исследование: Claude Code отправляет в 4,7 раза больше служебных токенов, чем OpenCode

Организация Systima сравнила объём служебных данных, которые Claude Code и OpenCode передают языковой модели наряду с пользовательским запросом. Решение от Anthropic использует в 4,7 раза больше токен

Ответ на Kimi K3: зачем Alibaba выкатила 2,4-триллионную Qwen3.8

15 часов назад

Ответ на Kimi K3: зачем Alibaba выкатила 2,4-триллионную Qwen3.8

На конференции WAIC в Шанхае Alibaba представила Qwen3.8 — новую мультимодальную модель на 2,4 трлн параметров. По заявлению компании, архитектура уступает по производительности только Claude Fable 5,