Σχήμα 4.1: Γενική Αρχιτεκτονική
Η απόδοση γραφικών οργανώνεται επίσης μέσω επιπέδου αφαίρεσης (Rendering API
abstraction), το οποίο δημιουργεί ένα ενδιάμεσο στρώμα πάνω από τη συγκεκριμένη υλοποί-
ηση σε OpenGL. Η προσέγγιση αυτή επιτρέπει, σε θεωρητικό επίπεδο, την αντικατάσταση του
συστήματος απόδοσης με διαφορετική τεχνολογία (π.χ. Vulkan ή Metal), περιορίζοντας τις
απαιτούμενες αλλαγές σε σαφώς οριοθετημένο τμήμα του κώδικα.
Σε επίπεδο μοντελοποίησης των αντικειμένων της σκηνής, η μηχανή υιοθετεί αρχιτεκτονική
βασισμένη στο πρότυπο Entity–Component–System (ECS). Οι οντότητες (Entities) αναπαρί-
στανται ως ελαφριές δομές αναγνώρισης, τα δεδομένα αποθηκεύονται σε επιμέρους στοιχεία
(Components), ενώ η λογική υλοποιείται από Συστήματα (Systems) που επεξεργάζονται σύ-
νολα οντοτήτων με συγκεκριμένους τύπους components (π.χ. για την απόδοση 2D sprites ή για
το γραφικό περιβάλλον). Η προσέγγιση αυτή προσφέρει αυξημένη ευελιξία στη σύνθεση συμπε-
ριφορών, υψηλό βαθμό επαναχρησιμοποίησης και καλύτερη διαχείριση της πολυπλοκότητας σε
σύγκριση με την κλασική ιεραρχική κληρονομικότητα.
Τέλος, η μηχανή διαχωρίζει σαφώς τον πυρήνα της από το επίπεδο scripting. Μέσω της εν-
σωμάτωσης της γλώσσας Python παρέχεται ένα ανώτερο επίπεδο αφαίρεσης για την υλοποίηση
της λογικής του παιχνιδιού, χωρίς να απαιτείται τροποποίηση του κώδικα C++ της μηχανής. Η
επιλογή αυτή επιτρέπει ταχεία ανάπτυξη και πειραματισμό, διατηρώντας παράλληλα την από-
δοση και τον έλεγχο που προσφέρει η γλώσσα C++ στον πυρήνα του συστήματος.
4.2
Σύστημα δημιουργίας παραθύρου (Window System – GLFW abstraction)
Η δημιουργία παραθύρου αποτελεί το πρώτο λειτουργικό βήμα για την εκτέλεση μιας εφαρ-
μογής γραφικών σε πραγματικό χρόνο, καθώς μέσω αυτού δημιουργείται το απαραίτητο γρα-
φικό περιβάλλον και το OpenGL context. Χωρίς την ύπαρξη ενεργού context, δεν είναι δυνατή
η εκτέλεση εντολών απόδοσης στη GPU.
24