Реализована монгопользовательская DOOM-подобная игра, написанная на SQL

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 351
Зарегистрирован: 20.08.2022

#

Реализована монгопользовательская DOOM-подобная игра, написанная на SQL
Дата публикации:Wed, 10 Sep 2025 08:28:39 +0300

Представлен проект DOOMQL, развивающий вариант игры DOOM, написанный на SQL и способный выполняться внутри СУБД CedarDB, частично совместимой с PostgreSQL. Игра поддерживает многопользовательский режим и выполняет отрисовку при помощи ASCII-графики. Код проекта распространяется под лицензий MIT.
Все компоненты игры, включая код рендеринга, синхронизации состояния игроков при многопользовательской игре и игрового цикла, написаны на SQL. Игровая логика реализована при помощи таблиц, представлений (VIEW) и хранимых процедур, что отличает DOOMQL от похожих проектов DuckDB-DOOM (использует хранимые процедуры на WebAssembly) и pg_doom (реализован как расширение к PostgreSQL на языке Си).
При разработке DOOMQL использована концепция "всё является данными", при которой для хранения состояния карт, игроков, перемещающихся по уровню объектов, событий ввода, настроек и спрайтов применяются таблицы. Игровой цикл, отвечающий за обработку и обновление игрового состояния, реализован при помощи 20-строчного shell-скрипта, который 30 раз в секунду запускает SQL-файл gameloop.sql, содержащем логику для расчёта траектории выстрелов, анализа столкновений, обработки ввода и возрождения игроков.
Написанный на SQL 3D-рендер поддерживает трассировку лучей, проецирования спрайтов на 3D-сцену, обработку перекрытия объектов и HUD-интерфейс (Heads-Up Display). Вся логика рендеринга реализована при помощи представлений. Одновременно к игре могут подключаться несколько игроков, синхронизация состояния которых осуществляется при помощи таблиц и представлений.
На стороне пользователя запускается клиент, включающий около 150 строк кода на языке Python. Работа клиента сводится к передаче информации о нажатиях клавиш и выводу кадров в терминал. Вывод организован путём периодически выполняемых SELECT-запросов к представлению "screen" в СУБД, динамически формирующему изображение построчно (каждая выводимая в ответ на запрос SELECT строка соответствует строке на экране). Информация о нажатии клавиш и добавление новых игроков осуществляется через INSERT-запросы.

Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=63853

Жизнь за Нер'зула!

Ответить