A megszokott játékmotorok helyett egyenesen egy relációs adatbázisban éledt újjá az ikonikus Doom. A SQLDoom elnevezésű projekt keretében Lukas Vogel bizonyította, hogy a legendás lövölde adatbázis-lekérdezésekből is képes kirajzolni a pokol képsorait.
A fejlesztő korábban már megpróbálkozott a szoftver átültetésével, ám a DoomQL néven futó kísérlet még csupán szürkeárnyalatos, ASCII-karakterekből álló falakat produkált. Ez a korai verzió sokkal inkább a Wolfenstein 3D szűk folyosóira hasonlított, mintsem a valódi háromdimenziós élményre. A legújabb változat viszont szintetikus trükkök nélkül, színes és textúrázott képi világot jelenít meg.
Lekérdezésekből építkező játékmotor
A rendszer működésének alapját a CedarDB adatbázis-kezelő adja, amelyben táblák tárolják a pályák geometriáját és a játék aktuális állapotát. A megjelenítésért és a játékszabályok betartásáért nagyjából 1300 sornyi SQL-kód felel, amelyet 89 összetett táblakifejezésre bontott szét az alkotó. A külső Python-kliens feladata kifejezetten a billentyűzet-bevitel kezelésére, az időzítésre és a kapott pixeladatok képernyőre küldésére korlátozódik.
A megvalósítás során a legnagyobb kihívást a látószögön kívüli elemek kiszűrése jelölte. A Doom eredeti adatai eleve relációs struktúrába illeszthető elemeket tartalmaznak, a falak és a szektorok mélységi sorrendjét pedig előre kiszámított rendezési kulcsok segítségével határozza meg a rendszer. A vízszintes felületek, mint a padló és a plafon kirajzolása követeleményben összetettebb eljárásokat igényelt, mivel az adatbázisok deklaratív nyelve nehezen kezeli a folyamatos oszloponkénti állapotváltozásokat.
Gyakorlati haszon a szórakoztató kísérlet mögött
Az elért teljesítmény meglepően stabil: a játékmenet a klasszikus 35 képkockás másodpercenkénti tempóban fut, míg a megjelenítés az erősebb jelenetekben is fenntartja a játszhatóságot. Noha maga a fejlesztő is elismerte, hogy adatbázisban játékmotort futtatni technikai szempontból ésszerűtlen döntés, a koncepciónak van egy nem várt előnye is.
Mivel a relációs adatbázisok természetüknél fogva garantálják a tranzakciók konzisztenciáját és a párhuzamos adathozzáférést, a többjátékos mód kezelése jelentősen leegyszerűsödik. Az adatbázis-alapú architektúra kiküszöböli a hálózati eltolódásból adódó szinkronizációs hibákat és az ellentmondó fizikai döntéseket, így a szerver minden pillanatban egyetlen, hiteles állapotot tart nyilván a játékosok helyzetéről.









