инструменты 1 мин

DOOMQL: Doom-подобная игра, которая работает целиком на SQL-запросах в SQLite

Разработчик создал оригинальную игру в стиле Doom, где SQLite выступает не хранилищем данных, а игровым движком. Движение, коллизии, враги, бой и каждый пиксель на экране управляются SQL-запросами, включая полноценный рейтрейсер на рекурсивных CTE. Проект доступен на GitHub и работает как Python-скрипт в терминале.

Это не просто техническая игрушка — проект показывает, как переосмысление привычных инструментов открывает неожиданные возможности. Для разработчиков это пример нестандартного применения SQL и вдохновение для экспериментов с AI-ассистированным программированием.

Когда SQLite становится игровым движком

Питер Гостев (Peter Gostev) создал DOOMQL — экспериментальный проект, в котором SQLite выступает не просто хранилищем данных, а полноценным игровым движком. Игра в стиле классического Doom полностью управляется SQL-запросами: движение персонажа, определение коллизий, поведение врагов, боевая система и даже каждый пиксель на экране рендерятся через SQL.

В основе лежит огромный SQL-запрос с рекурсивным CTE, реализующий полноценный рейтрейсер внутри SQLite. Проект написан на Python и работает в терминале. Установка элементарна:

cd /tmp
git clone https://github.com/petergpt/doomql
cd doomql
uv run host/doomql.py

Скрипт создаёт SQLite-базу, которую можно исследовать через Datasette — инструмент для работы с базами данных через веб-интерфейс.

Визуализация через Datasette Apps

Автор поста (Simon Willison) пошёл дальше и создал HTML+JavaScript приложение внутри Datasette с помощью нового плагина datasette-apps. Используя Claude (Fable 5), он сгенерировал интерфейс, который: - Отображает текущее состояние экрана игры через SQL-представление frame_pixels - Обновляется каждую секунду - Включает мини-карту

Всё это работает параллельно с игрой в терминале, визуализируя состояние базы данных в реальном времени.

Что под капотом

Проект построен с использованием GPT-5.6 Sol (вероятно, модель OpenAI, использованная при разработке). Это пример того, насколько далеко можно зайти, переосмыслив привычные инструменты: SQLite здесь не база данных в традиционном смысле, а вычислительная среда для игровой логики и графики.

Код приложения для Datasette доступен, что позволяет любому воспроизвести эксперимент локально.

Ключевые выводы

  • SQLite может выполнять роль игрового движка через рекурсивные CTE и SQL-запросы
  • Рейтрейсинг реализован полностью на SQL без традиционных графических API
  • Datasette Apps позволяет создавать кастомные интерфейсы поверх баз данных с помощью HTML/JS
  • AI-ассистенты (Claude) эффективно генерируют рабочий код для визуализации данных по текстовым запросам
  • Проект демонстрирует креативное применение стандартных инструментов за пределами их обычного назначения
SQLiteигровые движкирейтрейсингDatasetteэкспериментальные проекты

Автор: Никита Громов · Источник: simonwillison.net

Мнение редакции

Когда видишь «игра на SQLite», первая мысль — ну это же прикол на выходные, правда? А потом открываешь код и понимаешь: автор реально сделал рейтрейсер на рекурсивных CTE. Не эмулятор Doom, а **оригинальную игру**, где каждый пиксель считается через SQL. Это уровень «а почему бы и нет», возведённый в абсолют.

Практической ценности ноль — никто не будет делать игры через базу данных. Но как демонстрация мощи SQL и вычислительных возможностей SQLite это впечатляет. Плюс показывает, как AI-ассистенты типа Claude упрощают создание визуализаций: попросил добавить мини-карту — и она есть. Короче, если вам нравится, когда люди делают технически сложные вещи просто потому что могут — вот оно.

Комментарии