Π Τ Υ Χ Ι Α Κ Η Ε Ρ ΓΑ Σ Ι Α

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Π Τ Υ Χ Ι Α Κ Η Ε Ρ ΓΑ Σ Ι Α"

Transcript

1 Α Ρ Ι Σ Τ Ο Τ Ε Λ Ε Ι Ο Π Α Ν Ε Π Ι Σ Τ Η Μ Ι Ο Θ Ε Σ Σ Α Λ Ο Ν Ι Κ Η Σ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Π Τ Υ Χ Ι Α Κ Η Ε Ρ ΓΑ Σ Ι Α «ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ» (3D Game Development using AI planning) «ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ» ΑΕΜ: 2228 Κατεύθυνση: Πληροφοριακά Συστήματα ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΔΗΜΗΤΡΙΟΣ ΒΡΑΚΑΣ, ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ ΘΕΣΣΑΛΟΝΙΚΗ 2015

2

3 ΠΕΡΙΛΗΨΗ Π Ε Ρ Ι Λ Η Ψ Η Αντικείμενο της παρούσας εργασίας είναι η ανάπτυξη ενός τρισδιάστατου παιχνιδιού με χρήση σχεδιασμού ενεργειών. Ο στόχος είναι να χρησιμοποιηθούν ανεπτυγμένες τεχνικές τεχνητής νοημοσύνης σε περιβάλλον παιχνιδιού και να αναδειχθεί πώς αυτές μπορούν να είναι το κύριο χαρακτηριστικό του. Το παιχνίδι που αναπτύχθηκε αποτελείται από τρισδιάστατα γραφικά και ανήκει στη κατηγορία γρίφων. Ο χρήστης θα έχει ως στόχο να σχεδιάσει ένα λαβύρινθο γεμάτο εμπόδια, ο οποίος μεταξύ άλλων θα περιέχει ένα ρομπότ πράκτορα και τη σημαία-στόχο που θα πρέπει να φτάσει το ρομπότ. Το κύριο πρόβλημα που παρουσιάζεται είναι η ανάπτυξη μιας συμπεριφοράς αυτού του πράκτορα, έτσι ώστε να επιλύει το πρόβλημα με βέλτιστη λύση εντός αποδεκτού χρονικού ορίου. Η συμπεριφορά αυτή ενσωματώνεται στη λειτουργία του παιχνιδιού με τη μορφή ενός Α* ευριστικού αλγορίθμου αναζήτησης. Τέλος, η διαδικασία ανάπτυξης της εφαρμογής ακολουθεί ένα πρότυπο ευκίνητης ανάπτυξης εφαρμογών, έτσι ώστε η σχεδίαση του παιχνιδιού να το καθιστά πλήρες και λειτουργικό. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. III

4

5 ABSTRACT A B S T R A C T This project features the development of a 3D game using artificial intelligence planning. The goal is to use advanced artificial intelligence techniques in a game-like environment and highlight how these techniques could be the main feature of the game. The game that was developed uses 3D graphics and is categorized as a puzzle game. The player s main objective will be to design a maze full of obstacles which, amongst others, contains a goal-flag as well as a robot agent that aims to reach that flag. The main problem of this project is to develop a certain behavior for this agent, so that it produces an optimal solution within an acceptable time limit. This behavior is integrated in the game with the form of a heuristic A* planning algorithm. Finally, the development process of the game follows an agile software development model, so that the design of the game will render it complete and fully functional. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. V

6

7 ΕΥΧΑΡΙΣΤΙΕΣ Ε Υ Χ Α Ρ Ι Σ Τ Ι Ε Σ Πριν την παρουσίαση των αποτελεσμάτων της παρούσας εργασίας, αισθάνομαι την υποχρέωση να ευχαριστήσω ορισμένους από τους ανθρώπους που γνώρισα, συνεργάστηκα μαζί τους και έπαιξαν πολύ σημαντικό ρόλο στην πραγματοποίησή της. Θα ήθελα αρχικά να ευχαριστήσω θερμά τον κ. Δημήτριο Βράκα, Επίκουρο Καθηγητή του τμήματος Πληροφορικής για την άριστη συνεργασία που είχαμε στα χρόνια των σπουδών μου, για την θετική στάση που είχε στη πρόταση της εργασίας, και κυρίως για την βοήθεια του στην εκπόνησή της. Ευχαριστώ τον κ. Ιωάννη Βλαχάβα, Καθηγητή του τμήματος Πληροφορικής για τις συμβουλές του και τη στήριξη που έδειξε καθ όλη τη διάρκεια των σπουδών μου. Επίσης, ευχαριστώ κάθε μέλος της ομάδας ACM Student Chapter AUTH για τη τιμή που μου έκαναν να γίνω αντι-πρόεδρος της ομάδας και μου έδωσαν κίνητρο μέσω τις δράσεις τους να μείνω ενεργός. Για την ηχητική επιμέλεια του παιχνιδιού ευχαριστώ τον συμφοιτητή και καλό μου φίλο Βασίλη Κελεμπέκη. Τέλος, ευχαριστώ από καρδιάς τους γονείς μου για τη συνεχή τους υποστήριξη και το κίνητρο που μου δίνουν για να ακολουθώ τα όνειρά μου. 3/7/2015 Μιλτιάδης Νεδέλκος ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. VII

8

9 ΠΕΡΙΕΧΟΜΕΝΑ Π Ε Ρ Ι Ε Χ Ο Μ Ε Ν Α ΚΕΦΑΛΑΙΟ 1: ΕΙΣΑΓΩΓΗ ΚΕΦΑΛΑΙΟ 2: ΣΧΕΔΙΑΣΜΟΣ ΕΝΕΡΓΕΙΩΝ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΜΟΝΤΕΛΟ ΠΕΡΙΓΡΑΦΗΣ Γλώσσα PDDL ΜΕΘΟΔΟΛΟΓΙΕΣ ΑΝΑΖΗΤΗΣΗΣ ΤΥΦΛΟΙ ΑΛΓΟΡΙΘΜΟΙ ΑΝΑΖΗΤΗΣΗΣ ΕΥΡΙΣΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΑΝΑΖΗΤΗΣΗΣ ΚΕΦΑΛΑΙΟ 3: ΑΝΑΠΤΥΞΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΠΑΙΧΝΙΔΙΩΝ ΚΑΤΗΓΟΡΙΕΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΠΑΙΧΝΙΔΙΩΝ ΚΑΤΗΓΟΡΙΟΠΟΙΗΣΗ ΜΕ ΒΑΣΗ ΤΟ ΕΙΔΟΣ ΓΡΑΦΙΚΩΝ ΚΑΤΗΓΟΡΙΟΠΟΙΗΣΗ ΜΕ ΒΑΣΗ ΤΟ GAMEPLAY ΚΑΤΗΓΟΡΙΟΠΟΙΗΣΗ ΜΕ ΒΑΣΗ ΤΟ ΠΕΡΙΕΧΟΜΕΝΟ ΑΝΑΠΤΥΞΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΠΑΙΧΝΙΔΙΩΝ ΣΤΑΔΙΑ ΑΝΑΠΤΥΞΗΣ ΟΜΑΔΑ ΑΝΑΠΤΥΞΗΣ ΣΚΟΠΟΣ ΤΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΠΑΙΧΝΙΔΙΩΝ ΚΕΦΑΛΑΙΟ 4: ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΟΙ ΚΑΝΟΝΕΣ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΚΥΡΙΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΤΟΥ GAMEPLAY ΠΡΟΚΛΗΣΕΙΣ ΚΕΦΑΛΑΙΟ 5: ΥΛΟΠΟΙΗΣΗ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΣΧΕΔΙΑΣΗ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΈΛΕΓΧΟΣ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ ΣΧΕΔΙΑΣΗ ΟΝΤΟΤΗΤΩΝ ΣΤΟ VLEPPO ΜΕΓΑΛΥΤΕΡΑ ΠΡΟΒΛΗΜΑΤΑ ΔΗΜΙΟΥΡΓΙΑ ΚΑΙ ΑΠΟΚΤΗΣΗ ΤΩΝ ΑΠΑΡΑΙΤΗΤΩΝ ΣΤΟΙΧΕΙΩΝ ΥΛΟΠΟΙΗΣΗ ΛΕΙΤΟΥΡΓΙΩΝ ΣΧΕΔΙΑΣΗ ΤΗΣ ΒΑΣΗΣ ΤΩΝ SCRIPT ΚΙΝΗΣΗ ΤΗΣ ΚΑΜΕΡΑΣ ΤΟΠΟΘΕΤΗΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΑΛΓΟΡΙΘΜΟΣ ΑΝΑΖΗΤΗΣΗΣ ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. IX

10 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ ΓΡΑΦΙΚΗ ΔΙΕΠΑΦΗ ΧΡΗΣΤΗ ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 6: ΤΟ UNITY ΤΟ ΣΤΗΣΙΜΟ ΤΗΣ ΣΚΗΝΗΣ ΕΠΙΠΛΕΟΝ ΛΕΙΤΟΥΡΓΙΕΣ ΔΙΑΘΕΣΙΜΕΣ ΥΠΗΡΕΣΙΕΣ ΠΑΡΑΓΩΓΗ ΕΚΤΕΛΕΣΙΜΟΥ ΣΥΜΠΕΡΑΣΜΑΤΑ ΠΑΡΑΡΤΗΜΑ I: ΑΝΑΦΟΡΕΣ ΠΑΡΑΡΤΗΜΑ II: ΑΚΡΩΝΥΜΑ ΠΑΡΑΡΤΗΜΑ III: ΓΛΩΣΣΑΡΙΟ Χ ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

11 Κ Ε Φ Α Λ Α Ι Ο 1 : Ε Ι Σ Α Γ Ω Γ Η

12

13 ΚΕΦΑΛΑΙΟ 1: ΕΙΣΑΓΩΓΗ ΕΙΣΑΓΩΓΗ Αντικείμενο της παρούσας εργασίας είναι η ανάπτυξη ενός τρισδιάστατου παιχνιδιού με χρήση σχεδιασμού ενεργειών. Η εργασία δομείται σε κεφάλαια ως εξής: Στο Κεφάλαιο 2 περιγράφεται ο τρόπος επίλυσης ενός προβλήματος με χρήση σχεδιασμού ενεργειών. Συγκεκριμένα παρουσιάζεται η μοντελοποίηση του πραγματικού κόσμου με χρήση πρότυπων γλωσσών όπως η PDDL και έπειτα η επίλυση προβλημάτων με μεθοδολογίες αναζήτησης στο χώρο καταστάσεων. Στο Κεφάλαιο 3 περιγράφεται αναλυτικά η διαδικασία ανάπτυξης ενός ηλεκτρονικού παιχνιδιού, όπως και οι κατηγορίες αυτών, καθώς είναι καθοριστικός παράγοντας στη σχεδίασή τους. Στο πρώτο υποκεφάλαιο χωρίζονται σε κατηγορίες τα παιχνίδια με βάση το είδος γραφικών, το gameplay και το περιεχόμενο. Στο δεύτερο υποκεφάλαιο παρουσιάζεται το μοντέλο ανάπτυξης επαναληπτικών πρωτοτύπων προσαρμοσμένο ειδικά σε ηλεκτρονικά παιχνίδια, όπως και τι ρόλους περιέχει μια ομάδα ανάπτυξης ενός παιχνιδιού και τι αρμοδιότητες έχει το κάθε μέλος. Στο τρίτο υποκεφάλαιο δίνεται συνοπτικά ο ρόλος τον παιχνιδιών. Στο Κεφάλαιο 4 παρουσιάζονται τα χαρακτηριστικά και οι κανόνες του παιχνιδιού που υλοποιήθηκε για αυτή την εργασία, όπως και οι κύριες προκλήσεις στην ανάπτυξη του λογισμικού. Στο Κεφάλαιο 5 αναγράφεται αναλυτικά η υλοποίηση του παιχνιδιού που αναπτύχθηκε για την παρούσα εργασία. Η παρουσίαση της υλοποίησης γίνεται με τη χρονολογική σειρά με την οποία αναπτύχθηκε το παιχνίδι, όπως αυτή ορίζεται από το πρότυπο επαναληπτικών πρωτοτύπων που παρουσιάζεται στο Κεφάλαιο 3. Συγκεκριμένα, στο πρώτο υποκεφάλαιο παρουσιάζεται το πρώτο στάδιο, η σχεδίαση του παιχνιδιού. Στο δεύτερο υποκεφάλαιο παρουσιάζεται ο έλεγχος πολυπλοκότητας του προβλήματος, απαραίτητος για να πιστοποιηθεί πως η σχεδίαση είναι σωστή και οδηγεί σε επιλύσιμο πρόβλημα για τον πράκτορα που θα χρησιμοποιηθεί. Στο τρίτο υποκεφάλαιο συνοπτικά αναφέρονται τα απαραίτητα στοιχεία που θα συντελέσουν το παιχνίδι και πρέπει να αποκτηθούν. Στο τελευταίο υποκεφάλαιο παρουσιάζεται ο τρόπος υλοποίησης των κυριότερων λειτουργιών του παιχνιδιού. Στο Κεφάλαιο 6 παρουσιάζονται τα εργαλεία που χρησιμοποιήθηκαν για την ανάπτυξη του παιχνιδιού και κύριες λειτουργίες τους. Στο Παράρτημα I παρουσιάζονται αλφαβητικά η βιβλιογραφία και οι δικτυακοί τόποι που αναφέρονται στην εργασία. Στο Παράρτημα IΙ παρουσιάζονται τα ακρωνύμια τα οποία χρησιμοποιούνται σε αυτή την εργασία για την διευκόλυνση του αναγνώστη. Στο Παράρτημα IIΙ παρουσιάζεται το γλωσσάριο ξενικών όρων οι οποίοι χρησιμοποιούνται σε αυτή την εργασία για την διευκόλυνση του αναγνώστη. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 13

14

15 Κ Ε Φ Α Λ Α Ι Ο 2 : Σ Χ Ε Δ Ι Α Σ Μ Ο Σ Ε Ν Ε Ρ Γ Ε Ι Ω Ν

16

17 ΣΧΕΔΙΑΣΜΟΣ ΕΝΕΡΓΕΙΩΝ Οι τεχνικές επίλυσης προβλημάτων σχεδιασμού αποσκοπούν στην εύρεση της λύσης ενός προβλήματος αποτελούμενη από μια σειρά ενεργειών τέτοια έτσι ώστε να φέρνει το σύστημα σε μια κατάσταση που ικανοποιεί τους προκαθορισμένους στόχους (Βράκας, 2004). Αυτές οι ενέργειες έπειτα εκτελούνται από έναν ή περισσότερους πράκτορες (agents), είτε φυσικούς (robots) είτε ηλεκτρονικούς (software). Ο κάθε πράκτορας λαμβάνει ένα συγκεκριμένο σετ ενεργειών το οποίο πρέπει να εκτελέσει αυστηρά με συγκεκριμένη σειρά. Δεν επιτρέπεται η εκτέλεση μιας εντολής εάν δεν έχει εκτελεστεί πλήρως η προηγούμενη. Συνήθως, δεν υπάρχει ανάδραση κατά τη διάρκεια των εντολών. Δηλαδή, ο κάθε πράκτορας εκτελεί «τυφλά» τις εντολές που λαμβάνει, δίχως να τον ενδιαφέρει το αποτέλεσμά τους. Για παράδειγμα, εάν ένα ρομπότ λάβει την εντολή να πάει 2 μέτρα μπροστά και βρεθεί ξαφνικά ένα εμπόδιο μπροστά του στο πρώτο μέτρο, θα συνεχίσει να περπατάει μπροστά. Υπάρχουν βεβαίως συστήματα που επανα-υπολογίζουν ολόκληρο ή ένα μέρος του πλάνου σε κάθε βήμα και έχουν τη δυνατότητα να διακόψουν την εκτέλεση του πλάνου είτε να επέμβουν στην σειρά εκτέλεσης. Μπορούν να υπάρξουν περισσότεροι από έναν πράκτορες οι οποίοι λειτουργούν είτε συνεργατικά είτε όχι. Στη περίπτωση που λειτουργούν συνεργατικά: o είτε μοιράζεται ο φόρτος εργασίας ανάμεσα στους διαθέσιμους πράκτορες (για παράδειγμα, αν πρέπει να μεταφερθούν Χ κουτιά από ένα δωμάτιο σε ένα άλλο, θα μοιραστούν τα κουτιά στους διαθέσιμους πράκτορες έτσι ώστε να πρέπει να μεταφέρει ο καθένας τον ίδιο αριθμό Χ/Π από κουτιά, όπου Π ο αριθμός πρακτόρων), o είτε αναλαμβάνει ο κάθε πράκτορας ένα μέρος του προβλήματος, παρόμοια με την μέθοδο διαίρει και βασίλευε, (για παράδειγμα, εάν πρέπει να μεταφερθούν Χ κουτιά και να αλλάξει η ετικέτα τους και υπάρχουν 2 διαθέσιμοι πράκτορες, ο ένας πράκτορας θα αναλάβει να μεταφέρει τα κουτιά και ο άλλος να αλλάξει τις ετικέτες). Με αυτό το τρόπο ο κάθε πράκτορας μπορεί να βελτιστοποιήσει τη τεχνική του αλλά μπορεί να χρειαστεί ένας από τους δύο να πρέπει να περιμένει), o είτε εφαρμόζεται ένας συνδυασμός των δύο τεχνικών, έτσι ώστε να είναι βέλτιστος ο χρόνος εκτέλεσης του πλάνου. Στη περίπτωση που δεν λειτουργούν συνεργατικά: o είτε αγνοείται η ύπαρξη του αντίπαλου πράκτορα και μεγιστοποιείται η έξοδος του εκάστοτε πράκτορα ατομικά, o είτε προβλέπεται η κίνηση του αντίπαλου πράκτορα (με αλγορίθμους όπως ο min-max).

18 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ 2.1 ΜΟΝΤΕΛΟΠΟΙΗΣΗ Το πρώτο και σημαντικότερο στάδιο στη διαδικασία σχεδιασμού ενεργειών είναι η μοντελοποίηση του προβλήματος και η αναπαράσταση της γνώσης. Ο πράκτορας για κάθε χρονική στιγμή, ή αλλιώς για κάθε κατάσταση, αναπαριστά ό,τι πληροφορία έχει διαθέσιμη σε αυτόν με μια συγκεκριμένη δομή. Συνήθως η πληροφορία αυτή αποτελεί το κόσμο (world) του προβλήματος. Ο κόσμος μπορεί να είναι είτε στατικός είτε δυναμικός, με βάση το εάν υπάρχουν εξωτερικοί παράγοντες ή όχι. Ο τρόπος με τον οποίο αποθηκεύεται ο κόσμος μπορεί να παίξει πολύ σημαντικό ρόλο, ειδικά σε προβλήματα που ο χώρος δεν είναι διακριτός ή είναι μεταφορά από πραγματικό σε μη-πραγματικό κόσμο. Για παράδειγμα, εάν ο πράκτορας είναι ένα ρομπότ που κινείται σε ένα πλέγμα μεγέθους 10 επί 10, τότε ο χώρος διακριτοποιείται εύκολα σε κουτιά με μήκος ένα, όπως φαίνεται στην εικόνα 1. Εικόνα 1. Πλέγμα 10 x 10 Αντιθέτως, στη περίπτωση που ο χώρος είναι συνεχής τότε πρέπει ο πράκτορας να επιλέξει πως θα διακριτοποιήσει το πρόβλημα. Αυτό όμως δεν είναι απλό σε κάθε περίπτωση. Όπως φαίνεται στο παράδειγμα παρακάτω, η ικανότητα του να μπορέσει το ρομπότ να περάσει το εμπόδιο ή όχι εξαρτάται άμεσα από την αναπαράσταση του προβλήματος. Στη περίπτωση που κάθε κουτί στο πλέγμα έχει μήκος 1 (Εικόνα 2) το ρομπότ θεωρεί πως υπάρχει εμπόδιο και δεν μπορεί να περάσει, ενώ αντιθέτως στη περίπτωση που κάθε κουτί στο πλέγμα έχει μήκος 0.5 (Εικόνα 3) τότε θεωρεί πως δεν υπάρχει εμπόδιο. Στη πραγματικότητα το πρόβλημα δεν έχει αλλάξει, παρά μόνο η αναπαράσταση της γνώσης. Διαισθητικά φαίνεται πως η μικρότερη πιθανή διακριτοποίηση θα δώσει το καλύτερο και πιο ακριβές αποτέλεσμα, όμως αυτό δεν είναι πάντα η καλύτερη προσέγγιση, καθώς θα κοστίσει πολύ περισσότερο σε χρόνο αλλά και σε μνήμη. Ο υποδιπλασιασμός του μεγέθους της διακριτοποίησης θα τετραπλασιάσει το κόστος σε χώρο, καθώς το κόστος αποθήκευσης είναι συνήθως O(n 2 ). 18 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

19 Πράκτορας: ρομπότ Μέρος: Δωμάτιο 10μ επί 10μ. Μέγεθος του ρομπότ: 0.5μ Διαθέσιμες κινήσεις: Πάνω, κάτω, αριστερά, δεξιά Ένα κουτάκι θεωρείται αδιαπέραστο όταν περισσότερο από 30% είναι καλυμμένο από εμπόδια. Περίπτωση 1: Διακριτοποίηση του πλέγματος με μέγεθος 1μ. Περίπτωση 2: Διακριτοποίηση του πλέγματος με μέγεθος 0.5μ Εικόνα 2. Διακριτοποίηση στα 1μ Θεωρεί πως υπάρχει εμπόδιο, άρα δε μπορεί να περάσει. Εικόνα 3. Διακριτοποίηση στα 0.5μ Θεωρεί πως δεν υπάρχει εμπόδιο, άρα μπορεί να περάσει. Το πρόβλημα γίνεται ακόμη πιο περίπλοκο όταν το ρομπότ δεν έχει όλη τη γνώση του περιβάλλοντος έτοιμη, αλλά αντιθέτως πρέπει να πλοηγηθεί για να ανακαλύψει το χώρο γύρω του. Η μοντελοποίηση του προβλήματος, πέρα από το χώρο, περιλαμβάνει και τα αντικείμενα τα οποία μπορεί να συναντήσει ο πράκτορας, είτε αυτά είναι παρόντα στο χώρο αρχικά είτε όχι, όπως επίσης και διάφορες ιδιότητες για αυτά τα αντικείμενα. Για παράδειγμα, έστω πως ο πράκτορας είναι ένας ρομποτικός βραχίονας με σκοπό τη μεταφορά αντικειμένων από έναν ιμάντα μεταφοράς σε κουτιά μεταφοράς όπως ο βραχίονας που φαίνεται στην εικόνα 4. Στη μοντελοποίηση του προβλήματος θα πρέπει να συμπεριληφθούν διάφορες πληροφορίες για τα αντικείμενα που θα πρέπει να διαχειρίζεται, όπως οι διαστάσεις, τα βάρη και το σχήμα τους. Επίσης, πρέπει να διατηρεί στη μνήμη τη κατάσταση του κουτιού στο οποίο τοποθετεί τα αντικείμενα, για να γνωρίζει εάν έχει γεμίσει ή όχι και που ακριβώς πρέπει να τοποθετήσει το επόμενο αντικείμενο. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 19

20 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Για το συγκεκριμένο πρόβλημα θα μπορούσε να υλοποιηθεί ένα σύστημα αυτοματισμού, το οποίο θα εκτελούσε επαναληπτικά ένα συγκεκριμένο σετ ενεργειών, δίχως να πρέπει να φτάσει σε κάποια συγκεκριμένη κατάσταση-στόχο. Τα συστήματα αυτοματισμού δεν ανήκουν στην κατηγορία των πρακτόρων καθώς δεν είναι ευφυή συστήματα. Με τη χρήση του πράκτορα όμως, είναι δυνατή η αναπροσαρμογή των κινήσεων σε περίπτωση που η συνθήκες του περιβάλλοντος δεν είναι οι συνηθισμένες (δηλαδή έρχεται μισο-γεμάτο κουτί αντί για άδειο προς συμπλήρωση, ή ένα κουτί διαφορετικού μεγέθους, ή καινούρια αντικείμενα). Σε αυτή τη περίπτωση, ένα σύστημα αυτοματισμού δε θα είχε τη δυνατότητα να παράγει το σωστό αποτέλεσμα. Αντιθέτως, ένας πράκτορας που γνωρίζει τη κατάσταση του περιβάλλοντος και χρησιμοποιεί αισθητήρες, είναι καταλληλότερος. Στο παράδειγμα που ακολουθεί παρακάτω υλοποιείται η λύση σε γλώσσα PDDL. Σε αυτή τη λύση το περιβάλλον είναι σταθερό για χάρη ευκολίας και παρουσίασης. Σε πραγματικές συνθήκες όμως, θα χρησιμοποιούνταν μια πιο περίπλοκη αλλά πιο ευέλικτη υλοποίηση του προβλήματος η οποία θα έκανε εμφανή τη διαφορά ενός συστήματος αυτοματισμού από έναν ευφυή πράκτορα. Εικόνα 4. Ρομποτικός βραχίονας. 20 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

21 2.1.1 Μοντέλο περιγραφής Ο πράκτορας πρέπει να έχει τη δυνατότητα να αποθηκεύει ένα στιγμιότυπο ή αλλιώς κατάσταση του κόσμου στη μνήμη του, το οποίο χρησιμοποιεί για να καθορίσει το πλάνο ενεργειών. Ο τρόπος με τον οποίο αποθηκεύεται η κατάσταση και το πως μεταφέρεται η μοντελοποίηση στη μνήμη λέγεται περιγραφή του προβλήματος. Υπάρχουν διάφορα συστήματα σχεδιασμού που τυποποιούν τη διαδικασία σχεδίασης αυτής της περιγραφής. Οι πιο συνηθισμένες γλώσσες που χρησιμοποιούνται για αυτό το σκοπό είναι ή STRIPS και η PDDL και βασίζονται σε μεταβλητές κατάστασης. Στο παράδειγμα το πρόβλημα του ρομποτικού βραχίονα είναι δυνατές οι εξής ενέργειες: - Σήκωσε αντικείμενο - Μετακίνησε βραχίονα (Στην αρχή βρίσκεται ελεύθερος πάνω από τον ιμάντα) - Τοποθέτησε αντικείμενο - Παρέδωσε το κουτί Θεωρείται πως τα αντικείμενα τοποθετούνται αυτόματα κάτω από το βραχίονα, πως σταματά αυτόματα ο ιμάντας όταν υπάρχει αντικείμενο στην άκρη και πως υπάρχει μια σταθερή ροή αντικειμένων. Με την υπόθεση ότι τα κουτιά χωράνε μέχρι και 3 αντικείμενα, χωρίς να επιτρέπεται η τοποθέτηση ενός αντικειμένου πάνω σε ένα άλλο, τότε η κίνηση τοποθέτησε αντικείμενο μπορεί να εκτελεστεί σε μια συγκεκριμένη θέση και μόνο εάν δεν υπάρχει ήδη αντικείμενο τοποθετημένο. Μια λογική σειρά ενεργειών θα ήταν: 1. Σήκωσε αντικείμενο (η αρχική θέση του βραχίονα είναι πάνω από τον ιμάντα) 2. Μετακίνησε τον βραχίονα στη θέση Β 3. Τοποθέτησε αντικείμενο 4. Μετακίνησε τον βραχίονα στη θέση Α 5. Σήκωσε αντικείμενο 6. Μετακίνησε τον βραχίονα στη θέση Γ 7. Τοποθέτησε αντικείμενο 8. Μετακίνησε τον βραχίονα στη θέση Α 9. Σήκωσε αντικείμενο 10. Μετακίνησε τον βραχίονα στη θέση Δ 11. Τοποθέτησε αντικείμενο 12. Παρέδωσε το κουτί 13. Μετακίνησε τον βραχίονα στη θέση Α 14. Επανάλαβε ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 21

22 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Τα βήματα 1-3, 4-7, 8-11 μπορούν να εκτελεστούν με οποιαδήποτε σειρά, καθώς δε μετράει με ποια σειρά θα τοποθετηθούν τα αντικείμενα στο κουτί. Προφανώς μπορούν να εκτελεστούν άπειρες ενέργειες μετακίνησης ανάμεσα σε δυο οποιεσδήποτε κινήσεις, το οποίο όμως δεν έχει νόημα και δε θα έπρεπε να επιλεγεί από έναν βέλτιστο αλγόριθμο σχεδιασμού ενεργειών. Έστω η σειρά εκτέλεσης: 1. Σήκωσε αντικείμενο 2. Μετακίνησε τον βραχίονα στη θέση Β 3. Τοποθέτησε αντικείμενο 4. Μετακίνησε τον βραχίονα στη θέση Γ 5. Σήκωσε αντικείμενο Είναι αδύνατο να εκτελεστεί διότι η ενέργεια 5 είναι άκυρη καθώς δεν υπάρχει αντικείμενο για να σηκώσει στη θέση Γ. Προφανώς υπάρχουν άπειρα τέτοια παραδείγματα τα οποία δεν είναι εκτελέσιμα Γλώσσα PDDL Η γλώσσα PDDL βασίζεται σε μεταβλητές κατάστασης με σκοπό να περιγράψει την κατάσταση του κόσμου και να τυποποιήσει τη διαδικασία σχεδιασμού του προβλήματος. Η σχεδίαση του προβλήματος χωρίζεται δύο κομμάτια. Πρώτα πρέπει να σχεδιαστεί το domain.pddl το οποίο περιγράφει την οντολογία του περιβάλλοντος και τις διαθέσιμες ενέργειες που έχει ο πράκτορας. Η οντολογία συμπεριλαμβάνει: Τις οντότητες (ή αλλιώς κλάσεις) που υπάρχουν στο κόσμο Τις ιδιότητες (ή σχέσεις) που μπορεί να έχουν, οι οποίες έχουν τη μορφή γεγονότων (ισχύει/δεν ισχύει) Τις σταθερές. Τις ενέργειες. Οι σύγχρονες εκδόσεις της γλώσσας επίσης συμπεριλαμβάνουν κόμβους λογικής σύγκρισης (AND/OR/NOT), συγκρίσεις αριθμητικών μεταβλητών, και πράξεις αυξομείωσης μεταβλητών. 22 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

23 Ένα πρόβλημα μπορεί να σχεδιαστεί με πολλούς τρόπους. Σε αυτό το παράδειγμα, το ρομπότ και οι τοποθεσίες είναι οντότητες, ενώ η θέση του ρομπότ, το εάν είναι ελεύθερο, και το εάν μια θέση είναι ελεύθερη είναι ιδιότητες Τα γεγονότα crateslot1,2,3 και isbelt δημιουργήθηκαν για να υπάρχει η δυνατότητα ταυτοποίησης για τη κάθε θέση. Εικόνα 5. Γλώσσα PDDL, οντότητες και ιδιότητες. Οπτική σχεδίαση στο εργαλείο VLEPPO. Ο κώδικας τις παραπάνω σχεδίασης έχει ως εξής [domain.pddl] Αρχική σχεδίαση της οντολογίας του προβλήματος. Συμπεριλαμβάνει οντότητες και ιδιότητες. (define (domain defaultdomain) (:requirements :strips) (:predicates (Robot?x) (Position?x) (isfree?robot1) (isat?robot1?position2) (free?position1) (contains?position1) (isbelt?position1) (carry?robot1) (CrateShipped) (crateslot1?position1) (crateslot3?position1) (crateslot2?position1)) ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 23

24 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Οι ενέργειες στη pddl αποτελούνται από προϋποθέσεις, παραμέτρους και αποτελέσματα. Οι προϋποθέσεις είναι ουσιαστικά οι συνθήκες που θα πρέπει να ισχύουν για να μπορεί να εκτελεστεί η συγκεκριμένη ενέργεια. Οι παράμετροι είναι οι οντότητες που λαμβάνουν μέρος στην εκάστοτε ενέργεια. Τα αποτελέσματα είναι οι αλλαγές που επιφέρει η συγκεκριμένη ενέργεια. Εάν ένα γεγονός βρίσκεται στις προϋποθέσεις μιας ενέργειας, για να συνεχίσει να ισχύει και μετά την εκτέλεσή της, θα πρέπει να βρίσκεται στα αποτελέσματα. Διαφορετικά, διαγράφεται. Για παράδειγμα, η μετακίνηση του ρομπότ από μια θέση Α σε μία θέση Β: - Έχει ώς προϋπόθεση το να βρίσκεται το ρομπότ στη θέση Α - Ως παραμέτρους το ρομπότ, τη θέση Α και τη θέση Β - Ως αποτέλεσμα να βρίσκεται το ρομπότ στη θέση Β Εικόνα 6. Γλώσσα PDDL, ενέργεια κίνησης του ρομπότ από τη θέση Α στη θέση Β. Οπτική σχεδίαση στο εργαλείο VLEPPO. [domain.pddl] Ενέργεια κίνησης. (:action move :parameters (?Robot?PosA?PosB ) :precondition (and (Robot?Robot) (Position?PosA) (Position?PosB) (isat?robot?posa)) ) :effect (and (isat?robot?posb) (not (isat?robot?posa))) Αντίστοιχα σχεδιάζονται όλες οι υπόλοιπες ενέργειες - Σήκωσε αντικείμενο o Προϋποθέσεις: Είναι ελεύθερος ο βραχίονας, το ρομπότ βρίσκεται στη θέση Α (για λόγους ταυτοποίησης), η θέση Α περιέχει αντικείμενο o Παράμετροι: Ρομπότ, θέση Α o Αποτελέσματα: Ο βραχίονας κουβαλάει αντικείμενο, η θέση Α είναι κενή, το ρομπότ βρίσκεται στη θέση Α (πρέπει να επαναληφθεί διαφορετικά θα πάψει να ισχύει) - Τοποθέτησε αντικείμενο o Προϋποθέσεις: Ο βραχίονας κουβαλάει αντικείμενο, το ρομπότ βρίσκεται στη θέση Α, η θέση Α είναι κενή 24 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

25 o Παράμετροι: Ρομπότ, θέση Α o Αποτελέσματα: Ο βραχίονας είναι ελεύθερος, η θέση Α περιέχει αντικείμενο, το ρομπότ βρίσκεται στη θέση Α - Παρέδωσε κουτί o Προϋποθέσεις: Η θέση Α είναι ο ιμάντας, για τις θέσεις Α,Β,Γ,Δ{περιέχει αντικείμενο} o Παράμετροι: θέση Α, θέση Β, θέση Γ, θέση Δ o Αποτελέσματα: Η θέση Α είναι ο ιμάντας, η θέση Α περιέχει αντικείμενο, για τις θέσεις Β,Γ,Δ{είναι ελεύθερη} - Ανανέωση αντικειμένου στη ζώνη. Αυτό μπορεί να μην είναι αρμοδιότητα του ρομπότ, όμως για χάρη ευκολίας στο συγκεκριμένο παράδειγμα θεωρείται πως το ρομπότ ελέγχει τον ιμάντα μεταφοράς αντικειμένων. o Προϋποθέσεις: Η θέση Α είναι ο ιμάντας, η θέση Α είναι κενή o Παράμετροι: θέση Α o Αποτελέσματα: Η θέση Α είναι ο ιμάντας, η θέση Α περιέχει αντικείμενο Εικόνα 7. Όλες οι ενέργειες σχεδιασμένες οπτικά στο εργαλείο VLEPPO. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 25

26 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ [domain.pddl] Το ολοκληρωμένο αρχείο της οντολογίας του προβλήματος. (define (domain defaultdomain) (:requirements :strips) (:predicates (Robot?x) (Position?x) (isfree?robot1) (isat?robot1?position2) (free?position1) (contains?position1) (isbelt?position1) (carry?robot1) (CrateShipped) (crateslot1?position1) (crateslot3?position1) (crateslot2?position1)) (:action move :parameters (?Robot?PosA?PosB ) :precondition (and (Robot?Robot) (Position?PosA) (Position?PosB) (isat?robot?posa)) :effect (and (isat?robot?posb) (not (isat?robot?posa))) )(:action pickup :parameters (?Robot?Pos ) :precondition (and (Robot?Robot) (Position?Pos) (isfree?robot) (isat?robot?pos) (contains?pos)) :effect (and (free?pos) (carry?robot) (not (isfree?robot)) (not (contains?pos))) )(:action place :parameters (?Pos?Robot ) :precondition (and (Position?Pos) (Robot?Robot) (isat?robot?pos) (free?pos) (carry?robot)) :effect (and (contains?pos) (isfree?robot) (not (free?pos)) (not (carry?robot))) )(:action renewbelt :parameters (?belt ) :precondition (and (Position?belt) (isbelt?belt) (free?belt)) :effect (and (contains?belt) (not (free?belt))) )(:action shipcrate :parameters (?posa?posb?posc?posd ) :precondition (and (Position?posA) (Position?posB) (Position?posC) (Position?posD) (isbelt?posa) (contains?posa) (contains?posb) (contains?posc) (contains?posd) (crateslot1?posb) (crateslot2?posc) (crateslot3?posd)) :effect (and (free?posb) (free?posc) (free?posd) (CrateShipped) (not (contains?posb)) (not (contains?posc)) (not (contains?posd))))) 26 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

27 Το δεύτερο κομμάτι της σχεδίασης του προβλήματος στη γλώσσα PDDL βρίσκεται στο αρχείο problem.pddl και αφορά τη περιγραφή ενός συγκεκριμένου προβλήματος. Περιλαμβάνει: Την αρχική κατάσταση Τις παραμέτρους Τον τελικό στόχο Καθώς το συγκεκριμένο παράδειγμα που επιλέχθηκε είναι ένα πρόβλημα που μπορεί να επαναλαμβάνεται συνεχώς και δεν υπάρχει μετρητής για τα κουτιά που στάλθηκαν, τίθεται ως στόχος η αποστολή ενός μόνο κουτιού, δηλαδή να ισχύει το γεγονός CrateShipped. Στο problem.pddl πρέπει να περιγράφει η αρχική κατάσταση του προβλήματος, όποιο γεγονός ισχύει, όλες οι παράμετροι που μπορεί να χρησιμοποιηθούν, και η επιθυμητή τελική κατάσταση. Στο συγκεκριμένο παράδειγμα η εκτέλεση θα σταματήσει στο 1 ο κουτί που θα αποσταλεί, επομένως δεν χρειάζεται στη τελική κατάσταση να γραφούν τα όλα τα γεγονότα που θα ισχύουν, παρά μόνο πως το κουτί έχει παραδοθεί. Εικόνα 8. Οπτική σχεδίαση του problem.pddl στο εργαλείο VLEPPO ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 27

28 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ [problem.pddl] Το ολοκληρωμένο αρχείο περιγραφής του προβλήματος. (define (problem defaultproblem) (:domain defaultdomain) (:objects robot posa posb posc posd ) (:init ) (Robot robot) (Position posa) (Position posb) (Position posc) (Position posd) (isfree robot) (isbelt posa) (contains posa) (free posb) (free posc) (free posd) (isat robot posa) (crateslot1 posb) (crateslot2 posc) (crateslot3 posd) (:goal (CrateShipped) Οι ενέργειες που θα εκτελέσει ο πράκτορας για να πετύχει αυτή τη κατάσταση 1. Σήκωσε αντικείμενο (ρομπότ, θέση Α) 2. Κινήσου (ρομπότ, θέση Α, θέση Β) 3. Τοποθέτησε αντικείμενο (ρομπότ, θέση Β) 4. Κινήσου (ρομπότ, θέση Β, θέση Α) 5. ΑνανέωσεΙμάντα (θέση Α) 6. Σήκωσε αντικείμενο (ρομπότ, θέση Α) 7. Κινήσου (ρομπότ, θέση Α, θέση Γ) 8. Τοποθέτησε αντικείμενο (ρομπότ, θέση Γ) 9. Κινήσου (ρομπότ, θέση Γ, θέση Α) 10. ΑνανέωσεΙμάντα (θέση Α) 11. Σήκωσε αντικείμενο (ρομπότ, θέση Α) 12. Κινήσου (ρομπότ, θέση Α, θέση Δ) 13. Τοποθέτησε αντικείμενο (ρομπότ, θέση Δ) 14. ΑνανέωσεΙμάντα (θέση Α) 15. ΠαρέδωσεΚουτί (θέση Α, θέση Β, θέση Γ, θέση Δ) ) ) 28 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

29 2.2 ΜΕΘΟΔΟΛΟΓΙΕΣ ΑΝΑΖΗΤΗΣΗΣ Για την εύρεση της λύσης γίνεται αναζήτηση ενός πλάνου ενεργειών, το οποίο αργότερα θα εκτελέσει ο πράκτορας. Υπάρχουν πολλές διαφορετικές τεχνικές που προσπαθούν να βρουν αυτό το πλάνο με διαφορετική προσέγγιση η κάθε μια. Μια από τις πρώτες τεχνικές που αναπτύχθηκαν ήταν η αναζήτηση στο χώρο καταστάσεων. Ο χώρος καταστάσεων συμπεριλαμβάνει όλες τις δυνατές καταστάσεις οι οποίες μπορούν να προκύψουν έπειτα από οποιαδήποτε σειρά ενεργειών που εκτελεί ο πράκτορας. Ξεκινώντας από την αρχική κατάσταση, οι αλγόριθμοι αναζήτησης ακολουθούν μια πορεία με σκοπό να φτάσουν σε μια κατάσταση που να εκπληρώνει τους στόχους που έχουν τεθεί (Βλαχάβας, et al, 2006). Η απεικόνιση του χώρου καταστάσεων μπορεί να γίνει με ένα δέντρο με ρίζα την αρχική κατάσταση. Τα παιδιά κάθε κόμβου προκύπτουν από την εφαρμογή κάθε ενέργειας (εφόσον είναι δυνατό) στο συγκεκριμένο κόμβο. Στο απλό παράδειγμα της τρίλιζας το δέντρο που απεικονίζει το χώρο καταστάσεων θα περιέχει κόμβους (9 θέσεις για τη 1 η επιλογή, 8 θέσεις για τη 2 η επιλογή, κ.ο.κ.). Εικόνα 9. Μέρος του χώρου καταστάσεων στο κλασσικό παιχνίδι της τρίλιζας. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 29

30 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Οι κλασικοί αλγόριθμοι αναζήτησης συνήθως διατηρούν: - μια λίστα που ονομάζεται ανοιχτό σύνολο, η οποία περιέχει τις καταστάσεις τις οποίες πρέπει αργότερα να αναζητήσει ο αλγόριθμος, - μια λίστα που ονομάζεται κλειστό σύνολο, η οποία περιέχει τις καταστάσεις τις οποίες έχει ήδη αναζητήσει ο αλγόριθμος. - Τη τρέχουσα κατάσταση που αναζητά ο αλγόριθμος (αναλόγως τη βιβλιογραφία, αυτή μπορεί και να είναι το πρώτο στοιχείο του ανοικτού συνόλου). Σε γενικές γραμμές οι περισσότεροι αλγόριθμοι αναζήτησης ακολουθούν το παρακάτω ψευδοκώδικα: 1. Θέσε ως τρέχουσα κατάσταση την αρχική κατάσταση 2. Αν η τρέχουσα κατάσταση πληροί τις προϋποθέσεις της τερματικής συνθήκης επέστρεψε το πλάνο και τερμάτισε 3. Πρόσθεσε τη τρέχουσα κατάσταση στο κλειστό σύνολο 4. Αν το ανοικτό σύνολο είναι κενό επέστρεψε κενό πλάνο και τερμάτισε 5. Πάραγε τους κόμβους παιδιά της τρέχουσας κατάστασης και πρόσθεσέ τους στο ανοικτό σύνολο 6. Θέσε ως τρέχουσα κατάσταση το 1 ο παιδί του ανοικτού συνόλου και αφαίρεσέ το από το σύνολο 7. Πήγαινε στο βήμα 2. Η διαφορά μεταξύ πολλών κλασικών αλγορίθμων βρίσκεται συνήθως στο βήμα 5, δηλαδή στο τρόπο με τον οποίο παράγονται, βαθμολογούνται και εισάγονται στο ανοικτό σύνολο τα παιδιά της τρέχουσας κατάστασης. Επίσης, υπάρχουν και οι αντίστοιχες εκδόσεις των ίδιων αλγορίθμων στις οποίες δεν χρησιμοποιείται το κλειστό σύνολο. Με αυτή το τρόπο η αναζήτηση καθίσταται αρκετά πιο γρήγορη, όμως ο αλγόριθμος μπορεί να μην είναι πλέον πλήρης. Πλήρης είναι ένας αλγόριθμος που εγγυάται ότι θα βρει τουλάχιστον μια λύση, χωρίς να είναι απαραίτητα και η καλύτερη. 30 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

31 2.2.1 Τυφλοί αλγόριθμοι αναζήτησης Οι αλγόριθμοι αυτής της κατηγορίας ονομάζονται «τυφλοί» διότι κατά τη διάρκεια επιλογής επόμενης κατάστασης δεν λαμβάνουν υπόψιν κατά πόσο πιο κοντά βρίσκεται στη λύση. Επομένως, βασίζονται καθαρά στη θέση των καταστάσεων στο δέντρο και δεν βαθμολογούν τις καταστάσεις-παιδιά κατά τη διάρκεια παραγωγής τους. Αλγόριθμος πρώτα κατά βάθος Ο αλγόριθμος πρώτα κατά βάθος (DFS Depth First Search) αναζητά εξαντλητικά κλαδί προς κλαδί το δέντρο και δε προχωρά στο επόμενο κλαδί μέχρι να εξαντλήσει το προηγούμενο. Ο τρόπος με τον οποίο το επιτυγχάνει αυτό είναι με το να παραθέτει στην αρχή του ανοικτού συνόλου όλα τα παιδιά που παράγει. Ψευδοκώδικας του DFS χωρίς τη χρήση κλειστού συνόλου (μη-πλήρης) 1. Θέσε ως τρέχουσα κατάσταση την αρχική κατάσταση 2. Αν η τρέχουσα κατάσταση πληροί τις προϋποθέσεις της τερματικής συνθήκης επέστρεψε το πλάνο και τερμάτισε 3. Αν το ανοικτό σύνολο είναι κενό επέστρεψε κενό πλάνο και τερμάτισε 4. Πάραγε τους κόμβους παιδιά της τρέχουσας κατάστασης και πρόσθεσέ τους στην αρχή του ανοικτού συνόλου 5. Θέσε ως τρέχουσα κατάσταση το 1 ο παιδί του ανοικτού συνόλου και αφαίρεσέ το από το σύνολο 6. Πήγαινε στο βήμα 2. Όπως φαίνεται στο βήμα 4, οι κόμβοι που παράγονται προστίθενται πάντα στην αρχή του ανοικτού συνόλου. Με αυτό το τρόπο ο αλγόριθμος εξαντλεί πρώτα ένα κλαδί σε όλο του το βάθος πριν προχωρήσει στο επόμενο. Μόλις εξαντλήσει ένα κλαδί (εάν δε κολλήσει σε κλαδί άπειρου μήκους) τότε «μεταπηδάει» αυτόματα στο επόμενο κλαδί προς αναζήτηση, εφόσον υπάρχει τουλάχιστον ένα τέτοιο στο ανοικτό σύνολο. Διαφορετικά, το πρόβλημα είναι άλυτο. Υπάρχει η πιθανότητα ένα κλαδί να είναι απείρου μήκους. Αυτό είναι πιθανό όταν υπάρχει ένα σετ κινήσεων το οποίο παράγει συνεχώς την ίδια κατάσταση. Στο παράδειγμα του βραχίονα υπάρχουν πολλά τέτοια κλαδιά. Ένα από αυτά είναι η επανάληψη των κινήσεων Κίνησε το βραχίονα στη θέση Β, κίνησε το βραχίονα στη θέση Α. Δηλαδή: ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 31

32 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ 1. Αρχική κατάσταση 2. Κίνησε το βραχίονα στη θέση Β 3. Κίνησε το βραχίονα στη θέση Α 4. Κίνησε το βραχίονα στη θέση Β 5. Κίνησε το βραχίονα στη θέση Β Σε αυτή τη περίπτωση παράγεται συνεχώς η ίδια κατάσταση και επομένως ο αλγόριθμος DFS χωρίς κλειστό σύνολο δε θα σταματήσει ποτέ και δε θα βρεθεί ποτέ η λύση του προβλήματος. Εάν όμως χρησιμοποιηθεί κλειστό σύνολο τότε ο αλγόριθμος γίνεται πλήρης και εγγυάται την εύρεση μιας τουλάχιστον λύσης. Ψευδοκώδικας του DFS με τη χρήση κλειστού συνόλου (πλήρης) 1. Θέσε ως τρέχουσα κατάσταση την αρχική κατάσταση 2. Αν η τρέχουσα κατάσταση πληροί τις προϋποθέσεις της τερματικής συνθήκης επέστρεψε το πλάνο και τερμάτισε 3. Πρόσθεσε τη τρέχουσα κατάσταση στο κλειστό σύνολο 4. Αν το ανοικτό σύνολο είναι κενό επέστρεψε κενό πλάνο και τερμάτισε 5. Πάραγε τους κόμβους παιδιά της τρέχουσας κατάστασης και εάν δεν ανήκουν ήδη στο κλειστό σύνολο πρόσθεσέ τους στην αρχή του ανοικτού συνόλου. 6. Θέσε ως τρέχουσα κατάσταση το 1 ο παιδί του ανοικτού συνόλου και αφαίρεσέ το από το σύνολο 7. Πήγαινε στο βήμα 2. Αλγόριθμος πρώτα κατά πλάτος Ο αλγόριθμος πρώτα κατά βάθος (BFS Breadth First Search) αναζητά εξαντλητικά στο δέντρο καταστάσεων όπως ο DFS, με τη διαφορά πως αντί να εξαντλεί ένα κλαδί κάθε φορά, εξαντλεί ένα επίπεδο του δέντρου. Κάθε επίπεδο του δέντρου επίσης ταυτίζεται με τον αριθμό των ενεργειών που πρέπει να κάνει ο πράκτορας για να φτάσει στην αντίστοιχη κατάσταση. Δηλαδή, αν μια κατάσταση βρίσκεται στο 3 ο επίπεδο του δέντρου, τότε χρειάζεται να γίνουν 3 ενέργειες με συγκεκριμένη σειρά, ξεκινώντας από τη ρίζα του δέντρου για να έρθει σε αυτή τη κατάσταση. Επομένως κάθε φορά αναζητά το πολύ Α Ε νέες καταστάσεις, όπου Ε το εκάστοτε επίπεδο και Α ο αριθμός ενεργειών. Εάν, για παράδειγμα, υπάρχουν 5 δυνατές ενέργειες, τότε στο 3 ο επίπεδο θα βρίσκονται το πολύ 5 3 κόμβοι. Προφανώς το κόστος του αλγορίθμου είναι εκθετικό, όμως ο BFS είναι πλήρης και χωρίς τη χρήση κλειστού συνόλου, όπως επίσης και εγγυάται ότι θα βρει τη καλύτερη λύση, καθώς η 1 η λύση που βρίσκει είναι και αυτή που βρίσκεται πιο κοντά στη ρίζα. Η σειρά αναζήτησης των κόμβων επιτυγχάνεται εύκολα με το να προστίθενται οι νέοι κόμβοι στο τέλος του ανοικτού συνόλου. 32 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

33 Ψευδοκώδικας του BFS χωρίς τη χρήση κλειστού συνόλου (πλήρης) 1. Θέσε ως τρέχουσα κατάσταση την αρχική κατάσταση 2. Αν η τρέχουσα κατάσταση πληροί τις προϋποθέσεις της τερματικής συνθήκης επέστρεψε το πλάνο και τερμάτισε 3. Αν το ανοικτό σύνολο είναι κενό επέστρεψε κενό πλάνο και τερμάτισε 4. Πάραγε τους κόμβους παιδιά της τρέχουσας κατάστασης και πρόσθεσέ τους στο τέλος του ανοικτού συνόλου. 5. Θέσε ως τρέχουσα κατάσταση το 1 ο παιδί του ανοικτού συνόλου και αφαίρεσέ το από το σύνολο 6. Πήγαινε στο βήμα 2. Παρόλο που είναι πλήρης και επιστρέφει πάντα τη καλύτερη λύση, το κόστος σε αποθηκευτικό χώρο είναι τεράστιο και μπορεί να είναι αδύνατο να εφαρμοστεί σε μεγάλα προβλήματα. Με χρήση κλειστού συνόλου μπορεί να βελτιωθεί σημαντικά η απόδοσή του, όπως και το κόστος του σε χώρο, καθώς θα απορρίπτει από την αρχή μεγάλα κλαδιά, τα οποία δε πρόκειται να περιέχουν λύση πιο νωρίς από τα υπόλοιπα. Ψευδοκώδικας του BFS με τη χρήση κλειστού συνόλου (πλήρης) 1. Θέσε ως τρέχουσα κατάσταση την αρχική κατάσταση 2. Αν αυτή πληροί τις προϋποθέσεις της τερματικής συνθήκης επέστρεψε το πλάνο και τερμάτισε 3. Πρόσθεσε τη τρέχουσα κατάσταση στο κλειστό σύνολο 4. Αν το ανοικτό σύνολο είναι κενό επέστρεψε κενό πλάνο και τερμάτισε 5. Πάραγε τους κόμβους παιδιά της τρέχουσας κατάστασης και εάν δεν ανήκουν ήδη στο κλειστό σύνολο πρόσθεσέ τους στο τέλος του ανοικτού συνόλου. 6. Θέσε ως τρέχουσα κατάσταση το 1 ο παιδί του ανοικτού συνόλου και αφαίρεσέ το από το σύνολο 7. Πήγαινε στο βήμα 2. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 33

34 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Στη παρακάτω εικόνα φαίνεται ένα μέρος ενός δέντρου αναζήτησης το οποίο αντιστοιχεί σε ένα πρόβλημα που ο πράκτορας έχει 4 δυνατές κινήσεις (προχώρα πάνω/αριστερά/δεξιά/κάτω). BFS χωρίς κλειστό σύνολο BFS με κλειστό σύνολο Σειρά αναζήτησης 1. Ρίζα 2. Α-Δ 3. Α1-Δ Χωρίς τη χρήση κλειστού συνόλου ο BFS θα ψάξει όλες τις καταστάσεις χωρίς να επιλέξει ποιες είναι χρήσιμες. Σειρά αναζήτησης 1. Ρίζα 2. Α-Δ 3....,Β1,Β3,Β4,Γ1,Γ2,Γ3, Η κατάσταση Β3 είναι ίδια με αρχική κατάσταση καθώς αντιστοιχεί στη σειρά κινήσεων Κινήσου αριστερά, κινήσου δεξιά. Αντίστοιχα η κατάσταση Γ2 αντιστοιχεί στη σειρά Κινήσου δεξιά, κινήσου αριστερά. Αφού είναι ίδιες καταστάσεις και ανήκουν ήδη στο κλειστό σύνολο, δε προστίθενται στο ανοικτό σύνολο, άρα και δε θα παράγουν παιδιά. Αλγόριθμος επέκτασης και οριοθέτησης Ο αλγόριθμος επέκτασης και οριοθέτησης (BnB Branch & Bound) αποσκοπεί κυρίως στο να βρει καλές λύσεις σε σύντομο χρόνο. Συνήθως χρησιμοποιείται σε προβλήματα βελτιστοποίησης, στα οποία ο χώρος αναζήτησης μπορεί να φτάσει τεράστια μεγέθη. Επομένως, η εύρεση της καλύτερης λύσης μπορεί να αργήσει πάρα πολύ ή και ακόμη να μην είναι δυνατό να βρεθεί. Σε τέτοιες περιπτώσεις ο αλγόριθμος επέκτασης και οριοθέτησης είναι κατάλληλος, καθώς θα βρει μια αρκετά καλή λύση σε αποδεκτό χρόνο, σε αντίθεση με άλλους αλγορίθμους οι οποίοι είτε θα αργήσουν πάρα πολύ να βρουν τη βέλτιστη λύση, είτε δε θα βρουν μια επαρκώς καλή. Ο BnB για να το καταφέρει αυτό, αναζητά κατά βάθος, μόνο όμως μέχρι ένα συγκεκριμένο όριο. Το όριο αυτό είτε είναι το μήκος μιας ήδη γνωστής λύσης (έτσι ώστε να βρεθεί καλύτερη) είτε άπειρο σε περίπτωση που δεν υπάρχει ήδη μια γνωστή λύση. 34 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

35 2.2.2 Ευριστικοί αλγόριθμοι αναζήτησης Οι ευριστικοί αλγόριθμοι αναζήτησης αναζητούν στο χώρο καταστάσεων με σκοπό να βρεθούν πιο κοντά σε μια από τις τελικές καταστάσεις και όχι τυφλά. Δηλαδή, βαθμολογούν με κάποιο τρόπο τη κάθε κατάσταση και προσπαθούν να βρουν το μονοπάτι προς τη λύση που θα έχει αθροιστικά τη καλύτερη βαθμολογία. Με αυτό τον τρόπο αποφεύγουν να πάρουν κατευθύνσεις που θα τους οδηγήσουν σε αδιέξοδο ή σε μια πολύ μέτρια λύση. Επομένως, η επιτυχία των αλγορίθμων εξαρτάται σε μεγάλο βαθμό από τη ποιότητα της ευριστικής συνάρτησης που χρησιμοποιούν. Αλγόριθμος αναρρίχησης λόφων Ο αλγόριθμος αναρρίχησης λόφων (HC - Hill Climbing) έχει πολύ απλή λογική δίχως τη χρήση ανοιχτού ή κλειστού συνόλου. Αναζητά στο χώρο καταστάσεων με βάση τη καλύτερη επιλογή που έχει διαθέσιμη με βάση τη κατάσταση που βρίσκεται εκείνη τη στιγμή. Παρόλο που δε ξοδεύει μνήμη ή χρόνο για να συγκρίνει προηγούμενες καταστάσεις που επισκέφτηκε, είναι πολύ εύκολο να βρεθεί σε ένα τοπικό μέγιστο (ή αντίστοιχα τοπικό ελάχιστο αντίστροφα) και να μη μπορέσει ποτέ να ξεφύγει από εκείνο το σημείο. Ψευδοκώδικας του HC (μη-πλήρης) 1. Θέσε ως τρέχουσα κατάσταση την αρχική κατάσταση 2. Αν η τρέχουσα κατάσταση πληροί τις προϋποθέσεις της τερματικής συνθήκης επέστρεψε το πλάνο και τερμάτισε 3. Πάραγε τους κόμβους παιδιά της τρέχουσας κατάστασης και βαθμολόγησέ τα με βάση την ευριστική συνάρτηση 4. Θέσε ως τρέχουσα κατάσταση το παιδί με τη καλύτερη βαθμολογία 5. Πήγαινε στο βήμα 2. Όπως φαίνεται στην εικόνα 11, μπορούν να σχηματιστούν τοπικά μέγιστα στο χώρο καταστάσεων. Πρακτικά αυτό σημαίνει πως εάν ο πράκτορας βρει αυτό το μέγιστο, δε θα μπορεί να βρει το ολικό μέγιστο διότι ποτέ δε θα κατέβει το λόφο, καθώς θα τον οδηγεί άμεσα σε χειρότερη κατάσταση. Εικόνα 10. Απεικόνιση του τοπικού μεγίστου. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 35

36 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Παρόλο που έχει αυτό το μειονέκτημα, ο HC είναι ταχύτατος καθώς δε χρειάζεται να ξοδέψει χρόνο σε πράξεις εισαγωγής και αναζήτησης στο κλειστό και ανοικτό σύνολο. Για αυτό το λόγο χρησιμοποιήθηκε από τους Ari Juels και Martin Wattenberg ως μέθοδος αξιολόγησης γενετικών αλγορίθμων (Juels, Wattenberg, 1995). Αλγόριθμος πρώτα στο καλύτερο Ο αλγόριθμος πρώτα στο καλύτερο (BestFS Best First Search) σε αντίθεση με τον HC, είναι πλήρης και χρησιμοποιεί και ανοικτό και κλειστό σύνολο. Λόγω αυτού, έχει αρκετά υψηλές απαιτήσεις στη μνήμη, το οποίο για μεγάλα προβλήματα μπορεί να είναι αποτρεπτικό, αλλά η λύση που θα βρει θα είναι καλή, αν όχι η καλύτερη. Είναι πιο αργός από τον HC καθώς αναλώνει χρόνο στις συγκρίσεις καταστάσεων στα σύνολα. Εν τούτοις, είναι αρκετά γρήγορος αλγόριθμος, δεδομένου ότι χρησιμοποιεί ευριστική συνάρτηση που τον καθοδηγεί προς τη λύση. Ψευδοκώδικας του BestFS με τη χρήση κλειστού συνόλου (πλήρης) 1. Θέσε ως τρέχουσα κατάσταση την αρχική κατάσταση 2. Αν η τρέχουσα κατάσταση πληροί τις προϋποθέσεις της τερματικής συνθήκης επέστρεψε το πλάνο και τερμάτισε 3. Πρόσθεσε τη τρέχουσα κατάσταση στο κλειστό σύνολο 4. Αν το ανοικτό σύνολο είναι κενό επέστρεψε κενό πλάνο και τερμάτισε 5. Πάραγε τους κόμβους παιδιά της τρέχουσας κατάστασης, βαθμολόγησέ τα με βάση την ευριστική συνάρτηση και, εάν δεν ανήκουν ήδη στο κλειστό σύνολο, πρόσθεσέ τα στο ανοικτό σύνολο ταξινομημένα 6. Θέσε ως τρέχουσα κατάσταση το 1 ο παιδί του ανοικτού συνόλου και αφαίρεσέ το από το σύνολο 7. Πήγαινε στο βήμα 2. Αλγόριθμος Α* Ο Α* έχει παρόμοια λειτουργία με τον BestFS, αλλά έχει μια σημαντική διαφορά στην ευριστική συνάρτηση. Συνήθως η ευριστική συνάρτηση που χρησιμοποιείται στον BestFS είναι κάποια μορφή απόστασης από τη τελική κατάσταση. Στη περίπτωση του A*, προστίθεται στην ευριστική και το κόστος της διαδρομής προς την εκάστοτε κατάσταση. Αυτή η διαφορά είναι αποδεδειγμένο πως θα κατευθύνει τον αλγόριθμο πάντα προς τη καλύτερη κατάσταση, με τη παραδοχή ότι η ευριστική είναι αποδεκτή. Ο ψευδοκώδικας του Α* είναι ίδιος με τον BestFS καθώς διαφέρουν μόνο στον υπολογισμό της ευριστικής. Παρόμοια με τον BestFS, έχει μεγάλες απαιτήσεις σε χώρο, αλλά είναι κατάλληλος για να βρίσκει βέλτιστη λύση σε μικρού και μέτριου μεγέθους προβλήματα. Για αυτό το λόγο, χρησιμοποιείται σε πολλές σύγχρονες εφαρμογές, όπως σε ασύρματα δίκτυα 36 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

37 (Rana, Zaveri, 2011), στη ρομποτική (Xiang Lio, 2011) και στους ευφυής πράκτορες ηλεκτρονικών παιγνίων (Jie Hu, 2012), (Khantanapoka 2009), το οποίο είναι και το κύριο θέμα αυτής της πτυχιακής. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 37

38

39 Κ Ε Φ Α Λ Α Ι Ο 3 : Α Ν Α Π Τ Υ Ξ Η Η Λ Ε Κ Τ Ρ Ο Ν Ι Κ Ω Ν Π Α Ι Χ Ν Ι Δ Ι Ω Ν

40

41 ΑΝΑΠΤΥΞΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΠΑΙΧΝΙΔΙΩΝ Τα ηλεκτρονικά παιχνίδια αποτελούν μεγάλο μέρος του λογισμικού που παράγεται και είναι μια από τις πιο απαιτητικές κατηγορίες εφαρμογών σε προσωπικούς υπολογιστές, καθώς έχουν υψηλές απαιτήσεις σε μνήμη και ισχύ στη κάρτα γραφικών. Τα πρώτα παιχνίδια έκαναν την εμφάνισή τους παράλληλα με τους πρώτους υπολογιστές. Μάλιστα, ο Alan Turing το 1947 παρήγαγε ένα προσομοιωτή Σκακιού, με σκοπό να αποδείξει τις δυνατότητες της υπολογιστικής νοημοσύνης. Παρόλο που το πρόγραμμα μπορούσε να εκτελέσει μόνο 2 διαδοχικές κινήσεις (matein-two) και δεν μπορούσε να προσομοιώσει ολόκληρο παιχνίδι, ήταν πρωτοποριακό και εντυπωσιακό, δεδομένου δεν είχε υπάρξει προηγουμένως κάτι παρόμοιο και οι υπολογιστές εκείνης της εποχής είχαν ελάχιστη ισχύ. Σταδιακά, υπήρξαν αρκετές προσπάθειες ανάπτυξης παιγνίων, όμως ήταν περιορισμένες καθώς οι προσωπικοί υπολογιστές ήταν λίγοι και είχαν περιορισμένες δυνατότητες. Τη δεκαετία του 70 άρχισαν να παράγονται οι πρώτες κονσόλες και οι πρώτες εκδόσεις των παιχνιδομηχανών Arcade οι οποίες είχαν για πρώτη φορά ελκυστικά γραφικά. Είναι γνωστό πως η δεκαετία του 80 είναι η χρυσή εποχή των Arcade παιχνιδιών. Με αφορμή τη μεγάλη επιτυχία που είχαν και τη ζήτηση στην αγορά, η βιομηχανία των ηλεκτρονικών παιχνιδιών συνέχισε να αναπτύσσεται, υπολογιστές όπως και σε διάφορες κονσόλες και έφτασε πλέον να είναι μια από τις μεγαλύτερες βιομηχανίες στο χώρο. Είναι αξιοσημείωτο πως τα τελευταία χρόνια έχουν αναδειχθεί μεγάλες πλατφόρμες ψυχαγωγίας (Twitch) με τη μορφή βίντεο streaming, το οποίο κατά κόρον βασίζεται στα παιχνίδια. Παρόλο που δεν είναι ηλεκτρονικά παιχνίδια, είναι άμεσο αποτέλεσμα αυτών και της τεράστιας ζήτησης που έχουν. 3.1 ΚΑΤΗΓΟΡΙΕΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΠΑΙΧΝΙΔΙΩΝ Τα ηλεκτρονικά παιχνίδια μπορούν να κατηγοριοποιηθούν με βάση το είδος του τρόπου παιχνιδιού, την ιστορία και το περιεχόμενό τους. Με την ραγδαία ανάπτυξη που έχουν τα τελευταία παιχνίδια δημιουργούνται συνεχώς νέες κατηγορίες παιχνιδιών. Η πλειοψηφία των παιχνιδιών παρουσιάζουν στοιχεία από περισσότερες από μια κατηγορίες και μπορούν να ανήκουν σε πολλές από αυτές ταυτόχρονα. Παρακάτω περιγράφονται οι ευρύτερες κατηγορίες του είδους Κατηγοριοποίηση με βάση το είδος γραφικών Τρισδιάστατα Τα τρισδιάστατα (3D) παιχνίδια χρησιμοποιούν τρισδιάστατα μοντέλα για να απεικονίσουν τον κόσμο τους. Τα μοντέλα αυτά αποτελούνται από μεγάλο αριθμό πολυγώνων και δημιουργούνται σε ειδικά εργαλεία, όπως το 3DS Max.

42 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Δισδιάστατα Τα δισδιάστατα (2D) παιχνίδια χρησιμοποιούν εικόνες για να απεικονίσουν τον κόσμο τους, τα λεγόμενα Sprites (βλ οπτική τέχνη). Συνδυασμός Ελάχιστα παιχνίδια επιλέγουν να χρησιμοποιήσουν ένα συνδυασμό των δύο (2.5D) και να χρησιμοποιήσουν τρισδιάστατα μοντέλα σε δισδιάστατη σκηνή. Κυρίως είναι παιχνίδια πλάγιας κύλισης (βλ ). Εικόνα 11. Trine 2 Παράδειγμα 2.5D παιχνιδιού Κατηγοριοποίηση με βάση το Gameplay Ο τρόπος διαχείρισης σε συνδυασμό με τον τρόπο που παρουσιάζεται το παιχνίδι είναι ένας τρόπος να καθοριστεί η κατηγορία του. Πρώτου προσώπου Τα παιχνίδια πρώτου προσώπου (First-Person) παρουσιάζουν την ιστορία τους μέσω την οπτική ενός χαρακτήρα. Ο παίκτης χειρίζεται τις κινήσεις του χαρακτήρα και βλέπει ό,τι θα έβλεπε εκείνος. Με αυτό τον τρόπο ο χρήστης εμβαθύνει στο ρόλο του πρωταγωνιστή και γίνεται μέρος του τρισδιάστατου κόσμου που περιλαμβάνει το χαρακτήρα (τεχνική immersive). Η κατηγορία αυτή συνήθως συνδυάζεται με παιχνίδια δράσης και παιχνίδια πολέμου, τα γνωστά FPS. Η πιο επιτυχημένη σειρά αυτών των παιχνιδιών είναι το Call of Duty (εικόνα 11), ενώ ο φημισμένος πρόγονος αυτών είναι το Doom (εικόνα 12) του 1993, ένα από τα πρώτα τρισδιάστατα παιχνίδια που έκαναν μεγάλη επιτυχία. Παρόλο που το πρώτο παιχνίδι αυτής της κατηγορίας είναι το Wolfenstein 3D (1992), το Doom ήταν αυτό που έκανε τη μεγαλύτερη επιτυχία. 42 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

43 Εικόνα 12 (αριστερά). Call of Duty Παράδειγμα παιχνιδιού πρώτου προσώπου. Εικόνα 13 (αριστερά). Doom (1993) Ένα από τα πρώτα τρισδιάστατα παιχνίδια πρώτου προσώπου που έκαναν μεγάλή επιτυχία. Τρίτου προσώπου Τα παιχνίδια τρίτου προσώπου (Third-Person) βασίζονται στην οπτική ενός χαρακτήρα, όπως και τα παιχνίδια πρώτου προσώπου, με τη διαφορά ότι η κάμερα ακολουθεί τον πρωταγωνιστή με κάποια απόσταση (όπως φαίνεται στην εικόνα 13). Ο παίκτης χειρίζεται τις κινήσεις του χαρακτήρα όπως και τις κινήσεις της κάμερας και έχει τη δυνατότητα να βλέπει το περιβάλλον γύρω από τον παίκτη σε οποιαδήποτε γωνία επιθυμεί. Αυτό το είδος τρόπου παιχνιδιού επιτρέπει στο παίκτη να ανακαλύπτει ευκολότερα το περιβάλλον και να βλέπει στοιχεία που δε θα έβλεπε σε περίπτωση που έπαιζε με πρώτο πρόσωπο. Εικόνα 14 (αριστερά). Lost: Via Domus (2008) Παράδειγμα παιχνιδιού τρίτου προσώπου. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 43

44 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Η τεχνική παρουσίασης τρίτου προσώπου συνήθως εμφανίζεται σε παιχνίδια περιπέτειας και δράσης. Από-ψηλά Τα παιχνίδια κατηγορίας από-ψηλά (Top-Down) παρουσιάσουν το παιχνίδι από την οπτική ενός τρίτου παρατηρητή που επιβλέπει τα γεγονότα από ψηλά. Η κάμερα βρίσκεται σε μεγάλο ύψος και κοιτάει προς τα κάτω, συνήθως με μικρή απόκλιση για να φαίνεται πιο ρεαλιστικό. Είναι εξαιρετικά χρήσιμη τεχνική όταν ο παίκτης πρέπει να διαχειρίζεται περισσότερους από έναν χαρακτήρες ή όταν οι λεπτομέρειες στο περιβάλλον δεν είναι απαραίτητες. Αναλόγως με το παιχνίδι η κάμερα είτε ακολουθεί τη θέση ενός πρωταγωνιστή, είτε τη διαχειρίζεται εξολοκλήρου ο παίκτης. Εικόνα 15. Pokemon Red Παράδειγμα όπου η κάμερα ακολουθεί τον πρωταγωνιστή. Εικόνα 16. Warcraft III - Παράδειγμα όπου τη κάμερα τη διαχειρίζεται ο χρήστης σε παιχνίδι στρατηγικής. Αυτού του είδους η διαχείριση είναι κατάλληλη για παιχνίδια στρατηγικής όπου ο χρήστης χρειάζεται να βλέπει πολλά στοιχεία ταυτόχρονα και χρειάζεται μια επισκόπηση της εκάστοτε κατάστασης. Μπορεί να υποστηρίξει τόσο τρισδιάστατα όσο και δισδιάστατα παιχνίδια. Πλάγια κύλιση Τα παιχνίδια πλάγιας κύλισης (Side-Scrolling) παρουσιάζουν τη σκηνή από τα πλάγια. Ο παίκτης διαχειρίζεται ένα χαρακτήρα και η κάμερα αυτόματα τον ακολουθεί. Μπορούν να υποστηρίξουν διάφορες κατηγορίες παιχνιδιών, όπως δράσης, περιπέτειας, ρόλων ή παζλ. Σε πλειοψηφία χρησιμοποιείται σε παιχνίδια πλατφόρμας. Το γνωστότερο παιχνίδι αυτού του τύπου είναι το Super Mario Bros. με το πρώτο της σειράς να εμφανίζεται το 1985 από την Nintendo. Εικόνα 17. (Δεξιά) Super Mario Bros. (1985) Γνωστό παιχνίδι κατηγορίας πλάγιας κύλισης. Τα παιχνίδια πλάγιας κύλισης συνήθως έχουν 2D γραφικά, όμως έχουν υλοποιηθεί και με 3D γραφικά, στα οποία η κάμερα έχει μια ελάχιστη απόκλιση προς τα πάνω. 44 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

45 Πλατφόρμας Τα παιχνίδια πλατφόρμας (Platform) είναι παιχνίδια δράσης ή γρίφων των οποίων οι πίστες είναι μια σειρά από πλατφόρμες και ορόφους στα οποία ο παίκτης προσπαθεί να κινηθεί. Προσπαθούν να κάνουν δύσκολη τη πλοήγηση στο χώρο για να θέσουν μια πρόκληση στο παίκτη και να είναι πιο ενδιαφέροντα. Συνήθως αυτή η κατηγορία παιχνιδιών εμφανίζεται σε κονσόλες καθώς έχουν απλό τρόπο χειρισμού. Δεν είναι αποκλειστική κατηγορία καθώς παιχνίδια πλατφόρμας μπορούν να είναι ταυτόχρονα και παιχνίδια πλάγιας κύλισης, όπως το Super Mario Bros. Συνδυασμός Ένας συνδυασμός των παραπάνω τεχνικών μπορεί να εφαρμοστεί σε κάποια παιχνίδια, ειδικότερα όταν υπάρχει η δυνατότητα παρουσίασης γεγονότων ως μια ιστορία. Σε αυτές της περιπτώσεις η κάμερα είναι κινηματογραφική και κινείται αυτόματα ενώ το παιχνίδι αφηγείται κάποια ιστορία. Ο παίκτης κατά τη διάρκεια της σκηνής (cut-scene) έχει ελάχιστο έως καθόλου έλεγχο του χαρακτήρα και της κάμερας Κατηγοριοποίηση με βάση το περιεχόμενο Ο πιο σημαντικός διαχωρισμός των ηλεκτρονικών παιχνιδιών είναι με βάση το περιεχόμενο και την ιστορία τους. Δράσης Τα παιχνίδια δράσης (Action) καταφέρνουν να φέρουν τον παίκτη πιο κοντά στο κόσμο μέσω της έντονης δράσης που παρουσιάζουν και την εμπλοκή προσωπικών ιστοριών του πρωταγωνιστή. Παρουσιάζονται κυρίως με τεχνικές πρώτου και τρίτου προσώπου και είναι φημισμένα για τα εξαιρετικά γραφικά τους. Προσπαθούν να κρατήσουν συνεχώς ενεργό το χρήστη μέσω έντονης διαμάχης ή γρήγορων γεγονότων αντίδρασης (QuickTime events). Ο παίκτης ταυτίζεται με το πρωταγωνιστή και υιοθετεί το άγχος και την αγωνία του (Apperley, 2006). Λόγω της φύσης τους απαιτούν λεπτομερές περιβάλλον και κινηματογραφική περιήγηση, κάτι που είναι εξαιρετικά δύσκολο και ακριβό να υλοποιηθεί. Για αυτό το λόγο, οι πιο επιτυχημένες σειρές παιχνιδιών αυτής της κατηγορίας έχουν μεγάλες ομάδες ανάπτυξης και λειτουργούν με πολύ υψηλό προϋπολογισμό. Για παράδειγμα, το νεότερο παιχνίδι της σειράς Grand Theft Auto, το Grand Theft Auto 5, είχε προϋπολογισμό της τάξης των 265 εκατ. δολαρίων. Εικόνα 18. Το GTA5 έχει λεπτομερώς σχεδιασμένη μια ολόκληρη πόλη. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 45

46 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Περιπέτειας Τα παιχνίδια περιπέτειας (Adventure) παρουσιάζουν κάποια στοιχεία που παρουσιάζουν και τα παιχνίδια δράσης, όμως στοχεύουν κυρίως στην ανακάλυψη τους κόσμου, τη λύση ευρηματικών γρίφων και την αφήγηση μιας ιστορίας. Έχουν πιο αργό ρυθμό από τα παιχνίδια δράσης και σπάνια έχουν σκηνές πολέμου ή έντονης δραστηριότητας. Επιτρέπουν στο χρήστη να χρησιμοποιήσει όσο χρόνο θέλει για να ψάξει λεπτομερώς το περιβάλλον γύρω του για να βρει στοιχεία για το πώς θα προχωρήσει παρακάτω στην ιστορία. Θυμίζουν αρκετά βιβλία μυστηρίου όπου ο πρωταγωνιστής προσπαθεί να βρει ενδείξεις ως προς το ποιος είναι ο ένοχος. Οι έξυπνοι και περίπλοκοι γρίφοι είναι στοιχείο που παρουσιάζεται συχνά σε παιχνίδια περιπέτειας. Συνήθως ο παίκτης αναλαμβάνει το ρόλο ενός χαρακτήρα και σταδιακά μαθαίνει την ιστορία του. Η πιο συχνή υποκατηγορία των παιχνιδιών περιπέτειας είναι τα point and click, όπου ο χρήστης χρησιμοποιεί το ποντίκι για να δώσει οδηγίες στο χαρακτήρα και να αλληλοεπιδράσει με το περιβάλλον. Ένα παράδειγμα αυτής της κατηγορίας είναι το Syberia II (2004). Εικόνα 19 (αριστερά). Syberia II (2004) Παράδειγμα παιχνιδιού κατηγορίας περιπέτειας. Στρατηγικής Τα παιχνίδια στρατηγικής (Strategy) δίνουν τη δυνατότητα στο χρήστη να διαχειρίζεται ένα μεγάλο πλήθος χαρακτήρων ή πολιτισμών. Σκοπός είναι διαχειριστεί σωστά τους πόρους που του δίνονται και να κάνει τις κατάλληλες κινήσεις έτσι ώστε να εκπληρώσει το στόχο του. Υπάρχουν ξεκάθαρα δυο υποκατηγορίες στα παιχνίδια στρατηγικής: 1. Στρατηγικής πραγματικού χρόνου (RTS Real Time Strategy): Ο παίκτης πρέπει ταυτόχρονα να διαχειρίζεται κάθε χαρακτήρα του παιχνιδιού. Αυτός ο τρόπος παιχνιδιού είναι εξαιρετικά έντονος και εξαντλητικός. Με την άνοδο των e-sports, τα RTS παιχνίδια είναι μια από της κυριότερες κατηγορίες ανταγωνιστικών παιχνιδιών, και μάλιστα παρουσιάζουν εξαιρετική δυσκολία σε υψηλό επίπεδο. Είναι αξιοσημείωτο το γεγονός ότι οι πρωταθλητές αυτής της κατηγορίας κάνουν παραπάνω από 300 ενέργειες το λεπτό για να παραμείνουν ανταγωνιστικοί. 46 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

47 2. Στρατηγικής με τη σειρά (TBS Turn Based Strategy): Αυτή η υποκατηγορία βασίζεται περισσότερο στη γενική στρατηγική που αναπτύσσει ο παίκτης κατά τη διάρκεια του παιχνιδιού. Κάθε παίκτης (ή πράκτορας αν παίζει και ο υπολογιστής) έχει ένα χρονικό όριο να κάνει τη κίνησή του και έπειτα περιμένει μέχρι να τελειώσουν οι υπόλοιποι παίκτες τη σειρά τους. Εικόνα 20. Starcraft II (2010) Παράδειγμα παιχνιδιού κατηγορίας RTS. Εικόνα 21. Heroes of Might and Magic V (2006) Παράδειγμα παιχνιδιού κατηγορίας TBS. Ρόλων Τα παιχνίδια ρόλων (RPG Role Playing Game) έχουν πολύ έντονο το στοιχείο της εξέλιξης του χαρακτήρα κατά τη διάρκεια του παιχνιδιού. Σε αντίθεση με άλλες κατηγορίες, το παιχνίδι είναι συνεχές και η πρόοδος του χαρακτήρα αποθηκεύεται συνεχώς. Τα παιχνίδια αυτά χαρακτηρίζονται από λεπτομερή ιστορία του κόσμου και είναι πλούσια σε διαλόγους. Ο παίκτης διαχειρίζεται αποκλειστικά ένα χαρακτήρα (εξού και παιχνίδι ρόλου) και προσπαθεί συνεχώς να γίνεται καλύτερος και να μαθαίνει νέες ικανότητες μέσω αποστολών ή εξερεύνησης. Το μέγεθος αυτών των παιχνιδιών είναι εξαιρετικά μεγάλο Εικόνα 22. World of Warcraft Παράδειγμα παιχνιδιού κατηγορίας MMORPG. Σκηνή δημιουργίας νέου χαρακτήρα. καθώς προσομοιώνουν την ύπαρξη ενός ολόκληρου κόσμου. Μπορούν να προσφέρουν πολλές ώρες παιχνιδιού στο χρήστη και συχνά ο παίκτης δένεται αρκετά με το χαρακτήρα του. Για αυτό το λόγο έχουν μεγάλη επιτυχία τα παιχνίδια ρόλων που συνδέουν τους παίκτες σε ένα ενιαίο κόσμο (MMORPG Massive Multiplayer Online Role Playing Game). Το πιο γνωστό και επιτυχημένο παιχνίδι αυτού του τύπου είναι το WoW (World of Warcraft), το οποίο δημιουργήθηκε το 2004 και είναι ακόμη ενεργό με πάνω από 7 εκατ. μηνιαίους συνδρομητές (το παιχνίδι απαιτεί μηνιαία συνδρομή επί πληρωμή). ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 47

48 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Σκόπευσης Τα παιχνίδια σκόπευσης (Shooter ή FPS) είναι παρόμοια με τα παιχνίδια δράσης, καθώς παρουσιάζουν όσα χαρακτηριστικά παρουσιάζουν και εκείνα. Για αυτό το λόγο αυτές οι κατηγορίες συχνά χρησιμοποιούνται ταυτόχρονα. Αυτό που τις διαφοροποιεί είναι πως στα παιχνίδια σκόπευσης χρειάζεται ιδιαίτερη προσπάθεια στη στόχευση και είναι πιο αφοσιωμένα στο τρόπο παιχνιδιού, παρά στη παρουσίαση κάποιας ιστορίας ή στη κινηματογράφηση των γεγονότων. Όπως και τα RTS, τα FPS είναι ιδιαίτερα ανταγωνιστικά και απαιτούν υψηλές δεξιότητες από τους παίκτες. Σε αυτά τα παιχνίδια οι παίκτες χωρίζονται σε ομάδες με σκοπό να εξοντώσουν την αντίπαλη ομάδα. Επομένως, απαιτείται επικοινωνία και συνεργασία μεταξύ παικτών. Μια από τις πιο γνωστές σειρές παιχνιδιών αυτού του τύπου είναι το Counter Strike, με τον τελευταίο τίτλο να είναι το Global Offensive. Εικόνα 23. Counter Strike: Global Offensive Παράδειγμα παιχνιδιού κατηγορίας σκόπευσης. Λόγω του υψηλού ανταγωνισμού, τα FPS είναι μια ακόμη κατηγορία που εμφανίζεται σε εκδηλώσεις ηλεκτρονικού αθλητισμού. Συγκεκριμένα, μια από αυτές τις εκδηλώσεις ήταν το Dreamhack 2014, όπου είχε έπαθλα αξίας δολαρίων για τους νικητές στο Counter Strike: Global Offensive. Προσομοίωσης Τα παιχνίδια προσομοίωσης (Simulation) συμπεριλαμβάνουν προσομοιώσεις αθλημάτων, οδήγησης, πτήσης και προσομοίωσης της δυναμικής μιας πόλης ή κοινωνίας. Λόγω των χαμηλών απαιτήσεων που έχουν από άποψη γραφικών και του ενδιαφέροντος που παρουσιάζουν, είναι από τις πρώτες κατηγορίες που έκαναν την εμφάνισή τους. Χαρακτηρίζονται από τη πληθώρα των επιλογών που έχει ο χρήστης και τη προσπάθειά τους να είναι όσο το δυνατό πιο κοντά στη πραγματικότητα. Εικόνα 24. Flight Simulator X Παράδειγμα παιχνιδιού κατηγορίας προσομοίωσης. 48 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

49 Ανοικτού Κόσμου Τα παιχνίδια ανοικτού κόσμου (Open World) δίνουν τη δυνατότητα στο χρήστη να επισκεφτεί ολόκληρο τον κόσμο του παιχνιδιού χωρίς περιορισμούς. Ο παίκτης αναλαμβάνει το ρόλο ενός χαρακτήρα χωρίς ιδιαίτερη ιστορία με σκοπό να επιβιώσει με οποιοδήποτε δυνατό τρόπο σκεφτεί. Του δίνεται η δυνατότητα να χρησιμοποιεί διάφορα αντικείμενα που βρίσκει στο περιβάλλον και να τα συνδυάζει έτσι ώστε να μπορέσει να επιβιώσει και να ανακαλύψει τον κόσμο. Χρειάζονται ιδιαίτερη ευρηματικότητα και δίνουν άπειρες δυνατότητες στο χρήστη. Πολλά παιχνίδια αυτής της κατηγορίας προσθέτουν επιπλέον εμπόδια ή στόχους ή τύπους παιχνιδιού για να τα κάνουν πιο ενδιαφέροντα. Το πιο επιτυχημένο παράδειγμα αυτής της κατηγορίας παιχνιδιών είναι το Minecraft (2009) με παραπάνω από 50 εκατ. πωλήσεις ως το Εικόνα 25. Minecraft Παράδειγμα παιχνιδιού κατηγορίας ανοικτού κόσμου και επιβίωσης. Arcade Η κατηγορία παιχνιδιών Arcade είναι η πρώτη κατηγορία παιχνιδιών που έκαναν τεράστια επιτυχία, κυρίως τις δεκαετίες του 1980 και Αποτελείται από παιχνίδια μικρά σε μήκος και απλά σε γραφικά τα οποία έχουν μανιώδη και εθιστικό gameplay. Τα νέα παιχνίδια αυτής της κατηγορίας προσπαθούν να μιμηθούν τα χαρακτηριστικά των παιχνιδιών που εμφανίστηκαν της προηγούμενες δεκαετίες και έχουν επίτηδες χαμηλής ποιότητας γραφικά. Άλλες κατηγορίες Αναφορικά κάποιες άλλες γνωστές κατηγορίες παιχνιδιών: Ατμοσφαιρικά: Βασίζονται στη τέχνη Casual: Εύκολα παιχνίδια με χαλαρό Gameplay Γρίφων Sandbox: Περιβάλλον δοκιμών Πλούσια σε ιστορία: Βασίζονται στη διήγηση. Τρόμου Stealth: Κατασκοπείας Καρτών Τεχνητής νοημοσύνης Φαντασίας Φυσικής ΜΟΒΑ Αγώνων Ταχύτητας Αθλημάτων ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 49

50 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ 3.2 ΑΝΑΠΤΥΞΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΠΑΙΧΝΙΔΙΩΝ Η ανάπτυξη ηλεκτρονικών παιχνιδιών είναι η διαδικασία κατά την οποία αναπτύσσεται ένα βιντεοπαιχνίδι. Όπως αναφέρει και ο Erik Bethke, η ανάπτυξη ηλεκτρονικών παιχνιδιών είναι ανάπτυξη λογισμικού (Bethke, 2003). Όπως κάθε άλλο είδος λογισμικού υπάρχουν πολλές πτυχές που πρέπει να ληφθούν υπόψιν για να είναι σωστό το τελικό προϊόν. Συγκεκριμένα, τα ηλεκτρονικά παιχνίδια είναι ιδιαίτερα απαιτητικές εφαρμογές καθώς σε κάθε χρονική στιγμή συνδυάζουν ήχο, εικόνα και τρόπο διαχείρισης (gameplay). Επομένως, είναι αρκετά σημαντικό πριν αρχίσει η διαδικασία ανάπτυξης να υπάρχει ένα καλά μελετημένο πλάνο. Παρόλα αυτά, τα τυπικά μοντέλα κύκλου ζωής λογισμικού (software life cycle methods), όπως το μοντέλο καταρράκτη (Bates, 2004), δεν είναι κατάλληλα για τα ηλεκτρονικά παιχνίδια, διότι δεν είναι εξαρχής ξεκάθαρες λεπτομερώς όλες οι απαιτήσεις του λογισμικού. Για αυτό το λόγο, χρειάζονται πιο ευέλικτες τεχνικές που βασίζονται στην επαναληπτική πρωτοτύπων. Αυτές οι τεχνικές βασίζονται στη συνεχή προσθήκη νέων και βελτιωμένων χαρακτηριστικών μέσω ανατροφοδότησης σε κάθε έκδοση. Εάν η ομάδα που αναπτύσσει το λογισμικό είναι αρκετά μεγάλη και έχει επαρκή προϋπολογισμό, μπορεί να εφαρμοστεί ένας συνδυασμός αυτών των μεθόδων. Δηλαδή, κάποια κομμάτια του λογισμικού, τα οποία έχουν ξεκάθαρες απαιτήσεις (όπως τα τρισδιάστατα μοντέλα ή τα ηχητικά κομμάτια) να δημιουργηθούν με τη μέθοδο καταρράκτη, ενώ η σχεδίαση του τρόπου παιχνιδιού (gameplay) να γίνει με τη μέθοδο ανατροφοδότησης Στάδια ανάπτυξης Συνήθως, η ανάπτυξη ενός ηλεκτρονικού παιχνιδιού συμπεριλαμβάνει τα στάδια που περιγράφονται παρακάτω. Ανάλογα με το είδος του παιχνιδιού και το σκοπό του, τα στάδια μπορεί να διαφέρουν ή να συμπεριλαμβάνουν διαφορετικές λειτουργίες. Τα στάδια αυτά περιγράφονται εξίσου όμοια από τους Bates και Bethke. Στάδιο Σχεδίασης Κατά τη διάρκεια της φάσης σχεδίασης ή αλλιώς προ-παραγωγής (σε ξένα έγγραφα συνήθως αναγράφεται ως pre-production) περιγράφεται μια αρχική αντίληψη του παιχνιδιού, όπως επίσης και την αρμοδιότητα κάθε μέλους της ομάδας που το υλοποιεί. Συγκεκριμένα, παράγεται η περιγραφή του παιχνιδιού, λεπτομερή έγγραφα σχεδίασης, έγγραφα που περιγράφουν τη διαδικασία ανάπτυξης του παιχνιδιού, όπως επίσης και κάποια πρωτότυπα που αναδεικνύουν τις τεχνικές που θα χρησιμοποιηθούν. Περιγραφή Η περιγραφή (High Concept) αποτελεί μια σύντομη περιγραφή του τελικού προϊόντος, αφοσιωμένη κυρίως στο είδος του και την εξέλιξη που θα έχει κατά τη διάρκεια παιχνιδιού (Moore, Novak, 2006). 50 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

51 Έγγραφο Πρότασης Το έγγραφο πρότασης (pitch), είναι ένα σχετικά σύντομο έγγραφο με σκοπό να παρουσιάσει τα κύρια σημεία που το καθιστούν ανταγωνιστικό και θα προωθήσουν τις πωλήσεις (Bethke, 2003). Συνήθως παρουσιάζεται στους εκδότες του παιχνιδιού με σκοπό να τους πείσει πως είναι κατάλληλο για έκδοση και θα αποδειχθεί επικερδής. Σε περίπτωση που οι εκδότες δεν έχουν πειστεί πλήρως, μπορεί να επαναληφθεί αυτή η φάση σχεδίασης μέχρι να φτάσει σε κάποιο επιθυμητό σημείο. Αυτή η φάση δεν υφίσταται σε περίπτωση που ο δημιουργός του παιχνιδιού είναι και ο εκδότης του. Αυτή η κατηγορία παιχνιδιών ονομάζεται indie (ανεξάρτητος). Έγγραφο Αντίληψης Το έγγραφο αντίληψης (concept document) είναι μια πιο λεπτομερής έκδοση του εγγράφου πρότασης. Συμπεριλαμβάνει κάθε πληροφορία σχετικά με το παιχνίδι που έχει προκύψει από την ως τώρα διαδικασία. Συγκεκριμένα, πρέπει να περιέχει: Τις κατηγορίες στις οποίες ανήκει το παιχνίδι Εκτενή περιγραφή του τρόπου χειρισμού του παιχνιδιού (Gameplay) Ιδιαίτερα χαρακτηριστικά Τη σύνθεση του κόσμου που περικλείει το παιχνίδι Την ιστορία Το στοχευμένο κοινό Τις προδιαγραφές του υλικού και άλλες παρόμοιες απαιτήσεις Μια εκτίμηση για το χρονικό προγραμματισμό της ανάπτυξης του παιχνιδιού Ανάλυση του μάρκετινγκ, εμπορικό πλάνο και ανάλυση ρίσκου Πλήρη προδιαγραφές της ομάδας Κατά τη διάρκεια της ανάπτυξης αυτού του εγγράφου κάποια μέλη της ομάδας μπορούν ήδη να ξεκινήσουν την παραγωγή. Οι προγραμματιστές και οι καλλιτέχνες είναι συνήθως αυτοί που ξεκινάνε πρώτα. Ιδιαίτερα σε περιπτώσεις που το παιχνίδι παρουσιάζει κάποια χαρακτηριστικά που το καθιστούν ξεχωριστό (δηλαδή κάποια νέα τεχνολογία ή κάτι καινοτόμο), οι προγραμματιστές θα ξεκινήσουν να υλοποιούν αυτά πρώτα για να δείξουν στα ενδιαφερόμενα μέλη (stakeholders) την αξία του παιχνιδιού και να κερδίσουν την εμπιστοσύνη τους. Οι καλλιτέχνες αναλαμβάνουν να αναπτύξουν λεπτομέρειες για τα στοιχεία (assets) που θα συμπεριληφθούν στη τελική έκδοση του παιχνιδιού. Σε αυτή τη φάση συνήθως έχει εγκριθεί η ανάπτυξη του παιχνιδιού, αλλά υπάρχουν περιπτώσεις στις οποίες η ομάδα αποφασίζει να ολοκληρώσει πρώτα το στάδιο σχεδίασης για να έχει πιθανώς περισσότερους ενδιαφερόμενους. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 51

52 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Έγγραφο Σχεδίασης Το έγγραφο σχεδίασης αρχικά συμπεριλαμβάνει ό,τι και το έγγραφο αντίληψης, αλλά με περισσότερες λεπτομέρειες. Περιγράφει λεπτομερώς κάθε στοιχείο του παιχνιδιού. Συχνά περιέχει αρχικά σχέδια από τους καλλιτέχνες, όπως και πρωτότυπα κομμάτια λογισμικού από τους προγραμματιστές. Η κύρια διαφορά με το έγγραφο αντίληψης είναι πως το έγγραφο σχεδίασης συνεχίζει να εξελίσσεται και να ενημερώνεται κατά τη διαδικασία ανάπτυξης του παιχνιδιού, έως και το τέλος. Η συχνή ενημέρωσή του είναι σημαντική καθώς δείχνει τη πρόοδο του παιχνιδιού, όπως και βεβαιώνει πως το παιχνίδι δε ξεφεύγει από την αρχική σχεδίαση (εκτός εάν επανασχεδιαστεί). Πρωτότυπο Είναι σημαντικό στη φάση σχεδίασης να αναπτυχθεί ένα ή περισσότερα πρωτότυπα. Αυτά τα πρωτότυπα αναδεικνύουν τα κύρια χαρακτηριστικά του παιχνιδιού και, ειδικότερα, δίνουν τη δυνατότητα στους προγραμματιστές να δοκιμάσουν ποιοι αλγόριθμοι θα είναι καταλληλότεροι για κάθε έργο. Με αυτό τον τρόπο εξασφαλίζεται πως η σχεδίαση του παιχνιδιού που προέκυψε από τις προηγούμενες φάσεις είναι ρεαλιστική και βοηθά να επαναπροσδιοριστούν τα διάφορα χαρακτηριστικά του παιχνιδιού. Κάποιες φορές αναπτύσσονται περισσότερα από ένα πρωτότυπα με διαφορετική υλοποίηση, με σκοπό να δοκιμαστούν κάποιες ιδέες ή να βοηθήσουν την ομάδα να καταλήξει σε μια λύση σε περίπτωση που είναι σίγουρη. Τα πρωτότυπα είναι κυρίως απόδειξη πως το προϊόν είναι καλά σχεδιασμένο, βοηθούν στη δοκιμασία κάποιων ιδεών και χρησιμοποιούνται ως σκελετός για να προστίθενται ή να αφαιρούνται χαρακτηριστικά τα οποία είναι αμφισβητήσιμα είτε από την ομάδα ανάπτυξης είτε από τους διάφορους ενδιαφερόμενους. Για να επιταχυνθεί η διαδικασία και να μην ξοδευτεί μεγάλο κομμάτι του προϋπολογισμού, ή ακόμη και χρόνος, τα πρωτότυπα μπορεί να βασίζονται σε πρωτότυπα προηγουμένων παιχνιδιών που έχει υλοποιήσει η ομάδα, αλλαγμένα ελάχιστα έτσι ώστε να ταιριάζουν στο εκάστοτε παιχνίδι. Εναλλακτικά, μπορεί να χρησιμοποιηθούν κομμάτια από άλλα πρωτότυπα. Στάδιο Παραγωγής Η παραγωγή είναι το κύριο στάδιο στη διαδικασία ανάπτυξης του παιχνιδιού. Σε αυτό το στάδιο υλοποιείται κατά κόρον το περισσότερο μέρος του παιχνιδιού και κάθε μέλος της ομάδας εργάζεται στο μέγιστο. Σχεδίαση Η σχεδίαση του παιχνιδιού είναι το σημαντικότερο κομμάτι κατά το στάδιο παραγωγής. Σχεδιάζεται λεπτομερώς το περιεχόμενο του παιχνιδιού, οι κανόνες που το απαρτίζουν και τα χαρακτηριστικά του. Η σχεδίαση αποτελεί οδηγό για τις υπόλοιπες διαδικασίες παραγωγής και απαιτεί την συχνή επικοινωνία μεταξύ μελών της ομάδας. Επίσης, η ομάδα σχεδίασης είναι αρμόδια να διατηρεί το έγγραφο σχεδίασης ενημερωμένο. 52 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

53 Προγραμματισμός Ο προγραμματισμός του παιχνιδιού διεκπεραιώνεται από έναν ή και περισσότερους προγραμματιστές, οι οποίοι διαρκώς αναπτύσσουν νέα πρωτότυπα για να δοκιμάσουν νέες ιδέες ή χαρακτηριστικά για το παιχνίδι. Οι ιδέες και τα χαρακτηριστικά αυτά μπορεί να μην προστεθούν στη τελική έκδοση του παιχνιδιού. Παρόλο που πλέον υπάρχουν εργαλεία για να αυτοματοποιούν μεγάλο μέρος του προγραμματισμού, κάθε λεπτομέρεια που εμφανίζεται στο παιχνίδι χρειάζεται ειδικότερη διαχείριση και, επομένως, απαιτείται μεγάλος φόρτος εργασίας για να ολοκληρωθεί. Καθ όλη τη διάρκεια του προγραμματισμού του παιχνιδιού, οι προγραμματιστές αναλαμβάνουν να διορθώνουν προβλήματα (bugs) που μπορεί να προκύψουν σε οποιαδήποτε στιγμή κατά την υλοποίηση. Είναι σημαντικό οι προγραμματιστές να λάβουν υπόψιν τους πως θα πρέπει το παιχνίδι διαρκώς να ενημερώνεται, ή να προστίθεται νέο υλικό. Επομένως, πρέπει να γίνει προσεκτικά η σχεδίαση των κλάσεων και να ληφθούν τα απαραίτητα μέτρα έτσι ώστε η επικοινωνία μεταξύ κλάσεων να γίνεται σωστά. Πέρα από το μελλοντικό περιεχόμενο, μια δυσκολία που προκύπτει στο προγραμματισμό ενός παιχνιδιού είναι πως συχνά συμβαίνουν πολλά πράγματα ταυτόχρονα. Επομένως πρέπει στους αλγορίθμους που υλοποιούνται να λαμβάνεται πάντα υπόψιν η κατάσταση της σκηνής. Σχεδίαση Επιπέδων Η σχεδίαση επιπέδων (level design) είναι κυρίως αρτιστική διαδικασία. Χτίζονται σταδιακά όλες οι σκηνές που λαμβάνουν μέρος στο παιχνίδι. Πρέπει να λαμβάνεται συνεχώς υπόψιν ο σχεδιασμός του παιχνιδιού, όπως αυτός αναγράφεται στο έγγραφο σχεδίασης, όπως επίσης και η ιστορία του κόσμου. Είναι σημαντικό να υπάρχει διαρκή επικοινωνία μεταξύ των σχεδιαστών και των προγραμματιστών, έτσι ώστε να τοποθετούν τα αντικείμενα στη σκηνή με κάποιους κανόνες. Συνήθως πρώτα σχεδιάζεται ο σκελετός κάθε σκηνής και έπειτα υλοποιούνται οι λεπτομέρειες, κυρίως διότι μπορεί να αλλάξει ο τρόπος υλοποίησης τους παιχνιδιού με τον καιρό. Αναλόγως με το είδος του παιχνιδιού, η σπουδαιότητα αυτής της διαδικασίας και ο φόρτος που απαιτεί αλλάζει σημαντικά. Για παράδειγμα, ένα παιχνίδι ρόλων σαν το World of Warcraft το οποίο συμπεριλαμβάνει ηπείρους και χώρες απαιτεί τεράστιο φόρτο σε σχέση με ένα παιχνίδι παζλ σαν το Tetris, το οποίο έχει ένα μονόχρωμο φόντο. Οπτική Τέχνη Είτε δισδιάστατο είτε τρισδιάστατο, κάθε παιχνίδι είναι συνδυασμός εικόνας και ήχου. Επομένως η σωστή σχεδίαση της τέχνης που περιλαμβάνει το παιχνίδι είναι ιδιαίτερα σημαντικό. Μάλιστα υπάρχει υπο-κατηγορία παιχνιδιών η οποία βασίζεται κυρίως στη τέχνη, τα ατμοσφαιρικά παιχνίδια. Αναλόγως με το προσανατολισμό του παιχνιδιού, είτε θα δημιουργηθούν εικόνες Sprites για τα δισδιάστατα παιχνίδια, είτε μοντέλα για τα τρισδιάστατα. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 53

54 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Τα Sprites είναι δισδιάστατες εικόνες που συχνά περιέχουν ένα χαρακτήρα ζωγραφισμένο σε μια χρονοσειρά με σκοπό να προσομοιώσουν κίνηση. Τα 3D μοντέλα χρησιμοποιούνται κυρίως σε τρισδιάστατα παιχνίδια και έχουν τη δυνατότητα να εκτελούν κάθε είδος κίνησης. Εικόνα 26. Παράδειγμα εικόνας Sprite από το παιχνίδι Braid. Εικόνα 27. Παράδειγμα τρισδιάστατου μοντέλου από το παιχνίδι αυτής της εργασίας. Εκτός από τους χαρακτήρες, τα αντικείμενα, το περιβάλλον και το φόντο η ομάδα τέχνης πρέπει επίσης να σχεδιάσει και τη γραφική διεπαφή χρήστη (GUI). Ηχητική Τέχνη Επίσης μεγάλο κομμάτι της τέχνης είναι η μουσική και τα ηχητικά εφέ. Καθώς η μουσική έχει τη δυνατότητα να προκαλέσει συναισθήματα στο χρήστη, είναι σημαντικό να υλοποιηθεί σωστά τόσο από πλευράς σύνθεσης όσο και από πλευράς εκτέλεσης μέσα στο παιχνίδι. Τα ηχητικά εφέ είναι εξίσου σημαντικά καθώς ζωντανεύουν το παιχνίδι μέσω της ανατροφοδότησης που δίνουν στο χρήστη για τις διάφορες ενέργειες που μπορεί να κάνει (για παράδειγμα, εάν το παιχνίδι είναι πολεμικό και πυροβολήσει έναν ατσαλένιο τοίχο θα πρέπει να κάνει διαφορετικό ήχο απ ότι ένα ξύλινο κουτί). Οι ήχοι στα παιχνίδια μπορούν να διαχωριστούν σε τρεις κύριες κατηγορίες: - Ηχητικά εφέ - Μουσική - Φωνές Ο τρόπος με τον οποίο εισάγονται οι ήχοι στη σκηνή μπορεί να διαφέρουν και είναι αποφασιστικός παράγοντας στη διαδικασία εμπλουτισμού ενός παιχνιδιού με ήχο. - Μουσική περιβάλλοντος (ambient): Έχει κύριο σκοπό να ενισχύσει την αισθητική του επιπέδου. - Ενεργοποίηση μέσω γεγονότος: Είτε ως ανατροφοδότηση όπως περιεγράφηκε, είτε ως γεγονότος της κατάστασης του παιχνιδιού (για παράδειγμα όταν νικάει ο παίκτης). - Μουσικά κομμάτια: Σε ιδιαίτερες στιγμές του παιχνιδιού για να δώσουν έμφαση. - Φωνές: Παρουσιάζονται είτε σε διάλογο μεταξύ χαρακτήρων είτε ως κραυγές. 54 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

55 Δοκιμές Στο τέλος κάθε έκδοσης του παιχνιδιού, είναι σημαντικό να γίνει μια αποτίμηση της ποιότητας αυτού. Αρχικά γίνονται εσωτερικά τεστ, γνωστά και ως Alpha Test, κυρίως από τους δημιουργούς του παιχνιδιού, είτε ειδικούς που προσλήφθηκαν για αυτό το σκοπό. Οι δοκιμαστές πρέπει να παίξουν το παιχνίδι και να το δοκιμάσουν με κάθε δυνατό τρόπο με σκοπό να βρουν όσα περισσότερα προβλήματα γίνεται. Καθώς βγαίνουν νέες εκδόσεις του παιχνιδιού, παρόλο που μπορεί να μην αφορούν όλο το περιεχόμενο, το παιχνίδι πρέπει να δοκιμαστεί εξ ολοκλήρου, καθώς μπορεί να προκύψουν προβλήματα σε απροσδόκητα κομμάτια κώδικα. Επίσης, είναι σημαντικό να δοκιμάζεται το παιχνίδι σε υπολογιστές με μεγάλο εύρος υπολογιστικής ισχύς, έτσι ώστε να φανούν προβλήματα σε κάθε είδους hardware. Όταν το παιχνίδι κοντεύει τη 1 η επίσημη έκδοσή του, γίνεται ένας ευρύτερος, εξωτερικός έλεγχος, γνωστός ως Beta Test. Στο Beta Test μπορεί να προσκληθούν παίκτες από το κοινό για να βοηθήσουν σε αυτή τη διαδικασία. Καθώς το παιχνίδι είναι σχεδόν έτοιμο, παραμένουν ελάχιστα, δυσεύρετα προβλήματα. Επομένως, εάν αυξηθεί ο αριθμός δοκιμαστών αυξάνονται και οι πιθανότητες να βρεθούν αυτά τα προβλήματα. Τα τελευταία χρόνια οι εκδότες εκμεταλλεύονται αυτή τη διαδικασία για να διαφημίσουν το παιχνίδι τους. Όταν φτάσει σε σημείο να είναι έτοιμο για beta test, προσκαλούν άτομα από τον τύπο για να βαθμολογήσουν το παιχνίδι προτού το κάνουν διαθέσιμο, αλλά παράλληλα να είναι επιεικείς λόγω της κατάστασής του (beta). Επίσης, δίνουν πρόσβαση σε γνωστά πρόσωπα του χώρου, κυρίως παίκτες (streamers ή γνωστά άτομα στο youtube) με σκοπό να παίξουν το παιχνίδι νωρίτερα από τους υπόλοιπους και να πάρουν δημοσιότητα μέσω αυτών. Κάποια παιχνίδια δίνουν τη δυνατότητα στους αγοραστές να κάνουν προπαραγγελία έτσι ώστε να έχουν νωρίτερα πρόσβαση (early access) από τους υπόλοιπους παίκτες ή να έχουν περισσότερο περιεχόμενο. Αυτό είναι καθαρά τεχνική για να αυξηθούν οι πωλήσεις, καθώς πλέον η αποστολή των προϊόντων γίνεται σχεδόν αποκλειστικά ηλεκτρονικά, και επομένως δεν είναι απαραίτητο να τυπώσουν κουτιά και DVD για τις προπαραγγελίες. Στάδιο Έκδοσης Το τελικό στάδιο στην δημιουργία ενός παιχνιδιού είναι η έκδοσή του. Η επιλογή πλατφόρμας διάθεσης του προϊόντος αποτελεί σημαντικό βήμα κατά την έκδοση του παιχνιδιού. Η πλειοψηφία των παιχνιδιών διατίθενται κυρίως μέσω του Steam, μια πλατφόρμα αγοράς και διάθεσης ηλεκτρονικών παιχνιδιών, κυρίως λόγω της δημοσιότητάς του (έως και 10 εκατ. παίκτες το χρησιμοποιούν καθημερινά σύμφωνα με τις επίσημες αναφορές του Steam τον Ιούνιο του 2015). Μεγαλύτερες επιχειρήσεις επιλέγουν να μη διαθέσουν τα παιχνίδια τους στο Steam, κυρίως ως στρατηγική επιλογή, όμως τα τελευταία χρόνια όλο και περισσότεροι μεγάλοι τίτλοι γίνονται διαθέσιμοι μέσω του steam. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 55

56 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Συντήρηση Αφού το παιχνίδι γίνει διαθέσιμο, παραμένει σε φάση συντήρησης. Οι δημιουργοί του παιχνιδιού μπορούν να συντηρούν το λογισμικό μέσω αναβαθμίσεων (patches). Αυτές οι αναβαθμίσεις περιέχουν μόνο το περιεχόμενο που πρόκειται να αλλάξει ή είναι καινούριο, επομένως είναι μικρές σε μέγεθος και εύκολες σε εγκατάσταση. Σε μεγάλη πλειοψηφία, η αναβάθμιση γίνεται αυτόματα και οι παίκτες δε πρέπει να κάνουν την εγκατάσταση χειροκίνητα. Οι προγραμματιστές συνήθως περιμένουν να μαζευτεί ένας αριθμός από προβλήματα ή να περάσει ένα χρονικό διάστημα μέχρι να εκδώσουν μια νέα αναβάθμιση. Πολλές φορές μπορεί να πάρει αρκετές εβδομάδες έως και μήνες μέχρι να βγει νεότερη έκδοση. Είναι αξιοσημείωτο πως τα παιχνίδια που είναι υλοποιημένα για κονσόλες έχουν ελάχιστη περίοδο συντήρησης. Ο λόγος για αυτό είναι πως οι κονσόλες δεν είχαν σύνδεση με το ίντερνετ και, επομένως, θα έπρεπε να ξανατυπωθούν και διανεμηθούν τα παιχνίδια σε 2 η έκδοση. Ένας ακόμη λόγος είναι πως οι κονσόλες δεν αναβαθμίζονται σε hardware μέχρι να βγει η επόμενη γενιά, άρα μπορεί να μην μπορούν να υποστηρίξουν αναβαθμίσεις. Τα τελευταία χρόνια όμως αυτό τείνει να αλλάξει, καθώς η πλειοψηφία τους έχουν σταθερή σύνδεση με το ίντερνετ και έχουν τη δυνατότητα να εγκαταστήσουν εύκολα κάποια νεότερη έκδοση. Πέρα από την έκδοση αναβαθμίσεων και νεότερων εκδόσεων του παιχνιδιού, είναι σημαντικό οι δημιουργοί να έχουν συνεχή επαφή με τους παίκτες για να παραμείνει το παιχνίδι ενεργό Ομάδα ανάπτυξης Το μέγεθος μιας ομάδας ανάπτυξης ενός ηλεκτρονικού παιχνιδιού κυμαίνεται από έναν μόνο προγραμματιστή σε εκατοντάδες άτομα. Κάποια άτομα έχουν παραπάνω από ένα ρόλο και συνήθως δημιουργούνται υπο-ομάδες για να είναι πιο εύκολη η οργάνωση και η επικοινωνία. Σχεδιαστής Ο σχεδιαστής του παιχνιδιού αναλαμβάνει να σχεδιάσει το gameplay, τους κανόνες και τη δομή που θα έχει το παιχνίδι. Είναι ο κύριος δημιουργός του παιχνιδιού και αναλαμβάνει να γράψει όλα τα σχετικά έγγραφα (βλ ). Είναι αυτός που γράφει την ιστορία, τους διαλόγους, τις σκηνές, τη περιγραφή των αντικειμένων και των χαρακτήρων, τα μηνύματα προς το χρήστη, τους μηχανισμούς του παιχνιδιού και κάθε άλλο στοιχείο σχετικό με την υπόθεση και το είδος του παιχνιδιού. Ένας από τους σχεδιαστές αναλαμβάνει να είναι επικεφαλής της ομάδας και είναι αυτός που θα συντονίζει τους σχεδιαστές, θα διαμοιράζει καθήκοντα, θα ελέγχει την πρόοδο του παιχνιδιού και θα επικοινωνεί με τις υπόλοιπες ομάδες. Καλλιτέχνης Ο καλλιτέχνης αναλαμβάνει να αναπτύξει την οπτική τέχνη που θα συμπεριλαμβάνει το παιχνίδι. Τη σχεδίαση θα τη κάνει πάντα σύμφωνα με τις προδιαγραφές και τις 56 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

57 περιγραφές που θα έχουν δώσει οι σχεδιαστές. Εάν το παιχνίδι είναι δισδιάστατο θα πρέπει να δημιουργήσει όλα τα sprites και κάθε φόντο που θα χρησιμοποιήσουν, ενώ εάν είναι τρισδιάστατο θα πρέπει να δημιουργήσει τα 3D μοντέλα, όπως και τα texture τους. Σε κάθε περίπτωση θα πρέπει επίσης να σχεδιάσει τη κύρια γραφική διεπαφή με το χρήστη (GUI). Ο επικεφαλής καλλιτέχνης αναλαμβάνει να διαμοιράσει καθήκοντα, όπως και να εξασφαλίσει πως υπάρχει ομοιομορφία στη δουλειά που παράγει κάθε καλλιτέχνης και πως αυτή συμμορφώνεται στη περιγραφή που δόθηκε από τους σχεδιαστές. Προγραμματιστής Ο προγραμματιστής αναλαμβάνει την ανάπτυξη του λογισμικού που αποτελεί το παιχνίδι. Λόγω της περιπλοκότητας του λογισμικού ο προγραμματιστής αναλαμβάνει να υλοποιήσει κάτι πολύ συγκεκριμένο, με βάση τις οδηγίες που του έχουν δοθεί από τον επικεφαλής και θα πρέπει να το υλοποιήσει όσο πιο ανεξάρτητο γίνεται. Έπειτα ένας από τους επικεφαλείς αναλαμβάνει να ενώσει τα κομμάτια έτσι ώστε να λειτουργούν αρμονικά σε οποιαδήποτε κατάσταση και εάν βρεθεί το παιχνίδι. Κάποια από αυτά τα κομμάτια είναι: Κανόνες και συμπεριφορές φυσικής: Η προσομοίωση της φυσικής στον εκάστοτε κόσμο, όπως αυτή συμπεριλαμβάνει κίνηση, συγκρούσεις, είδη υλικών, τριβή, αντιστάσεις, καιρικές συνθήκες κ.α. Γραφικά: Η συμπεριφορά των γραφικών στοιχείων και του υλικού που έχουν παράγει οι καλλιτέχνες. Θα πρέπει να βελτιστοποιηθεί η επίδοση του παιχνιδιού χρησιμοποιώντας τη καλύτερη έκδοση των γραφικών. Τρόπος Παιχνιδιού (Gameplay): Υλοποίηση των κανόνων που διέπουν το παιχνίδι όσον αφορά τον τρόπο παιχνιδιού και χειρισμού. Διεπαφή Χρήστη: Διαχείριση της διεπαφής έτσι ώστε να ανταποκρίνεται στις επιλογές του χρήστη και να προσφέρει τις αναγκαίες επιλογές, όπως αυτές αναγράφονται στο έγγραφο σχεδίασης. Σύνδεση Δικτύου: Διαχείριση της σύνδεσης με το διαδίκτυο όπως και επικοινωνία με διακομιστές σε περίπτωση που το παιχνίδι παίζεται μέσω διαδικτύου. Τεχνητή Νοημοσύνη: Ανάπτυξη κάθε είδους τεχνητής νοημοσύνης που εμφανίζεται στο παιχνίδι, είτε με τη μορφή NPC, είτε με τη μορφή ενός συμπαίκτη ή αντιπάλου. Άλλα όπως ηχητικά εφέ, γραφικά εφέ, επικοινωνία με περιφερειακές συσκευές ή χρηματικές συναλλαγές. Εάν το μέγεθος της ομάδας το επιτρέπει για κάθε ένα κομμάτι θα υπάρχει ένας ή περισσότεροι προγραμματιστές. Συχνά υπάρχουν περισσότεροι από έναν επικεφαλείς καθώς είναι μεγάλο και περίπλοκο κομμάτι. Αυτοί αναλαμβάνουν να θέσουν βάσεις για τη σχεδίαση των κλάσεων και των λειτουργιών και να συνδέσουν τα κομμάτια στο τέλος. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 57

58 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Σχεδιαστής Επιπέδου Ο σχεδιαστής επιπέδου δημιουργεί τα επίπεδα και όσα αυτά συμπεριλαμβάνουν, όπως τοποθέτηση αντικειμένων στη σκηνή, χρήση του κώδικα, δημιουργία αποστολών, διαλόγων και άλλα. Ουσιαστικά στήνουν κάθε σκηνή με το υλικό που τους δίνεται από τις υπόλοιπες ομάδες, όπως αυτό περιγράφεται στο έγγραφο σχεδίασης. Η διαδικασία αυτή διαφέρει σε δυσκολία ανάλογα με τη μηχανή που χρησιμοποιείται για να δημιουργηθεί το παιχνίδι. Μηχανικός Ήχου Ο μηχανικός ήχου αναλαμβάνει πλήρως να αναπτύξει κάθε ηχητικό εφέ ή μουσικό κομμάτι που χρησιμοποιείται στο παιχνίδι, όπως και να υποδείξει στους προγραμματιστές και τους σχεδιαστές επιπέδου τον τρόπο με τον οποίο αυτό θα εντάσσεται στη σκηνή. Συχνά αυτός ο ρόλος ανατίθεται σε τρίτους (outsourcing), λόγω του ότι υπάρχει η δυνατότητα να υλοποιηθεί ξεχωριστά από τα υπόλοιπα κομμάτια και κοστίζει λιγότερο. Δοκιμαστής Ο δοκιμαστής αναλαμβάνει να διαβεβαιώσει πως η ποιότητα του λογισμικού είναι υψηλή και πως αυτό είναι σχεδιασμένο ακριβώς όπως περιγράφεται στο έγγραφο σχεδίασης. Η δοκιμασία του παιχνιδιού απαιτεί ειδικά εργαλεία και πολλές φορές ειδικότερη γνώση από το δοκιμαστή. Πέρα από προβλήματα μπορούν επίσης να αναφέρουν την εμπειρία τους ή άλλα σχόλια σχετικά με την ποιότητα σχεδίασης του παιχνιδιού. Ανάλογα με την έκδοση του παιχνιδιού ο δοκιμαστής μπορεί να ψάχνει γενικά προβλήματα ή βελτιώσεις στο παιχνίδι, ή να δοκιμάζει κάποια συγκεκριμένη λειτουργία. 3.3 ΣΚΟΠΟΣ ΤΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΠΑΙΧΝΙΔΙΩΝ Τα περισσότερα ηλεκτρονικά παιχνίδια αναπτύσσονται ως ψυχαγωγικό εμπορικό προϊόν με σκοπό να πουλήσουν όσο το δυνατό περισσότερα κομμάτια. Υπάρχουν όμως παιχνίδια που αναπτύσσονται με σκοπό την εκπαίδευση και εκμάθηση. Καθώς όλο και περισσότερα παιδιά εκτίθενται στη τεχνολογία και παίζουν παιχνίδια, η ζήτηση για τέτοιου είδους παιχνίδια συνεχώς αυξάνεται. Το πλεονέκτημα αυτών των παιχνιδιών είναι πως έχουν εν δυνάμει τη δυνατότητα να προσαρμόζονται στις ανάγκες και το επίπεδο του κάθε μαθητή, κάτι που δεν είναι εφικτό σε μια παραδοσιακή τάξη ενός σχολείου. Η επίλυση προβλημάτων είναι κυρίως το αντικείμενο αυτών των παιχνιδιών, όμως υπάρχουν και άλλα που επικεντρώνονται στη ταχύτητα αντίδρασης ή την εξάσκηση σε μαθήματα όπως τη φυσική ή τα μαθηματικά. Επίσης, υλοποιούνται παιχνίδια για ενήλικες τα οποία βοηθούν στην εξάσκηση της μνήμης και την αποφυγή της νόσου Αλτσχάιμερ. Τέλος, υλοποιούνται και παιχνίδια με σκοπό την εκπαίδευση υπό την αποφυγή κινδύνων. Κυρίως αυτά είναι υπερ-ρεαλιστικά παιχνίδια προσομοίωσης πάνω σε πραγματικά μοντέλα και χρησιμοποιούνται αποκλειστικά από εταιρίες που εκπαιδεύουν προσωπικό. 58 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

59 Κ Ε Φ Α Λ Α Ι Ο 4 : Π Ε Ρ Ι Γ Ρ Α Φ Η Τ Ο Υ Π Α Ι Χ Ν Ι Δ Ι Ο Υ

60

61 ΠΕΡΙΓΡΑΦΗ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ Το παιχνίδι που υλοποιήθηκε για αυτή την εργασία ονομάστηκε Robby s Enigma και ανήκει στις εξής κατηγορίες: Τρισδιάστατο Από ψηλά Γρίφου Τεχνητής νοημοσύνης Sandbox Casual Σύμφωνα με τη τρέχουσα έκδοση (0.4a), το παιχνίδι προσφέρει στο χρήστη ένα επίπεδο μορφής Sandbox, όπου αυτός δοκιμάζει τη συμπεριφορά του πράκτορα και προσπαθεί να χτίσει ένα λαβύρινθο μετ εμποδίων. Ο πράκτορας εμφανίζεται με τη μορφή ρομπότ, στόχος του οποίου είναι να φτάσει τη σημαία που τοποθετεί ο παίκτης, προσπερνώντας τα εμπόδια που συναντά, με όσα λιγότερα βήματα είναι δυνατό. 4.1 ΟΙ ΚΑΝΟΝΕΣ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ Κάθε επίπεδο του παιχνιδιού, πέρα από το διακοσμητικό περιβάλλον, αποτελείται από ένα πλέγμα Το πλέγμα αυτό αποτελεί τον κόσμο του παιχνιδιού και κάθε αντικείμενο σχετικό με το πρόβλημα τοποθετείται πάνω σε αυτό το πλέγμα. Το μέγεθος αυτού του πλέγματος μπορεί να διαφέρει από επίπεδο σε επίπεδο, όμως είναι απαραίτητο για να λειτουργήσει το παιχνίδι. Εικόνα 28 (δεξιά). Το πλέγμα ενός επιπέδου, μεγέθους 10 επί 10. Ο παίκτης έχει τη δυνατότητα να τοποθετεί αντικείμενα πάνω στα κουτάκια του πλέγματος. Κατά τη διάρκεια σχεδίασης επιτρέπεται να περιέχει μόνο ένα αντικείμενο το κάθε κουτάκι, παρόλο που αργότερα το ρομπότ μπορεί να βρεθεί στο ίδιο κουτάκι με κάποιο άλλο αντικείμενο. Τα αντικείμενα που είναι διαθέσιμα στον παίκτη είναι τα εξής:

62 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Ρομπότ: Το κύριο αντικείμενο του παιχνιδιού. Αποτελεί τον πράκτορα που αργότερα θα προσπαθήσει να φτάσει τη σημαία που τοποθετεί ο παίκτης. Είναι απαραίτητο να υπάρχει το ρομπότ στη σκηνή για να μπορέσει να βρεθεί η λύση στο πρόβλημα, όπως επίσης και μπορεί να τοποθετηθεί μόνο ένα ρομπότ συνολικά. Εικόνα 29. Αντικείμενο του παιχνιδιού - Ρομπότ. Σημαία: Η σημαία αποτελεί το στόχο του πράκτορα. Η μόνη της χρήση είναι να σημειώσει την επιθυμητή θέση που θα πρέπει να φτάσει το ρομπότ. Εικόνα 30. Αντικείμενο του παιχνιδιού - Σημαία. Πόρτα: Η πόρτα αποτελεί αδιαπέραστο εμπόδιο για το ρομπότ και ο μόνος τρόπος να τη διαπεράσει είναι να την ξεκλειδώσει χρησιμοποιώντας το κλειδί που της αντιστοιχεί. Εικόνα 31. Αντικείμενο του παιχνιδιού - Πόρτα. 62 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

63 Κλειδί: Κάθε κλειδί αντιστοιχεί αποκλειστικά σε μία πόρτα. Μπορεί πολλά κλειδιά να ξεκλειδώνουν την ίδια πόρτα, όμως δεν γίνεται ένα κλειδί να ξεκλειδώνει δύο διαφορετικές πόρτες. Όπως και κάθε άλλο αντικείμενο, τοποθετείται σε ένα κουτάκι στο πλέγμα και δεν γίνεται να τοποθετηθεί μαζί με κάποιο άλλο αντικείμενο. Εικόνα 32. Αντικείμενο του παιχνιδιού - Κλειδί. Τοίχος: Ο τοίχος αποτελεί τον κύριο τύπο εμποδίων. Υπάρχουν τέσσερα είδη τοίχων ανάλογα με τις ιδιότητές τους. o Ψηλός: Το ρομπότ δεν μπορεί να περάσει από πάνω. o Άθραυστός: Δεν μπορεί να καταστραφεί Εικόνα 33. Αντικείμενο του παιχνιδιού Τοίχος. Το ρομπότ, αναλόγως με το είδος του επιπέδου, μπορεί να εκτελέσει τις εξής ενέργειες: Κίνηση: Το ρομπότ έχει τη δυνατότητα να κινηθεί κατά ένα κουτάκι προς τα αριστερά, δεξιά, πάνω ή κάτω. Δηλαδή, δεν μπορεί να εκτελέσει διαγώνιες κινήσεις ή να σταματήσει ενδιάμεσα από δύο κουτιά. Για να είναι εφικτή αυτή η κίνηση το κουτάκι θα πρέπει να είναι εφικτό. Άλμα: Το ρομπότ έχει τη δυνατότητα να αναπηδήσει πάνω από ένα τοίχο, εφόσον είναι κατάλληλα εξοπλισμένο [1] και ο τοίχος που προσπαθεί να περάσει δεν είναι ψηλός. Χτύπημα: Το ρομπότ έχει τη δυνατότητα να καταστρέψει έναν τοίχο εφόσον είναι κατάλληλα εξοπλισμένο [1] και ο τοίχος που προσπαθεί να καταστρέψει δεν είναι άθραυστος. Η διαφορά με το άλμα είναι πως ο τοίχος καταστρέφεται μόνιμα και το ρομπότ θα έχει τη δυνατότητα απλά να κινηθεί εάν θέλει να ξαναπεράσει από εκείνο το σημείο. Συλλογή αντικειμένου: Το ρομπότ μπορεί να έχει τη δυνατότητα [1] να κρατήσει ένα αντικείμενο στο χέρι του, εάν αυτό το αντικείμενο είναι κατάλληλο. Εάν κρατάει ήδη ένα αντικείμενο, δεν έχει τη δυνατότητα να σηκώσει άλλο, εκτός εάν πρώτα χρησιμοποιήσει το προηγούμενο. Άνοιγμα πόρτας: Εφόσον κρατάει το κλειδί που αντιστοιχεί στην πόρτα που προσπαθεί να ανοίξει, το ρομπότ μπορεί να ανοίξει μόνιμα μια πόρτα. [1]: Δεν είναι απαραίτητο όλες οι ενέργειες να είναι ενεργοποιημένες σε κάθε επίπεδο. Αυτό ορίζεται από τον τύπο του επιπέδου και τις επιλογές του χρήστη. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 63

64 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Όσο περισσότερες ενέργειες είναι διαθέσιμες στον πράκτορα, τόσο πιο περίπλοκο μπορεί να γίνει το πρόβλημα, έως και να καταλήξει να είναι άλυτο λόγω περιορισμού στη μνήμη. Όλες οι ενέργειες εκτός από τη συλλογή αντικειμένου έχουν κατεύθυνση (πάνω, κάτω, αριστερά, δεξιά). Επομένως, υπάρχουν συνολικά 17 ενέργειες. Όταν ο παίκτης είναι ευχαριστημένος με τη σχεδίαση που έχει κάνει, μπορεί να επιλέξει εκτέλεση. Όταν το κάνει αυτό δε θα έχει τη δυνατότητα πλέον να κάνει αλλαγές στο χώρο και το ρομπότ θα αρχίσει να αναζητά τη λύση του προβλήματος. Εάν βρεθεί λύση θα την εκτελέσει βήμα-προς-βήμα και η κατάσταση της εκτέλεσης θα πάψει να ισχύει όταν το ρομπότ φτάσει τη σημαία. 4.2 ΚΥΡΙΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΤΟΥ GAMEPLAY Διαχείρηση Αντικειμένων Για να διαχειριστεί τα αντικείμενα στο πλέγμα, ο χρήστης μπορεί να ενεργοποιήσει τη κατάσταση σχεδιασμού (Designer Mode). Μόλις το κάνει αυτό, στην αριστερή πλευρά της οθόνης θα εμφανιστεί ένα μενού επιλογής εργαλείων και αντικειμένων (εικόνα 34). Από αυτό το μενού έχει τη δυνατότητα να επιλέξει ένα από τα διαθέσιμα αντικείμενα (βλ. 4.1) είτε ένα από τα διαθέσιμα εργαλεία επιλογής αντικειμένου ή αφαίρεσης αντικειμένου. Έπειτα, επιλέγει ένα από τα κουτιά του πλέγματος. Εάν δεν έχει επιλεγμένο κάποιο αντικείμενο αλλά ούτε κάποιο εργαλείο, τότε δε γίνεται τίποτε. Αν έχει επιλεγμένο κάποιο αντικείμενο τότε εάν το κουτί είναι ελεύθερο θα δημιουργηθεί ένα αντικείμενο ίδιου τύπου με το επιλεγμένο πάνω στο κουτί. Σε περίπτωση που δεν είναι ελεύθερο το, εμφανίζεται το ανάλογο μήνυμα και ακυρώνεται η ενέργεια. Επίσης, ελέγχεται πως δεν πρόκειται να τοποθετηθεί δεύτερο ρομπότ ή δεύτερη σημαία στο πλέγμα. Εάν είναι επιλεγμένο το εργαλείο αφαίρεσης αντικειμένου, τότε διαγράφεται οποιοδήποτε αντικείμενο βρίσκεται στο επιλεγμένο κουτί. Τέλος, εάν είναι επιλεγμένο το εργαλείο επιλογής, τότε εμφανίζεται σε ένα ξεχωριστό παράθυρο (εικόνα αριστερά) η πληροφορία για οποιοδήποτε αντικείμενο βρίσκεται στο επιλεγμένο κουτί. Τα περιεχόμενα αυτού του παραθύρου διαφέρουν ανάλογα με το τι τύπου είναι το επιλεγμένο αντικείμενο, έτσι ώστε να παρουσιάζεται μόνο η πληροφορία που είναι σχετική. Εικόνα 35. Παράθυρο πληροφορίας αντικειμένου. Εικόνα 34. Μενού επιλογής αντικειμένων Σε επόμενη έκδοση του παιχνιδιού ο χρήστης θα μπορεί να κάνει επιτόπου αλλαγές στη παράθυρο πληροφορίας για να αλλάξει τις ιδιότητες των αντικειμένων. 64 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

65 Αποθήκευση/Φόρτωση Σχεδίου Δίνεται η δυνατότητα στο χρήστη να αποθηκεύσει το σχέδιο που έχει κάνει στο πλέγμα. Ανάλογα με το είδος του επιπέδου στο οποίο βρίσκεται, διαβάζεται ο αντίστοιχος υποφάκελος από τον κύριο φάκελο αποθήκευσης σχεδίων. Η διαφοροποίηση αυτή γίνεται λόγω του ότι διαφορετικά επίπεδα μπορεί να έχουν διαφορετικές προδιαγραφές, άρα και κάποια σχέδια θα είναι απίθανα να δημιουργηθούν. Για παράδειγμα, αν ένα επίπεδο έχει πλέγμα μεγέθους 10 επί 10 και ένα άλλο έχει πλέγμα μεγέθους 8 επί 8, τότε πρέπει να διαφοροποιηθούν. Για τη διευκόλυνση του χρήστη αυτή η διαφοροποίηση γίνεται αυτόματα. Αφού διαβαστούν όλα τα αρχεία του υποφακέλου, δημιουργείται μία λίστα από αυτά με εικονίδια που αντιστοιχούν στο περιβάλλον του επιπέδου. Στην εικόνα 36 φαίνεται αυτή η λίστα. Ο λόγος που όλα τα εικονίδια είναι τα ίδια είναι λόγω του ότι κάθε σχέδιο που απεικονίζεται έγινε στο ίδιο περιβάλλον (Four Seasons). Κάθε αντικείμενο της λίστας είναι ένα κουμπί με κείμενο το όνομα του αντίστοιχου αρχείου. Αν ο χρήστης πατήσει κάποιο από αυτά τα κουμπιά τότε θα αντικαταστήσει εκείνο το σχέδιο με το τρέχον σχέδιο που έχει κάνει. Αν επιθυμεί να δημιουργήσει νέο αρχείο, τότε επιλέγει πως θα το ονομάσει και πατάει το κουμπί «Save» που βρίσκεται στο κάτω μέρος του παραθύρου. Εικόνα 36. Παράθυρο αποθήκευσης σχεδίου. Η διαδικασία φόρτωσης ενός σχεδίου είναι παρόμοια με τη διαδικασία αποθήκευσης. Δηλαδή, γίνεται αυτόματα η επιλογή υποφακέλου με βάση το είδος του επιπέδου και δημιουργείται η ίδια λίστα. Όταν ο χρήστης πατήσει ένα από τα κουμπιά που εμφανίζονται, τότε διαγράφονται όσα αντικείμενα βρίσκονται ήδη στη σκηνή, δημιουργούνται εκ νέου τα αντικείμενα που περιγράφονται στο αρχείο και ενημερώνεται ο χρήστης. Τα αντικείμενα τοποθετούνται ένα-προς-ένα και υπακούν στους ίδιους κανόνες σαν να τα έβαζε ο χρήστης. Αυτό γίνεται για να αποφευχθούν τυχών λάθη ή απάτες που μπορεί να περιέχουν τα αρχεία. Δηλαδή, εάν ο χρήστης έχει δυνατότητα να τοποθετήσει το πολύ 10 εμπόδια και αλλάξει το αρχείο έτσι ώστε να περιέχει 11 εμπόδια, τότε το τελευταίο εμπόδιο δε θα τοποθετηθεί. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 65

66 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Όταν ο χρήστης πατήσει έξοδο ή πάει πίσω στο αρχικό μενού, τότε γίνεται αυτόματη αποθήκευση του σχεδίου που έχει κάνει με όνομα «AutoSave». Αυτό συμβαίνει για να προστατεύσει το χρήστη σε περίπτωση που έκανε έξοδο καταλάθος ή ξέχασε να κάνει αποθήκευση. Αντιστοίχηση Κλειδιών Η αντιστοίχηση των κλειδιών με τις πόρτες που αυτά ξεκλειδώνουν γίνεται αφού πρώτα σχεδιάσει πλήρως το πλέγμα ο χρήστης ή όποτε πατήσει το κουμπί ελέγχου «Check». Επιλέγονται όλα τα κλειδιά που είναι παρόντα στο πλέγμα και έπειτα για κάθε ένα από αυτά ζητείται από το χρήστη να το αντιστοιχίσει με κάποια από τις πόρτες που βρίσκονται στο χώρο. Το κλειδί που θα πρέπει να αντιστοιχηθεί κάθε φορά γίνεται φωσφορίζων και εμφανίζεται το αντίστοιχο μήνυμα στον παίκτη. Για να επιλέξει τη πόρτα που θέλει, ο χρήστης απλά κάνει κλικ στη πόρτα που επιθυμεί. Ο χρήστης μπορεί να χρησιμοποιήσει το εργαλείο επιλογής για να δει ποια πόρτα ξεκλειδώνει το κλειδί που έχει επιλέξει και το αντίστροφο για τις πόρτες. Επιλογές Όπως σε κάθε παιχνίδι, δίνεται στο χρήστη μια πληθώρα επιλογών (Options). Αυτές οι επιλογές αφορούν τη ποιότητα των γραφικών, τον έλεγχο του ήχου και επιλογές σχετικά με τον τρόπο παιχνιδιού. Για τη διευκόλυνση του χρήστη αυτές οι επιλογές χωρίζονται σε καρτέλες, όπως αυτές φαίνονται στην εικόνα 37. Διαχείριση Κάμερας Εικόνα 37. Παράθυρο επιλογών. Ο παίκτης καθ όλη τη διάρκεια του παιχνιδιού έχει τη δυνατότητα να διαχειρίζεται τη κάμερα. Η κάμερα θα έχει πάντα ως σημείο συγκέντρωσης το κέντρο του πλέγματος. Ο χρήστης μπορεί να κάνει μεγέθυνση/σμίκρυνση και να κουνήσει τη κάμερα μέσα στα επιτρεπτά όρια. Ουσιαστικά η κάμερα επιτρέπεται να κινείται πάνω στο ημισφαίριο που απεικονίζεται στην εικόνα 38. Εικόνα 38. Επιτρεπτά όρια κίνησης της κάμερας. Το ημισφαίριο δεν είναι πλήρες. Όπως φαίνεται και στην εικόνα, είναι κομμένο στην κορυφή. Πέρα από την από-πάνω άποψη, ο 66 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

67 παίκτης μπορεί να επιλέξει άλλα δύο στυλ κάμερας, εφόσον είναι ήδη το ρομπότ τοποθετημένο. Είτε πρώτου προσώπου (εικόνα 39) είτε τρίτου προσώπου. Αυτά τα είδη κάμερας είναι μόνο για παρακολούθηση. Δηλαδή, η κάμερα είναι κλειδωμένη πάνω στο ρομπότ και δεν δίνεται η δυνατότητα στο παίκτη να την ελέγξει, αλλά παρά μόνο να παρακολουθήσει τη φυσική κίνηση του ρομπότ. Εικόνα 39. Κάμερα πρώτου προσώπου (αριστερά) και κάμερα τρίτου προσώπου (δεξιά). Όσο ο παίκτης χρησιμοποιεί ένα από αυτά τα δύο είδη κάμερας, δεν μπορεί να κάνει αλλαγές στο πλέγμα, δηλαδή να προσθέσει ή αφαιρέσει αντικείμενα. Μπορεί μόνο να δώσει εντολή στο ρομπότ να ψάξει τη λύση και να την εκτελέσει. Αυτή η δυνατότητα δίνεται στο χρήστη για να είναι πιο διασκεδαστικό το παιχνίδι, ειδικά όταν το ρομπότ εκτελεί το πλάνο που βρήκε. Αναζήτηση πλάνου Η αναζήτηση του πλάνου σε περίπλοκα προβλήματα μπορεί να διαρκέσει αρκετά δευτερόλεπτα. Ως μηχανισμός ανατροφοδότησης για το χρήστη και για να είναι ασφαλής πως δεν έχει σταματήσει η λειτουργία του παιχνιδιού, ενεργοποιείται μια εικόνα άπειρης επανάληψης που σημειώνει πως το ρομπότ «σκέφτεται» (εικόνα 40). Κατά τη διάρκεια που ο πράκτορας αναζητά τη βέλτιστη λύση στο πρόβλημα, ο χρήστης έχει την δυνατότητα να κουνήσει τη κάμερα και να παρακολουθήσει το περιβάλλον, όχι όμως να κάνει αλλαγές πάνω στο πλέγμα, καθώς αυτές θα αλλάξουν το πρόβλημα. Αυτό είναι εφικτό διότι η αναζήτηση του πλάνου βρίσκεται σε ξεχωριστό νήμα, κάτι το οποίο όμως μπορεί να μειώσει την απόδοση του αλγορίθμου. Σε περίπτωση που αυτός ο χρόνος είναι εξαιρετικά μεγάλος ο χρήστης έχει την επιλογή να διακόψει τη διαδικασία και να συνεχίσει τη σχεδίασή του. Εικόνα 40. To Sprite που δείχνει το ρομπότ να σκέφτεται. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 67

68 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Διακοσμητικό Περιβάλλον Καθώς τα παιχνίδια τύπου γρίφων είναι σχετικά απλά όσον αφορά το γραφικό περιβάλλον, μπορεί να καταλήξουν βαρετά για το χρήστη. Για αυτό το λόγο, πέρα από το τρισδιάστατο περιβάλλον και τα γραφικά εφέ, σε κάθε περιβάλλον συμπεριλαμβάνονται διαδραστικά αντικείμενα κάθε είδους. Αυτά τα αντικείμενα αντιδρούν όταν ο χρήστης αλληλοεπιδρά με αυτά με κάποιου είδους εφέ ή κίνηση. Για παράδειγμα στο περιβάλλον «Τέσσερις εποχές» ένα από αυτά τα αντικείμενα είναι τα βαρέλια στο τεταρτημόριο του χειμώνα, όπου εάν ο χρήστης κάνει κλικ στο πάνω βαρέλι, θα κυλίσει και θα πέσει. Εικόνα 41. Διαδραστικό αντικείμενο στο περιβάλλον «Τέσσερις εποχές». Αυτά τα αντικείμενα είναι για να δώσουν ένα «χρώμα» στη σκηνή και να απασχολήσουν το χρήστη όταν περιμένει τον πράκτορα να βρει τη λύση. Τέτοιου είδους λεπτομέρειες είναι αυτές που διαφοροποιούν τα παιχνίδια μεταξύ τους, καθώς δείχνουν πως οι σχεδιαστές του παιχνιδιού έχουν δώσει σημασία στις λεπτομέρειες αλλά και έχουν σκεφτεί καλά την εμπειρία που θέλουν να δώσουν στον παίκτη. Αρχικό Μενού Με την έναρξη του παιχνιδιού, η πρώτη σκηνή που εμφανίζεται είναι το αρχικό μενού. Η σχεδίαση αυτής της σκηνής είναι αρκετά σημαντική καθώς είναι αυτή με την οποία θα σχηματίσει την πρώτη του εντύπωση ο παίκτης. Λόγω του ότι δεν υπήρχε η δυνατότητα να συμπεριληφθούν λεπτομερή και εντυπωσιακά γραφικά, η σχεδίαση αυτής της σκηνής έγινε με μινιμαλιστικό τρόπο. Ο παίκτης συναντά τον κύριο χαρακτήρα του παιχνιδιού, το ρομπότ, το οποίο ακολουθεί την κίνηση του ποντικιού σε κάθε χρονική στιγμή. 68 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

69 Εικόνα 42. Το αρχικό μενού του παιχνιδιού. Ως φόντο χρησιμοποιείται ένα κωμικά σχεδιασμένο κουτί ουρανού (skybox) και στη δεξιά πλευρά της οθόνης βρίσκεται η γραφική διεπαφή χρήστη. Το μενού στα δεξιά δίνει στο χρήστη την επιλογή να κλείσει το παιχνίδι, να επεξεργαστεί τις επιλογές ή να φορτώσει ένα νέο επίπεδο. Στη πρώτη έκδοση του παιχνιδιού, όπως φαίνεται στην εικόνα 42, το μόνο διαθέσιμο επίπεδο είναι τύπου Sandbox και χρησιμοποιεί το περιβάλλον «Τέσσερις εποχές», όμως η σχεδίαση του παιχνιδιού είναι φτιαγμένη έτσι ώστε να είναι πολύ εύκολη η προσθήκη ενός διαφορετικού επιπέδου. 4.3 ΠΡΟΚΛΗΣΕΙΣ Παρόλο που το παιχνίδι υλοποιείται σε μια επαγγελματική πλατφόρμα η οποία προσφέρει πολλά εργαλεία, η πολυπλοκότητα του παιχνιδιού αυξάνεται σημαντικά κάθε φορά που προστίθεται κάποια νέα λειτουργία. Σε αντίθεση με τη πλειοψηφία των προγραμμάτων, δεν υπάρχει μια σταθερή ροή κώδικα που εκτελείται, αλλά κάθε αντικείμενο στη σκηνή εκτελεί ταυτόχρονα το δικό του κομμάτι κώδικα, σε οποιαδήποτε κατάσταση και εάν βρίσκεται το παιχνίδι. Επομένως, πράγματα που διαισθητικά φαίνεται πως πρέπει να γίνονται πρέπει να προγραμματιστούν ξεχωριστά. Για παράδειγμα, εάν ο παίκτης πληκτρολογεί το όνομα του σχεδίου που θέλει να αποθηκεύσει, δε πρέπει να λειτουργούν οι συντομεύσεις στο πληκτρολόγιο. Τέτοιου είδους περιπτώσεις μπορεί να φαίνονται απλές, όταν όμως υπάρχει ένας μεγάλος αριθμός αντικειμένων στη σκηνή, οι καταστάσεις αυτές πολλαπλασιάζονται. Πέρα από τη διαχείριση όλων των πιθανών καταστάσεων, θα πρέπει κάθε κομμάτι κώδικα να λειτουργεί ξεχωριστά από τα υπόλοιπα, δίχως να παρεμβαίνει στη λειτουργία των υπολοίπων και δίχως να απαιτεί την σύνδεση με πολλά από αυτά. Ο καλύτερος τρόπος να αντιμετωπιστεί αυτό είναι να προγραμματιστεί το κάθε κομμάτι ως ξεχωριστή οντότητα και όσο πιο γενικό γίνεται. Όπως και ένα API, θα πρέπει το κάθε κομμάτι να προσφέρει μια διεπαφή για την επικοινωνία και να λειτουργεί ξεχωριστά από τα υπόλοιπα κομμάτια. Για να γίνει σωστά αυτή η διαδικασία απαιτείται πολύ καλή σχεδίαση κλάσεων και καλά ορισμένες λειτουργίες για τη κάθε μία. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 69

70

71 Κ Ε Φ Α Λ Α Ι Ο 5 : ΥΛ Ο Π Ο Ι Η Σ Η Τ Ο Υ Π Α Ι Χ Ν Ι Δ Ι Ο Υ

72

73 ΥΛΟΠΟΙΗΣΗ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ Σε αυτό το κεφάλαιο περιγράφεται η διαδικασία με την οποία αναπτύχθηκε το παιχνίδι αυτής της εργασίας, όπως αυτό περιγράφεται στο κεφάλαιο 4. Η σειρά με την οποία είναι γραμμένο το κεφάλαιο αντιστοιχεί στη χρονολογική σειρά με την οποία αναπτύχθηκε το παιχνίδι. Το κύριο εργαλείο που χρησιμοποιήθηκε είναι το Unity (βλ. κεφάλαιο 6). 5.1 ΣΧΕΔΙΑΣΗ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ Το πρώτο βήμα ήταν η σχεδίαση του παιχνιδιού. Αυτό συμπεριλαμβάνει τη κατηγορία, τους κανόνες, τις ιδιαιτερότητες του παιχνιδιού, όπως επίσης και τη μεθοδολογία που θα χρησιμοποιηθεί. Ορίστηκε πως το παιχνίδι θα αποτελείται από έναν πράκτορα ο οποίος θα προσπαθεί να λύσει το πρόβλημα που θα του θέτει ο χρήστης. Αρχικά το σχέδιο περιλάμβανε περισσότερα είδη εμποδίων και περισσότερες ενέργειες από αυτές που είναι υλοποιημένες στη τρέχουσα έκδοση. Ο λόγος που δεν υλοποιήθηκαν είναι πως καθιστούσαν το πρόβλημα ακόμη πιο περίπλοκο και θα ήταν εξαιρετικά χρονοβόρο να βρεθεί λύση. Για τη μέθοδο αναζήτησης πλάνου θα χρησιμοποιηθεί ο αλγόριθμος Α*, καθώς βρίσκει πάντα τη βέλτιστη λύση και κατάλληλος για αυτού του είδους τις εφαρμογές. 5.2 ΈΛΕΓΧΟΣ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ Προτού ξεκινήσει η ανάπτυξη του παιχνιδιού στο Unity, έπρεπε να πιστοποιηθεί πως το πρόβλημα δε θα είναι άλυτο λόγω της πολυπλοκότητάς του και πως θα είναι υλοποιήσιμο με τη χρήση κλασσικών αλγορίθμων αναζήτησης Σχεδίαση οντοτήτων στο VLEPPO Το πρόβλημα πρώτα σχεδιάστηκε σε απλή μορφή στο εργαλείο Vleppo με χρήση της γλώσσας PDDL. Λόγω του ότι η PDDL δεν υποστηρίζει άμεσα αριθμητικές πράξεις, το πλέγμα υλοποιείται με ζεύγη αριθμών τα οποία είναι συντεταγμένες και έχουν μεταξύ τους τη σχέση «Next». Για παράδειγμα, μια σύνδεση θα ήταν το ζεύγος (1,2) να είναι Next του ζεύγους (1,1). Με αυτόν τον τρόπο υλοποιείται ολόκληρο το πλέγμα.

74 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Εικόνα 43. Η πρώτη έκδοση της οντολογίας του προβλήματος σχεδιασμένη οπτικά με το εργαλείο VLEPPO. Αρχικά το πρόβλημα σχεδιάστηκε για ένα πλέγμα μεγέθους 3 επί 3 για να δοκιμαστεί η οντολογία που σχεδιάστηκε. Παρόλο που το συγκεκριμένο παράδειγμα περιέχει μόνο 9 κουτιά (σε αντίθεση με τα 100 που περιέχει στη τελική έκδοση του παιχνιδιού), η σχεδίαση του problem.pddl δείχνει πόσο περίπλοκο μπορεί να είναι. Η εικόνα δεξιά αντιστοιχεί στο πλέγμα που φαίνεται στον παρακάτω πίνακα. Σημείωση: Σε αυτήν την έκδοση το ρομπότ δεν έχει τη δυνατότητα να σπάσει τοίχους. Σημαία Ψηλός Τοίχος Πόρτα Τοίχος Τοίχος Ρομπότ Τοίχος Κλειδί Πίνακας 1. Παράδειγμα προβλήματος για πλέγμα 3 επί 3. Ο ενσωματωμένος αλγόριθμος που έχει το εργαλείο Vleppo μπόρεσε να βρει τη λύση σε πολύ καλό χρόνο. Πρέπει όμως να σημειωθεί πως το πρόβλημα είναι περιορισμένο, καθώς οι πιθανές ενέργειες είναι αρκετά λίγες σε αριθμό. Επίσης, ο 74 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

75 αλγόριθμος αυτός είναι τυφλός αλγόριθμος αναζήτησης, επομένως είναι αρκετά γρήγορος, όμως όχι βέλτιστος Μεγαλύτερα προβλήματα Ήταν αδύνατο να σχεδιαστεί πρόβλημα μεγαλύτερο από 3 επί 3 οπτικά και εφόσον η σχεδίαση των οντοτήτων ήταν σωστή και το πρόβλημα φαινόταν να είναι επιλύσιμο, προχώρησε η σχεδίαση του προβλήματος στο Unity. Αρχικά, με χρήση μόνο των απαραίτητων τρισδιάστατων μοντέλων, αναπτύχθηκε ένα πλέγμα μεγέθους 10 επί 10 από κύβους, οι οποίοι προσομοίωναν τη χρήση ενός κουτιού. Κάθε ένα από αυτά τα κουτιά χρησιμοποιούσε το ίδιο κομμάτι κώδικα, το οποίο είχε την εξής λειτουργία: Αν ο χρήστης κάνει κλικ σε αυτό το κουτί και το κουτί δεν περιέχει ήδη κάποιο αντικείμενο, δημιούργησε ένα νέο αντικείμενο ίδιου τύπου με το επιλεγμένο αντικείμενο πάνω αυτό το κουτί. Κώδικας δημιουργίας νέου αντικειμένου GameObject selectedtool = DesignerScript.GetSelectedToolObject(); if(canplace(selectedtool)){ GameObject toadd = (GameObject) Instantiate(selectedTool,transform.position, selectedtool.transform.rotation); script"); } Vector3 tpos = toadd.transform.position; tpos.y = 0.5f; toadd.transform.position = tpos; item itemscript = (item) toadd.getcomponent(typeof (item)); if(itemscript!=null){ } else { } itemscript.setpos(gridpos); if(gamehandler.manager.addobject(toadd)){ } else { } // Object was added successfully Destroy(toAdd); Debug.LogError("Item "+toadd.name+" should contain an <item> Destroy(toAdd); ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 75

76 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Για να τη διαχείριση του είδους του επόμενου αντικειμένου δεν υπήρχε ακόμη διαθέσιμη διεπαφή, επομένως αυτό γινόταν με συντομεύσεις στο πληκτρολόγιο και μηνύματα ενημέρωσης στην κονσόλα αποσφαλμάτωσης. Ένα άλλο Script (κομμάτι κώδικα) ήταν υπεύθυνο να διατηρεί σε μια δομή τη κατάσταση του πλέγματος και να διαχειρίζεται το είδος του επόμενου αντικειμένου. Τέλος, ένα τρίτο Script ήταν αυτό που έπαιρνε ως είσοδο το πλέγμα που είχε σχεδιαστεί και δημιουργούσε ένα αρχείο pddl. Αυτή η πρώτη έκδοση επέτρεπε τη σχεδίαση μεγαλύτερων προβλημάτων με οπτικό τρόπο και παρήγαγε ένα ολοκληρωμένο αρχείο pddl που περιέγραφε το πρόβλημα. Το αρχείο οντοτήτων δε χρειαζόταν να αλλάξει, καθώς είναι σταθερό και δεν επηρεάζεται από το πρόβλημα. Έπειτα από ένα αριθμό δοκιμών, η εύρεση λύσης από τον αλγόριθμο που προσφέρει το VLEPPO για μεγαλύτερα προβλήματα φάνηκε πως ήταν εφικτή και μάλιστα σε μικρό χρονικό διάστημα (μικρότερο από 1 δευτερόλεπτο). Εφόσον όμως ο αλγόριθμος αυτός δεν ήταν βέλτιστος, το ρομπότ πολλές φορές εκτελούσε επιπλέον ενέργειες. Επομένως, το πρόβλημα που σχεδιάστηκε ήταν επιλύσιμο και το επόμενο βήμα ήταν να υλοποιηθεί ο αλγόριθμος που επιλέχθηκε εντός του παιχνιδιού και να υλοποιηθούν οι υπόλοιπες λειτουργίες του παιχνιδιού. 5.3 ΔΗΜΙΟΥΡΓΙΑ ΚΑΙ ΑΠΟΚΤΗΣΗ ΤΩΝ ΑΠΑΡΑΙΤΗΤΩΝ ΣΤΟΙΧΕΙΩΝ Προτού υλοποιηθούν οι λειτουργίες οι λειτουργίες του παιχνιδιού, όπως αυτές περιγράφονται στο κεφάλαιο 4.2, θα πρέπει να βεβαιωθεί πως υπάρχουν διαθέσιμα τα απαραίτητα στοιχεία (assets). Ως asset θεωρείται κάθε στοιχείο που θα φανεί χρήσιμο κατά την υλοποίηση του παιχνιδιού. Αυτά μπορεί να είναι: Τρισδιάστατα μοντέλα Εικόνες Ήχοι Scripts Υφές υλικών Ειδικά εφέ Επεκτάσεις εργαλείων Κινήσεις μοντέλων Άλλα.. Τα περισσότερα στοιχεία που χρησιμοποιήθηκαν στο παιχνίδι δημιουργήθηκαν με τα εργαλεία που περιγράφονται στο κεφάλαιο 6. Tα υπόλοιπα στοιχεία, κυρίως τα τρισδιάστατα μοντέλα, λόγω του ότι είναι δύσκολη και χρονοβόρα η κατασκευή τους, αγοράστηκαν από το Unity Asset Store [1]. [1]: Unity Asset Store 76 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

77 5.4 ΥΛΟΠΟΙΗΣΗ ΛΕΙΤΟΥΡΓΙΩΝ Έχοντας τα περισσότερα απαραίτητα στοιχεία, το επόμενο βήμα είναι η υλοποίηση των απαραίτητων λειτουργιών Σχεδίαση της βάσης των Script Προτού υλοποιηθεί οποιαδήποτε λειτουργία, θα πρέπει να δημιουργηθούν κάποια Script που θα είναι υπεύθυνα για τις ρυθμίσεις του παιχνιδιού και τον έλεγχο της λειτουργίας του προγράμματος. Για παράδειγμα, θα χρειαστεί διάφορα Script να υλοποιήσουν λειτουργίες με βάση γεγονότων από το πληκτρολόγιο, όμως θα πρέπει αυτές οι συντομεύσεις να είναι συγκεντρωμένες κάπου, έτσι ώστε εάν ο χρήστης επιθυμεί να αλλάξει κάποια συντόμευση να είναι εύκολο και γρήγορο. Επίσης, θα χρειαστεί πολλά Script να επικοινωνούν μεταξύ τους, όμως αυτό δεν είναι λειτουργικό διότι πολλές φορές είναι δύσκολο ή χρονοβόρο να βρεθεί κάποιο αντικείμενο στη σκηνή, διότι δημιουργούνται δυναμικά. Επομένως, δημιουργείται ένα script που αναλαμβάνει να είναι το κέντρο επικοινωνίας. Η διαδικασία σχεδίασης αυτών των Script χρειάστηκε να επαναληφθεί τρεις φορές και τα Script που δημιουργήθηκαν είναι: - Game Settings: Αναλαμβάνει την προσωρινή αποθήκευση των επιλογών του χρήστη και τη κλήση σχετικών γεγονότων (Event). - Designer: Διαχειρίζεται τα εργαλεία που έχει στη διάθεσή του ο χρήστης. Αρχικά συμπεριλάμβανε και τη δομή αποθήκευσης του πλέγματος, όμως αυτή αργότερα μεταφέρθηκε σε άλλο κομμάτι. - Controls: Υλοποιεί την συμπεριφορά της πλειοψηφίας των γεγονότων από το πληκτρολόγιο. Κυρίως αφορά τις συντομεύσεις που έχει διαθέσιμες ο χρήστης για να καλεί τις διαθέσιμες λειτουργίες. - Grid Manager (Map): Διαχειρίζεται πλήρως τη δομή αποθήκευσης του πλέγματος μαζί με τα αντικείμενα που περιέχει και τις ιδιότητές τους. Περιέχει τις απαραίτητες συναρτήσεις για προσθήκη και διαγραφή αντικειμένων. - Game Handler: Αναλαμβάνει να είναι το κέντρο επικοινωνίας των Script. Περιέχει τη κατάσταση του επιπέδου, ελέγχει ποιες λειτουργίες είναι δυνατές κάθε χρονική στιγμή και καλεί γεγονότα σχετικά με την κατάσταση του παιχνιδιού. Έχοντας αυτά ως βάση, κάθε επόμενο script θα πρέπει να χρησιμοποιεί τις συναρτήσεις που προσφέρουν για να ελέγχει την τρέχον κατάσταση του παιχνιδιού και να εκτελεί τις ανάλογες ενέργειες Κίνηση της κάμερας Η κάμερα είναι το κύριο όργανο όσον αφορά τη παρουσίαση του παιχνιδιού και ο έλεγχός της είναι από τις πρώτες λειτουργείες που θα πρέπει να υλοποιηθούν. Αφού αποφασίστηκε πως το είδος της κάμερας θα είναι κυρίως το «από πάνω» (Top- ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 77

78 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Down), έτσι ώστε να βλέπει εύκολα ο χρήστης όλο το πλέγμα, δημιουργήθηκε η αντίστοιχη συμπεριφορά. Για να επιτευχθεί η κίνηση πάνω στο ημισφαίριο, όπως φαίνεται στην εικόνα 38, αρχικά δημιουργήθηκε ένα αντικείμενο αναφοράς το οποίο λειτουργεί ως άξονας, γύρω από τον οποίο θα γυρίζει η κάμερα, και ένα αντικείμενο αναφοράς το οποίο λειτουργεί ως το σημείο στο οποίο θα κοιτάει η κάμερα ανά πάσα στιγμή. Κώδικας κίνησης της κάμερας if (Input.GetKey (GameSettings.Key_CameraPivot)) { // Αν πατηθεί το κουμπί που ενεργοποιεί τη κίνηση της κάμερας if(gh.controlsenabled()){ // Αν επιτρέπεται στο χρήστη ο έλεγχος της κάμερας float MouseX = Input.GetAxis("Mouse X"); // Η κίνηση του ποντικιού στον οριζόντιο άξονα float MouseY = Input.GetAxis("Mouse Y"); // Η κίνηση του ποντικιού στον κάθετο άξονα transform.rotatearound(pivotpoint.position,new Vector3(0,1,0),MouseX); // Περίστρεψε τη κάμερα γύρω από τον κεντρικό άξονα με βάση τη κίνηση του ποντικιού στον οριζόντιο άξονα αναφοράς transform.lookat (focuspoint.position); // Βάλε τη κάμερα να κοιτάει το σημείο float camerarotation = Vector3.Angle (transform.up.normalized, pivotpoint.up.normalized); // Βρες κατά πόσο πρέπει να αλλάξει η γωνία της κάμερας που σχηματίζεται από τη θέση της με τη θέση του σημείου αναφοράς στον κάθετο άξονα if((mousey > 0 && camerarotation > MinRotation) (MouseY < 0 && camerarotation < MaxRotation)){ // Αν είναι εντός ορίων Transform previous = transform; transform.rotatearound(pivotpoint.position,transform.right,- MouseY); // Περίστρεψε τη κάμερα γύρω από τον οριζόντιο κεντρικό άξονα, έτσι ώστε να έρθει στο επιθυμητό ύψος transform.lookat (focuspoint.position); camerarotation = Vector3.Angle (transform.up.normalized, pivotpoint.up.normalized); if(camerarotation < MinRotation){ // Αν έχει ξεπεράσει τα όρια, ακύρωσε την κίνηση. Λειτουργεί ως μηχανισμός ελέγχου και ανατροφοδότησης. } } } } transform.position = previous.position; transform.rotation = previous.rotation; transform.lookat (focuspoint.position); Ο παραπάνω κώδικας εκτελείται σε κάθε ελάχιστη χρονική στιγμή. Η διάρκεια αυτή ορίζεται από τη δυνατότητα του υπολογιστή να «ζωγραφίσει» όσο περισσότερες 78 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

79 στιγμές μπορεί σε ένα δευτερόλεπτο. Η ταχύτητα αυτή ονομάζεται FPS. Για παράδειγμα, αν ο υπολογιστής έχει τη δυνατότητα να τρέξει το παιχνίδι στα 50 FPS, τότε ο παραπάνω κώδικας θα εκτελεστεί 50 φορές σε κάθε δευτερόλεπτο. Όπως φαίνεται στον κώδικα, η κίνηση της κάμερας στον κάθετο άξονα είναι φραγμένη στο διάστημα (15,70) μοίρες. Αυτό συμβαίνει για να μη βγει κάτω από το πάτωμα και να μην γυρίσει ανάποδα αν ξεπεράσει τις 90 μοίρες. Η μεγέθυνση της εικόνας γίνεται απλά αλλάζοντας το πεδίο FieldOfView της κάμερας, δίχως να μετακινείται η κάμερα. Κώδικας μεγέθυνσης if (Input.GetAxis("Mouse ScrollWheel") < 0 && GH.controlsEnabled()) { if(camera.main.fieldofview<zoommaxdistance){ Camera.main.fieldOfView++; // Δεν έχει σημασία η ταχύτητα με την οποία θα κάνει scroll ο χρήστης } } Τοποθέτηση αντικειμένων Όταν δημιουργείται ένα νέο αντικείμενο πρέπει να αρχικοποιείται και να ενημερώνεται κατάλληλα ο Grid Manager. Το αντικείμενο αυτό προστίθεται στη δομή που διατηρεί ο Grid Manager αφού πρώτα ελεγχθεί πως αυτό είναι δυνατό. Για παράδειγμα αν ο παίκτης προσπαθήσει να τοποθετήσει δεύτερο ρομπότ στη σκηνή ο Grid Manager θα το αποτρέψει και το νέο αντικείμενο θα διαγραφεί προτού προστεθεί. Αν είναι επιτυχής η δημιουργία του, τότε το αντικείμενο αρχικοποιείται, δηλαδή του δίνεται η θέση του στο χώρο, ένα όνομα και ευθυγραμμίζεται με βάση τα γειτονικά αντικείμενα. Ευθυγράμμιση Αντικειμένου Τα αντικείμενα που τοποθετούνται στο πλέγμα αυτόματα ευθυγραμμίζονται με βάση τα γειτονικά τους αντικείμενα για να υπάρχει ομοιομορφία και να είναι οπτικά σωστή η σχεδίαση. Ο τοίχος έχει 2 4 = 16 διαφορετικές πιθανές ευθυγραμμίσεις (κάθε πλευρά μπορεί να έχει γείτονα ή όχι). Για να επιτευχθεί αυτό ελέγχεται για κάθε πλευρά εάν ο τοίχος έχει γειτονικό αντικείμενο το οποίο δεν γίνεται να το σηκώσει το ρομπότ. Αν έχει τότε δημιουργείται η αντίστοιχη πλευρά για να φανεί η σύνδεση, όπως φαίνεται στην εικόνα 44. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 79

80 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Εικόνα 44. Παράδειγμα ευθυγράμμισης (αριστερά) σε αντίθεση με μηευθυγράμμιση (δεξιά). Αν αφαιρέσει ένα αντικείμενο ο χρήστης ή το ρομπότ κατά την εκτέλεση του πλάνου, τότε αυτόματα ευθυγραμμίζονται ξανά όλα τα αντικείμενα στη σκηνή. Ομοίως η πόρτα έχει δύο ευθυγραμμίσεις (οριζόντια ή κάθετα). Για να υπολογιστεί η σωστή ευθυγράμμιση υπολογίζεται το «βάρος» κάθε γειτονικής θέσης και αυτόματα η πόρτα ευθυγραμμίζεται πάνω στο μέγιστο. Ως βάρος ορίζεται: Μηδέν (0) αν δεν υπάρχει αντικείμενο σε εκείνη τη θέση ή εάν υπάρχει και μπορεί να μετακινηθεί η μπορεί να το σηκώσει το ρομπότ. Ένα (1) εάν το αντικείμενο μπορεί να καταστραφεί. Δύο (2) εάν το αντικείμενο δεν μπορεί να καταστραφεί. Τρια (3) εάν η θέση είναι εκτός του πλέγματος (δηλαδή βρίσκεται στο όριο). Εικόνα 45. Παράδειγμα ευθυγράμμισης της πόρτας προτού (αριστερά) και αφού (δεξιά) τοποθετηθεί αντικείμενο με μεγαλύτερο βάρος. Με αυτήν την ιεραρχία είναι σίγουρο πως ποτέ δε θα ανοίξει το ρομπότ τη πόρτα σε κάθετη θέση, εφόσον τουλάχιστον μια πλευρά της πόρτας έχει μεγαλύτερο βάρος από κάποια άλλη. 80 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

81 5.4.4 Αλγόριθμος αναζήτησης Αφού είναι υλοποιημένες οι απαραίτητες λειτουργίες διαχείρισης του παιχνιδιού, θα πρέπει να γραφεί ο αλγόριθμος αναζήτησης. Σε αυτή τη φάση η αναπαράσταση του προβλήματος σε γλώσσα PDDL δεν είναι απαραίτητη, επομένως δεν χρησιμοποιείται πλέον. Προτού αναπτυχθεί ο αλγόριθμος αναζήτησης θα πρέπει να δημιουργηθεί νέα δομή δεδομένων που θα αναπαριστά τη κατάσταση του κόσμου. Ο λόγος που δεν είναι δυνατό να είναι κοινή με αυτή που χρησιμοποιείται ήδη είναι διότι η τρέχουσα δομή κληρονομεί από τις κλάσεις του Unity και αντί για αντικείμενα χρησιμοποιεί GameObjects, τα οποία αναφέρονται σε αντικείμενα που υπάρχουν στη σκηνή. Για να δημιουργηθεί νέα υποθετική κατάσταση στον αλγόριθμο αναζήτησης δε γίνεται να χρησιμοποιηθούν GameObject αντικείμενα διότι θα πρέπει να υπάρχουν στη σκηνή και αυτό δεν είναι πρακτικό. Επομένως δημιουργήθηκε νέα δομή που δεν κληρονομεί από τις κλάσεις του unity αλλά ούτε χρησιμοποιεί τα αντικείμενα που υπάρχουν στη σκηνή, παρά μόνο για να δημιουργήσει την αρχική κατάσταση. Συνολικά δημιουργήθηκαν οι εξής κλάσεις: - AI_Item: Αναπαριστά ένα αντικείμενο στο πλέγμα. Περιέχει μόνο την απαραίτητη πληροφορία για αυτό, όπως τη θέση του, το είδος του και τις ιδιότητές του, σε αντίθεση με την κλάση Item που περιέχει επιπλέον πληροφορίες και αντιστοιχεί σε ένα αντικείμενο πάνω στη σκηνή. Επίσης παρέχει συνάρτηση σύγκρισης ομοιότητας με άλλο αντικείμενο της ίδιας κλάσης και συνάρτηση αντιγραφής από άλλο αντικείμενο της ίδιας κλάσης. - GridState: Κάθε αντικείμενο αυτής της κλάσης αντιστοιχεί σε μία κατάσταση του κόσμου. Περιέχει το σύνολο των AI_Item αντικειμένων του εκάστοτε πλέγματος, το μέγεθος του πλέγματος, το ρομπότ και το αντικείμενο που μπορεί να κρατάει αυτό. Προσφέρει τις παρακάτω συναρτήσεις: o Δημιουργία ενός GridState αντικειμένου από ένα άλλο ή από το τρέχον πλέγμα του επιπέδου. o Έλεγχος εάν είναι έγκυρο. o Εκτέλεση μίας από τις ενέργειες του ρομπότ πάνω σε αυτό το πλέγμα (με αυτόν τον τρόπο δημιουργούνται οι καταστάσεις παιδιά). o Προσθήκη/Αφαίρεση αντικειμένου. o Υπολογισμό απόστασης για την ευριστική. o Έλεγχος εάν έχει βρεθεί η λύση. o Έλεγχος ομοιότητας με άλλο GridState αντικείμενο (χρησιμοποιείται για να ελεγχθεί εάν ανήκει μια κατάσταση στο κλειστό ή ανοικτό σύνολο). - AStarNode: Αντιστοιχεί σε έναν κόμβο του χώρου καταστάσεων. Περιέχει ένα αντικείμενο τύπου GridState για να προσομοιώσει την εκάστοτε κατάσταση, το συνολικό κόστος με βάση την ευριστική συνάρτηση, το τρέχον κόστος αυτού του κόμβου και το πλάνο με τις έως τώρα ενέργειες που έχει κάνει το ρομπότ για να φτάσει σε αυτή τη κατάσταση. Οι κυριότερες συναρτήσεις που περιέχει είναι ο υπολογισμός κόστους του κόμβου και η παραγωγή των παιδιών αυτού του κόμβου. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 81

82 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Παραγωγή παιδιών ενός κόμβου Για να παραχθούν όλα τα παιδιά ενός κόμβου, δοκιμάζεται κάθε πιθανή ενέργεια που μπορεί να κάνει το ρομπότ. Εάν αυτή είναι εφαρμόσιμη, τότε προστίθεται στη λίστα. Κώδικας παραγωγής παιδιών ενός κόμβου public ArrayList producechildren(){ ArrayList children = new ArrayList (); // Νέα λίστα robot R = GameHandler.manager.robotScript; // Το script του ρομπότ ArrayList moves = R.getMoves(); // Πάρε από το ρομπότ το σύνολο ενεργειών gridstate copyboard; // Νέα κατάσταση bool validmove = false; foreach (action a in moves) { // Για κάθε διαθέσιμη ενέργεια copyboard = new gridstate (board); // Η νέα κατάσταση αρχικά είναι αντιγραφή της τρέχουσας κατάστασης validmove = copyboard.make (a); // Εκτέλεσε την ενέργεια στη νέα κατάσταση if (validmove){ // Αν αυτή είναι έγκυρη AstarNode child = new AstarNode(copyBoard, plan, totalcost); // Δημιούργησε ένα νέο κόμβο float cost = calculatecost(copyboard, a.cost); // Υπολόγισε το κόστος του με βάση το τρέχον κόστος πλάνο } } } return children; child.addmove(a, cost); // Πρόσθεσε την ενέργεια που μόλις έγινε στο children.add(child); // Πρόσθεσε το κόμβο στη λίστα με τα παιδιά Αφού αναπτύχθηκε η απαραίτητη δομή για να υποστηρίξει την δημιουργία ενός χώρου καταστάσεων, αναπτύσσεται και ο κύριος αλγόριθμος αναζήτησης, Α*. Ο αλγόριθμος αυτός βασίζεται στη σχεδίαση των ευριστικών αλγορίθμων αναζήτησης (βλ. ψευδοκώδικα του BestFS στο κεφάλαιο 2.2.2). Για να μην «παγώσει» το παιχνίδι την ώρα που θα τρέχει ο αλγόριθμος και θα αναζητείται η λύση, ο αλγόριθμος τρέχει σε διαφορετικό νήμα. Για τη κλήση του αλγορίθμου η οποία περιέχει τη δημιουργία αυτού του νήματος καλείται η συνάρτηση Solve. 82 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

83 Κώδικας της συνάρτησης Solve και του νήματος που τρέχει τον αλγόριθμο public void solve(int maxx, int maxy, AI_Item[,] grid){ plan.clear (); // Αρχικά το πλάνο είναι κενό gridstate inigrid = new gridstate (maxx, maxy, grid); // Αρχική κατάσταση if (!inigrid.isvalid ()) { // Αν δεν είναι έγκυρη η αρχική κατάσταση ενημέρωσε τον χρήστη } GameHandler.DisplayAlert ("Grid is invalid.",5f); GameHandler.DisplayAlert (inigrid.invalidreason (), 5f); return; GameHandler.DisplayAlert ("Grid is valid.",5f); // Ενημέρωσε τον χρήστη πως είναι έγκυρο το σχέδιό του } start = new AstarNode (inigrid, plan, 0); // Ο αρχικός κόμβος στον χώρο καταστάσεων workerthread = new Thread(threadRun); // Δημιουργία ενός νήματος workerthread.start (); // Κλήση του νήματος private void threadrun(){ ArrayList open = new ArrayList (); // Δημιουργία του ανοικτού συνόλου ArrayList closed = new ArrayList (); // Δημιουργία του κλειστού συνόλου plan = Astar (start, open, closed); // Κλήση του Α* done = true; // Σημαία για τη κατάσταση του αλγορίθμου. Ελέγχεται σε περίπτωση που ο χρήστης σταματήσει την εκτέλεση του αλγορίθμου } Με τη χρήση νήματος πέρα του ότι δεν «παγώνει» το παιχνίδι, το οποίο είναι πολύ άσχημη εμπειρία για τον χρήστη, δίνεται η δυνατότητα σε αυτόν να σταματήσει την αναζήτηση ενός πλάνου σε περίπτωση που παίρνει αρκετό χρόνο ή σε περίπτωση που πατήσει καταλάθος εκτέλεση. Φυσικά, η ματαίωση της εκτέλεσης εξαρτάται και από το λειτουργικό σύστημα. Κατά τη διάρκεια που ο χρήστης περιμένει την ολοκλήρωση της εκτέλεσης του αλγορίθμου μπορεί να ασχοληθεί με το διακοσμητικό περιβάλλον, καθώς κάθε άλλη λειτουργία του παιχνιδιού λειτουργεί κανονικά. Εάν ο παίκτης σε αυτό το διάστημα επιλέξει να κλείσει το παιχνίδι, να επιστρέψει στο μενού ή να επαναφέρει το πλέγμα σε μηδενική κατάσταση, τότε γίνεται αυτόματα ματαίωση της εκτέλεσης του αλγορίθμου. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 83

84 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Κώδικας Αλγορίθμου Αναζήτησης Α* private ArrayList Astar(AstarNode current, ArrayList open, ArrayList closed){ if (current.issolved ()) { // Αν η τρέχουσα κατάσταση πληροί τις προϋποθέσεις της τερματικής συνθήκης } } else { } return current.getplan(); // Επέστρεψε στο πλάνο και τερμάτισε closed.add(current); // Πρόσθεσε την τρέχουσα κατάσταση στο κλειστό σύνολο ArrayList children = current.producechildren(); // Πάραγε τους κόμβους παιδιά foreach(astarnode o in children){ } if(!contains(o,closed)){ // Εάν δεν ανήκουν ήδη στο κλειστό σύνολο } open.add(o); // Πρόσθεσέ τα στο ανοικτό σύνολο if(open.count == 0){ // Αν έχει εξαντληθεί ο χώρος καταστάσεων } return null; // Επέστρεψε κενό και τερμάτισε // Εύρεση ελάχιστου κόμβου στο ανοικτό σύνολο float mincost = ((AstarNode) open[0]).gettotalcost(); AstarNode minnode = (AstarNode) open[0]; foreach(astarnode o in open){ } float childcost = o.gettotalcost(); if(childcost <= mincost){ } mincost = childcost; minnode = o; open.remove(minnode); // Αφαίρεσε τον κόμβο από το ανοικτό σύνολο return Astar(minNode,open,closed); // Επανέλαβε με νέα τρέχουσα κατάσταση Είναι σημαντικό να γίνεται η σύγκριση των καταστάσεων γρήγορα. Ο λόγος που δεν ταξινομούνται οι καταστάσεις είναι διότι κοστίζει Ο(nlogn), ενώ η αναζήτηση ελαχίστου σε μη-ταξινομημένη λίστα κοστίζει O(n). Επίσης, δε βελτιώνει καθόλου την αναζήτηση όμοιας κατάστασης στο κλειστό σύνολο. Η καλύτερη τεχνική για να μειωθεί αυτός ο χρόνος είναι να γίνουν σειριακά οι έλεγχοι ομοιότητας σε φθίνουσα σειρά με βάση την πιθανότητα που έχουν να αποτύχουν. 84 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

85 5.4.5 Γραφική διεπαφή χρήστη Η γραφική διεπαφή χρήστη (GUI) είναι ο κύριος τρόπος να επικοινωνήσει το παιχνίδι με το χρήστη και να διαχειρίζεται ο χρήστης τη πλειοψηφία των επιλογών που έχει στη διάθεσή του. Πρώτα από όλα, πρέπει να μπορεί να κλείσει την εφαρμογή, να ρυθμίσει το παιχνίδι όπως αυτός επιθυμεί και να μάθει να το χρησιμοποιεί. Αυτές οι επιλογές είναι κοινές σε κάθε παιχνίδι και πρέπει να ξεχωρίζονται από τις υπόλοιπες λειτουργίες. Καθώς το παιχνίδι ανήκει στη κατηγορία παιχνιδιών casual, θεωρήθηκε πως θα πρέπει να δίνει μια ευχάριστη, λιτή και όμορφη εμπειρία στο χρήστη. Επομένως, επιλέχθηκε η διεπαφή να έχει ανοικτά χρώματα, ελαφρώς διαφανή και να υπάρχει η επιλογή να κρύβεται για να απολαύσει ο παίκτης το περιβάλλον. Οι κύριες επιλογές που αναφέρθηκαν βρίσκονται στη πάνω δεξιά πλευρά της οθόνης. Αρχικά το μενού είναι κλειστό και όταν ο παίκτης τοποθετήσει το ποντίκι κοντά στην περιοχή, εμφανίζονται τα τρία κουμπιά που αντιστοιχούν στις τρεις επιλογές. Εικόνα 46. Οι επιλογές κλειστές (αριστερά) και ανοικτές (δεξιά) όταν ο χρήστης τοποθετήσει το ποντίκι κοντά στην περιοχή. Η υλοποίηση της γραφικής επαφής βασίζεται στο Canvas System που προσφέρει το Unity και είναι σχετικά απλή. Η συγκεκριμένη λειτουργία είναι περισσότερο θέμα σχεδίασης και γραφιστικής τέχνης παρά υλοποίησης. Παρόλα αυτά χρειάζεται να γραφεί ξεχωριστή συμπεριφορά για κάθε αντικείμενο της γραφικής διεπαφής. Μπορεί να υπάρξουν διάφορα παράθυρα ανοικτά και πολλές επιλογές ταυτόχρονα, πρέπει συνεχώς να γίνεται έλεγχος σχετικά με ποιο παράθυρο παραμένει ανοικτό και σε τι κατάσταση βρίσκεται η γραφική διεπαφή. Ομοίως με τις υπόλοιπες λειτουργίες, δημιουργήθηκε ένα κεντρικό Script που αναλαμβάνει να διαχειρίζεται τη κατάσταση της γραφικής διεπαφής και να ενημερώνει το Game Handler ως προς το ποιο παράθυρο είναι ανοικτό. Για παράδειγμα, το κουμπί που ανοίγει το παράθυρο των ρυθμίσεων (το γρανάζι που φαίνεται στην εικόνα 46), καλεί τη συνάρτηση OpenWindow του Window Manager με παράμετρο τον τύπο παραθύρου, στη συγκεκριμένη περίπτωση, GUIWindow.settings. Αν επιτρέπεται από την κατάσταση ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 85

86 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ του παιχνιδιού, τότε ανοίγει το παράθυρο, διαφορετικά ενημερώνεται ο χρήστης πως κάποιο άλλο παράθυρο είναι ήδη ανοικτό. Ενημέρωση Χρήστη Κάθε Script έχει την άδεια να δημιουργήσει ένα καινούριο μήνυμα προς τον χρήστη. Αυτά τα μηνύματα μπαίνουν σε μία λίστα, τα αντικείμενα της οποία διαγράφονται έπειτα από ένα χρονικό διάστημα. Τα μηνύματα που περιέχει αυτή η λίστα εμφανίζονται στο κέντρο της οθόνης, όπως φαίνεται στην εικόνα 47. Εικόνα 47. Στο κέντρο της οθόνης εμφανίζεται ένας πίνακας με τα μηνύματα προς τον χρήστη. Η λίστα αυτή μπορεί να περιέχει έως και 5 μηνύματα (κάθε νεότερο μήνυμα θα αντικαθιστά το παλαιότερο). Παράδειγμα δημιουργίας ενός μηνύματος GameHandler.DisplayAlert ("Grid is valid.",5f); // Δημιουργία του μηνύματος «Grid is valid» με διάρκεια εμφάνισης 5 δευτερόλεπτα. Κώδικας της συνάρτησης δημιουργίας μηνύματος public void DisplayAlert(string alertmessage, float duration){ alertspanel.setactive (true); // Ενεργοποίησε τον πίνακα ενημέρωσης if (alerts.count > 5) alerts.dequeue(); // Αν έχει ξεπεραστεί το όριο μηνυμάτων, αφαίρεσε το παλαιότερο μήνυμα alerts.enqueue (alertmessage); // Πρόσθεσε το νέο μήνυμα Invoke ("PopAlert", duration); // Έπειτα από την επιθυμητή διάρκεια, αφαίρεσε το } refreshalerts(); // Ανανέωσε τα περιεχόμενα του πίνακα Επιλογές Για να υλοποιηθούν οι επιλογές (Options) χρειάζεται η ενημέρωση όλων των στοιχείων που αφορούν κάθε φορά που ο χρήστης αλλάζει μια επιλογή. Για παράδειγμα, αν ο χρήστης αυξήσει την ένταση των ηχητικών εφέ, κάθε αντικείμενο στη σκηνή που παίζει κάποιο ηχητικό εφέ πρέπει να ενημερωθεί. Για να μη χρειαστεί η αναζήτηση όλων των αντικειμένων της σκηνής κάθε φορά, αυτή η διαδικασία γίνεται με προγραμματισμό γεγονότων (Event programming). Το script που διαχειρίζεται τις επιλογές αναλαμβάνει να καλέσει το event κάθε φορά που ο χρήστης αλλάζει κάτι και τα αντικείμενα που αποκρίνονται σε αυτό το γεγονός υλοποιούν την αντίστοιχη συμπεριφορά. 86 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

87 Για παράδειγμα, για να υπάρχει η επιλογή της έντασης των ηχητικών εφέ, κάθε φορά που αλλάζει τιμή ο ολισθητής (slider), το script που διαχειρίζεται τις επιλογές, GameSettings, καλεί το γεγονός. Οποιοδήποτε άλλο script έχει δηλώσει πως ενδιαφέρεται για το συγκεκριμένο γεγονός, αυτόματα καλεί την αντίστοιχη συνάρτηση. Συγκεκριμένα, το script SoundHandler μπαίνει πάνω σε κάθε αντικείμενο της σκηνής το οποίο παράγει ήχο. Κάθε φορά που αλλάζει η ένταση καλείται η συνάρτηση UpdateVolume και το ενημερώνει πως πρέπει να ανανεώσει την έντασή του. Με αυτόν τον τρόπο είναι πολύ εύκολο να διαχειριστούν μαζικά τα αντικείμενα που βρίσκονται στη σκηνή χωρίς να χρειαστεί κάποιου είδους αναζήτηση, όπως επίσης και να δημιουργηθούν νέα αντικείμενα που ακολουθούν τους κανόνες χωρίς να χρειάζεται κάποια διαδικασία. Όπως φαίνεται στην εικόνα 48, χρειάζεται απλά η προσθήκη του script πάνω στο αντικείμενο, χωρίς επιπλέον ρυθμίσεις για να συνδεθεί με τις επιλογές. Εικόνα 48. Στο κέντρο της οθόνης εμφανίζεται ένας πίνακας με τα μηνύματα προς τον χρήστη Το περιβάλλον Όπως αναφέρθηκε προηγουμένως, το περιβάλλον του παιχνιδιού πρέπει να ταιριάζει στο είδος του παιχνιδιού και να προσφέρει στο χρήστη μια χαλαρή και όμορφη εικόνα. Για τη δημιουργία του δεν απαιτείται να γραφεί κώδικας, καθώς είναι απλά τοποθέτηση αντικειμένων στη σκηνή με συγκεκριμένες διαστάσεις στη σωστή θέση. Για τη διαμόρφωση και τον χρωματισμό του εδάφους χρησιμοποιούνται τα εργαλεία που προσφέρει το Unity. Τα διαδραστικά αντικείμενα στο περιβάλλον έχουν το καθένα διαφορετικό script για τη συμπεριφορά τους. Αυτά τα script είναι ξεχωριστά από την υλοποίηση των υπόλοιπων λειτουργιών καθώς δεν χρειάζεται να ελεγχθεί η συμπεριφορά τους. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 87

88

89 Κ Ε Φ Α Λ Α Ι Ο 6 : Τ Ο U N I T Y

90

91 ΤΟ UNITY Εικόνα 49. Το εικονίδιο του Unity 3D Το Unity 3D είναι το κύριο και σημαντικότερο εργαλείο που χρησιμοποιήθηκε. Αποτελεί μια μηχανή ανάπτυξης ηλεκτρονικών παιχνιδιών, είτε τρισδιάστατων είτε δισδιάστατων. Δημιουργήθηκε από την Unity Technologies και κυκλοφόρησε αρχικά τον Ιούνιο του Σύμφωνα με τα επίσημα στατιστικά στην ιστοσελίδα τους [1], είναι η μηχανή με το μεγαλύτερο μερίδιο στην αγορά με 45%, ενώ η αμέσως επόμενη μόλις 17%. Αυτό το εργαλείο χρησιμοποιείται από 4.5 εκατομμύρια προγραμματιστές, ενώ πάνω από 600 εκατομμύρια παίκτες έχουν παίξει κάποιο από τα παραχθέντα παιχνίδια τους. Η τελευταία μεγάλη έκδοση του προγράμματος, Version 5.0, βγήκε τον Μάρτιο του Εικόνα 50. Το περιβάλλον του Unity 3D [1]: Unity Public Relations

92 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ 6.1 ΤΟ ΣΤΗΣΙΜΟ ΤΗΣ ΣΚΗΝΗΣ Κάθε παιχνίδι που δημιουργείται αποτελείται από διάφορα επίπεδα. Αυτά τα επίπεδα ονομάζονται σκηνές και αποτελούν το περιβάλλον που περιέχει τα διάφορα αντικείμενα του χώρου. Κάθε αντικείμενο στη σκηνή μπορεί να έχει διάφορες συμπεριφορές. Αρχικά, όλα τα αντικείμενα έχουν Transform, το οποίο αποτελείται από διανύσματα που περιγράφουν τη θέση, τη περιστροφή και το μέγεθός τους. Με τη διαχείριση του Transform ο προγραμματιστής μπορεί να τοποθετεί και να μετακινεί τα αντικείμενα στη σκηνή όπως αυτός επιθυμεί. Κάθε συμπεριφορά ενός αντικειμένου προέρχεται από ένα Script. Το εργαλείο παρέχει πολλά έτοιμα script για την υλοποίηση διάφορων λειτουργειών. Για παράδειγμα, αν ένα αντικείμενο στη σκηνή χρειάζεται να παράγει ήχο, τότε ο προγραμματιστής του δίνει την ιδιότητα Audio Source, όπως φαίνεται στο παράδειγμα της σφαίρας στην παρακάτω εικόνα. Εικόνα 51. Παράδειγμα συμπεριφορά ενός αντικειμένου. Η σφαίρα έχει την συμπεριφορά Audio Source που της επιτρέπει να παράγει ήχο. Ο προγραμματιστής για να ελέγξει τα αντικείμενα της σκηνής πρέπει να τους δώσει την ανάλογη συμπεριφορά. Για παράδειγμα, αν ένα αντικείμενο πρέπει να έχει σώμα και να υπακούει στους νόμους της φυσικής, τότε το αντικείμενο αυτό πρέπει να έχει την συμπεριφορά Rigidbody. Επομένως, χρειάζεται ο προγραμματιστής να γνωρίζει πολύ καλά τις συμπεριφορές που έχει διαθέσιμες το Unity για να στήσει κατάλληλα τη σκηνή. 92 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

93 Για κάθε άλλη συμπεριφορά που θέλει να φτιάξει ο προγραμματιστής, δημιουργεί ένα δικό του Script. Το Unity υποστηρίζει Scripts γραμμένα με τη γλώσσα προγραμματισμού C# και JavaScript. Για παράδειγμα, μια συμπεριφορά θα ήταν να κινείται το αντικείμενο μπροστά κατά μια σταθερή ταχύτητα, όσο ο χρήστης πατάει το πάνω βέλος. Ένας τρόπος να υλοποιηθεί αυτό είναι με το παρακάτω Script. Κώδικας του move public float speed; // Η ταχύτητα του αντικειμένου void Update () { // Η συνάρτηση Update καλείται σε κάθε frame if (Input.GetKey (KeyCode.UpArrow)) { // Αν είναι πατημένο το κουμπί this.transform.position += transform.forward * speed * Time.deltaTime; // Κίνηση ευθεία } } Κάθε μεταβλητή που ορίζεται ως public αυτόματα εμφανίζεται ως ιδιότητα στη συμπεριφορά του αντικειμένου, και μπορεί να δοθεί μια αρχική τιμή σε αυτή μέσω της σκηνής. Όπως φαίνεται στην εικόνα 52, η μεταβλητή Speed για το συγκεκριμένο αντικείμενο θα έχει τη τιμή Η συμπεριφορά είναι κοινή σε κάθε αντικείμενο. Δηλαδή, αν δοθεί το move σε κάποιο άλλο αντικείμενο στη σκηνή θα κινηθούν ταυτόχρονα όταν ο χρήστης πατήσει το πάνω βέλος, το κάθε αντικείμενο όμως με τη δική του ταχύτητα. Πολλές φορές είναι χρήσιμο να δίνονται συμπεριφορές στα αντικείμενα οι οποίες μπορεί να μην Εικόνα 52. Συμπεριφορά move, γραμμένη από τον προγραμματιστή. επιφέρουν κάποια αλλαγή ή να μην έχουν κάποια συγκεκριμένη ενέργεια, αλλά καθαρά για να δημιουργηθούν αντικείμενα της ίδιας κλάσης με διαφορετικές ιδιότητες. Για παράδειγμα, στο παιχνίδι που δημιουργήθηκε για τη παρούσα εργασία, αναπτύχθηκε το Item Script που περιγράφει το όνομα ενός αντικειμένου, τη κλάση του και τις ιδιότητές του (βλ. κεφάλαιο 4.1). Η συγκεκριμένη τεχνική είναι εξαιρετικά χρήσιμη όταν χρειάζεται να γίνει αναφορά σε κάποιο αντικείμενο μιας κλάσης, χωρίς αυτό να είναι παρόν στη σκηνή. Αυτό είναι εφικτό με τη χρήση των prefabs. Ένα prefab είναι ένα αντικείμενο με προεπιλεγμένες συμπεριφορές και ιδιότητες που αποθηκεύεται στα τοπικά αρχεία του project. Τα prefabs δε χρειάζεται να είναι παρόντα στη σκηνή για να διαβάσει κάποιο script τις τιμές των ιδιοτήτων τους. Επομένως, μπορούν να χρησιμοποιηθούν ως ένα είδος βάσης δεδομένων που αποθηκεύει αντικείμενα κλάσεων. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 93

94 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ 6.2 ΕΠΙΠΛΕΟΝ ΛΕΙΤΟΥΡΓΙΕΣ Πέρα από τη δημιουργία της σκηνής και έτοιμες συμπεριφορές, το Unity 3D προσφέρει μια πληθώρα λειτουργιών που βοηθούν στη διαχείριση των συμπεριφορών, όπως επίσης και στον έλεγχο των επιλογών. Παρακάτω περιγράφονται συνοπτικά δύο από αυτές τις λειτουργίες. Animation Controller Ο Animation Controller επιτρέπει τη διαχείριση των κινήσεων ενός τρισδιάστατου μοντέλου με τη χρήση ενός αυτομάτου. Κάθε μετάβαση από μια κατάσταση σε μια άλλη γίνεται υπό συνθήκες τις οποίες επιλέγει ο προγραμματιστής. Με αυτό τον τρόπο αυτοματοποιείται η διαδικασία επιλογής κάποιας συγκεκριμένης κίνησης σε κάθε χρονική στιγμή. Εικόνα 53. Ένα απλό παράδειγμα του Animation Controller. Audio Mixer Ο Audio Mixer επιτρέπει τη μίξη των ήχων που υπάρχουν στη σκηνή, όπως και τη προσθήκη νέων ηχητικών εφέ πάνω σε αυτά. Εικόνα 54. Ο μίκτης που προσφέρει το Unity 3D. 94 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

95 6.3 ΔΙΑΘΕΣΙΜΕΣ ΥΠΗΡΕΣΙΕΣ Με σκοπό να βοηθήσει τους προγραμματιστές με τη διαχείριση του παιχνιδιού, το Unity 3D προσφέρει διάφορες υπηρεσίες, ξεχωριστές από τη δημιουργία του προγράμματος. Οι υπηρεσίες αυτές είναι: Analytics Analytics Everyplay Cloud Build Multiplayer Performance Reporting Το Analytics είναι μια υπηρεσία που επιτρέπει στο προγραμματιστή να βλέπει στατιστικά για τη χρήση του παιχνιδιού, αφού το έχει εκδώσει. Περιέχει στατιστικά όπως τον αριθμό των ενεργών παικτών ημερησίως, δημογραφικά στοιχεία για τους παίκτες, όπου αυτά είναι διαθέσιμα και το χρόνο που ξοδεύουν σε κάθε σκηνή οι χρήστες. Εικόνα 55. Το κύριο παράθυρο του Unity Analytics. Με αυτόν τον τρόπο ο εκδότης του παιχνιδιού μπορεί να δει καθημερινά την επίδοση του παιχνιδιού, όπως και να βγάλει συμπεράσματα για τη γνώμη που έχουν οι χρήστες για το παιχνίδι και τις αναβαθμίσεις του. Για παράδειγμα, αν ο αριθμός των ενεργών παικτών μειωθεί έπειτα από μια αναβάθμιση, σημαίνει πως η αναβάθμιση αυτή δεν είχε θετική επίδραση στους παίκτες, και επομένως πρέπει να διορθωθεί. ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ. 95

96 ΜΙΛΤΙΑΔΗΣ ΝΕΔΕΛΚΟΣ Everyplay Το Everyplay επιτρέπει τη καταγραφή βίντεο την ώρα που παίζει ο παίκτης και τη δυνατότητα να το μοιραστεί σε κοινωνικά δίκτυα. Όταν γίνει κάτι διασκεδαστικό ή κάτι αξιοθαύμαστο στο παιχνίδι, ο παίκτης μπορεί να θέλει να το μοιραστεί με τους φίλους του χωρίς ιδιαίτερη δυσκολία. Ουσιαστικά, είναι ένα μέσο διάδοσης του παιχνιδιού μέσω των παικτών, κάτι που αποτελεί ιδανικό είδος διαφήμισης. Cloud Build Η υπηρεσία Cloud Build είναι μια υπηρεσία που αυτομάτως παράγει το εκτελέσιμο του παιχνιδιού με κάθε αλλαγή στο project. Το εκτελέσιμο που παράγεται γίνεται άμεσα διαθέσιμο για εγκατάσταση προς κάθε προγραμματιστή σε οποιαδήποτε συσκευή. Είναι μια υπηρεσία που σκοπεύει στο να διευκολύνει και να επιταχύνει τη διαδικασία διαμοιρασμού μιας νέας έκδοσης, κυρίως για παιχνίδια σε φορητές συσκευές. Εικόνα 56. Τα βήματα εκτέλεσης του Cloud Build. Multiplayer Το multiplayer επιτρέπει την αποστολή δεδομένων και τον συγχρονισμό του παιχνιδιού μέσω του internet, όπου παραπάνω από έναν παίκτες παίζουν στο ίδιο παιχνίδι, από οποιαδήποτε πλατφόρμα. Ουσιαστικά, το unity με αυτή την υπηρεσία προσφέρει βελτιστοποιημένους διακομιστές, ειδικά ρυθμισμένους για τη συγκεκριμένη λειτουργία. Καθώς η διασύνδεση των παικτών είναι περίπλοκη, δύσκολη και ακριβή διαδικασία, αυτή η υπηρεσία στοχεύει να την απλοποιήσει και να προσφέρει στους προγραμματιστές μια ευκολότερη και φθηνότερη λύση. Performance Reporting Το performance reporting είναι μια πλατφόρμα παρόμοια με το Analytics, μόνο που διαχειρίζεται τις αναφορές που δημιουργούνται κάθε φορά που υπάρχει κάποιο λάθος στην εκτέλεση του παιχνιδιού. Αν το παιχνίδι παρουσιάσει πρόβλημα σε κάποιο παίκτη, άμεσα ενημερώνεται αυτή η πλατφόρμα και δημιουργεί την αντίστοιχη αναφορά. Με αυτόν τον τρόπο, οι δημιουργοί του παιχνιδιού είναι ενήμεροι για το εάν παρουσιάζει προβλήματα η εφαρμογή. 96 ΑΝΑΠΤΥΞΗ ΤΡΙΣΔΙΑΣΤΑΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΜΕ ΧΡΗΣΗ ΣΧΕΔΙΑΣΜΟΥ ΕΝΕΡΓΕΙΩΝ.

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Αναζήτηση Δοθέντος ενός προβλήματος με περιγραφή είτε στον χώρο καταστάσεων

Διαβάστε περισσότερα

ΥΣ02 Τεχνητή Νοημοσύνη Χειμερινό Εξάμηνο

ΥΣ02 Τεχνητή Νοημοσύνη Χειμερινό Εξάμηνο ΥΣ02 Τεχνητή Νοημοσύνη Χειμερινό Εξάμηνο 2010-2011 Πρώτη Σειρά Ασκήσεων (20% του συνολικού βαθμού στο μάθημα, Άριστα = 390 μονάδες) Ημερομηνία Ανακοίνωσης: 6/10/2010 Ημερομηνία Παράδοσης: 15/11/2010 σύμφωνα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Αλγόριθμοι Τυφλής Αναζήτησης Οι αλγόριθμοι τυφλής αναζήτησης εφαρμόζονται σε

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη. 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος. http://www.aueb.gr/users/ion/

Τεχνητή Νοημοσύνη. 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος. http://www.aueb.gr/users/ion/ Τεχνητή Νοημοσύνη 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται στα βιβλία: Τεχνητή Νοημοσύνη των Βλαχάβα κ.ά., 3η έκδοση, Β. Γκιούρδας

Διαβάστε περισσότερα

Περιγραφή Προβλημάτων

Περιγραφή Προβλημάτων Τεχνητή Νοημοσύνη 02 Περιγραφή Προβλημάτων Φώτης Κόκκορας Τμ.Τεχν/γίας Πληροφορικής & Τηλ/νιών - ΤΕΙ Λάρισας Παραδείγματα Προβλημάτων κύβοι (blocks) Τρεις κύβοι βρίσκονται σε τυχαία διάταξη πάνω στο τραπέζι

Διαβάστε περισσότερα

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1 Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Τεχνητή Νοημοσύνη, 2016 17 Διδάσκων: Ι. Ανδρουτσόπουλος Ασκήσεις μελέτης της 4 ης διάλεξης 4.1. (α) Αποδείξτε ότι αν η h είναι συνεπής, τότε h(n

Διαβάστε περισσότερα

Επίλυση προβλημάτων με αναζήτηση

Επίλυση προβλημάτων με αναζήτηση Επίλυση προβλημάτων με αναζήτηση Περιεχόμενα Μέθοδοι (πράκτορες) επίλυσης προβλημάτων Προβλήματα και Λύσεις Προβλήματα παιχνίδια Προβλήματα του πραγματικού κόσμου Αναζήτηση λύσεων Δέντρο αναζήτησης Στρατηγικές

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Αλγόριθμοι Ευριστικής Αναζήτησης Πολλές φορές η τυφλή αναζήτηση δεν επαρκεί

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Περιγραφή Προβλημάτων Διαισθητικά, σε ένα πρόβλημα υπάρχει μια δεδομένη κατάσταση

Διαβάστε περισσότερα

Αλγόριθμοι Τυφλής Αναζήτησης

Αλγόριθμοι Τυφλής Αναζήτησης Τεχνητή Νοημοσύνη 04 Αλγόριθμοι Τυφλής Αναζήτησης Αλγόριθμοι Τυφλής Αναζήτησης (Blind Search Algorithms) Εφαρμόζονται σε προβλήματα στα οποία δεν υπάρχει πληροφορία που να επιτρέπει αξιολόγηση των καταστάσεων.

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη. 3η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Τεχνητή Νοημοσύνη. 3η διάλεξη ( ) Ίων Ανδρουτσόπουλος. Τεχνητή Νοημοσύνη 3η διάλεξη (2016-17) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται στα βιβλία Τεχνητή Νοημοσύνη των Βλαχάβα κ.ά., 3η έκδοση, Β. Γκιούρδας

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη. 4η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Τεχνητή Νοημοσύνη. 4η διάλεξη ( ) Ίων Ανδρουτσόπουλος. Τεχνητή Νοημοσύνη 4η διάλεξη (2016-17) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται κυρίως στα βιβλία Τεχνητή Νοημοσύνη των Βλαχάβα κ.ά., 3η έκδοση, Β.

Διαβάστε περισσότερα

Το Κ2 είναι ένα παιχνίδι για 1 έως 5 παίκτες, ηλικίας 8 ετών και άνω, με διάρκεια περίπου 60 λεπτά.

Το Κ2 είναι ένα παιχνίδι για 1 έως 5 παίκτες, ηλικίας 8 ετών και άνω, με διάρκεια περίπου 60 λεπτά. ΟΔΗΓΙΕΣ Το Κ2 είναι το δεύτερο ψηλότερο βουνό στον κόσμο (μετά το Έβερεστ) με ύψος 8.611 μέτρα από τη στάθμη της θάλασσας. Θεωρείται, επίσης, ένα από τα δυσκολότερα βουνά άνω των 8.000 μέτρων. Το Κ2 ποτέ

Διαβάστε περισσότερα

Επίλυση Προβλημάτων 1

Επίλυση Προβλημάτων 1 Επίλυση Προβλημάτων 1 Επίλυση Προβλημάτων Περιγραφή Προβλημάτων Αλγόριθμοι αναζήτησης Αλγόριθμοι τυφλής αναζήτησης Αναζήτηση πρώτα σε βάθος Αναζήτηση πρώτα σε πλάτος (ΒFS) Αλγόριθμοι ευρετικής αναζήτησης

Διαβάστε περισσότερα

Επίλυση προβληµάτων. Αλγόριθµοι Αναζήτησης

Επίλυση προβληµάτων. Αλγόριθµοι Αναζήτησης Επίλυση προβληµάτων! Περιγραφή προβληµάτων Αλγόριθµοι αναζήτησης Αλγόριθµοι τυφλής αναζήτησης Αλγόριθµοι ευρετικής αναζήτησης Παιχνίδια δύο αντιπάλων Προβλήµατα ικανοποίησης περιορισµών Γενικά " Τεχνητή

Διαβάστε περισσότερα

Σενάριο 16: Ο κόσμος του Robby

Σενάριο 16: Ο κόσμος του Robby Σενάριο 16: Ο κόσμος του Robby Φύλλο Εργασίας Τίτλος: Ο κόσμος του Robby Γνωστικό Αντικείμενο: Εφαρμογές Πληροφορικής-Υπολογιστών Διδακτική Ενότητα: Διερευνώ - Δημιουργώ Ανακαλύπτω, Συνθετικές εργασίες.

Διαβάστε περισσότερα

ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (1) ΣΤΡΑΤΗΓΙΚΗ Ή ΑΛΓΟΡΙΘΜΟΣ ΑΝΑΖΗΤΗΣΗΣ

ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (1) ΣΤΡΑΤΗΓΙΚΗ Ή ΑΛΓΟΡΙΘΜΟΣ ΑΝΑΖΗΤΗΣΗΣ ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (1) ΣΤΡΑΤΗΓΙΚΗ Ή ΑΛΓΟΡΙΘΜΟΣ ΑΝΑΖΗΤΗΣΗΣ Μια αυστηρά καθορισµένη ακολουθία ενεργειών µε σκοπό τη λύση ενός προβλήµατος. Χαρακτηριστικά οθέν πρόβληµα: P= Επιλυθέν πρόβληµα: P s

Διαβάστε περισσότερα

Κεφάλαιο 3. Αλγόριθµοι Τυφλής Αναζήτησης. Τεχνητή Νοηµοσύνη - Β' Έκδοση. Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η.

Κεφάλαιο 3. Αλγόριθµοι Τυφλής Αναζήτησης. Τεχνητή Νοηµοσύνη - Β' Έκδοση. Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η. Κεφάλαιο 3 Αλγόριθµοι Τυφλής Αναζήτησης Τεχνητή Νοηµοσύνη - Β' Έκδοση Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η. Σακελλαρίου Αλγόριθµοι Τυφλής Αναζήτησης Οι αλγόριθµοι τυφλής αναζήτησης (blind

Διαβάστε περισσότερα

PROJECT ΣΤΟ ΜΑΘΗΜΑ "ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟΔΟΥΣ"

PROJECT ΣΤΟ ΜΑΘΗΜΑ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟΔΟΥΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ PROJECT ΣΤΟ ΜΑΘΗΜΑ "ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟΔΟΥΣ" ΜΕΡΟΣ ΔΕΥΤΕΡΟ Υπεύθυνος Καθηγητής Λυκοθανάσης Σπυρίδων Ακαδημαικό Έτος:

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

Επίλυση Προβλημάτων 1

Επίλυση Προβλημάτων 1 Επίλυση Προβλημάτων 1 Επίλυση Προβλημάτων Περιγραφή Προβλημάτων Αλγόριθμοι αναζήτησης Αλγόριθμοι τυφλής αναζήτησης Αναζήτηση πρώτα σε βάθος Αναζήτηση πρώτα σε πλάτος (ΒFS) Αλγόριθμοι ευρετικής αναζήτησης

Διαβάστε περισσότερα

Αυτόνομοι Πράκτορες. ΝΑΟ Μουσικός

Αυτόνομοι Πράκτορες. ΝΑΟ Μουσικός Αυτόνομοι Πράκτορες ΝΑΟ Μουσικός Καρατζαφέρης Ευστάθιος Αλέξανδρος 2007 030 046 Πολυτεχνείο Κρήτης Σύντομη Περιγραφή Στόχος της εργασίας μας είναι η υλοποίηση της συμπεριφοράς αλλα και της λειτουργικότητας

Διαβάστε περισσότερα

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Παίγνια Δύο Αντιπάλων Τα προβλήματα όπου η εξέλιξη των καταστάσεων εξαρτάται

Διαβάστε περισσότερα

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

Διαβάστε περισσότερα

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites Σκοπός της 10ης άσκησης είναι να μάθουμε να χρησιμοποιούμε sprites και να φτιάξουμε ένα παιχνίδι που χρησιμοποιεί συγκρούσεις. Θα δούμε επίσης μερικά

Διαβάστε περισσότερα

Σχεδιαστικά Προγράμματα Επίπλου

Σχεδιαστικά Προγράμματα Επίπλου Σχεδιαστικά Προγράμματα Επίπλου Καθηγήτρια ΦΕΡΦΥΡΗ ΣΩΤΗΡΙΑ Τμήμα ΣΧΕΔΙΑΣΜΟΥ & ΤΕΧΝΟΛΟΓΙΑΣ ΞΥΛΟΥ - ΕΠΙΠΛΟΥ Σχεδιαστικά Προγράμματα Επίπλου Η σχεδίαση με τον παραδοσιακό τρόπο απαιτεί αυξημένο χρόνο, ενώ

Διαβάστε περισσότερα

ΑΥΤΟΝΟΜΟΙ ΠΡΑΚΤΟΡΕΣ. ΑΝΑΦΟΡΑ ΕΡΓΑΣΙΑΣ Othello-TD Learning. Βόλτσης Βαγγέλης Α.Μ

ΑΥΤΟΝΟΜΟΙ ΠΡΑΚΤΟΡΕΣ. ΑΝΑΦΟΡΑ ΕΡΓΑΣΙΑΣ Othello-TD Learning. Βόλτσης Βαγγέλης Α.Μ ΑΥΤΟΝΟΜΟΙ ΠΡΑΚΤΟΡΕΣ ΑΝΑΦΟΡΑ ΕΡΓΑΣΙΑΣ Othello-TD Learning Βόλτσης Βαγγέλης Α.Μ. 2011030017 Η παρούσα εργασία πραγματοποιήθηκε στα πλαίσια του μαθήματος Αυτόνομοι Πράκτορες και σχετίζεται με λήψη αποφάσεων

Διαβάστε περισσότερα

Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e

Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e Άσκηση 1 Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e Υπάρχουν τρία μαύρα τετραγωνάκια (b), τρία άσπρα (w) και ένα κενό (e). Η σπαζοκεφαλιά έχει τις ακόλουθες

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Βασισμένο σε μια εργασία των Καζαρλή, Καλόμοιρου, Μαστοροκώστα, Μπαλουκτσή, Καλαϊτζή, Βαλαή, Πετρίδη Εισαγωγή Η Εξελικτική Υπολογιστική

Διαβάστε περισσότερα

Σχετική κίνηση αντικειμένων

Σχετική κίνηση αντικειμένων Σχετική κίνηση αντικειμένων Πως θα μπορούσε να κινηθεί ένας χαρακτήρας προς την έξοδο ενός λαβύρινθου; Πως θα μπορούσε το αυτοκινητάκι μας να κινείται μέσα στην πίστα; Πως θα μπορούσαμε να αναπαραστήσουμε

Διαβάστε περισσότερα

Slalom Race Computer Game on Scratch

Slalom Race Computer Game on Scratch Slalom Race Computer Game on Scratch Μπογιατζή Ελισάβετ ¹, Μεταξά Παυλίνα², Νεστοροπούλου Ευσεβεία³, Μαρόγλου Ευαγγελία 4 1 boelisabet@gmail.com 2 pavlinamet2@gmail.com 3 makis.nestoro@hotmail.com 4 euaggeliam2000@gmail.com

Διαβάστε περισσότερα

ΠΑΡΑΡΤΗΜΑ IV. ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ IV Ασκήσεις για το Robolab

ΠΑΡΑΡΤΗΜΑ IV. ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ IV Ασκήσεις για το Robolab ΠΑΡΑΡΤΗΜΑ IV Παρακάτω παραθέτουμε μία σειρά ασκήσεων για το Robolab ομαδοποιημένων σε κατηγορίες : Επιμέλεια : Κυριακού Γεώργιος 1 Φύλλο Ασκήσεων (πρόκληση με κινητήρες) ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ

Διαβάστε περισσότερα

RobotArmy Περίληψη έργου

RobotArmy Περίληψη έργου RobotArmy Περίληψη έργου Στην σημερινή εποχή η ανάγκη για αυτοματοποίηση πολλών διαδικασιών γίνεται όλο και πιο έντονη. Συνέχεια ακούγονται λέξεις όπως : βελτιστοποίηση ποιότητας ζωής, αυτοματοποίηση στον

Διαβάστε περισσότερα

Θέμα 1: Robbie και Αναζήτηση

Θέμα 1: Robbie και Αναζήτηση Θέμα : Robbie και Αναζήτηση Ο Robbie, το ρομπότ του παρακάτω σχήματος-χάρτη, κατά τη διάρκεια των εργασιών που κάνει διαπιστώνει ότι πρέπει να γυρίσει όσο το δυνατόν πιο γρήγορα, από την τρέχουσα θέση,

Διαβάστε περισσότερα

Αλγόριθμοι Αναζήτησης σε Παίγνια Δύο Αντιπάλων

Αλγόριθμοι Αναζήτησης σε Παίγνια Δύο Αντιπάλων Τεχνητή Νοημοσύνη 06 Αλγόριθμοι Αναζήτησης σε Παίγνια Δύο Αντιπάλων Εισαγωγικά (1/3) Τα προβλήματα όπου η εξέλιξη των καταστάσεων εξαρτάται από δύο διαφορετικά σύνολα τελεστών μετάβασης που εφαρμόζονται

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ ΥΠΟΥΡΓΕΙΟ ΕΘΝΙΚΗΣ ΠΑΙΔΕΙΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ Κ Υ Κ Λ Ο Υ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Κ Α Ι Υ Π Η Ρ Ε Σ Ι Ω Ν Τ Ε Χ Ν Ο Λ Ο Γ Ι Κ Η

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2ο ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΑΚΡΙΤΩΝ ΓΕΓΟΝΟΤΩΝ

ΚΕΦΑΛΑΙΟ 2ο ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΑΚΡΙΤΩΝ ΓΕΓΟΝΟΤΩΝ ΚΕΦΑΛΑΙΟ 2ο ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΑΚΡΙΤΩΝ ΓΕΓΟΝΟΤΩΝ 2.1 Εισαγωγή Η μέθοδος που θα χρησιμοποιηθεί για να προσομοιωθεί ένα σύστημα έχει άμεση σχέση με το μοντέλο που δημιουργήθηκε για το σύστημα. Αυτό ισχύει και

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη. 6η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Τεχνητή Νοημοσύνη. 6η διάλεξη ( ) Ίων Ανδρουτσόπουλος. Τεχνητή Νοημοσύνη 6η διάλεξη (2016-17) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται στα βιβλία Τεχνητή Νοημοσύνη των Βλαχάβα κ.ά., 3η έκδοση, Β. Γκιούρδας

Διαβάστε περισσότερα

Ενότητα 5: ΜΕΤΑΒΛΗΤΕΣ

Ενότητα 5: ΜΕΤΑΒΛΗΤΕΣ Ενότητα 5: ΜΕΤΑΒΛΗΤΕΣ Οι Μεταβλητές στον Προγραμματισμό Οι μεταβλητές είναι θέσεις μνήμης που έχουν κάποιο όνομα. Όταν δίνω τιμή σε μία μεταβλητή, ουσιαστικά, αποθηκεύουμε στη μνήμη αυτή τον αριθμό που

Διαβάστε περισσότερα

Ενότητα 2: Εντολές Επανάληψης

Ενότητα 2: Εντολές Επανάληψης Ενότητα 2: Εντολές Επανάληψης Όταν κάποια εντολή ή ολόκληρη ομάδα εντολών επαναλαμβάνεται τότε δεν είναι απαραίτητο να τις γράψουμε πολλές φορές αλλά χρησιμοποιούμε την εντολή ΕΠΑΝΑΛΑΒΕ Συντάσσεται ως

Διαβάστε περισσότερα

Θεωρία Παιγνίων Δρ. Τασσόπουλος Ιωάννης

Θεωρία Παιγνίων Δρ. Τασσόπουλος Ιωάννης Θεωρία Παιγνίων Δρ. Τασσόπουλος Ιωάννης 1 η Διάλεξη Ορισμός Θεωρίας Παιγνίων και Παιγνίου Κατηγοριοποίηση παιγνίων Επίλυση παιγνίου Αξία (τιμή) παιγνίου Δίκαιο παίγνιο Αναπαράσταση Παιγνίου Με πίνακα Με

Διαβάστε περισσότερα

Επίλυση Προβλημάτων 1

Επίλυση Προβλημάτων 1 Επίλυση Προβλημάτων 1 Επίλυση Προβλημάτων Περιγραφή Προβλημάτων Αλγόριθμοι αναζήτησης Αλγόριθμοι τυφλής αναζήτησης Αναζήτηση πρώτα σε βάθος Αναζήτηση πρώτα σε πλάτος (ΒFS) Αλγόριθμοι ευρετικής αναζήτησης

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2013-2014 Επιμέλεια: Ομάδα Διαγωνισμάτων από το Στέκι των Πληροφορικών Θέμα Α A1. Να γράψετε στο τετράδιό σας τους

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012 ΘΕΜΑ Α Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις: 1. Κάθε βρόγχος που υλοποιείται με την εντολή Για μπορεί να

Διαβάστε περισσότερα

Ο ξεναγός (Συνοδευτική δραστηριότητα του γύρου του ίππου)

Ο ξεναγός (Συνοδευτική δραστηριότητα του γύρου του ίππου) Ο ξεναγός (Συνοδευτική δραστηριότητα του γύρου του ίππου) Ηλικίες: Προαπαιτούμενες δεξιότητες: Χρόνος: Μέγεθος ομάδας: 8 ενήλικες Καμία 15 λεπτά για τη βασική δραστηριότητα, περισσότερο για τις επεκτάσεις

Διαβάστε περισσότερα

Δημιουργώντας ένα παιχνίδι λαβυρίνθου(maze game) με εμπόδια

Δημιουργώντας ένα παιχνίδι λαβυρίνθου(maze game) με εμπόδια Φύλλο Εργασίας Δημιουργώντας ένα παιχνίδι λαβυρίνθου(maze game) με εμπόδια Δραστηριότητα 1η Σε αυτό το φύλλο εργασίας θα δημιουργήσουμε βήμα βήμα ένα παιχνίδι με λαβύρινθο (maze game) με εμπόδια. Το παιχνίδι

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Τελικές εξετάσεις Πέμπτη 27 Ιουνίου 2013 10:003:00 Έστω το πάζλ των οκτώ πλακιδίων (8-puzzle)

Διαβάστε περισσότερα

Ε ανάληψη. Α ληροφόρητη αναζήτηση

Ε ανάληψη. Α ληροφόρητη αναζήτηση ΠΛΗ 405 Τεχνητή Νοηµοσύνη Το ική Αναζήτηση Local Search Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υ ολογιστών Πολυτεχνείο Κρήτης Ε ανάληψη Α ληροφόρητη αναζήτηση σε πλάτος, οµοιόµορφου κόστους, σε βάθος,

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

ΕΝΤΟΛΕΣ. 7.1 Εισαγωγικό μέρος με επεξήγηση των Εντολών : Επεξήγηση των εντολών που θα

ΕΝΤΟΛΕΣ. 7.1 Εισαγωγικό μέρος με επεξήγηση των Εντολών : Επεξήγηση των εντολών που θα 7.1 Εισαγωγικό μέρος με επεξήγηση των Εντολών : Επεξήγηση των εντολών που θα ΕΝΤΟΛΕΣ χρησιμοποιηθούν παρακάτω στα παραδείγματα Βάζοντας την εντολή αυτή σε οποιοδήποτε αντικείμενο μπορούμε να αλλάζουμε

Διαβάστε περισσότερα

Πολυτεχνείο Κρήτης Τμήμα ΗΜΜΥ Χειμερινό Εξάμηνο Intelligence Lab. Αυτόνομοι Πράκτορες. Κουσανάκης Βασίλης

Πολυτεχνείο Κρήτης Τμήμα ΗΜΜΥ Χειμερινό Εξάμηνο Intelligence Lab. Αυτόνομοι Πράκτορες. Κουσανάκης Βασίλης Πολυτεχνείο Κρήτης Τμήμα ΗΜΜΥ Χειμερινό Εξάμηνο 2012-2013 Intelligence Lab Αυτόνομοι Πράκτορες Κουσανάκης Βασίλης 2006030096 Αναφορά εργασίας εξαμήνου Mobile robots Rat s life Mapping Localization Είναι

Διαβάστε περισσότερα

Σχεδιασμός Ψηφιακών Εκπαιδευτικών Εφαρμογών ΙI

Σχεδιασμός Ψηφιακών Εκπαιδευτικών Εφαρμογών ΙI Σχεδιασμός Ψηφιακών Εκπαιδευτικών Εφαρμογών ΙI Εργασία 1 ΣΤΟΙΧΕΙΑ ΦΟΙΤΗΤΡΙΑΣ: Τσελίγκα Αρετή, 1312009161, Στ εξάμηνο, κατεύθυνση: Εκπαιδευτική Τεχνολογία και Διαπολιτισμική Επικοινωνία Το γνωστικό αντικείμενο

Διαβάστε περισσότερα

Περιεχόμενα ΓΕΩΠΥΛΗ ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΚΕΝΤΡΙΚΟ SITE

Περιεχόμενα ΓΕΩΠΥΛΗ ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΚΕΝΤΡΙΚΟ SITE Περιεχόμενα ΥΠΟΛΟΓΙΣΜΟΣ ΔΙΑΔΡΟΜΗΣ... 2 Είσοδος στην εφαρμογή... 2 Λειτουργίες εφαρμογής υπολογισμού διαδρομής... 2 Πλοήγηση στο χάρτη... 3 Επιλογή Υποβάθρου... 4 Εύρεση Διαδρομής... 4 ΥΠΟΛΟΓΙΣΜΟΣ ΔΙΑΔΡΟΜΗΣ

Διαβάστε περισσότερα

2). V (s) = R(s) + γ max T (s, a, s )V (s ) (3)

2). V (s) = R(s) + γ max T (s, a, s )V (s ) (3) ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Παράδοση: 5 Απριλίου 2012 Μιχελιουδάκης Ευάγγελος 2007030014 ΠΛΗ513: Αυτόνομοι Πράκτορες ΑΝΑΦΟΡΑ ΕΡΓΑΣΙΑΣ Εισαγωγή Η εργασία με

Διαβάστε περισσότερα

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης Σύνοψη Προηγούμενου Πίνακες (Arrays Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Διαδικαστικά θέματα. Aντικείμενο Μαθήματος. Aντικείμενα, Κλάσεις, Μέθοδοι, Μεταβλητές.

Διαβάστε περισσότερα

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

Διαβάστε περισσότερα

Το Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem

Το Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem Το Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem Έλενα Ρόκου Μεταδιδακτορική Ερευνήτρια ΕΜΠ Κηρυττόπουλος Κωνσταντίνος Επ. Καθηγητής ΕΜΠ Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Επίλυση Προβλημάτων. Αποτελεί ένα από τα βασικά χαρακτηριστικά γνωρίσματα της νοημοσύνης.

Επίλυση Προβλημάτων. Αποτελεί ένα από τα βασικά χαρακτηριστικά γνωρίσματα της νοημοσύνης. Επίλυση Προβλημάτων Αποτελεί ένα από τα βασικά χαρακτηριστικά γνωρίσματα της νοημοσύνης. Τεχνητή Νοημοσύνη = Αναπαράσταση Γνώσης + Αλγόριθμοι Αναζήτησης Κατηγορίες Προβλημάτων Aναζήτησης Πραγματικά και

Διαβάστε περισσότερα

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι 21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB Αλγόριθμος Διαδικασία Παράμετροι Τι είναι Αλγόριθμος; Οι οδηγίες που δίνουμε με λογική σειρά, ώστε να εκτελέσουμε μια διαδικασία ή να επιλύσουμε ένα

Διαβάστε περισσότερα

Επίλυση προβληµάτων. Περιγραφή προβληµάτων Αλγόριθµοι αναζήτησης Αλγόριθµοι τυφλής αναζήτησης Αλγόριθµοι ευρετικής αναζήτησης

Επίλυση προβληµάτων. Περιγραφή προβληµάτων Αλγόριθµοι αναζήτησης Αλγόριθµοι τυφλής αναζήτησης Αλγόριθµοι ευρετικής αναζήτησης Επίλυση προβληµάτων Περιγραφή προβληµάτων Αλγόριθµοι αναζήτησης Αλγόριθµοι τυφλής αναζήτησης Αλγόριθµοι ευρετικής αναζήτησης! Παιχνίδια δύο αντιπάλων Προβλήµατα ικανοποίησης περιορισµών Γενικά " Ντετερµινιστικά

Διαβάστε περισσότερα

Εισαγωγή στο 3DS Max 2009

Εισαγωγή στο 3DS Max 2009 Μάθημα 1ο Εισαγωγή στο 3DS Max 2009 Σε αυτό το μάθημα πραγματοποιείται εκμάθηση του περιβάλλοντος του προγράμματος 3DS Max 2009. Το 3D Studio Max είναι ένα από τα ισχυρότερα προγράμματα δημιουργίας και

Διαβάστε περισσότερα

Άσκηση 2: Λαβύρινθοι και ρομπότ Α. (Σχεδιασμός χώρου καταστάσεων) Ενδεικτική επίλυση

Άσκηση 2: Λαβύρινθοι και ρομπότ Α. (Σχεδιασμός χώρου καταστάσεων) Ενδεικτική επίλυση Άσκηση 2: Λαβύρινθοι και ρομπότ Η εταιρία «Ρομπότ» παρουσιάζει το νέο της μοντέλο, τον πλοηγό πάρκων Ρ-310. Το Ρ-310 είναι δημοφιλές γιατί όπου και αν είσαι μέσα στο πάρκο σου λέει πώς πρέπει να κινηθείς

Διαβάστε περισσότερα

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

Διαβάστε περισσότερα

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα

Εισαγωγή στην επανάληψη

Εισαγωγή στην επανάληψη Εισαγωγή στην επανάληψη Στο κεφάλαιο αυτό ήρθε η ώρα να μελετήσουμε την επανάληψη στον προγραμματισμό λίγο πιο διεξοδικά! Έχετε ήδη χρησιμοποιήσει, χωρίς πολλές επεξηγήσεις, σε προηγούμενα κεφάλαια τις

Διαβάστε περισσότερα

Ακρότατα πίνακα, χωρίς min, max, μόνο με pos

Ακρότατα πίνακα, χωρίς min, max, μόνο με pos Ακρότατα πίνακα, χωρίς min, max, μόνο με pos Θέμα εξετάσεων / 2010 Θέμα εξετάσεων / 2011 Θέμα εξετάσεων / 2013 Θέμα εξετάσεων / 2014 Θέμα εξετάσεων / 2014 ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.)

Διαβάστε περισσότερα

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι Κ Ο Τ Ι Ν Η Ι Σ Α Β Ε Λ Λ Α Ε Κ Π Α Ι Δ Ε Υ Τ Ι Κ Ο Σ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Π Ε 8 6 Ν Ε Ι Ρ Ο Σ Α Ν Τ Ω ΝΙ Ο Σ Ε Κ Π Α Ι Δ Ε Υ Τ Ι Κ Ο Σ Π Λ Η Ρ Ο Φ Ο

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 12 η Αναζήτηση/Ταξινόμηση Πίνακα Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην

Διαβάστε περισσότερα

Η Μηχανική Μάθηση στο Σχολείο: Μια Προσέγγιση για την Εισαγωγή της Ενισχυτικής Μάθησης στην Τάξη

Η Μηχανική Μάθηση στο Σχολείο: Μια Προσέγγιση για την Εισαγωγή της Ενισχυτικής Μάθησης στην Τάξη 6 ο Πανελλήνιο Συνέδριο «Διδακτική της Πληροφορικής» Φλώρινα, 20-22 Απριλίου 2012 Η Μηχανική Μάθηση στο Σχολείο: Μια Προσέγγιση για την Εισαγωγή της Ενισχυτικής Μάθησης στην Τάξη Σάββας Νικολαΐδης 1 ο

Διαβάστε περισσότερα

ΠΑΙΓΝΙΑ Παιχνίδια Γενική Θεώρηση μεγιστοποιήσει την πιθανότητά

ΠΑΙΓΝΙΑ Παιχνίδια Γενική Θεώρηση μεγιστοποιήσει την πιθανότητά ΠΑΙΓΝΙΑ Παιχνίδια Γενική Θεώρηση: Έστω ότι έχουμε τους παίκτες Χ και Υ. Ο κάθε παίκτης, σε κάθε κίνηση που κάνει, προσπαθεί να μεγιστοποιήσει την πιθανότητά του να κερδίσει. Ο Χ σε κάθε κίνηση που κάνει

Διαβάστε περισσότερα

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η 53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η ΠΑΓΚΡΑΤΙ: Φιλολάου & Εκφαντίδου 26 : 210/76.01.470 210/76.00.179 ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς

Διαβάστε περισσότερα

Παραδείγματα μεταβλητών

Παραδείγματα μεταβλητών Παραδείγματα μεταβλητών Παράδειγμα Bouncing Balls: Στη σκηνή υπάρχουν τρείς μπάλες και κάθε μία έχει διαφορετικό μέγεθος από τις άλλες. Όλες οι μπάλες χοροπηδούν ταυτόχρονα προς όλες τις κατευθύν-σεις.

Διαβάστε περισσότερα

Κεφάλαιο 5. Αλγόριθµοι Αναζήτησης σε Παίγνια ύο Αντιπάλων. Τεχνητή Νοηµοσύνη - Β' Έκδοση

Κεφάλαιο 5. Αλγόριθµοι Αναζήτησης σε Παίγνια ύο Αντιπάλων. Τεχνητή Νοηµοσύνη - Β' Έκδοση Κεφάλαιο 5 Αλγόριθµοι Αναζήτησης σε Παίγνια ύο Αντιπάλων Τεχνητή Νοηµοσύνη - Β' Έκδοση Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η. Σακελλαρίου Αλγόριθµοι Αναζήτησης σε Παίγνια ύο Αντιπάλων

Διαβάστε περισσότερα

Εξοικείωση με το NXT-G

Εξοικείωση με το NXT-G Εξοικείωση με το NXT-G Εντολές Λίγα λόγια για τους κινητήρες Οι κινητήρες μπορούν να προγραμματιστούν να ξεκινούν και να σταματούν τη στιγμή που θέλουμε. Η εντολή κίνησης κινητήρα motor είναι πολύ απλή.

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

Διαβάστε περισσότερα

5.1.1 Περιγραφή των συστατικών τμημάτων ενός γραφήματος

5.1.1 Περιγραφή των συστατικών τμημάτων ενός γραφήματος 5. Γραφήματα 5.1 Εισαγωγή 5.1.1 Περιγραφή των συστατικών τμημάτων ενός γραφήματος Το Discoverer παρέχει μεγάλες δυνατότητες στη δημιουργία γραφημάτων, καθιστώντας δυνατή τη διαμόρφωση κάθε συστατικού μέρους

Διαβάστε περισσότερα

ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ÌïëëÜ Ì. Á μýô Á.Ì. : 5 moll@moll.r ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ΜΑΘΗΜΑ : ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΤΥΟ (ΕΡΓΑΣΤΗΡΙΟ) Ε ΕΞΑΜΗΝΟ ΕΙΣΗΓΗΤΕΣ: Χαϊδόγιαννος Χαράλαμπος ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ

Διαβάστε περισσότερα

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

Διαβάστε περισσότερα

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Ικανοποίηση Περιορισμών Κατηγορία προβλημάτων στα οποία είναι γνωστές μερικές

Διαβάστε περισσότερα

Πρόβλημα είναι μια κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής.

Πρόβλημα είναι μια κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής. Κεφάλαιο 2 - Πρόβλημα 2.1.1. Η έννοια του προβλήματος Πρόβλημα είναι μια κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής. 2.1.2. Κατηγορίες προβλημάτων

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

Διαβάστε περισσότερα

Κεφάλαιο 7. Τρισδιάστατα Μοντέλα

Κεφάλαιο 7. Τρισδιάστατα Μοντέλα Κεφάλαιο 7. 7.1 ομές εδομένων για Γραφικά Υπολογιστών. Οι δομές δεδομένων αποτελούν αντικείμενο της επιστήμης υπολογιστών. Κατά συνέπεια πρέπει να γνωρίζουμε πώς οργανώνονται τα γεωμετρικά δεδομένα, προκειμένου

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Δομές Δεδομένων Ενότητα 1 - Εισαγωγή Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αντικείμενο μαθήματος Δομές Δεδομένων (ΔΔ): Στην επιστήμη υπολογιστών

Διαβάστε περισσότερα

Κεφάλαιο 2. Περιγραφή Προβληµάτων και Αναζήτηση Λύσης. Τεχνητή Νοηµοσύνη - Β' Έκδοση

Κεφάλαιο 2. Περιγραφή Προβληµάτων και Αναζήτηση Λύσης. Τεχνητή Νοηµοσύνη - Β' Έκδοση Κεφάλαιο 2 Περιγραφή Προβληµάτων και Αναζήτηση Λύσης Τεχνητή Νοηµοσύνη - Β' Έκδοση Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η. Σακελλαρίου Περιγραφή Προβληµάτων ιαισθητικά: υπάρχει µία δεδοµένη

Διαβάστε περισσότερα

Παράδειγμα «Ημίτονο και ζωγραφική!»: Έχει δει στα μαθηματικά τη γραφική παράσταση της συνάρτησης του ημιτόνου; Σας θυμίζει κάτι η παρακάτω εικόνα;

Παράδειγμα «Ημίτονο και ζωγραφική!»: Έχει δει στα μαθηματικά τη γραφική παράσταση της συνάρτησης του ημιτόνου; Σας θυμίζει κάτι η παρακάτω εικόνα; Τελεστές, συνθήκες και άλλα! Όπως έχει διαφανεί από όλα τα προηγούμενα παραδείγματα, η κατασκευή κατάλληλων συνθηκών στις εντολές εάν, εάν αλλιώς, για πάντα εάν, περίμενε ώσπου, επανέλαβε ώσπου, είναι

Διαβάστε περισσότερα

Επίλυση Προβλημάτων και Τεχνικές Αναζήτησης Εισαγωγή

Επίλυση Προβλημάτων και Τεχνικές Αναζήτησης Εισαγωγή Επίλυση Προβλημάτων και Τεχνικές Αναζήτησης Εισαγωγή επίλυση προβλημάτων μέσω αναζήτησης κάθε πρόβλημα το οποίο μπορεί να διατυπωθεί αυστηρά λύνεται μέσω αναζήτησης. Για τα περισσότερα ενδιαφέροντα προβλήματα

Διαβάστε περισσότερα

A7.2 Δημιουργία Απλής Γραφικής Εφαρμογής σε Περιβάλλον Scratch

A7.2 Δημιουργία Απλής Γραφικής Εφαρμογής σε Περιβάλλον Scratch A7.2 Δημιουργία Απλής Γραφικής Εφαρμογής σε Περιβάλλον Scratch Τι θα μάθουμε σήμερα: Να ενεργοποιούμε το λογισμικό Scratch Να αναγνωρίζουμε τα κύρια μέρη του περιβάλλοντος του Scratch Να δημιουργούμε/εισάγουμε/τροποποιούμε

Διαβάστε περισσότερα

ΣΗΜΕΙΩΣΕΙΣ ΤΕΛΙΚΗΣ ΕΡΓΑΣΙΑΣ ΤΟΥ ΜΑΘΗΜΑΤΟΣ «ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ»

ΣΗΜΕΙΩΣΕΙΣ ΤΕΛΙΚΗΣ ΕΡΓΑΣΙΑΣ ΤΟΥ ΜΑΘΗΜΑΤΟΣ «ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ» ΣΗΜΕΙΩΣΕΙΣ ΤΕΛΙΚΗΣ ΕΡΓΑΣΙΑΣ ΤΟΥ ΜΑΘΗΜΑΤΟΣ «ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ» Κωνσταντίνος Π. Φερεντίνος Διδάσκων ΠΔ 407/80 Οι σημειώσεις αυτές αναπτύχθηκαν στα πλαίσια του προγράμματος «ΕΠΕΑΕΚ 2 Πρόγραμμα Αναβάθμισης

Διαβάστε περισσότερα

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή. ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΚΑΙ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΚΥΡΙΑΚΗ 23/04/2017 - ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΕΠΠ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΠΤΑ ( 7) ΘΕΜΑ Α Α1. Να χαρακτηρίσετε τις προτάσεις που ακολουθούν γράφοντας στο

Διαβάστε περισσότερα

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή.

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή. Λίστες Τι είναι οι λίστες; Πολλές φορές στην καθημερινή μας ζωή, χωρίς να το συνειδητοποιούμε, χρησιμοποιούμε λίστες. Τέτοια παραδείγματα είναι η λίστα του super market η οποία είναι ένας κατάλογος αντικειμένων

Διαβάστε περισσότερα

Παράδειγμα 6 Προσομοίωση και επίλυση Επίπεδων Πλακών

Παράδειγμα 6 Προσομοίωση και επίλυση Επίπεδων Πλακών Παράδειγμα 6 Προσομοίωση και επίλυση Επίπεδων Πλακών 2 Σημείωση Η ACE-HELLAS στο πλαίσιο της ανάπτυξης και βελτιστοποίησης των προϊόντων της, και συγκεκριμένα της εφαρμογής SCADA Pro, δημιούργησε τη νέα

Διαβάστε περισσότερα

Πληροφορική 2. Τεχνητή νοημοσύνη

Πληροφορική 2. Τεχνητή νοημοσύνη Πληροφορική 2 Τεχνητή νοημοσύνη 1 2 Τι είναι τεχνητή νοημοσύνη; Τεχνητή νοημοσύνη (AI=Artificial Intelligence) είναι η μελέτη προγραμματισμένων συστημάτων τα οποία μπορούν να προσομοιώνουν μέχρι κάποιο

Διαβάστε περισσότερα

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ. Ενότητα 5: Παραδείγματα. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ. Ενότητα 5: Παραδείγματα. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 5: Παραδείγματα Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας

Διαβάστε περισσότερα

x = r cos φ y = r sin φ

x = r cos φ y = r sin φ Αυτόνομοι Πράκτορες ΠΛΗ 513 Αναφορά Εργασίας Κίνηση Τερματοφύλακα Στο RoboCup Καρανδεινός Εκτωρ Α.Μ 2010030020 Περίληψη Το Robocup είναι ένας παγκόσμιος ετήσιος διαγωνισμός ρομποτικής στον οποίο προγραμματίζονται

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι 1 Έννοια Ανεπίσημα, ένας αλγόριθμος είναι μια βήμα προς βήμα μέθοδος για την επίλυση ενός προβλήματος ή την διεκπεραίωση

Διαβάστε περισσότερα

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Ενότητα 2 : Ζωγραφίζοντας με το ΒΥΟΒ -1- Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα α. Θέση και προσανατολισμός της μορφής Η θέση της κάθε μορφής στο σκηνικό προσδιορίζεται

Διαβάστε περισσότερα