Lukas Vogel пишет в длинном посте в блоге, объясняя, как ему удалось отрендерить Doom с помощью базы данных SQL. Проект SQLDoom использует небольшой Python-клиент для обработки ввода и вывода, управления временем игры и отображения каждого кадра. За этим стоит серия таблиц Cedar DB, отслеживающих геометрию и состояние игры, в то время как около 1300 строк SQL-запросов в 89 общих табличных выражениях реализуют игровую логику и генерируют 35 битмап-буферов кадров в секунду.
SQLDoom является значительным улучшением по сравнению с предыдущим проектом Vogel, Doom QL, который создавал "многопользовательский шутер, похожий на Doom, полностью на SQL", но заканчивался графикой в оттенках серого ASCII. Новый SQLDoom генерирует полноцветные кадры 640×480, напоминающие оригинальный исполняемый файл Doom.
Преобразование классических WAD-файлов Doom в реляционную базу данных было простым, говорит Vogel, потому что игра разбивала уровни на вершины, линии и сектора. Двоичные деревья пространственного разделения Doom можно разбить на SQL, используя предварительно вычисленный sort_key для каждой позиции. С помощью этого простой оператор "ORDER BY" определяет, какие части стен отображать в каждом кадре.
Ключевые сущности: Компании: Ars Technica | Люди: Lukas Vogel
Источник: Ars Technica · Сводку подготовил HeadlinesBriefing