Top.Mail.Ru
Разработчик реализовал полноценный рендеринг Doom в базе данных CedarDB на SQL — MiraNews

Разработчик реализовал полноценный рендеринг Doom в базе данных CedarDB на SQL

3 октября 2026, 02:00 ·

Разработчик Lukas Vogel создал SQLDoom — проект, позволяющий запускать Doom с использованием базы данных CedarDB. О работе он рассказал в блоге CedarDB, назвав идею рендеринга игры в базе данных заведомо плохой, но показав, как реализовал её на практике. Проект способен формировать полноцветное изображение размером 640×480 пикселей.

SQLDoom не обходится исключительно средствами SQL. Небольшой клиент на Python принимает команды игрока, отвечает за синхронизацию игрового процесса и выводит готовые кадры на экран. Геометрия уровней и текущее состояние игры хранятся в таблицах CedarDB, а игровая логика реализована примерно в 1300 строках SQL-запросов, объединённых в 89 общих табличных выражений.

Такая архитектура позволяет создавать 35 растровых кадров в секунду. Для работы проекта используется код SQLDoom, опубликованный на GitHub. При этом Python выполняет вспомогательную роль, тогда как основные расчёты, связанные с игрой и построением изображения, происходят внутри базы данных.

Новая разработка стала продолжением прошлогоднего проекта DoomQL, который Vogel описывал как «многопользовательский шутер в стиле Doom, полностью созданный на SQL». Однако прежняя версия выводила основанную на трассировке лучей серую ASCII-графику. По виду она скорее напоминала простые карты с прямыми углами из Wolfenstein 3D, чем оригинальный Doom.

Перенос игровых WAD-файлов в реляционную базу оказался сравнительно простым благодаря устройству исходных уровней. Они уже были разделены на вершины, линии, сектора и другие элементы, которые удобно представить в виде записей таблиц. Даже деревья бинарного разбиения пространства удалось описать средствами SQL с помощью заранее рассчитанного для каждой позиции ключа сортировки.

После загрузки этих данных запрос ORDER BY определяет для каждого кадра, какие участки стен нужно показать, а какие можно исключить из обработки. Это заметно ускоряет построение изображения. В результате SQLDoom формирует графику, визуально близкую к той, что могла бы появиться при запуске оригинального исполняемого файла Doom.