Doom на SQL перестал быть шуткой уровня «а давайте заставим базу данных страдать»: разработчик Лукаш Фогель перенёс в SQL не только игровую логику, но и рендерер Doom, а запуск идёт внутри CedarDB. Для русскоязычных разработчиков это не рецепт для продакшена, а редкий наглядный тест того, насколько далеко зашли современные движки БД, компиляция запросов и любовь инженерного сообщества к бессмысленно прекрасным экспериментам.
Проект получил название SQLDoom, сообщает The Register. В отличие от прошлогоднего DOOMQL, где картинка скорее напоминала ранние псевдо-3D-лабиринты, новая версия целится именно в узнаваемый Doom: с геометрией, похожей на оригинал, и полноценным SQL-рендерингом. Python в этой конструкции оставили на вспомогательной работе: тайминг, ввод с клавиатуры и вывод bitmap-изображения. Всё остальное, включая игровую механику и построение кадра, делает SQL вместе с CedarDB.
История началась с типичного инженерного «ну раз вы спросили». В 2025 году Фогель уже показывал DOOMQL — порт Doom-подобной игры на SQL. Демонстрация была технически впечатляющей, но один из комментаторов на Hacker News придрался к тому, что рендеринг использовал raycasting и больше походил на Wolfenstein 3D, чем на Doom. Для обычного человека это повод закрыть вкладку. Для автора экспериментальных портов — личный вызов.
В SQLDoom правила стали жёстче. По словам Фогеля, новая версия должна была выглядеть как настоящий Doom, а рендеринг — оставаться SQL-based. На выходе запросов допустима либо таблица, либо bitmap с точными RGB-значениями для каждого пикселя. Игровой цикл тоже должен исполняться через SQL, а не через спрятанную рядом «нормальную» реализацию. Иными словами, база данных тут не хранит уровни для внешнего движка, а сама становится значительной частью движка.
Самый смешной и одновременно важный момент: порт оказался не только возможным, но и быстрее прошлогоднего более примитивного подхода. Фогель тестировал игру на ноутбуке с Ryzen 7 7840U и утверждает, что она вполне играбельна. Более того, он довёл эксперимент до deathmatch: многопользовательские партии можно запускать через серверы в Европе и США. The Register, правда, пишет, что серверная производительность у них ощущалась вялой, но оговаривается: проблема, вероятно, не столько в самом порте, сколько в серверах.
Технически за этим стоит CedarDB — компилирующая СУБД, где сложные запросы со временем превращаются в машинный код. Именно поэтому SQLDoom интересен не только как очередной пункт в бесконечном списке устройств и платформ, на которых запустили Doom. Это демонстрация того, что оптимизатор, планировщик и исполнитель запросов в современной базе могут выполнять задачи, которые ещё недавно выглядели почти абсурдно для SQL. Речь не о том, что завтра фронтенд-команды начнут писать игровые движки на SELECT, а о запасе выразительности и производительности, который появляется в новых database engine.
Doom на SQL хорошо ложится в давний жанр инженерных демо: запустить Doom на банкомате, осциллографе, электронном тесте на беременность или внутри какого-нибудь сервиса, который вообще-то создавался для другого. Но у SQLDoom есть отличие от чистого «смотрите, оно живое». Здесь демо одновременно продаёт идею продукта: CedarDB показывает, что может тащить сложную вычислительную нагрузку, а не только отвечать на скучные аналитические запросы из слайдов.
Для разработчиков это ещё и полезное напоминание о границах инструментов. SQL часто воспринимают как декларативный язык для выборок, фильтров, join и агрегаций. Но если движок достаточно умён, а автор достаточно упрям, на этом языке можно описать куда более странные вычисления. В реальной жизни это может означать более тяжёлую аналитику ближе к данным, меньше переносов между системами и новые способы оптимизации пайплайнов. В плохой реальной жизни — попытку засунуть бизнес-логику туда, где её потом никто не сможет сопровождать без кофе и внутреннего монолога.
Для бизнеса здесь тоже есть сигнал, пусть и не прямой. Рынок баз данных давно соревнуется не только хранением и SQL-совместимостью, но и тем, как быстро система выполняет сложные запросы, насколько хорошо компилирует планы и как уверенно работает с нетипичными нагрузками. Демонстрация вроде SQLDoom не заменяет бенчмарки, TCO и нормальную проверку на своих данных. Зато она лучше любой конференционной витрины объясняет: современные СУБД всё чаще становятся вычислительными платформами, а не просто шкафом с таблицами.
Doom на SQL вряд ли станет новой архитектурной практикой, и это к счастью для всех, кто потом дежурит по инцидентам. Но такие эксперименты двигают разговор о базах данных из зоны «ещё один магазин на демо-стенде» в более честную плоскость: что реально может движок, если нагрузка странная, тяжёлая и совсем не похожа на учебный пример. Следующий вопрос уже не в том, можно ли запустить Doom в базе данных, а в том, какие ещё вычисления мы по привычке выносим наружу только потому, что десять лет назад SQL для этого казался неподходящим местом.