DOOMQL: Когда SQL решает, что пора стрелять
В эпоху, когда игровые движки становятся всё более сложными, а графика стремится к фотореализму, один учёный муж — Лукас Фогель, сооснователь CedarDB — решил, что пора напомнить миру: SQL — это не просто язык запросов, это философия. И доказал это, создав многопользовательский шутер от первого лица в духе DOOM, используя исключительно «чистый SQL». Да, вы не ослышались. Ни Unity, ни Unreal, ни даже жалкий OpenGL — только таблицы, представления и немного Python для приличия.
Результат — DOOMQL, игра, которая работает на «воздушных» 30 кадрах в секунду при разрешении 12864 пикселя. Графика? Минималистичная. Геймплей? Удивительно живой. Архитектура? Настолько абсурдно элегантна, что заслуживает отдельной диссертации.
Фогель вдохновился экспериментом DuckDB-DOOM от Патрика Трейнера, который тоже пытался реализовать DOOM на SQL, но, увы, позволил себе «читерство» — использовал JavaScript для рендеринга. Фогель, с академическим спокойствием, отметил: «Рендерить в JavaScript — это почти как использовать калькулятор на экзамене по линейной алгебре». И хотя DuckDB-DOOM работает на 8 FPS, DOOMQL уверенно держит 30 — потому что, как известно, SQL не терпит слабости.
Игра была написана за месяц — во время декретного отпуска. Это, конечно, поднимает вопросы о природе свободного времени у программистов, но мы оставим их социологам. Главное — архитектура:
• Состояние игры хранится в таблицах: карта, игроки, враги, ввод, конфигурации, спрайты — всё, как в настоящей базе данных, только с оружием.
• Рендеринг реализован через стек SQL-представлений, которые выполняют трассировку лучей и проекцию спрайтов. Да, SQL теперь умеет «raycasting».
• Игровой цикл — это скромный shell-скрипт, который запускает SQL-файл 30 раз в секунду. Элегантность в чистом виде.
• Клиент — ~150 строк на Python, которые опрашивают ввод и запрашивают 3D-вид. Никаких излишеств, только наука.
Фогель утверждает, что узнал о SQL больше, чем за всю карьеру, и называет игровой цикл «удивительно элегантным». Производительность — приятный бонус. Он даже бросает вызов: найдите СУБД, которая рендерит DOOMQL быстрее, чем CedarDB (да, это была рекламная вставка, но мы простим).
Код доступен на GitHub, лицензия MIT — можно запускать, изучать, модифицировать. В планах — усиления, новые виды оружия, улучшение детализации спрайтов, более удобный клиент и ИИ-противники. То есть, всё, что нужно для полноценной SQL-апокалипсиса.
Оригинал
Уникальность