Αρχιτεκτονική προσέγγιση: Από το C στην SQL

Η μεταφορά του Doom σε SQL δεν αποτελεί απλώς ένα πείραμα, αλλά μια άσκηση στην οριακή χρήση των relational databases. Η αρχιτεκτονική διαχωρίζει τη λογική του παιχνιδιού (game logic) από τον renderer. Ένα script σε Python αναλαμβάνει αποκλειστικά τον χρονισμό (timing) και την είσοδο, ενώ η κατάσταση του κόσμου (game state) και η επεξεργασία των frames παραμένουν εντός της βάσης δεδομένων.

Η πρόκληση του rendering μέσω CTEs

Το πιο απαιτητικό κομμάτι ήταν η αναπαραγωγή του rendering engine. Το Doom χρησιμοποιεί BSP trees για τον καθορισμό της σειράς σχεδίασης (front-to-back). Αντί για αναδρομικές κλήσεις σε C, η υλοποίηση χρησιμοποιεί recursive CTEs για την περιήγηση στο δέντρο και SUM() με ORDER BY για τον υπολογισμό της σειράς εμφάνισης των subsectors. Η χρήση window functions για τον υπολογισμό των visplanes (δάπεδα και οροφές) αντικατέστησε επιτυχώς τους επιτακτικούς βρόχους (loops) που χρησιμοποιούσε η αρχική μηχανή.

ECS και απόδοση σε κλίμακα

Η υλοποίηση του AI των τεράτων ανέδειξε τη δύναμη του Entity Component System (ECS) σε περιβάλλον SQL. Αντί για επαναληπτική επεξεργασία κάθε οντότητας, η βάση δεδομένων εκτελεί μαζικά updates μέσω joins, επιτρέποντας την αυτόματη παράλληλη εκτέλεση. Με χρόνο εκτέλεσης ανά tic περίπου 2-10ms, το σύστημα διατηρεί σημαντικό περιθώριο (headroom) εντός του budget των 28.6ms (35 Hz).

Συμπεράσματα για τη διαλειτουργικότητα

Το project αποδεικνύει ότι η SQL μπορεί να διαχειριστεί εξαιρετικά περίπλοκες καταστάσεις, αρκεί να αλλάξει ο τρόπος σκέψης από την επανάληψη (iteration) στη συνολική επεξεργασία συνόλων (set-based processing). Παρά την πολυπλοκότητα των 89 CTEs, ο κώδικας παραμένει πιο συνοπτικός από τον αντίστοιχο σε C, αποδεικνύοντας την εκφραστικότητα της SQL σε data-intensive εφαρμογές.