Doom запустился через SQL-запросы — 89 выражений и до 60 FPS на Ryzen 7

Doom запустился через SQL-запросы — 89 выражений и до 60 FPS на Ryzen 7

Технологии

Автор материала

Нина Соколовская

Готовит подборки для отдыха с детьми, гастрономических поездок и сезонных афиш по регионам Беларуси.

Программист Лукас Фогель запустил Doom внутри базы данных CedarDB. «Рендерить Doom в базе данных — заведомо плохая идея», — пишет он в блоге, но проект работает. Небольшой Python-клиент обрабатывает ввод, вывод и показ кадров, а основная логика и рендеринг реализованы около 1300 строками SQL-запросов, разбитых на 89 общих табличных выражений.

Это значительное улучшение по сравнению с предыдущим проектом Фогеля DoomQL, где графика была черно-белой и основанной на рейкастинге с углами только 90 градусов — как в Wolfenstein 3D. SQLDoom генерирует полноцветные кадры 640×480, которые выглядят как из оригинального Doom. На ноутбуке с процессором Ryzen 7 частота кадров достигает 60 FPS, в сложных сценах падает до 35 FPS. Кадры обновляются 35 раз в секунду, что сопоставимо с оригинальной игрой.

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

Рендеринг полов и потолков потребовал «довольно хакерского» метода с итерацией по упорядоченному списку панелей, поскольку оригинальный алгоритм Doom использует visplanes и мутации состояний, которые неприменимы в SQL. Несмотря на дополнительные накладные расходы на чтение и запись в таблицы SQL, игра работает с приемлемой производительностью.

Для многопользовательской игры база данных предоставляет стабильный снимок состояния, исключая баги физи

Читайте marshryt.by в Google

Добавьте сайт в свои источники — материалы будут чаще попадаться вам в выдаче и в ленте новостей.

Добавить в источники

Последние новости и статьи