Все компоненты игры, включая код рендеринга, синхронизации состояния игроков при многопользовательской игре и игрового цикла, написаны на SQL. Игровая логика реализована при помощи таблиц, представлений (VIEW) и хранимых процедур, что отличает
DOOMQL от похожих проектов DuckDB-DOOM (использует хранимые процедуры на WebAssembly) и pg_doom (реализован как расширение к PostgreSQL на языке Си).
При разработке DOOMQL использована концепция «всё является данными», при которой для хранения состояния карт, игроков, перемещающихся по уровню объектов, событий ввода, настроек и спрайтов применяются таблицы. Игровой цикл, отвечающий за обработку и обновление игрового состояния, запускается при помощи 20-строчного shell-скрипта, который 30 раз в секунду выполняет SQL-код для расчёта траектории выстрелов, анализа столкновений, обработки ввода и возрождения игроков.
Написанный на SQL 3D-рендер поддерживает трассировку лучей, проецирования спрайтов на 3D-сцену, обработку перекрытия объектов и HUD-интерфейс (Heads-Up Display). Вся логика рендеринга реализована при помощи представлений. Одновременно к игре могут подключаться несколько игроков, синхронизация состояния которых осуществляется при помощи таблиц и представлений.
На стороне пользователя запускается клиент, включающий около 150 строк кода на языке Python. Работа клиента сводится к передаче информации о нажатиях клавиш и выводу кадров в терминал. Вывод организован путём периодически выполняемых SELECT-запросов к представлению «screen» в СУБД, динамически формирующему изображение построчно (каждая выводимая в ответ на запрос SELECT строка соответствует строке на экране). Информация о нажатии клавиш и добавление новых игроков осуществляется через INSERT-запросы.
Источник: http://www.opennet.ru/opennews/art.shtml?num=63853