Lukas Vogel запустив Doom у SQL-базі даних із графікою 640×480

Lukas Vogel запустив Doom у SQL-базі даних із графікою 640×480

Lukas Vogel створив SQLDoom: Doom працює через SQL-запити та формує повнокольорові кадри 640×480 зі швидкістю до 60 кадрів за секунду.

Розробник Lukas Vogel створив проєкт SQLDoom, у якому класична гра Doom працює з використанням SQL-бази даних. Система формує повнокольорові кадри роздільністю 640×480, схожі на зображення з оригінальної гри, а в окремих сценах забезпечує щонайменше 35 кадрів за секунду.

Як повідомляє Ars Technica, у проєкті база даних CedarDB зберігає геометрію рівнів і поточний стан гри. Ігрову логіку та формування зображення реалізовано приблизно 1300 рядками SQL-запитів, розподіленими між 89 загальними табличними виразами.

 

Як працює SQLDoom

 

Невеликий клієнт на Python відповідає за введення й виведення даних, синхронізацію часу та показ кадрів на екрані. Основні обчислення водночас виконуються через SQL: таблиці містять дані про ігровий світ, а запити визначають логіку гри та вміст кожного кадру.

Vogel переніс класичні WAD-файли Doom до реляційної бази даних. За його поясненням, структура оригінальної гри вже поділяє рівні на вершини, лінії, сектори та інші об'єкти, тому її можна представити у таблицях. Дерева двійкового розбиття простору також адаптували для SQL за допомогою ключа сортування, який заздалегідь обчислюється для об'єктів на етапі завантаження.

 

Продуктивність і багатокористувацький режим

 

У кожному кадрі оператор ORDER BY дає змогу визначати, які частини стін потрібно відображати, а які можна відсіяти, що поліпшує швидкодію. Складнішим завданням стало малювання підлоги й стелі: для цього автор застосував інший підхід з проходженням упорядкованого списку панелей, оскільки оригінальний механізм Doom не можна було прямо перенести до SQL.

На ноутбуці з процесором Ryzen 7 SQLDoom, за словами Vogel, досягав приблизно 60 кадрів за секунду, хоча в насичених сценах показник іноді знижувався до 35. Автор також зазначив, що база даних може бути корисною для багатокористувацького сервера: вона забезпечує узгоджений знімок ігрового стану та має вбудовані механізми паралельної роботи й контролю доступу.

Код проєкту доступний на GitHub; для локального запуску потрібні CedarDB і WAD-файл Doom. Також розробник пропонує безкоштовну онлайн-демоверсію.