background image

ως υποκλάση της συγκεκριμένης κλάσης.

Ωστόσο, κατά την εξέλιξη της ανάπτυξης διαπιστώθηκε ότι η συγκεκριμένη αρχιτεκτονική

παρουσίαζε περιορισμένη επεκτασιμότητα και θα μπορούσε να οδηγήσει σε προβλήματα συ-

ντήρησης και διαχείρισης καθώς το έργο μεγάλωνε. Για τον λόγο αυτό, επιλέχθηκε η υιοθέτηση

της αρχιτεκτονικής Entity Component System (ECS), όπως αυτή παρουσιάστηκε στο Κεφάλαιο

4.

Από τη σύγκριση των δύο προσεγγίσεων προκύπτει ότι η αρχική λύση ήταν απλούστερη ως

προς την υλοποίηση και θα μπορούσε να αποτελέσει κατάλληλη επιλογή για την ανάπτυξη ενός

συγκεκριμένου παιχνιδιού με σαφώς καθορισμένες απαιτήσεις. Αντίθετα, στην περίπτωση μιας

γενικής μηχανής παιχνιδιών, η οποία προορίζεται να υποστηρίξει διαφορετικά είδη έργων και

μελλοντικές επεκτάσεις, η χρήση του ECS αποτελεί σαφώς καταλληλότερη επιλογή.

Ένα ακόμη σημαντικό ζήτημα που προέκυψε κατά την ανάπτυξη της μηχανής αφορούσε

τη διαδικασία αποστολής των δεδομένων στην κάρτα γραφικών. Στην αρχική υλοποίηση, κάθε

αντικείμενο της σκηνής αποστελλόταν ξεχωριστά προς επεξεργασία από τη GPU. Η προσέγ-

γιση αυτή ήταν επαρκής για μικρής κλίμακας παιχνίδια με περιορισμένο αριθμό αντικειμένων.

Ωστόσο, καθώς ο αριθμός των αντικειμένων αυξανόταν, παρατηρούνταν αισθητή υποβάθμιση

της απόδοσης, η οποία σε ορισμένες περιπτώσεις οδηγούσε ακόμη και σε προσωρινές παύσεις

ή καθυστερήσεις κατά την εκτέλεση.

Για την αντιμετώπιση του προβλήματος υιοθετήθηκε μια δεύτερη προσέγγιση, κατά την

οποία τα δεδομένα οργανώνονται και αποστέλλονται στην κάρτα γραφικών σε παρτίδες

(batches). Η τεχνική αυτή μειώνει σημαντικά τον αριθμό των απαιτούμενων draw calls

και βελτιώνει την απόδοση του συστήματος, επιτρέποντας την αποτελεσματική διαχείριση

μεγαλύτερου αριθμού αντικειμένων και την υποστήριξη πιο απαιτητικών παιχνιδιών.

Με βάση τα παραπάνω παραδείγματα, μπορεί να εξαχθεί ένα γενικό συμπέρασμα σχετικά

με τη φύση και τον ρόλο των μηχανών παιχνιδιών. Η πολυπλοκότητα της ανάπτυξης μιας μηχα-

νής παιχνιδιών αντανακλά σε μεγάλο βαθμό την πολυπλοκότητα της ίδιας της ανάπτυξης ενός

παιχνιδιού, καθώς πολλές από τις σχεδιαστικές και τεχνικές αποφάσεις που λαμβάνονται κατά

την κατασκευή μιας μηχανής θα έπρεπε, ελλείψει αυτής, να ληφθούν από τον ίδιο τον προγραμ-

ματιστή του παιχνιδιού.

Η σημασία του διαχωρισμού μεταξύ της μηχανής παιχνιδιών και του τελικού παιχνιδιού εί-

ναι ιδιαίτερα σημαντική, καθώς συμβάλλει στη βελτίωση της διαδικασίας ανάπτυξης με δύο

βασικούς τρόπους. Αρχικά, μειώνει σημαντικά την πολυπλοκότητα που καλείται να διαχειρι-

στεί ο προγραμματιστής του παιχνιδιού, απαλλάσσοντάς τον από ένα μεγάλο πλήθος χαμηλού

επιπέδου τεχνικών και αρχιτεκτονικών αποφάσεων. Παράλληλα, επιτρέπει την απομόνωση και

την ανεξαρτητοποίηση των επιμέρους συστημάτων και υποσυστημάτων της μηχανής.

Ως αποτέλεσμα, ο σχεδιαστής ή προγραμματιστής της μηχανής μπορεί να πραγματοποιεί

βελτιώσεις, τροποποιήσεις ή επεκτάσεις στα εσωτερικά συστήματα της μηχανής, επηρεάζοντας

θετικά το τελικό αποτέλεσμα χωρίς να απαιτούνται ουσιαστικές αλλαγές στον τρόπο ανάπτυξης

ή στη λογική του ίδιου του παιχνιδιού. Η ιδιότητα αυτή αποτελεί ένα από τα σημαντικότερα

72