background image

• Ανάθεση διαφορετικών υποσυστημάτων σε διαφορετικά threads (π.χ. physics σε ένα

thread, rendering σε άλλο).

Οι ([7]) επισημαίνουν ότι το threading σε game engines απαιτεί ιδιαίτερη προσοχή για να

αποφευχθούν race conditions, deadlocks, synchronization bottlenecks.

Στις εμπορικές μηχανές:

Η Unreal Engine διαθέτει task graph system για scheduling.

Η Unity εισήγαγε το C# Job System και ECS (Entity Component System) για scalable

parallelism.

Η Godot 4 υποστηρίζει multithreaded physics και rendering pipelines.

2.3

Σύνοψη

Στην παρούσα ενότητα αναλύθηκαν τα βασικά υποσυστήματα που συγκροτούν μια μηχανή

παιχνιδιών. Από το Rendering Engine και το Game Loop, μέχρι τα υποσυστήματα Φυσικής,

Ήχου, Κίνησης και Πολυνημάτωσης, καταδείχθηκε ότι η αρχιτεκτονική μιας μηχανής αποτελεί

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

ομαλή λειτουργία και την εμβύθιση του παίκτη.

Παρόλη την πολυπλοκότητα του αντικειμένου και τις σημαντικές διαφορές που μπορεί να

συναντήσουμε ανάμεσα σε διαφορετικές εμπορικές ή ακαδημαϊκές μηχανές παιχνιδιών, τα στοι-

χεία που παρουσιάστηκαν συνιστούν, κατά τη γνώμη μου και με βάση τη σχετική έρευνα και

βιβλιογραφία, μια κοινή τομή. Αποτελούν δηλαδή τον ελάχιστο πυρήνα υποσυστημάτων που

συναντάμε σχεδόν σε κάθε μηχανή, ανεξάρτητα από την υλοποίηση, την πλατφόρμα στόχο ή το

είδος του παιχνιδιού.

Επιπλέον, η παρουσίασή τους εδώ εστίασε κυρίως στη θεωρητική βάση και στις αρχές που

τα διέπουν, ώστε να προσφέρει ένα στέρεο υπόβαθρο κατανόησης. Στην επόμενη ενότητα, η

ανάλυση θα μεταφερθεί σε πιο πρακτικά ζητήματα και υλοποιήσεις, παρουσιάζοντας τη δική

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

επιπέδου (OpenGL, GLFW, GLM), καθώς και τα προβλήματα και οι λύσεις που αναδύθηκαν

στη διαδικασία.

Με την ολοκλήρωση της παρουσίασης του θεωρητικού υποβάθρου, η εργασία προχωρά

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

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

την ανάπτυξη της μηχανής.

17