Розробник переніс Doom до SQL-бази даних CedarDB
Розробник Лукас Фогель створив SQLDoom — версію Doom, у якій рендеринг і логіка гри працюють у базі даних CedarDB.
Розробник Лукас Фогель створив версію Doom, у якій ігрова логіка та рендеринг виконуються запитами SQL усередині бази даних CedarDB. Проєкт SQLDoom зберігає геометрію рівнів і стан гри в таблицях, а легкий скрипт на Python відповідає за таймінг, введення та виведення зображення, повідомляє TechRadar.
Рендеринг через SQL-запити
SQLDoom формує повнокольорове зображення роздільністю 640×480 пікселів. Код проєкту складається приблизно з 1300 рядків SQL, розділених на 89 блоків запитів. За словами Фогеля, на ноутбуці з процесором Ryzen 7 7840U гра працює приблизно з частотою 60 кадрів за секунду, хоча у складних сценах показник може знижуватися до 35 кадрів за секунду.
Розробник зазначив, що накладні витрати на роботу з таблицями є значними, однак нова реалізація все одно виявилася швидшою за його попередній експеримент DoomQL. Той варіант використовував рейкастинг, градації сірого та текстові символи, тому більше нагадував Wolfenstein 3D, ніж Doom.
Складні елементи рушія
Поштовхом до створення SQLDoom стала відсутність у DoomQL обходу BSP-дерева — одного з елементів рендерингу оригінального Doom. У новому проєкті Фогель відтворив ключові частини процесу відмальовування за допомогою операцій бази даних. Для геометрії рівнів він застосував ключ сортування, що обчислюється під час завантаження мапи та визначає порядок відображення секцій стін.
Складнішим завданням стали підлога й стеля. Оригінальний рушій Doom використовує visplanes та зміни стану, які важко перенести на покроковий SQL-рендеринг за стовпцями. Фогель замінив цей механізм підходом із послідовним проходженням відсортованих панелей для заповнення поверхонь.
Локальна та мережева гра
SQLDoom також підтримує deathmatch. Для багатокористувацьких матчів доступні публічні сервери в Європі та США. Видання, які тестували онлайн-демо, повідомляли про повільну роботу; одне з них припустило, що причина може бути в серверах, а не в самому порту.
Фогель назвав проєкт технічною демонстрацією та заявив, що гра відчувається як Doom, хоча не містить жодного рядка коду з наявних портів. Код можна запустити локально за наявності CedarDB та оригінальних WAD-даних Doom.