background image

Σχήμα 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