ΚΕΦΑΛΑΙΟ 3
Προδιαγραφές και στόχοι
Σκοπός της παρούσας διπλωματικής εργασίας είναι ο σχεδιασμός και η υλοποίηση μιας
ελαφριάς μηχανής παιχνιδιών (game engine), η οποία θα παρέχει τα βασικά εργαλεία για την
ανάπτυξη κυρίως δισδιάστατων παιχνιδιών, καθώς και απλών τρισδιάστατων εφαρμογών. Η
μηχανή στοχεύει στη modular αρχιτεκτονική, στην επεκτασιμότητα και στη δυνατότητα χρή-
σης της τόσο από C++ όσο και από Python. Επιπλέον, τόσο για την αξιολόγηση της μηχανής
όσο και για την ανάδειξη των διαφορετικών χαρακτηριστικών και δυνατοτήτων της, δημιουργή-
θηκαν τρία παιχνίδια, εκ των οποίων το ένα αναπτύχθηκε εξ ολοκλήρου με τη χρήση τεχνητής
νοημοσύνης.
Στη συνέχεια παρουσιάζονται οι τεχνολογικές επιλογές που αποτέλεσαν τη βάση της μη-
χανής. Ακολούθως, αναλύονται οι σχεδιαστικές και αλγοριθμικές επιλογές που υιοθετήθηκαν.
Έπειτα, εξετάζεται ο εκπαιδευτικός χαρακτήρας της μηχανής, ενώ τέλος παρουσιάζονται τα
εργαλεία τεχνητής νοημοσύνης που χρησιμοποιήθηκαν κατά την ανάπτυξή της.
3.1
Επιλογές στη βάση της μηχανής
Η μηχανή αναπτύσσεται χρησιμοποιώντας τη γλώσσα προγραμματισμού C++, σε συνδυα-
σμό με τη βιβλιοθήκη OpenGL για την απόδοση γραφικών και τη GLFW για τη διαχείριση
παραθύρων και εισόδου χρήστη. Για τη διαδικασία μεταγλώττισης και διαχείρισης του έργου
επιλέγεται το CMake, με στόχο τη φορητότητα και την ευκολία συντήρησης του κώδικα.
Οι επιλογές αυτές πραγματοποιήθηκαν με γνώμονα, αφενός, το γεγονός ότι οι περισσότερες
σύγχρονες μηχανές παιχνιδιών είναι υλοποιημένες σε C++ και πλαισιώνονται από εργαλεία που
αναπτύσσονται γύρω από τη συγκεκριμένη γλώσσα ή από παρεμφερείς τεχνολογίες. Αφετέρου,
η C++ αποτελεί καθιερωμένη επιλογή για την ανάπτυξη εφαρμογών υψηλών απαιτήσεων ως
προς την απόδοση και την ταχύτητα εκτέλεσης.
Η επιλογή της OpenGL, έναντι εναλλακτικών τεχνολογιών όπως η Vulkan, πραγματοποιή-
θηκε κυρίως λόγω της συγκριτικής απλότητας και της ευκολίας χρήσης που προσφέρει, ιδίως
στο πλαίσιο μιας εκπαιδευτικής και ερευνητικής υλοποίησης.
Ένας βασικός στόχος της μηχανής είναι η υποστήριξη πολλαπλών πλατφορμών, και
συγκεκριμένα των λειτουργικών συστημάτων Linux και Windows, χωρίς αλλαγές στον πηγαίο
κώδικα των εφαρμογών που αναπτύσσονται πάνω σε αυτή.
18