Ανάπτυξη AI Gaming Engine για Smartphones και Tablets

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

Download "Ανάπτυξη AI Gaming Engine για Smartphones και Tablets"

Transcript

1 Π Π Δ Ε Ανάπτυξη AI Gaming Engine για Smartphones και Tablets Φοιτητής: Ιάσονας Ν Επιβλέπων Καθηγητής: Κυριάκος Σ Αυτή η διπλωματική εργασία υποβάλλεται σε εκπλήρωση των απαιτήσεων για την απόκτηση του πτυχίου Ηλεκτρολόγου Μηχανικού στον Τομέας Τηλεπικοινωνιών & Τεχνολογίας Πληροφορίας Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών Πάτρα, Φεβρουάριος 2014

2

3

4 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ Περίληψη Προπτυχιακό Φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών Ανάπτυξη AI Gaming Engine για Smartphones και Tablets από τον Ιάσονα Νικόλα Η Διπλωματική αυτή εργασία είχε ως στόχο τον σωστό προγραμματισμό της τεχνητής νοημοσύνης που χρησιμοποιείται στα ηλεκτρονικά παιχνίδια σήμερα. Η νοημοσύνη αυτή γίνεται αντιληπτή από τους παίχτες μέσω των ενεργειών των χαρακτήρων που υπάρχουν και ελέγχονται από το σύστημα του κάθε παιχνιδιού. Οι χαρακτήρες αυτοί ονομάζονται ευφυείς πράκτορες και θα πρέπει να φαίνονται, δηλαδή να σκέφτονται και να ενεργούν, ορθολογικά και ανθρώπινα. Επίσης στα πλαίσια αυτής της εργασίας σχεδιάστηκε, υλοποιήθηκε και ενσωματώθηκε στην ήδη υπάρχουσα μηχανή παιχνιδιών Hive3D, μία μηχανή τεχνητής νοημοσύνης που μπορεί να δημιουργήσει έξυπνες συμπεριφορές πλοήγησης των πρακτόρων στον κόσμο του παιχνιδιού μας, ανεξάρτητα από τον τύπο του (π.χ στρατηγικής, περιπέτειας κ.α.). Προκειμένου όμως να γίνει αυτό εφικτό επικεντρωθήκαμε στα κοινά στοιχεία νοημοσύνης που χρειάζονται όλοι αυτοί οι τύποι παιχνιδιών. This thesis aimed to correct programming of artificial intelligence used in computer games nowadays. Intelligence is perceived by the players through the actions of the game characters that are controlled by the system of each game. These characters are called intelligent agents and should be look like, ie to think and act, rationally and humanly. Also as part of this work was designed, implemented and incorporated in existing game engine Hive3D, an artificial intelligence engine that can generate intelligent behaviors to navigate agents through the world of our game, regardless of its type ( e.g. strategy, adventure, etc). But in order to make this possible we focused on common elements of intelligence that all of these types of games are needed.

5 Ευχαριστίες Θα ήθελα κατ αρχήν να ευχαριστήσω θερμά το καθηγητή μου Κυριάκο Σγάρμπα που μέσω της διδασκαλίας των μαθημάτων Τεχνητής Νοημοσύνης μου μετέδωσε τις απαραίτητες για την διεκπεραίωση αυτής της εργασίας γνώσεις του. Πολύ περισσότερο όμως τον ευχαριστώ για την ευκαιρία που μου έδωσε μέσα από αυτή την εργασία να εμβαθύνω τις γνώσεις αυτές και να τις εφαρμόσω στην πράξη. Θα ήθελα επίσης να ευχαριστήσω τον μηχανικό της εταιρίας Eyelead Ιωσήφ Ψιστάκη με τον οποίο συνεργάστηκα κατά την διάρκεια της πρακτικής μου. Σε όλη την πορεία εξέλιξης της εργασίας αυτής το ενδιαφέρον και η υποστήριξή του, τόσο σε επιστημονικό, όσο και σε προσωπικό επίπεδο ήταν η απαραίτητη προϋπόθεση για την ολοκλήρωσή της. Είμαι ευγνώμων σε όλους τους δασκάλους και καθηγητές μου για τις γνώσεις που μου προσέφεραν σε όλη τη διάρκεια των σπουδών μου και να μου επιτραπεί ιδιαιτέρως στον Κωνσταντίνο Μουστάκα που με την συνδιδασκαλία του στο μάθημα Τεχνητής Νοημοσύνης και τις γνώσεις που μου μεταλαμπάδευσε βοήθησε στην ολοκλήρωση της εργασίας αυτής. Τέλος, θα ήθελα από βάθους καρδιάς να ευχαριστήσω τους γονείς μου Γιώργο και Αλεξάνδρα, τον αδελφό μου Ορέστη και όλους τους αγαπημένους μου φίλους για την υπομονή τους και την υποστήριξη που μου έδειξαν κατά το μεγάλο αυτό ταξίδι. iv

6 Μηδείς αγεωμέτρητος εισίτω μοι την θύρα. Πλάτωνας

7 Περιεχόμενα Περίληψη iii Ευχαριστίες iv Περιεχόμενα Κατάλογος σχημάτων Συντομεύσεις vi viii ix 1 Βασικοί Ορισμοί και Έννοιες Τεχνητή Νοημοσύνη Για Παιχνίδια ( Game AI ) Μηχανές Παιχνιδιών ( Game Engine ) Μηχανή Τεχνητής Νοημοσύνης Παιχνιδιών ( AI Gaming Engine ) Σχεδιασμός AI Engine Βασικά Στοιχεία Λήψη αποφάσεων και εξαγωγή συμπερασμάτων Διαχείριση αισθήσεων και αντιλήψεων Εύρεση μονοπατιού Πλοήγηση Δημιουργία Γράφου Μέθοδος με Πλέγμα Μέθοδος Δυναμικών Πεδίων Μέθοδος Δικτύων Χάρτη-Κόμβων Μέθοδος Γράφου Πλοήγησης Συνδυασμός μεθόδων Σχεδιασμός Διαδρομής Αλγόριθμοι Αναζήτησης Ευρετικές Συναρτήσεις Εξομάλυνση Διαδρομής Καταμερισμός Χρόνου Εκτέλεσης Αποφυγή εμποδίων Γνωριμία με το Hive3D Τι είναι το Hive3D vi

8 Contents vii Hive3D - Architecture Hive3D - Script Υλοποίηση Pathfinder Τι Κάναμε και Γιατί Δομή Βιβλιοθήκης στη C Expose Pathfinder στο hivescript Demos ο Παράδειγμα ο Παράδειγμα ο Παράδειγμα ο Παράδειγμα Δομή hivescript Σύνοψη Βιβλιογραφία 75

9 Κατάλογος σχημάτων 2.1 Βασική δομή AI engine Στιγμιότυπο από το παιχνίδι PuzzleQuest Στιγμιότυπο του παιχνιδιού Black & White Παιχνίδια με ήρωες cartoon Γράφος πλοήγησης Depth First αναζήτηση Breadth First αναζήτηση Breadth First αναζήτηση AStar αναζήτηση AStar αναζήτηση με εμπόδια AStar αναζήτηση με εμπόδια AStar (Lester) αναζήτηση με εμπόδια Hive Browser Menu Hive Browser Menu Περιβάλλον 1oυ Demo Πλεγματικός γράφος 1ου Demo Γράφος 2ου Demo Γράφος 3ου Demo Περιβάλλον 4oυ Demo oυ Demo με αποφυγή μεταξύ των πρακτόρων viii

10 Συντομεύσεις AI Artificial Intelligence API Application Programming Interface A* AStar algorithm BOT Robotic responder/ Autonomous Agent BFS Breadth FirSt algorithm DFS Depth FirSt algorithm Dj Dijkstra (Uniform Cost) algorithm FPS First PersonShooter game IDE Integrated Development Environment NPC None Player Character SDK Software Development Kit ix

11 Κεφάλαιο 1 Βασικοί Ορισμοί και Έννοιες Σκοπός του πρώτου αυτού κεφαλαίου είναι να δώσει έναν σαφή ορισμό στις βασικές έννοιες που θα συναντήσουμε σε αυτή την διπλωματική εργασία. 1.1 Τεχνητή Νοημοσύνη Για Παιχνίδια ( Game AI ) Ο όρος Game AI δεν είναι τόσο εύκολο να οριστεί, διότι ακόμα και η έννοια του παιχνιδιού (game) είναι ασαφής. Παιχνίδι μπορεί να είναι το κρυφτό που παίζουν τα παιδιά στην αλάνα, αλλά μπορεί να είναι και μία πολύπλοκη τεχνολογικά επιχείρηση του στρατού για εκπαιδευτικούς σκοπούς. Αναφερόμενοι στον όρο αυτό από εδώ και πέρα θα θεωρούμε ως παιχνίδια αποκλειστικά τα ηλεκτρονικά βιντεοπαιχνίδια. Ωστόσο κάποια πράγματα που θα πούμε παρακάτω μπορεί να έχουν εφαρμογή και σε επιτραπέζια παιχνίδια ή άλλα στρατηγικά, ανταγωνισμού και αθλήματα. Ο δεύτερος όρος που αναφέρεται στην επιστήμη της Τεχνητής Νοημοσύνης (AI) και δημιουργήθηκε γύρω στο 1950 είναι σχετικά νέος. Πόσο μάλλον η χρήση των τεχνικών αυτού του τομέα της επιστήμης στα ηλεκτρονικά παιχνίδια όπου λόγω των περιορισμένων πόρων των υπολογιστικών συστημάτων, μόλις την τελευταία δεκαετία άρχισε να απασχολεί τους προγραμματιστές τους. Προκειμένου να εξηγήσουμε τι είναι το AI ας δούμε τι είναι η νοημοσύνη. Αν κοιτάξουμε στο λεξικό θα βρούμε ότι είναι το σύνολο των γνωστικών ικανοτήτων, η ικανότητα προσαρμογής σε νέες καταστάσεις και η αντίληψη ομοιοτήτων και διαφορών. Αυτό όμως είναι πολύ γενικό. Μία άμεση μετάφραση θα μπορούσε να δηλώνει ότι ένας θερμοστάτης έχει νοημοσύνη, αφού εφαρμόζει την γνώση της θερμοκρασίας του κρύου δωματίου και ανάβει τον διακόπτη του καλοριφέρ! Βάζοντας μέσα και τις επίσης ασαφείς έννοιες της σκέψης και της λογικής αποκλείουμε το παράδειγμα του 1

12 Κεφάλαιο 1. Βασικοί Ορισμοί και Έννοιες 2 θερμοστάτη, ωστόσο τα πράγματα γίνονται ακόμα πιο πολύπλοκα! Ευτυχώς που για να κάνει κάποιος καλά παιχνίδια δεν χρειάζεται αυτός ο ορισμός. Για να είμαστε σαφείς από εδώ και πέρα θα υιοθετήσουμε τον απλουστευμένο ορισμό της νοημοσύνης που λέει ότι την έχει οποιοσδήποτε χαρακτήρας (bot) φαίνεται να ενεργεί έξυπνα με βάση την γνώση του για τον κόσμο. Έχοντας (σχεδόν) όλους τους επιμέρους ορισμούς σε αυτό το σημείο νομίζω ότι μπορούμε να δούμε τι είναι το game AI. Ρίχνοντας μία ματιά στον ορισμό που υπάρχει στην βίβλο του AI [1]. Βλέπουμε ότι AI είναι δημιουργία προγραμμάτων που μιμούνται, ενεργούν και σκέπτονται ορθολογικά όπως οι άνθρωποι. Ο Ορισμός αυτός καλύπτει και τη γνωστική όψη και την συμπεριφορά της νοημοσύνης, αφού προϋποθέτει μίμηση ενεργειών και σκέψης. Σε αντίθεση τα παιχνίδια δεν χρειάζονται την τόσο ευρεία έννοια του AI. Game AI είναι το μέρος του κώδικα που κάνει ένα bot να φαίνεται ότι παίρνει έξυπνες αποφάσεις, όταν το παιχνίδι έχει πολλές επιλογές για μία δεδομένη κατάσταση, οι οποίες έχουν ως αποτέλεσμα η συμπεριφορά του να είναι αποτελεσματική και χρήσιμη. Οι προγραμματιστές των παιχνιδιών ενδιαφέρονται κυρίως για τις συμπεριφορές των bots και πώς αντιδρούν σε μία κατάσταση και όχι το πώς βρέθηκαν σε αυτή. Ποια η σχέση με το Ακαδημαϊκό AI Η αλήθεια είναι ότι ο ορισμός του game AI δεν είναι σαφής για τους περισσότερους δημιουργούς παιχνιδιών και αυτό δυσκολεύει ακόμα περισσότερο την δημιουργία ενός ενιαίου ορισμού. Αυτός είναι και ο λόγος που το AI έχει ελαφρώς διαφορετική σημασία στο gaming απ ότι στον ακαδημαϊκό τομέα. Οι στόχοι του ακαδημαϊκού AI είναι δύο: 1. Πρώτον να μας βοηθήσει να καταλάβουμε τους ευφυείς πράκτορες (συμπεριλαμβανομένων και των εμβίων) οι οποίοι με την σειρά τους θα μας βοηθήσουν να καταλάβουμε τους ίδιους μας τους εαυτούς 2. Δεύτερον να δημιουργήσει τέτοιους πράκτορες γιατί μπορεί να φανούν αρκετά χρήσιμοι στην καθημερινή μας ζωή. Ο πρώτος στόχος σχετίζεται και με άλλες επιστήμες όπως η φιλοσοφία και η ψυχολογία αλλά με πιο λειτουργικό τρόπο και όχι τόσο θεωρητικό. Όπως ειπώθηκε νωρίτερα AI είναι η δημιουργία προγραμμάτων που μιμούνται ανθρώπινη και ορθολογική σκέψη και πράξη. Το τεστ Turing είναι ένα παράδειγμα δημιουργίας ελέγχου αν ένα πρόγραμμα είναι ευφυές η όχι με βάση τον άνθρωπο. Αλλά η πλειοψηφία της ακαδημαϊκής έρευνας βασίζεται στον ορθολογισμό και στις μετρήσεις λόγω της αλγοριθμικής προσέγγισης του προβλήματος και της μοντελοποίησης που γίνεται.

13 Κεφάλαιο 1. Βασικοί Ορισμοί και Έννοιες 3 Σε γενικές γραμμές το ακαδημαϊκό AI δεν προσπαθεί να μοντελοποιήσει τον ανθρώπινο τρόπο σκέψης και δράσης. Κυρίως κάνει αυτό που λέμε μοντελοποίηση ευφυίας, δηλαδή αναπτύσσει την ικανότητα να παράγει την πιο ορθολογική απόφαση με δεδομένους τους κανόνες και όλες τις πιθανές καταστάσεις. Η γνώση όλων των κανόνων και καταστάσεων είναι η μόνη απαίτηση, αυτός είναι όμως και ο λόγος που υπάρχουν οι περιορισμοί στα παιχνίδια μας, σε συνδυασμό με τους περιορισμένους πόρους που διαθέτουμε. Επίσης αποστασιοποιείται από προβλήματα της ανθρωπότητας, όπως το τι συνιστά την ανθρώπινη νοημοσύνη και την κατάλληλη επίλυση προβλημάτων. Τέλος όταν η υπολογιστική ισχύς, η χωρητικότητα των μνημών γίνουν απεριόριστες και ο σχεδιασμός του software τελειοποιηθεί τότε οι δύο αυτές διαφορετικές προσεγγίσεις του AI θα ενωθούν. Ακόμα και τα πιο δύσκολα προβλήματα θα μπορούν να λυθούν σε πραγματικό χρόνο και τότε οι προγραμματιστές θα χρησιμοποιούν γενικούς αλγορίθμους τεχνητής νοημοσύνης για τα συστήματά τους. 1.2 Μηχανές Παιχνιδιών ( Game Engine ) Οι προγραμματιστές των ηλεκτρονικών παιχνιδιών συνηθίζουν να χρησιμοποιούν διάφορα εργαλεία για την επιτάχυνση και διευκόλυνσή της ανάπτυξης των παιχνιδιών τους, τα οποία τα ονομάζουν μηχανές. Υπάρχουν πολλά είδη μηχανών. Η κύρια μηχανή που χρησιμοποιείται κατά κόρων στα παιχνίδια είναι η μηχανή γραφικών (graphics engine). Είναι υπεύθυνη για το γραφικό περιβάλλον του παιχνιδιού, τα γραφικά μοντέλα που υπάρχουν σε αυτό καθώς και για τα εφέ που χρησιμοποιούνται. Συνήθως χρησιμοποιεί έναν γράφο σκηνής (scene graph) για να μετασχηματίσει το 3D περιβάλλον του κόσμου του παιχνιδιού στην σωστή 2D εικόνα που πρέπει να προβληθεί στην οθόνη κάθε παίχτη αναλόγως την κάμερα που χρησιμοποιεί, την τοποθεσία και τον προσανατολισμό που βρίσκεται ο χαρακτήρας του. Επιπρόσθετα, κάποιες φορές υπάρχουν ενσωματωμένα και διάφορα εργαλεία για δημιουργία κινουμένων σχεδίων (animation) για να δημιουργούνται ευκολότερα και γρηγορότερα μικρής διάρκειας video που προβάλλονται κατά την διάρκεια του παιχνιδιού. Η μηχανή ήχου (sound engine) χρησιμοποιείται προκειμένου να βοηθήσει τους προγραμματιστές να εισάγουν πηγές ήχου στο παιχνίδι τους χωρίς ιδιαίτερες δυσκολίες. Υπάρχει και η μηχανή διαδικτύου (networking engine) που εγκαθιστά την σωστή διαδικτυακή επικοινωνία των παικτών αναμεταξύ τους ή μεταξύ των servers του παιχνιδιού και των παικτών. Επίσης εργαλεία αναμετάδοσης video μέσω διαδικτύου (streaming) μπορούν να χρησιμοποιήσουν αυτήν τη μηχανή για να προβάλλουν στο διαδίκτυο έναν αγώνα παιχνιδιού την ώρα που εξελίσσεται (real time). Υπάρχουν ακόμα μηχανές διαχείρισης μνήμης και διαχείρισης νημάτων (memory

14 Κεφάλαιο 1. Βασικοί Ορισμοί και Έννοιες 4 management, threading) που είναι υπεύθυνες για την διαχείριση της μνήμης και των νημάτων (threads) του κώδικα. Η localization support μηχανή επιτρέπει την μετάφραση των τεχνικών όρων του κώδικα σε γλώσσες διαφορετικές της Αγγλικής. Τέλος η δουλειά της μηχανής Τεχνητής Νοημοσύνης είναι να παίρνει τις κρίσιμες αποφάσεις για τους χαρακτήρες του παιχνιδιού που δεν ελέγχονται από τους παίχτες. Σε συνεργασία με την μηχανή φυσικής (physics engine), που υπολογίζει με Νευτώνεια μηχανική συνήθως τις κινήσεις των σωμάτων μπορούμε να έχουμε μία ολοκληρωμένη προσωπικότητα των χαρακτήρων αυτών στον χώρο του παιχνιδιού μας. Για τον ευκολότερο προγραμματισμό και αμεσότερο έλεγχο αυτών των συμπεριφορών συνήθως χρησιμοποιείται μία scripting γλώσσα προγραμματισμού. Η γλώσσα αυτή χρησιμοποιεί interpreter, έτσι για μικρές αλλαγές στις παραμέτρους του κώδικα δεν χρειάζεται να ξαναγίνει compile όλο το project του παιχνιδιού. Εργαλεία ανάπτυξης παιχνιδιών που ενσωματώνουν περισσότερες από μία μηχανές ονομάζονται μηχανές παιχνιδιών. 1.3 Μηχανή Τεχνητής Νοημοσύνης Παιχνιδιών ( AI Gaming Engine ) Το AI μόλις τα τελευταία χρόνια άρχισε να είναι αναπόσπαστο κομμάτι των παιχνιδιών. Στην προσπάθεια των προγραμματιστών να ξεχωρίσουν τα παιχνίδια τους από το πλήθος και να τα κάνουν να φαίνονται πιο έξυπνα αναπτύχθηκαν διάφορες τεχνικές. Τις πιο βασικές από αυτές θα τις δούμε στην συνέχεια, αλλά πρώτα ας δούμε τι ακριβώς είναι μία μηχανή τεχνητής νοημοσύνης. Ίσως ο πιο γνωστός τύπος μηχανής που χρησιμοποιείται είναι η μηχανή γραφικών, η οποία προσφέρει ένα περιβάλλον για την δημιουργία μοντέλων μέσω μίας γραφικής διεπαφής, χωρίς να χρειάζεται ο προγραμματιστής να ασχοληθεί με τις ιδιαιτερότητες της OpenGL η του DirectX. Με ανάλογο τρόπο και η μηχανή τεχνητής νοημοσύνης δίνει ένα τρόπο - μηχανισμό στον προγραμματιστή να σχεδιάσει τις συμπεριφορές των NPCs ή Bots η αλλιώς ευφυείς πράκτορες. Γενικά είναι πολύ δύσκολο να ορίσει κανείς συγκεκριμένες συμπεριφορές που θα λειτουργούν για όλους τους τύπους παιχνιδιών λόγω της μεγάλης ποικιλίας και της ιδιαιτερότητας κάθε παιχνιδιού. Ωστόσο υπάρχουν συμπεριφορές που χρησιμοποιούνται σχεδόν σε όλα τα παιχνίδια, όπως για παράδειγμα η εύρεση ενός μονοπατιού για να προσεγγίσει το Bot ένα στόχο σε ένα πολύπλοκο περιβάλλον με εμπόδια, γνωστό και ως path finding στο οποίο θα αναφερθούμε εκτενέστερα σε επόμενα κεφάλαια.

15 Κεφάλαιο 1. Βασικοί Ορισμοί και Έννοιες 5 Στοιχεία σχεδιασμού Ένα AI Gaming Engine θα πρέπει, όπως κάθε engine να είναι πάνω απ όλα εύχρηστο, γενικής χρήσης και να δέχεται παράμερους για όσο το δυνατόν περισσότερες μεταβλητές, χωρίς να περιορίζει τον developer του παιχνιδιού. Με λίγα λόγια θα πρέπει να λειτουργεί ικανοποιητικά χωρίς την είσοδο παραμέτρων, δηλαδή με τις default και ακόμα καλύτερα με τον σωστό ορισμό τους από τον προγραμματιστή. Επίσης θα πρέπει η διεπαφή της μηχανής και οι εντολές της να είναι σαφείς στον προγραμματιστή. Για να γίνουν πιο κατανοητά τα όσα θα αναπτύξουμε παρακάτω υπάρχουν μερικές υλοποιήσεις σε C++ με την χρήση του Visual Studio. Έχουμε ακολουθήσει την Object Oriented λογική και κάνω χρήση του template programming, όπου είναι δυνατόν, προκειμένου ο κώδικας να είναι επαναχρησιμοποιήσιμος. Σχόλια στον κώδικα υπάρχουν όπου είναι εφικτό και θεωρώ ότι δεν είναι δύσκολο να διαβαστεί και να γίνει κατανοητός από κάποιον που έχει γνώση των αλγορίθμων και C++.

16 Κεφάλαιο 2 Σχεδιασμός AI Engine 2.1 Βασικά Στοιχεία Ήρθε η ώρα να δούμε και να συζητήσουμε τα βασικά στοιχεία που απαρτίζουν μία μηχανή τεχνητής νοημοσύνης. Πρέπει να έχουμε υπόψιν ότι δεν υπάρχει μόνο μια προσέγγιση για τον σαφή διαχωρισμό των στοιχείων αυτών. Εμείς θα ακολουθήσουμε τη θεμελιώδη μορφή που αναφέρει και ο Brian Schwab στο βιβλίο του [2] και έχουν σχεδόν όλες οι μηχανές. Χωρίζονται σε τρεις μεγάλες κατηγορίες. Την λήψη αποφάσεων και εξαγωγή συμπερασμάτων, την αντίληψη και την πλοήγηση ή αλλιώς εύρεση μονοπατιού όπως φαίνεται και στην εικόνα παρακάτω Λήψη αποφάσεων και εξαγωγή συμπερασμάτων Μια μηχανή τεχνητής νοημοσύνης χρειάζεται ένα σύστημα λήψης αποφάσεων. Όμως για να αποφανθεί σωστά το σύστημα αυτό θα πρέπει να έχει γνώση της κατάστασης που βρίσκεται ο πράκτορας, καθώς και τις καταστάσεις που πιθανόν θα προκύψουν από την ενέργεια που θα εφαρμόσει. Για να αποφασίσει λοιπόν σε ποια κατάσταση βρίσκεται χρησιμοποιεί τις αισθήσεις του πράκτορα και μεθόδους συμπερασματολογίας. Ως συμπερασματολογία ορίζεται η πράξη από την οποία απορρέουν λογικά συμπεράσματα μέσω της πραγματικής γνώσης ή εκτίμησης που θεωρείται αληθινή. Δηλαδή σε όρους παιχνιδιού αυτό μεταφράζεται ότι τα NPC s έχουν πληροφορία για τον κόσμο στον οποίο βρίσκονται και παίρνουν ευφυείς, λογικές αποφάσεις και πράττουν αναλόγως. Έτσι από την στιγμή που θα οριστεί (και περιοριστεί) το AI σύστημά μας από το είδος των πληροφοριών που μπορεί να κερδίσει από τον έξω κόσμο, επηρεάζεται και ο ρυθμός της συνολικής απόκρισης του παιχνιδιού. Όσο περισσότερα πράγματα επιτρέπει το παιχνίδι στους χαρακτήρες που ελέγχονται από 6

17 Κεφάλαιο 2. Σχεδιασμός AI Engine 7 Σ 2.1: Βασική δομή AI engine το σύστημα του AI να κάνουνε, τόσο μεγαλύτερη είναι η συνολική απόκριση του παιχνιδιού. Η τεχνική που θα επιλέξουμε για την AI μηχανή μας θα πρέπει να υπαγορεύεται, τουλάχιστον εν μέρει, από το μέγεθος και τη φύση του χώρου καταστάσεων του παιχνιδιού που φτιάχνουμε. Όλα τα συστήματα λήψης αποφάσεων που περιγράφονται είναι βασισμένα σε διαφορετικούς τρόπους, χρησιμοποιώντας τις διαθέσιμες εισόδους για να καταλήξουνε σε λύσεις. Οι κύριες παράμετροι που μας απασχόλησαν είναι οι εξής: το είδος λύσης που απαιτείται, η αντιδραστικότητα του πράκτορα στις εισόδους, ο ρεαλισμός του συστήματος, το είδος του παιχνιδιού, το περιεχόμενο, η πλατφόρμα, οι περιορισμοί της ανάπτυξης και οι περιορισμοί της ψυχαγωγίας. Είδη λύσεων Οι κύριες κατηγορίες λύσεων των προβλημάτων που προκύπτουν στα παιχνίδια είναι δύο οι στρατηγικές και οι τακτικές. Οι στρατηγικές λύσεις θέτουν μακροπρόθεσμους και υψηλού επιπέδου στόχους που επιδέχονται συνήθως πολλές λύσεις με περισσότερες από μία δράσεις για να επιτευχθούν. Οι τακτικές είναι χαμηλότερου επιπέδου, βραχυπρόθεσμοι στόχοι και συνήθως συνδέονται με κάποια φυσική πράξη ή δεξιότητα. Για παράδειγμα σε ένα FPS παιχνίδι το να κυνηγήσεις ένα παίχτη είναι στόχος υψηλού επιπέδου που περιέχει τους χαμηλού επιπέδου επιμέρους στόχους, τον προσδιορισμό της θέσης του παίχτη, τον τρόπο που θα πάει μέχρι εκεί και το

18 Κεφάλαιο 2. Σχεδιασμός AI Engine 8 πώς θα πολεμήσει. Πολλά παιχνίδια χρειάζονται και στρατηγικές και τακτικές λύσεις, και γι αυτό χρησιμοποιούν διαφορετικές τεχνικές για να πάρουν αυτές τις λύσεις. Αντιδραστικότητα Πράκτορα Πολλές φορές αναρωτιόμαστε πόσο αντιδραστικοί θα πρέπει να είναι οι χαρακτήρες του παιχνιδιού μας στα ερεθίσματα που δέχονται από το περιβάλλον. Τα scripted συστήματα τείνουν να δημιουργήσουν χαρακτήρες με περισσότερο στιλ και καλύτερη απόκριση, αλλά τείνουν επίσης να εγκλωβίζονται σε αυτά τα σενάρια συμπεριφοράς και ως εκ τούτου γίνονται προβλέψιμα. Αντιθέτως, πλήρως αντιδραστικά συστήματα (που αντιδρούν άμεσα στις εισόδους που λαμβάνουν) συνήθως θεωρούνται ότι κλέβουν ή καταλήγουν εκνευριστικά και χάνουν το ενδιαφέρον τους. Περαιτέρω τα συστήματα υψηλής απόκρισης χρειάζονται μεγάλο ρεπερτόριο αντιδράσεων, διότι αλλιώς θα καταλήξουνε προβλέψιμα, αυτό βέβαια μερικές φορές είναι καλό (π.χ. για arcade παιχνίδια). Αναλόγως λοιπόν το είδος του παιχνιδιού θα πρέπει να βρούμε τη σωστή ισορροπία με βάση το gameplay και την εμπειρία που θέλουμε να δημιουργήσουμε. Ρεαλιστικότητα Συστήματος Για να θεωρηθεί ρεαλιστικό το παιχνίδι οι αποφάσεις και οι δράσεις των ευφυών πρακτόρων πρέπει να θεωρούνται ανθρώπινες. Κάθε οντότητα AI απαιτεί τη νοημοσύνη για να καθορίσει το σωστό πράγμα που πρέπει να κάνει εντός των περιορισμών του παιχνιδιού, αλλά για να είναι ανθρώπινη σημαίνει ότι μπορεί να κάνει και λάθη. Έτσι οι ευφυής πράκτορες πρέπει να δείξουνε εκτός των άλλων και την ανθρώπινη αδυναμία. Οι αντίπαλοι που μπλοκάρουν όλες τις γροθιές σε ένα παιχνίδι fighting ή δεν χάνουν ποτέ ένα καλάθι σε ένα παιχνίδι μπάσκετ ή ένας αντίπαλος Scrabble που γνωρίζει ολόκληρο το λεξικό μόνο να σπάσει τα νεύρα του παίχτη μπορεί. Ο στόχος είναι να βρεθεί μια ισορροπία μεταξύ του ανταγωνισμού και της ψυχαγωγίας, έτσι ώστε ο παίκτης να απορροφάται από την πρόκληση του παιχνιδιού και να του δίνεται μια θετική ανάδραση, όταν νικάει. Άλλες ανησυχίες για τον ρεαλισμό του παιχνιδιού είναι σε τι ποσοστό τηρεί τους φυσικούς νόμους. Μπορεί ο παίκτης να πηδά υψηλότερα από ότι στην πραγματική ζωή; Μπορεί να πετάξει; Οι παίκτες αναρρώνουν γρήγορα; Όλα αυτά τα πράγματα εξαρτώνται από τον προγραμματιστή.

19 Κεφάλαιο 2. Σχεδιασμός AI Engine 9 Αυτό σημαίνει ότι ο ρεαλισμός μπορεί να οριστεί ως κάτι πραγματικό σε αυτό το συγκεκριμένο κόσμο του παιχνιδιού. Ωστόσο πρέπει να ληφθούν μέτρα σε φανταστικούς κόσμους, γιατί οι εχθροί που μπορούν αυθαίρετα να σπάσουν τους κανόνες συνήθως θεωρείται ότι εξαπατούν και όχι ότι χρησιμοποιούν κάποιου είδους μαγικά. Θα πρέπει να βεβαιωθούμε πρώτα ότι ο παίκτης έχει μάθει τους βασικούς κανόνες του κόσμου μας και στη συνέχεια ότι αυτοί θα τηρούνται καθ όλη την διάρκεια του παιχνιδιού. Οι φυσικοί νόμοι της Γης είναι συνήθως γνωστοί από τους περισσότερους ανθρώπους που παίζουν το παιχνίδι μας, ενώ οι ειδικοί νόμοι θα μπορούσαν να παρέχονται στους παίκτες μας, αφού ξεπεράσουν ένα αρχικό επίπεδο δυσκολίας, όταν δηλαδή έχουν εξοικειωθεί με τους υπάρχοντες κανόνες. Οι άνθρωποι, επίσης, δεν αντιλαμβάνονται την τυχαιότητα πολύ καλά. Στη φύση μερικά πράγματα είναι πραγματικά τυχαία, σε αντίθεση με τα παιχνίδια που η τυχαιότητα προκύπτει από ένα σύστημα παραγωγής τυχαίων αριθμών που απλά είναι υπερβολικά πολύπλοκο για να καταλάβουμε κάποια λογική αλληλουχία. Ως εκ τούτου ο πράκτορας που ενεργεί τυχαία μπορεί μερικές φορές να δίνει την αίσθηση ότι κλέβει σε βάρος του παίκτη. Εάν η πλειοψηφία των παικτών μας αισθάνεται έτσι θα πρέπει να επανεξετάσουμε και να προσαρμόσουμε την παραγωγή των τυχαίων αριθμών μας προς μια μέθοδο που θα φαίνεται πιο ρεαλιστική. Το δίδαγμα είναι το εξής: Δεν έχει σημασία αν το AI σας εξαπατά ή όχι, αυτό που έχει σημασία είναι το AI σας να μην δίνει την αίσθηση της απάτης. Ένα καλό παράδειγμα είναι αυτό του δημοφιλούς παζλ Puzzle Quest. Αυτό το παιχνίδι χρησιμοποιεί ένα ψευδό-τυχαίο σύστημα για τον προσδιορισμό του κομματιού που θα εμφανιστεί, όταν ο παίχτης συμπληρώσει ένα μέρος του παζλ. Έτσι φαίνεται σαν να είναι πολύ πιο τυχερός ο υπολογιστής από κάθε άλλο ανθρώπινο αντίπαλο. Το διαδίκτυο είναι γεμάτο με σχόλια για την υποτιθέμενη απάτη που κάνει το AI αυτού του παιχνιδιού. Η αλήθεια είναι ότι οι προγραμματιστές θα πρέπει να ρυθμίσουν τον αλγόριθμο που χρησιμοποιούν για την επιλογή του επόμενου κομματιού κυρίως για να περιορίσει την αποτελεσματικότητα του υπολογιστή και το αίσθημα αδικίας που νοιώθει η πλειοψηφία των ανθρώπων που παίζουν το παιχνίδι. Οι άνθρωποι πάντα θα καθορίζουν αν είναι εξαπάτηση η όχι ο τρόπος που παίζει το AI. Αυτό είναι καθολικός νόμος. Ακόμα μπορεί να θεωρηθεί ότι το παιχνίδι εξαπατά, αν οι παίχτες αισθάνονται πολύ κοντά στην εξαπάτηση, όπως το Puzzle Quest. Σε αυτή την περίπτωση, οι προγραμματιστές θα πρέπει να προσαρμόσουν τα πράγματα για να βοηθήσουν με την εν λόγω αντίληψη που επικρατεί.

20 Κεφάλαιο 2. Σχεδιασμός AI Engine 10 Σ 2.2: Στιγμιότυπο από το παιχνίδι PuzzleQuest Είδη Παιχνιδιών Γενικά oι διάφορες κατηγορίες των παιχνιδιών απαιτούν ειδικούς τύπους συστημάτων AI. Σε αυτό το σημείο, θα πρέπει να έχουμε στο μυαλό μας τούς ακόλουθους παράγοντες: Παράγοντας εισόδου ή αντίληψης είναι ο αριθμός των εισόδων, η συχνότητα, οι μέθοδοι επικοινωνίας (events, callbacks, χρήση κοινής μνήμης και άλλες), και τυχόν ιεραρχικές σχέσεις μεταξύ των εισόδων. Τα Arcade παιχνίδια θα μπορούσαν να έχουν πολύ περιορισμένες εισόδους, ενώ ένας χαρακτήρας σε ένα real-time strategy παιχνίδι μπορεί να χρειάζεται αρκετά μεγάλη πληροφορία για τον κόσμο γύρω του, προκειμένου να περιηγηθεί, να μείνει σε σχηματισμό, να βοηθήσει φιλικές μονάδες, να λάβει εντολές από τον άνθρωπο και να ανταποκριθεί στις επιθέσεις των αντιπάλων του. Παράγοντας εξόδου ή απόφασης. Μόλις το σύστημα αντίληψης συλλέξει όλα τα δεδομένα σχετικά με την κατάσταση του κόσμου του παιχνιδιού μια απόφαση εξόδου παράγεται από το AI. Οι έξοδοι μπορεί να είναι αναλογικές, ψηφιακές, ή πολύπλοκες δομές δεδομένων,όπως enumerations, structs, κλάσεις ή μία σειρά από ενέργειες. Οι αποφάσεις μπορεί να είναι χαμηλού ή υψηλού επιπέδου επηρεάζοντας με την σειρά τους τις μελλοντικές αποφάσεις άλλων πρακτόρων. Η συνολική δομή των αποφάσεων που απαιτούνται για το είδος αυτό. Μερικά παιχνίδια έχουν αρκετά απλή στρατηγική στην λήψη αποφάσεων. Το Robotron είναι ένα καλό παράδειγμα. Τα τέρατα κατευθύνονται προς το χαρακτήρα ενός

21 Κεφάλαιο 2. Σχεδιασμός AI Engine 11 παίκτη με ένα συγκεκριμένο τρόπο και συγκεκριμένη ταχύτητα, προσπαθώντας να σκοτώσουν τον χαρακτήρα του παίχτη. Όμως ένα περίπλοκο παιχνίδι όπως το Age of Empires, απαιτεί πολλά διαφορετικά είδη αποφάσεων που πρέπει να γίνουν κατά τη διάρκεια του παιχνιδιού. Το παιχνίδι περιλαμβάνει στρατηγική σε επίπεδο ομάδας, στρατηγική σε επίπεδο λεγεώνας, τακτική κάθε μονάδας ξεχωριστά, μια σειρά από προβλήματα εύρεσης μονοπατιού (τόσο ως ενιαία μονάδα όσο και ως ομάδας) και ακόμη περισσότερα πράγματα, όπως είναι η διπλωματία. Κάθε ένα από αυτά θα μπορούσε να αντιπροσωπεύει ένα υποσύστημα στο AI μας που χρησιμοποιεί μια εντελώς διαφορετική τεχνική για να κάνει τη δουλειά του. Περιεχόμενο Εκτός από το είδος του παιχνιδιού υπάρχουν κάποιες ειδικές περιπτώσεις όπου το σενάριο και το περιεχόμενο γεννά προβληματισμούς σχετικά με το AI. Παιχνίδια όπως το Black & White απαιτούν πολύ εξειδικευμένο συστήματα AI ακόμα και για τον βασικό μηχανισμό τους. Η διδασκαλία των συμπεριφορών από τον παίχτη στις AI οντότητες (των ζώων σε αυτή την περίπτωση) και το να δείχνει αυτός πώς κάνουμε τα πράγματα είναι πολύ δύσκολο να υλοποιηθεί. Αυτό απαιτεί προσεκτική μελέτη κατά την διάρκεια του σχεδιασμού, γιατί στην συνέχεια μπορεί να προκύψουν κενά συμπεριφοράς στις οντότητες λόγω κακού σχεδιασμού. Σ 2.3: Στιγμιότυπο του παιχνιδιού Black & White

22 Κεφάλαιο 2. Σχεδιασμός AI Engine 12 Πλατφόρμα Το παιχνίδι θα γίνει για PC, παιχνιδομηχανή, για arcade κονσόλα, ή για μια φορητή πλατφόρμα; Παρά το γεγονός ότι τα όρια μεταξύ αυτών των διαφορετικών μηχανών είναι ασαφή, κάθε πλατφόρμα εξακολουθεί να έχει δικές της ιδιαίτερες απαιτήσεις και περιορισμούς που πρέπει να λαμβάνονται υπόψη. Μερικές ιδέες για το AI σε κάθε πλατφόρμα είναι: PC. Online παιχνίδια μπορεί να απαιτούν επεκτασιμότητα από τους χρήστες (με τη μορφή AI editors ή καινούργιων levels), έτσι ώστε το AI σύστημα μας να πρέπει να χειριστεί περισσότερα δεδομένα οδηγούμενα από το γεγονός (event driven). Τα παιχνίδια με έναν παίχτη (single player games) έχουν πιο εξεζητημένα συστήματα AI, επειδή οι παίκτες τους είναι συνήθως μεγαλύτεροι σε ηλικία και αναζητούν μεγαλύτερη πολυπλοκότητα και ρεαλισμό. Στον υπολογιστή χρησιμοποιείται κατά κόρων το ποντίκι (εκτός από προσομοιωτές πτήσης ή αγωνιστικά παιχνίδια), οπότε εάν το παιχνίδι απαιτεί από τους παίκτες του να εκτελέσουν πράγματα που θα είναι είτε κουραστικά, είτε αδύνατο να γίνουν με το ποντίκι θα εγκαταλείψουν. Ακόμη η συνεχώς αυξανόμενες επιδόσεις των υπολογιστών συνεπάγονται αύξηση των ελάχιστων απαιτήσεων των παιχνιδιών. Οι προγραμματιστές πρέπει να προβλέψουν την ελάχιστη χρήση υπολογιστικών πόρων που θα χρησιμοποιεί το παιχνίδι όταν βγει στην αγορά (συνήθως από ένα έως τρία έτη αφού το παιχνίδι ξεκινήσει). Η διάρκεια των παιχνιδιών για PC είναι συνήθως μεγαλύτερη (τυπικά πάνω από τριάντα ώρες παιχνιδιού) και ως εκ τούτου οι αντίπαλοι AI πρέπει να ποικίλλουν, ώστε κάποιος που παίζει εναντίον τους να μην καταλαβαίνει τυχόν επαναλήψεις. Παιχνιδομηχανές. Οι περιορισμοί ρεαλισμού σε παιχνιδομηχανές είναι πολύ χαλαροί ως ανύπαρκτοι, επειδή οι παίκτες αυτοί είναι συνήθως μικρότεροι σε ηλικία και πιο ανοικτοί σε φανταστικές καταστάσεις. Ωστόσο, θα πρέπει να υπάρχει πολύ μεγαλύτερη γκάμα στις ρυθμίσεις δυσκολίας, διότι οι δεξιότητες των παικτών είναι πολύ μεγαλύτερες. Μνήμη και επεξεργαστική ισχύς είναι συνήθως περισσότερο περιορισμένες, επειδή αυτά τα μηχανήματα (τουλάχιστον μέχρι πρόσφατα) έχουν περιορισμένους πόρους σε σύγκριση με τους καλούς υπολογιστές της ίδιας χρονικής περιόδου. Τα παιχνίδια κονσόλας έχουν πολύ υψηλότερα standards, κυρίως από την άποψη εξασφάλισης ποιότητας και όχι από το σενάριο του παιχνιδιού. Παιχνίδια για πλατφόρμες συνήθως δεν crashάρουν, αν και αυτό το πρόβλημα των PC έχει ήδη παρεισφρήσει στον κόσμο της κονσόλας. Λόγω αυτού του υψηλότερου επιπέδου το AI σύστημα μας πρέπει να υποβάλλεται σε πολύ μεγαλύτερες και πιο εξαντλητικές δοκιμές

23 Κεφάλαιο 2. Σχεδιασμός AI Engine 13 πριν από την έγκριση για κυκλοφορία στην αγορά. Πολλές εταιρείες μισθώνουν επαγγελματίες gamers για να ελέγχουν τα παιχνίδια τους και στη συνέχεια η κατασκευάστρια εταιρία της κονσόλας το επανελέγχει, πριν να φτάσει στα ράφια των (ηλεκτρονικών) καταστημάτων. Ως εκ τούτου, τυχόν εξωτικά στυλ AI (όπως συστήματα μάθησης με νευρωνικά δίκτυα) που χρησιμοποιούνται στα παιχνίδια μπορεί να κάνουν αυτή τη διαδικασία να διαρκέσει πολύ περισσότερο λόγω της εγγενούς μη αναπαραγωγιμότητας των αποτελεσμάτων αυτών των τεχνικών AI. Arcade πλατφόρμες. Οι πλατφόρμες arcade ευδοκίμησαν τη δεκαετία του 70 και 80, όταν το κόστος για τις κάρτες γραφικών στα PC ήταν απαγορευτικό. Οι κονσόλες (όπως το Atari και το NES) ήταν πολύ πιο απλές στα γραφικά περιβάλλοντα. Λόγω της σημερινής αναπτυσσόμενης επεξεργαστικής ισχύς των υπολογιστών η βιομηχανία των πλατφορμών arcade πρέπει να κάνει μεγάλες αλλαγές. Στις μέρες μας, τα μηχανήματα arcade είναι συνήθως ένα από τα τρία είδη: 1. Μεγάλες καμπίνες παιχνιδιών (όπως αγωνιστικά παιχνίδια ή προσομοιωτές στα Λούνα Παρκ) 2. Ειδικών εισόδων (light gun παιχνίδια, μουσικά guitar hero κ.α.) 3. Μικρές παιχνιδομηχανές που μπορούν να μπουν στη γωνία του μπαρ ή της καφετέριας Το Arcade AI είναι συνήθως βασισμένο σε ένα μοτίβο, που σημαίνει ότι το AI ακολουθεί ένα σύνολο από μοτίβα αντί να αντιδρά στις κινήσεις του παίκτη. Επί πλέον το AI για το arcade περιβάλλον συνήθως περιλαμβάνει την δημιουργία ενός μηχανισμού για να πάρει στατιστικά στοιχεία προκειμένου να προσδιορίσει την δυσκολία του παιχνιδιού και με αυτόν τον τρόπο το ποσό των χρημάτων που έρχονται μέσα στο μηχάνημα. Έτσι το AI εδώ είναι συνήθως απλό, αλλά θα πρέπει να ρυθμιστεί η δυσκολία του παιχνιδιού με τέτοιο τρόπο, ώστε να υπάρχει ισορροπία ανάμεσα στην διασκέδαση και στα λεφτά. Πλατφόρμες χειρός. Οι πιο περιοριστικές πλατφόρμες από άποψη πόρων. Η αγορά είχε σχεδόν μονοπωληθεί από το Nintendo Gameboy, αλλά σχετικά πρόσφατα έχει γίνει ανάπτυξης παιχνιδιών, με PDAs, κινητά τηλέφωνα, το PSP της Sony και κάθε άλλο gadget που μπορούμε να σκεφτούμε μπορεί πλέον να μετατραπεί σε παιχνιδομηχανή. Τα μηχανήματα αυτά έχουν συνήθως πολύ μικρή μνήμη RAM, ο αριθμός των εισόδων που δέχονται είναι σοβαρά περιορισμένος (αυτό ισχύει ιδιαίτερα για τα κινητά τηλέφωνα, τα οποία δεν πραγματικές κονσόλες παιχνιδιών και ως εκ τούτου, δεν είναι σχεδιασμένα να αναγνωρίζουν

24 Κεφάλαιο 2. Σχεδιασμός AI Engine 14 περισσότερα από ένα πατημένα κουμπιά μία χρονική στιγμή). Η γραφική επεξεργαστική ισχύς αυτών των μικρών κονσολών είναι πολύ μικρή. Στην πραγματικότητα οι εταιρείες που χρησιμοποιούσαν σε μεγάλο βαθμό 8 και 16-bit συστήματα επανέρχονται δυναμικά στην αγορά. Το AI σε αυτές τις πλατφόρμες πρέπει να είναι έξυπνο και βελτιστοποιημένο τόσο στο χώρο, όσο και στην ταχύτητα. Αυτά τα μηχανήματα συνήθως χρησιμοποιούν παλιές τεχνικές για το AI των συστημάτων τους όπως: το μοτίβο κίνησης, τους εχθρούς ως χαζά εμπόδια και εξαπάτηση (με τη χρήση της γνώσης που έχουν μόνο επειδή είναι μέρος του προγράμματος). Ωστόσο, αυτό θα αλλάξει σύντομα καθώς πιο ισχυρά φορητά συστήματα αναπτύσσονται και ο διαχωρισμός μεταξύ της φορητής πλατφόρμας και της κονσόλας θολώνει. Ήδη με την άφιξη των smartphones και των λειτουργικών τους συστημάτων (Android, IOS, Windows κ.α.) τα τελευταία χρόνια είναι δύσκολο να διακρίνεις διαφορές ανάμεσα σε παιχνίδια που σχεδιάστηκαν για πλατφόρμα χειρός και παιχνίδια για smartphones. Περιορισμοί Ανάπτυξης Οι περιορισμοί ανάπτυξης αφορούν κυρίως τα θέματα ανθρώπινου δυναμικού, κόστους και χρόνου. Βασικά, ο προγραμματιστής του AI πρέπει να υπολογίσει όλα τα πράγματα που χρειάζονται να γίνουν και να βγάλει ένα χρονοδιάγραμμα για την ανάπτυξη του παιχνιδιού. Θα πρέπει επίσης να έχει μια καλή αίσθηση του χρόνου. Πόσο χρόνο θα πρέπει να επενδύσει στη φάση του σχεδιασμού, την φάση παραγωγής και τέλος την φάση δοκιμής και τυχόν βελτίωσης; Αυτή η τελευταία φάση της διαδικασίας είναι πιθανώς η πιο σημαντική, όπως έχει αποδειχθεί κατ επανάληψη από τις καλύτερες παιχνιδοβιομηχανίες. Είναι αλήθεια ότι ο σχεδιασμός του συστήματος είναι υψίστης σημασίας καθώς μία καλά σχεδιασμένη μηχανή θα δώσει στον προγραμματιστή την ικανότητα να προσθέτει την αναγκαία συμπεριφορά στο παιχνίδι γρήγορα και εύκολα. Ακόμη και τα καλύτερα σχεδιασμένα παιχνίδια χρειάζονται εκτεταμένη ρύθμιση για να δίνουν την κατάλληλη αίσθηση και να φαίνονται πραγματικά. Επειδή ο ρόλος του AI σε ένα παιχνίδι είναι εγγενώς υψηλότερου επιπέδου (αντί του χαμηλού επιπέδου κώδικα μηχανής, όπως η βιβλιοθήκη math, ή η stdio) και επειδή νέες ιδέες και συμπεριφορές έρχονται συνήθως αργά στην παραγωγή του παιχνιδιού, τα συστήματα AI είναι επιρρεπή σε αυτές τις περιστάσεις. Αυτό μεταφράζεται ως προσθήκη νέων χαρακτηριστικών στο τέλος του έργου με αποτέλεσμα η τελική ημερομηνία ολοκλήρωσης να παρατείνεται. Αυτό δείχνει ένα από τα δύο: Ή ένα κακό παιχνίδι που απαιτεί επιπλέον στοιχεία να είναι διασκεδαστικό, ή ένα καλό παιχνίδι που μπορεί να γίνει πολύ καλύτερο. Αν βρούμε τον εαυτό μας στην τελευταία

25 Κεφάλαιο 2. Σχεδιασμός AI Engine 15 περίπτωση είναι καλό για μας. Αλλά βάζοντας πρόσθετα στοιχεία το γρηγορότερο δυνατόν είναι η συνταγή της αποτυχίας. Ένας καλός σχεδιασμός από πάνω προς τα κάτω είναι πραγματικά η καλύτερη γραμμή άμυνας, αλλά ταυτόχρονα θα πρέπει να τηρείται το χρονοδιάγραμμα. Όλα τα παιχνίδια χρησιμοποιούν κάποια μορφή state-machine, αν όχι ως πρωτεύον σύστημα για το AI τους. Αυτό είναι κυρίως λόγω της φύσης των παιχνιδιών. Στους ανθρώπους αρέσει τουλάχιστον σε κάποιο επίπεδο η προβλεψιμότητα στα παιχνίδια. Το AI (ή η gameplay εμπειρία σε γενικές γραμμές) στα περισσότερα παιχνίδια πρέπει να είναι κάπως κυκλική, με τις φάσεις της δράσης να ακολουθούνται από μια φάση ανάπαυσης και στη συνέχεια να επαναλαμβάνονται. Ωστόσο, τα περισσότερα παιχνίδια χρησιμοποιούν διαφορετικές μηχανές σε συνδυασμό με πολλαπλά τμήματα λήψης αποφάσεων που αναλαμβάνουν το καθένα τους διαφορετικά προβλήματα AI, έτσι ώστε να μην αισθάνονται οι παίχτες ότι το μοντέλο είναι state-based. Οι state-based μέθοδοι είναι τόσο διαδεδομένες, επειδή είναι ένα οργανωτικό μέσο που διαιρεί το χώρο καταστάσεων όλου του παιχνιδιού σε διαχειρίσιμα κομμάτια. Αντί να προσπαθούμε να αντιμετωπίσουμε τις λογικές συνδέσεις μεταξύ των αποφάσεων σε ολόκληρο το παιχνίδι στην πραγματικότητα το χωρίζουμε σε μικρότερα κομμάτια που μπορούν να αντιμετωπιστούν πιο εύκολα. Ακόμα και τα παιχνίδια που δεν προσφέρονται για μια stat-based αρχιτεκτονική με βάση τον σχεδιασμό τους ως σύνολο μπορούν μόνο να επωφεληθούν από τον διαμερισμό του παιχνιδιού σε πιο μικρά κομμάτια από μια υψηλού επιπέδου μηχανή AI. Με τον καθορισμό των καταστάσεων που εξαρτώνται μόνο από εσωτερικούς παράγοντες μια μηχανή καταστάσεων μπορεί να διαμερισματοποιήσει τον κόσμο του παιχνιδιού. Προαιρετικά, μπορούμε να διαιρέσουμε με την ίδια τακτική σε επιμέρους απλούστερες καταστάσεις. Έτσι θα μπορούσε ο χαρακτήρας AI να καθορίσει βασικές συμπεριφορές σε κάθε μια κατάσταση. Το σύστημα AI θα μπορούσε στη συνέχεια να απαντήσει με μια συγκεκριμένη συμπεριφορά σε κάθε περίπτωση. Αυτό το κομμάτι των πληροφοριών θα μπορούσε να χρησιμοποιηθεί ως ένας απλός τροποποιητής σε μία πιο γενική κατάσταση. Αλλά κάθε προκύπτουσα κατάσταση είναι απλούστερη, καθώς και πιο εύκολο να επεξεργαστεί και να επεκταθεί σε αντίθεση με ένα πιο σύνθετο σύστημα βασισμένο σε κανόνες. Η σωστή ισορροπία μεταξύ της οργανωτικής πολυπλοκότητας και επανάληψης κώδικα θα πρέπει να καθορίζεται μέσω προγραμματισμού και εφαρμογής. Ένας άλλος λόγος για την επικράτηση του state-based προτύπου στα παιχνίδια είναι για λόγους δοκιμής, ρύθμισης και debugging. Αν το AI σύστημα του παιχνιδιού δεν είναι δυνατό να αναπαραχθεί κατά κάποιο τρόπο, οι δοκιμαστές του παιχνιδιού

26 Κεφάλαιο 2. Σχεδιασμός AI Engine 16 πρόκειται να δυσκολευτούν πολύ και να σπαταλήσουν αρκετό χρόνο για να προσδιορίσουν αν το παιχνίδι AI είναι ελαττωματικό ή πάρα πολύ δύσκολο ή crashάρει τον υπολογιστή. Η δημιουργία ενός παιχνιδιού με διαφορετικές τεχνικές είναι πολύ πιο δύσκολο να γίνει, και η πρόσθεση συγκεκριμένων προτάσεων μπορεί να είναι πολύ δύσκολο να εφαρμοστεί. Περιορισμοί Ψυχαγωγίας Τα βιντεοπαιχνίδια έχουν γίνει μέρος της κουλτούρας μας. Έχουν γίνει ένα μέρος της καθημερινής μας ζωής για αρκετές γενεές και δεν πρόκειται αυτό να αλλάξει σύντομα. Άνθρωποι έχουν μεγαλώσει με τα παιχνίδια αυτά και μερικοί από τους πιο βασικούς όρους των παιχνιδιών έχουν μπει στα σπίτια μας. Παιχνίδια που δεν εφαρμόζουν τους κλασικούς κανόνες ή όταν δεν επιτρέπουν την καθιερωμένη πρακτική μπορεί να έχουν αρκετά αρνητικά αποτελέσματα. Αυτό περιλαμβάνει πράγματα όπως τη λογική του πέτρα-ψαλίδι-χαρτί. Μια κοινώς αποδεκτή αντίληψη στο σχεδιασμό του παιχνιδιού είναι ότι κάθε τι που μπορεί να γίνει θα πρέπει να έχει ένα αντίβαρο, οδηγώντας έτσι στη λογική αυτή. Αν οι AI αντίπαλοι του παιχνιδιού μας έχουν ικανότητες που δεν μπορούν να αντιμετωπιστούν από τον ανθρώπινο παράγοντα, τότε δεν θα είναι πολύ διασκεδαστικό. Αλλά αν ο άνθρωπος μπορεί να κάνει κάτι που το AI δεν μπορεί να αντιμετωπίσει, το παιχνίδι μας θα είναι πάρα πολύ εύκολο και πάλι θα χάσει το ενδιαφέρον του. Αυτή είναι η κλασική ισορροπία του παιχνιδιού που είναι ζωτικής σημασίας για την τελική επιτυχία του. Πώς να αξιοποιήσουμε καλύτερα τα επίπεδα δυσκολίας είναι ένα άλλο ζήτημα που πρέπει να απαντηθεί από το AI του συστήματός μας. Στατικά επίπεδα δεξιοτήτων (που έχουν οριστεί πριν το παιχνίδι ξεκινήσει, από τον παίκτη) συνήθως θεωρούνται καλύτερα από μία δυναμική αλλαγή των επιπέδων (επίπεδα που αλλάζουν σε πραγματικό χρόνο καθώς ο παίκτης προχωρά). Αυτό κυρίως γιατί οι περισσότεροι παίκτες θέλουν να ξέρουν το επίπεδο που προσπαθούν να κερδίσουν (αν και θα μπορούσαν να έχουν ρυθμίσει ένα στατικό επίπεδο δυσκολίας που ο παίκτης θα μπορούσε να το προσαρμόσει κατά την διάρκεια). Το επίπεδο των δεξιοτήτων των ανθρώπων διαφέρει σε μεγάλο βαθμό από άτομο σε άτομο και σε συγκεκριμένη εργασία. Δυναμική προσαρμογή του επιπέδου δεξιοτήτων είναι πολύ δύσκολο να εφαρμοστεί και οι παίχτες να εξακολουθούν να αισθάνονται ότι το παιχνίδι δεν κλέβει. Μερικοί άνθρωποι απολαμβάνουν να είναι σε εγρήγορση με το παιχνίδι και αγαπούν την αίσθηση του να βρίσκονται στην άκρη των καθισμάτων τους και να πετάγονται πάνω με κάθε ευκαιρία που τους δίνεται. Άλλοι θέλουν απλά να κάθονται και να χαζεύουν χαλαρά στον καναπέ τους. Ένα άλλο πρόβλημα που δημιουργείται

27 Κεφάλαιο 2. Σχεδιασμός AI Engine 17 με τα δυναμικά επίπεδα είναι το τί γίνεται σε περίπτωση μη τυπικών συμπεριφορών. Θα πρέπει με κάποιο τρόπο να φιλτράρονται οι συμπεριφορές που ο άνθρωπος έχει όταν κολλάει ή συγχύζεται λόγω της δυσκολίας. Επειδή κάνουμε video games και όχι ταινίες, υπάρχει πρόβλημα με το να δεθούν συναισθηματικά οι χαρακτήρες AI με τον παίκτη, χωρίς να καταντήσει κοινότοπο. Στις ταινίες και την τηλεόραση αυτό μπορεί να γίνει με δραματικές σκηνές, συγκεκριμένους διαλόγους και την εκφραστικότητα του ανθρώπινου προσώπου. Σε ένα παιχνίδι αυτό είναι πολύ πιο δύσκολο, γιατί (ειδικά σε 3D παιχνίδια) έχουμε ένα αρκετά περιορισμένο σύνολο εργαλείων που μπορούμε να επεξεργαστούμε αυτό το είδος των πληροφοριών. Μπορούμε να σκιαγραφήσουμε το συναίσθημα, το οποίο είναι χρήσιμο για πιο cartoonίστικα παιχνίδια, όπως το Crash Bandicoot ή Ratchet & Clank. Η χρήση των κλασικών κινουμένων σχεδίων και η παραμόρφωση του προσώπου, όταν ο χαρακτήρας κινείται φέρνει συναίσθημα στους χαρακτήρες αυτούς. Ο διάλογος μπορεί να βοηθήσει, αλλά μπορεί να επαναλαμβάνεται. Απαιτεί κάποιο επίπεδο συγχρονισμού των χειλιών για να δείχνουν ρεαλιστικά. Ένας χαρακτήρας με ένα λυπημένο βλέμμα στο πρόσωπό του και ένα γενικό ανοιγόκλεισμα της κάτω γνάθου, ενώ μιλάει δεν είναι αρκετά πειστικός στη μεταφορά συναισθημάτων. Οφείλουμε να συνειδητοποιήσουμε ότι οι περισσότερες δράσεις για να γίνουν αντιληπτές πρέπει να είναι αρκετά προφανείς. Η σημερινή γραφική επεξεργαστική δύναμη κάνει το πρόβλημα της μεταφοράς των συναισθημάτων λίγο πιο εύκολο να επιλυθεί. Μπορούμε να μοντελοποιήσουμε πιο πολύπλοκους χαρακτήρες και να χρησιμοποιήσουμε πιο λεπτές κινήσεις για να ζωντανέψουμε τον χαρακτήρα, αλλά οι κονσόλες θα εξακολουθούν να υποφέρουν από την περιορισμένη ανάλυση της τηλεόρασης πράγμα που σημαίνει ότι οι μικρές λεπτομέρειες δεν θα είναι εμφανείς στις μη HD τηλεοράσεις. Ακόμη και με τα συστήματα υψηλής ευκρίνειας η δράση θα πρέπει να επιβραδύνεται αλλιώς οι λεπτομέρειες θα χαθούν, επειδή δεν μπορούμε ποτέ να είμαστε σίγουροι πού ο παίκτης είχε εστιάσει Διαχείριση αισθήσεων και αντιλήψεων Οι αισθήσεις ή είσοδοι στο AI μπορούν να οριστούν ως τα στοιχεία στο περιβάλλον του παιχνιδιού που θα θέλαμε οι πράκτορες μας να ανταποκρίνονται. Αυτό μπορεί να είναι αρκετά απλό όπως η θέση του παίκτη ή κάτι πιο σύνθετο όπως το ιστορικό που ο υπολογιστής έχει καταγράψει την ανθρώπινη δραστηριότητα στα πλαίσια ενός παιχνιδιού στρατηγικής. Συνήθως, αυτοί οι τύποι δεδομένων αποτελούν μία ξεχωριστή προγραμματιστική οντότητα (κλάση), ώστε να είναι πιο εύκολο να προστεθούν στο σύστημα, να εξασφαλίζεται ότι δεν επαναλαμβάνονται σε διαφορετικά μέρη του

28 Κεφάλαιο 2. Σχεδιασμός AI Engine 18 (αʹ) Crash Bandicoot (βʹ) Ratchet & Clank Σ 2.4: Παιχνίδια με ήρωες cartoon συστήματος AI και να βοηθά στη βελτιστοποίηση του κώδικα περιορίζοντας τους υπολογισμούς. Ένα κεντρικό σύστημα αντίληψης μπορεί να προσθέτει στοιχεία ή εκτιμήσεις για κάθε είσοδο συμπεριλαμβανομένου του τύπου της αίσθησης, την συχνότητα που ενημερώνετε, τον χρόνο αντίδρασης, τυχών όρια που υπάρχουν, το κόστος εκτέλεσης και πιθανόν κάποια προεργασία που χρειάζεται. Τύποι εισόδων-αισθήσεων Οι διάφοροι τύποι αισθήσεων μπορεί να περιλαμβάνουν κλασικούς τύπους δεδομένων όπως Boolean, integer, float και ούτω καθεξής. Ενδέχεται επίσης να περιλαμβάνουν στατικές τιμές (μια αντίληψη που απαιτείται για ένα παιχνίδι μπάσκετ θα μπορούσε να είναι αν Ball Handling Skill είναι μεγαλύτερο από 75,όπου χρειάζεται να καθοριστεί μόνο τη στιγμή που ξεκινάει ο αγώνας, εκτός και αν το παιχνίδι μας επιτρέπει την ικανότητα προσαρμογής κατά τη διάρκεια του αγώνα). Συχνότητα ενημέρωσης Κάποιες αισθήσεις πρέπει να ενημερώνονται σε μεγάλα χρονικά διαστήματα, είτε επειδή δεν αλλάζουν συχνά, είτε έχουν μεγάλο υπολογιστικό κόστος. Αυτό θα μπορούσε να θεωρηθεί μια μορφή χρόνου αντίδρασης, αλλά είναι περισσότερο σαν μια δειγματοληψία που δεν πειράζει να είναι λίγο καθυστερημένη. Συνεχίζοντας το παράδειγμα του μπάσκετ αυτό θα μπορούσε να χρησιμοποιείται με ελέγχο του line-ofsight που καθορίζει εάν ο κάτοχος της μπάλας είναι σε ευθεία για το καλάθι. Αυτός είναι ένα αρκετά ακριβός έλεγχος, ειδικά αν χρησιμοποιείτε πρόβλεψη για όλους

29 Κεφάλαιο 2. Σχεδιασμός AI Engine 19 τους κινούμενους χαρακτήρες. Έτσι ίσως να θέλετε να ελέγξετε αυτήν την αντίληψη σε καθορισμένα χρονικά διαστήματα αντί για κάθε κύκλο του παιχνιδιού. Χρόνος αντίδρασης Χρόνος αντίδρασης είναι η παύση πριν ένας εχθρός αναγνωρίζει μια αλλαγή στο περιβάλλον του. Με ένα χρόνο αντίδρασης μηδέν, ο υπολογιστής φαίνεται ότι κλέβει. Δίνοντας μια ελαφρώς τυχαία (ή με βάση ίσως κάποιο χαρακτηριστικό δεξιότητας) παύση πριν τα πράγματα αναγνωριστούν από τον εχθρό η συνολική συμπεριφορά του συστήματος φαίνεται πολύ πιο δίκαιη και ανθρώπινη. Αυτό μπορεί επίσης να ρυθμιστεί με το επίπεδο δυσκολίας κάνοντας το συνολικό παιχνίδι περισσότερο ή λιγότερο δύσκολο. Ο χρόνος αντίδρασης μπορεί επίσης να δώσει ένα ψήγμα της προσωπικότητας στους χαρακτήρες. Οι γρηγορότεροι χαρακτήρες θα ανταποκρίνονται έτσι πιο γρήγορα από ότι οι πιο αργοί. Όρια Τιμών Όρια είναι οι ελάχιστες και μέγιστες τιμές στις οποίες το AI θα πρέπει να ανταποκριθεί. Αυτό μπορεί να είναι για απλό έλεγχο των δεδομένων, αλλά θα μπορούσε επίσης να προσομοιώνει ένα χαρακτήρα με μειωμένη ακοή (το ελάχιστο όριο ακουστικής του θα μπορούσε να είναι υψηλότερο από εκείνο των άλλων χαρακτήρων) ή ένας εχθρός με μάτια αετού (που βλέπει κάθε κίνηση αντί μόνο των μεγάλων ή γρήγορων κινήσεων). Τα όρια μπορούν επίσης να πάνε προς τα κάτω ή προς τα πάνω ως ανάδραση των γεγονότων του παιχνιδιού για την αναπροσαρμογή της αντίληψης. Λόγου χάρη μια χειροβομβίδα κρότου-λάμψης θα τύφλωνε προσωρινά έναν αντίπαλο, αλλά έναν φρουρό σε περιπολία θα τον τρόμαζε ο ήχος και θα γινόταν πιο προσεκτικός και η ακοή του θα οξυνόταν για ένα μικρό χρονικό διάστημα. Αυτό το είδος συμπεριφοράς αποδεικνύεται σωστό από τα δημοφιλή παιχνίδια με κλέφτες ή δολοφόνους όπως για παράδειγμα το Assassin s creed. Εξισορρόπηση Χρόνου Ενημέρωσης Εισόδων Σε ορισμένα παιχνίδια η ποσότητα των δεδομένων που χρειάζεται το AI να λάβει υπόψη είναι πάρα πολύ υπολογιστικά βαριά για να αξιολογηθεί σε κάθε κύκλο του παιχνιδιού. Ρυθμίζοντας το σύστημα αντίληψής ώστε να μπορούμε να καθορίσουμε το χρονικό διάστημα μεταξύ των ενημερώσεων από συγκεκριμένες μεταβλητές εισόδου είναι ένας εύκολος τρόπος για να κρατήσουμε την ισορροπία του συστήματος

30 Κεφάλαιο 2. Σχεδιασμός AI Engine 20 και να μην καταλήξουμε να χρησιμοποιούμε πάρα πολύ χρόνο CPU για κάτι που σπάνια αλλάζει. Υπολογιστικό Κόστος και Προεργασία Εκτός από τον υπολογισμό του χρόνου ενημέρωσης όπως προαναφέρθηκε για την εξισορρόπηση των υπολογισμών θα πρέπει επίσης να συνυπολογίσουμε το κόστος προεπεξεργασίας. Μπορούμε να σχεδιάσουμε το σύστημά μας με ιεραρχικό τρόπο από την αρχή. Απλοί υπολογισμοί γίνονται αρχικά και ως εκ τούτου πιο σύνθετοι προσδιορισμοί μπορεί να παραλειφθούν αργότερα. Ας δώσουμε ένα απλουστευμένο παράδειγμα. Ας πούμε ότι στο παιχνίδι του Pac-Man υπάρχει μία AI ρουτίνα για τη λειτουργία του κεντρικού χαρακτήρα που πρέπει να κάνει (εκτός των άλλων) δύο υπολογισμούς, τον αριθμό των τελειών και την απόσταση από κάθε τελεία. Ο κύριος χαρακτήρας θα μπορούσε πιθανότατα να ελέγχει το συνολικό αριθμό των τελειών πρώτα (ελέγχοντας κάποια μεταβλητή-μετρητή του αριθμού των τελειών ή αφαιρώντας τελείες για να δει πόσες εξακολουθούν να είναι ενεργές) για να βεβαιωθεί ότι υπάρχει τουλάχιστον μία πριν αρχίσει να υπολογίζει εκ νέου την απόστασή του από όλες τις τελείες. Αυτή είναι μια πιο δαπανηρή μέθοδος υπολογισμού. Το σύστημα αντίληψης που θα επιλέξουμε θα είναι πιθανότατα μία εξειδικευμένη περίπτωση που θα ανταποκρίνεται ικανοποιητικά στις εισόδους που θέλουμε, οι οποίες εξαρτώνται σε μεγάλο βαθμό από το είδος του παιχνιδιού, την έμφαση του παιχνιδιού, τυχόν ειδικές δυνάμεις που έχουν οι χαρακτήρες ή οι εχθροί και πολλά άλλα πράγματα. Ορισμένα δεδομένα των συστημάτων AI προσομοιώνουν ανθρώπινες αισθήσεις (όπως το πεδίο όρασης ή ακοής) ή απλά λαμβάνουν πληροφορίες από το παιχνίδι. Όμως δεν πρέπει να το παρακάνουμε αυτό το τελευταίο διότι διατρέχουμε τον κίνδυνο της εξαπάτησης. Το πιο πιθανό είναι να πρέπει να χρησιμοποιήσουμε εκτεταμένες πληροφορίες για αυτά τα τα είδη των εισόδων επειδή θα ήταν υπερβολικά δαπανηρά για τον άμεσο υπολογισμό τους (όπως ένας λεπτομερής χάρτης με κάθε πιθανή διαδρομή ή η τυποποίηση της αίσθησης ότι κάποιος είναι πίσω από έναν παίκτη). Όι δύο κύριες τεχνικές για την ενημέρωση των αντιλήψεων είναι οι εξής: Με Δημοσκόπηση (polling). Έλεγχος αν άλλαξαν συγκεκριμένες τιμές και υπολογισμός σε κάθε κύκλο του παιχνιδιού. Παραδείγματος χάρη αν ένας μπασκετμπολίστας είναι ελεύθερος για πάσα κάθε χρονική στιγμή. Αυτό είναι αναγκαίο για πολλά από τα δεδομένα, προκειμένου να ανταποκριθεί το AI, αλλά είναι επίσης το είδος των δεδομένων που είναι πολύ πιο πιθανό να χρειάζεται εξισορρόπηση. Προτιμάμε να χρησιμοποιούμε αυτή τη μέθοδο για την

31 Κεφάλαιο 2. Σχεδιασμός AI Engine 21 αναλογικές, συνεχής ή πραγματικές μεταβλητές ή για τις τιμές που μπορεί να αποκλίνουν σε μεγάλο βαθμό πολύ συχνά. Με Γεγονότα (event driven). Χρησιμοποιώντας γεγονότα είναι κατά κάποιο τρόπο το αντίθετο της δημοσκόπησης. Η ίδια η είσοδος λέει στο σύστημα αντίληψης ότι έχει αλλάξει και το σύστημα ενημερώνεται και πράττει αναλόγως. Εάν τα γεγονότα δεν παραπέμπονται στο σύστημα αντίληψης τότε δεν γίνεται τίποτα. Αυτή είναι η προτιμώμενη μέθοδος για ψηφιακές εισόδους που δεν αλλάζουν συχνά (και όχι τριάντα φορές το δευτερόλεπτο ή περισσότερο, όπως η θέση του πράκτορα). Εάν πρόκειται να έχουμε μια σταθερή ροή των γεγονότων που έχει καταχωρηθεί σε μία δομή και στη συνέχεια το AI ενεργεί με αυτήν την σειρά τότε απλά προσθέτουμε έξτρα άχρηστους ελέγχους στο σύστημα μας (για τη συγκεκριμένη είσοδο), οπότε καταλήγουμε στο ότι δεν θέλουμε να χρησιμοποιούμε ένα σύστημα βάσει γεγονότων. Ορισμένα παιχνίδια κυρίως με κλέφτες κάνουν εκτεταμένη χρήση των προηγμένων συστημάτων αντίληψης. Αυτό οφείλεται στο γεγονός ότι οι αισθήσεις των εχθρών γίνονται ένα όπλο εναντίον του παίκτη και ένα μεγάλο μέρος της εμπειρίας του παιχνιδιού είναι η αποφυγή του συστήματος αντίληψης εκτός από τους στόχους του παιχνιδιού Εύρεση μονοπατιού Η εύρεση μονοπατιού ή πλοήγηση είναι η τεχνική του να πάει ο πράκτορας από το σημείο Α στο σημείο Β. Στην αναζήτησή μας για περισσότερο ρεαλιστικά και συναρπαστικά παιχνίδια οι κόσμοι των σύγχρονων παιχνιδιών περιλαμβάνουν συνήθως μεγάλα και σύνθετα περιβάλλοντα με μια ποικιλία από πίστες, εμπόδια και κινητά αντικείμενα. Το ότι έχουμε καλά δοκιμασμένους αλγορίθμους για την επίλυση αυτών των προβλημάτων το οφείλουμε στον τομέα της ρομποτικής, η οποία έπρεπε πρώτη να λύσει το πρόβλημα αυτό, παίρνοντας τα ρομπότ και κάνοντάς τα να μπορούν να ελίσσονται μέσα σε όλο και πιο πολύπλοκα περιβάλλοντα. Η εύρεση μονοπατιού χωρίζεται συνήθως σε δύο επιμέρους κατηγορίες: το σχεδιασμό διαδρομής και την αποφυγή εμποδίων. Είναι ένα ενδιαφέρον και περίπλοκο πρόβλημα και μερικές φορές εκνευριστικό. Στα πρώτα παιχνίδια η εύρεση μονοπατιού ήταν σχεδόν ανύπαρκτη. Τα περιβάλλοντα ήταν απλά, όπου οι εχθροί κατευθυνόταν προς τον παίκτη ή προς μία τυχαία κατεύθυνση και ο παίκτης έπρεπε να τους αποφύγει, όπως για παράδειγμα τα βαρέλια στο Donkey Kong. Όταν τα παιχνίδια άρχισαν να έχουν περίπλοκους κόσμους, στους οποίους μπορούσαν οι πράκτορες να κινηθούν όλα αυτά έγιναν πολύ πιο πολύπλοκα.

32 Κεφάλαιο 2. Σχεδιασμός AI Engine 22 Γι αυτό το λόγο αφιερώνουμε όλο το επόμενο κεφάλαιο αποκλειστικά στην πλοήγηση του πράκτορα μέσα στον κόσμο του παιχνιδιού και τον τρόπο που αυτός σκέφτεται και δρα προκειμένου να καταφέρει να πάει τελικά από ένα σημείο Α σε ένα σημείο Β.

33 Κεφάλαιο 3 Πλοήγηση Η πλοήγηση ή αλλιώς εύρεση μονοπατιού είναι ίσως η πιο βασική και στοιχειώδης λειτουργία μίας AI Gaming Engine κυρίως λόγω του ότι σχεδόν όλοι οι τύποι παιχνιδιών τη χρησιμοποιούν. Όπως αναφέραμε και στο προηγούμενο κεφάλαιο χωρίζεται σε δύο κυρίως μέρη, στον σχεδιασμό διαδρομής και στην αποφυγή εμποδίων. Έχει ως σκοπό να βρει τον τρόπο με τον οποίο θα διασχίσει ο πράκτορας το περιβάλλον στο οποίο βρίσκεται, έτσι ώστε να φτάσει στον στόχο του επιτυχώς ανεξαρτήτως κακουχιών που μπορεί να προκύψουν κατά την διαδρομή αυτή. 3.1 Δημιουργία Γράφου Για να έχουμε ένα χαρακτήρα AI που κινείται έξυπνα από το σημείο Α στο σημείο Β θα χρειαστούμε ένα ειδικό σύστημα που θα βοηθήσει τον πράκτορα μας να βρει το δρόμο του. Το σύστημα αυτό λέγεται γράφος. Έχουν αναπτυχθεί κατά καιρούς διαφορετικές μέθοδοι για να γίνει το παραπάνω εφικτό. Πιο γνωστές από αυτές είναι: Μέθοδος βασισμένη σε πλέγμα, Μέθοδος δυναμικών πεδίων, Μέθοδος δικτύων χάρτη-κόμβων, Μέθοδος με γράφο πλοήγησης, Μερικές φορές γίνεται συνδυασμός περισσοτέρων από μία μεθόδων, όπως θα συζητηθεί πιο κάτω. 23

34 Κεφάλαιο 3. Πλοήγηση Μέθοδος με Πλέγμα Σε ένα πλεγματικό σύστημα ο κόσμος διαιρείται σε περιοχές είτε τετράγωνες, είτε εξάγωνες. Έπειτα χρησιμοποιείται η αναζήτηση του αλγορίθμου AStar ή κάποιου στενού συγγενή του για να βρεθεί η συντομότερη διαδρομή με χρήση πάντα του πλεγματικού γράφου. Κάθε περιοχή έχει ένα κόστος διάσχισης, συνήθως από 0 έως 1 ή κάποια απόσταση. Απλά συστήματα θα μπορούσαν να χρησιμοποιήσουν μόνο δυαδικές τιμές για το πλέγμα, ενώ τα πιο πολύπλοκα συστήματα χρησιμοποιούν πλήρως όλες τις τιμές για να δείξουν το ύψος του πλέγματος (για να καταστεί δυνατή η προσομοίωση ανηφόρας και κατηφόρας) ή ειδικά χαρακτηριστικά των τετραγώνων πλέγματος όπως το νερό ή η λάσπη. Κύρια μειονεκτήματα των πλεγματικών γράφων είναι το τεράστιο μέγεθος μνήμης που καταλαμβάνουν, καθώς και η αποθήκευση των προσωρινών στοιχείων που χρειάζονται τη στιγμή που το σύστημα βρίσκει τη συντομότερη διαδρομή. Πλέγματα υψηλής ανάλυσης μπορεί να γίνουν επεξεργαστικά απαγορευτικά, επειδή το φορτίο εργασίας που ο αλγόριθμος αναζήτησης έχει να κάνει κλιμακώνεται δραματικά Μέθοδος Δυναμικών Πεδίων Με τη μέθοδο των δυναμικών πεδίων και πάλι διαχωρίζουμε τον χάρτη σε περιοχές. Στη συνέχεια συνδέουμε ένα διάνυσμα σε κάθε περιοχή του πλέγματος που ασκεί στον πράκτορα απωστική ή ελκτική δύναμη από περιοχές υψηλού δυναμικού σε περιοχές χαμηλού δυναμικού. Σε έναν ανοιχτό κόσμο με κυρτά εμπόδια χρησιμοποιώντας αυτή την τεχνική μπορούμε να κάνουμε προεργασία και να δημιουργήσουμε ένα διάγραμμα Voronoi, δηλαδή έναν μαθηματικά βέλτιστο διαχωρισμό του χώρου που παρέχει καλή ποιότητα και γρήγορο pathfinding. Γεωμετρικός τόπος Voronoi ορίζεται ως το σύνολο των σημείων που απέχουν από τα εμπόδια εξ ίσου. Τα μονοπάτια εξάγονται από το διάγραμμα Voronoi απλά ακολουθώντας τη γραμμή της μείωσης δυναμικού. Ωστόσο με μη κυρτά εμπόδια δεν μπορούμε να κάνουμε προεργασία, επειδή το διάνυσμα δύναμης θα εξαρτάται από το πώς έχει προσεγγίσει ο συγκεκριμένος πράκτορας το εμπόδιο, με ποιά γωνία και ποιά κατεύθυνση. Στην περίπτωση αυτή κρίσιμος είναι ο χρόνος εκτέλεσης της γεννήτριας του πεδίου, διότι θα πρέπει να εκτελείται σε πραγματικό χρόνο και όχι σε χρόνο προεργασίας Μέθοδος Δικτύων Χάρτη-Κόμβων Η μέθοδος δικτύων χάρτη-κόμβων ενδείκνυται για τρισδιάστατους κόσμους παιχνιδιών με τρισδιάστατες δομές που πρέπει να έχουν την ιδιότητα της επεκτασιμότητας.

35 Κεφάλαιο 3. Πλοήγηση 25 Με τη μέθοδο αυτή οι σχεδιαστές των επιπέδων του παιχνιδιού κατά τη διάρκεια της δημιουργίας του κόσμου καθορίζουν μια σειρά από συνδεδεμένα σημεία. Οι διασυνδέσεις αυτές αντιπροσωπεύουν συνδέσεις μεταξύ περιοχών ή δωματίων που συνθέτουν ένα συγκεκριμένο χώρο παιχνιδιού. Μπορούμε επίσης να το φανταστούμε ως σχεδιασμό των μονοπατιών που θα θέλαμε οι AI χαρακτήρες μας να ακολουθούν. Στη συνέχεια ακριβώς όπως η μέθοδος με πλέγμα γίνεται αναζήτηση με έναν αλγόριθμο (πιθανότατα AStar) για να βρούμε τη συντομότερη διαδρομή που συνδέει τα σημεία Α και Β. Στην πραγματικότητα είναι η ίδια τεχνική, όπως περιγράφεται παραπάνω με την διαφορά ότι μειώνουμε κατά πολύ το χώρο καταστάσεων στον οποίο ο αλγόριθμος θα ψάξει. Η μνήμη που χρησιμοποιείται για αυτό το σύστημα είναι πολύ λιγότερη, αλλά υπάρχει ένα άλλο κόστος που πρέπει να έχουμε κατά νου. Το δίκτυο χάρτη-κόμβων είναι άλλη μία δομή δεδομένων που πρέπει να δημιουργηθεί σωστά, έτσι ώστε να μοντελοποιούνται έξυπνα μονοπάτια και θα πρέπει να προσαρμόζεται ανάλογα εάν το επίπεδο αλλάξει. Η μέθοδος αυτή δεν ενδείκνυται για δυναμικά εμπόδια, εκτός εάν δεν μας πειράζει να εισάγουμε και να αφαιρούμε τα δυναμικά αντικείμενα στο δίκτυο κατά την διάρκεια του παιχνιδιού. Ένας καλύτερος τρόπος για να αντιμετωπίσουμε αυτό το πρόβλημα είναι να χρησιμοποιήσουμε ένα σύστημα αποφυγής εμποδίων που θα αναλάβει τη φροντίδα των κινούμενων αντικειμένων και να χρησιμοποιήσουμε το δίκτυο χάρτη-κόμβων για να διασχίσουμε το στατικό περιβάλλον. Το σύστημα αποφυγής εμποδίων ενεργοποιείται, όταν ένας πράκτορας του παιχνιδιού πηγαίνει πολύ κοντά σε ένα δυναμικό εμπόδιο ή κάποιον άλλο πράκτορα. Τότε διορθώνει την κατεύθυνση της κίνησης του πράκτορα, κάνοντάς τον να κινηθεί γύρω από αυτό. Σε περίπτωση που δεν υπάρχει δυναμικό εμπόδιο ο χαρακτήρας θα κατευθυνθεί απλώς προς τον επόμενο κόμβο της διαδρομής που έχει σχεδιάσει Μέθοδος Γράφου Πλοήγησης Το σύστημα γράφου πλοήγησης προσπαθεί να πάρει όλα τα πλεονεκτήματα του συστήματος χάρτη-κόμβων, χωρίς να χρειάζεται οι σχεδιαστές να δημιουργήσουν ή να προσαρμόσουν το δίκτυο αυτό. Με τη χρήση των πολυγώνων που περιέχονται στον χάρτη το σύστημα αλγοριθμικά παράγει ένα δίκτυο που το AI μπορεί να χρησιμοποιήσει. Αυτό είναι ένα πολύ πιο ισχυρό σύστημα, αλλά μπορεί να οδηγήσει μερικές φορές σε εμφάνιση περίεργων διαδρομών, αν η μέθοδος κατασκευής του γράφου πλοήγησης δεν είναι αρκετά ευφυής ή τα επίπεδα δεν χτίστηκαν με τη γνώση ότι αυτή η διαδικασία επρόκειτο να εκτελεστεί. Αυτό το είδος συστήματος χρησιμοποιείται καλύτερα για απλή πλοήγηση, διότι κάποια παιχνίδια έχουν ειδικά χαρακτηριστικά διαδρομής (όπως τηλεμεταφορές ή

36 Κεφάλαιο 3. Πλοήγηση 26 ασανσέρ) και είναι δύσκολο να γίνει μία τέτοια αναζήτηση με ένα γενικό αλγόριθμο. Θα μπορούσαν οι σχεδιαστές επιπέδων να καθορίζουν συγκεκριμένα στοιχεία σύνδεσης μεταξύ των ειδικών αυτών χαρακτηριστικών διαδρομής και στη συνέχεια ο γράφος πλοήγησης θα μπορούσε να χρησιμοποιήσει αυτά τα στοιχεία για την οικοδόμηση του δικτύου. Ωστόσο εάν προσπαθούμε να απαλλάξουμε τους σχεδιαστές επιπέδων από θέματα πλοήγησης, αυτό το βήμα θα υπονόμευε το σκοπό της αυτόματης δημιουργίας του δικτύου πλοήγησης Συνδυασμός μεθόδων Ορισμένα παιχνίδια χρησιμοποιούν ένα συνδυασμό αυτών των τεχνικών. Για σχετικά ανοικτούς χώρους θα μπορούσαμε να χρησιμοποιήσουμε ένα γράφο πλοήγησης ή ένα πλέγμα, αλλά για τις υπόγειες διαβάσεις ένα δίκτυο χάρτη-κόμβων. Σε παιχνίδια με κινήσεις πολλών ίδιων χαρακτήρων, όπως σμήνη πουλιών ή αγέλες ζώων μια πιθανή λύση θα μπορούσε να είναι τα δυναμικά πεδία, κυρίως για να τονιστεί η συμπεριφορά της ομάδας. Αλλά θα μπορούσε να υπάρχει και ένα σταθερό σύστημα pathfinding για ανθρώπους ή ένα ειδικό δίκτυο κόμβων που μόνο οι ιπτάμενοι χαρακτήρες θα μπορούσαν να χρησιμοποιήσουν. Με το συνδυασμό μεθόδων μπορούμε να πάρουμε τα πλεονέκτημα από κάθε μέθοδο, χωρίς να χρειάζεται να επιβαρύνουμε οποιοδήποτε μέρος του συστήματος μας, επειδή χρησιμοποιούμε το κάθε σύστημα μόνο για αυτό που κάνει καλύτερα. Αν μία τεχνική δεν μας κάνει μπορούμε να χρησιμοποιήσουμε μια άλλη μέθοδο που χρησιμοποιεί το παιχνίδι μας. Το γεγονός ότι ο αλγόριθμος AStar μπορεί να χρησιμοποιηθεί για την αναζήτηση σε πολλούς διαφορετικούς τύπους συνδεδεμένων δικτύων μας δίνει την δυνατότητα να χρησιμοποιήσουμε τον ίδιο κώδικα αναζήτησης μέσα από τις διαφορετικές δομές δικτύων. 3.2 Σχεδιασμός Διαδρομής Σχεδιασμός διαδρομής είναι ο προ-υπολογισμός τού μονοπατιού που θα ακολουθηθεί από τον πράκτορα προκειμένου να φτάσει στον στόχο του. Αυτός ο υπολογισμός συνήθως ολοκληρώνεται πριν ξεκινήσει ο πράκτορας να κινείται προς τον στόχο. Πρόκειται για μία αναζήτηση πάνω σε έναν γράφο με κόμβους και ακμές που έχουν τοποθετηθεί στο περιβάλλον με μία από τις μεθόδους που αναφέραμε προηγουμένως. Η αναζήτηση αυτή προτείνει μία διαδρομή, η οποία είναι σύντομη και αποφεύγει τα στατικά εμπόδια όχι όμως και τα δυναμικά!

37 Κεφάλαιο 3. Πλοήγηση Αλγόριθμοι Αναζήτησης Ας δούμε λοιπόν πώς σχεδιάζουμε το μονοπάτι που θα ακολουθήσουμε. Υπάρχουν αρκετοί αλγόριθμοι οι οποίοι προϋποθέτουν την ύπαρξη γράφου και μας επιστρέφουν μία λίστα από κόμβους που πρέπει να προσεγγίσουμε η από ακμές που θά διασχίσουμε. Στα demo παραδείγματά μας [3] έχει χρησιμοποιηθεί για γράφος ένα τετραγωνικό πλέγμα σε 2 διαστάσεις όπου οι κόμβοι του συνδέονται μεταξύ τους οριζόντια κάθετα και διαγώνια όπως φαίνεται στο σχήμα 3.1. Σ 3.1: Γράφος πλοήγησης Κάθε κόμβος στο σχήμα ορίζει μία τετραγωνική περιοχή γύρω του που ονομάζεται πλακίδιο η αλλιώς tile. Σε αυτό το σημείο να τονίσουμε ότι ο γράφος δεν είναι κατ ανάγκη σε πλεγματική μορφή μπορεί να είναι σε οποιαδήποτε μορφή και σε δύο η τρεις διαστάσεις. Όλοι οι αλγόριθμοι αναζήτησης αποτελούνται από τα εξής στάδια: επιλογή κόμβου - έλεγχος τερματικής συνθήκης - επέκταση κόμβου (αν δεν είναι τερματικός) - προσθήκη διαδόχων στην δομή. Η τερματική συνθήκη στο path finding είναι η απόσταση κόστους από τον στόχο και είναι ίδια για όλους τους αλγορίθμους. Ο αριθμός των διαδόχων που θα προστεθούν εξαρτάται από την μορφή-δομή του γράφου. Αυτό που αλλάζει από αλγόριθμο σε αλγόριθμο είναι η επιλογή του επόμενου κόμβου που θα εξεταστεί, η οποία εξαρτάται άμεσα από την δομή δεδομένων που θα χρησιμοποιηθεί.

38 Κεφάλαιο 3. Πλοήγηση 28 (αʹ) χωρίς εμπόδια (βʹ) με εμπόδια Σ 3.2: Depth First αναζήτηση Depth First Ο Depth First αλγόριθμος κάνει αναζήτηση πρώτα σε βάθος. Αυτό σημαίνει ότι επεκτείνει πρώτα τον κόμβο που βρίσκεται σε μεγαλύτερο επίπεδο (πιο βαθιά), μέχρι να φτάσει στο τελευταίο επίπεδο του γράφου αναζήτησης. Όταν φτάσει εκεί οπισθοχωρεί σε προηγούμενο επίπεδο και ακολουθώντας αυτήν την φορά διαφορετικό κλαδί (branch) του γράφου συνεχίζει την αναζήτηση. Ο αλγόριθμος αυτός όπως και όλοι οι αλγόριθμοι που θα αναφέρουμε παρακάτω τερματίζουν όταν βρεθεί ο κόμβοςστόχος ή όταν εξερευνηθούν όλοι οι κόμβοι του γράφου αναζήτησης. Το σύνολο των πιο απομακρυσμένων κόμβων που δεν έχουν επεκταθεί κατά την διάρκεια της αναζήτησης ονομάζεται σύνορο (fringe). Υλοποίηση αυτού του αλγορίθμου μπορεί να γίνει χρησιμοποιώντας ως δομή δεδομένων μία στοίβα. Παίρνοντας από την κορυφή της έναν κόμβο και ελέγχοντας αν είναι τερματικός. Αν δεν είναι τον επεκτείνουμε και τους καινούργιους κόμβους τους τοποθετούμε στην κορυφή της στοίβας. Πιο κάτω βλέπουμε φωτογραφίες του μονοπατιού που βρήκε ο αλγόριθμος με εμπόδια και χωρίς 3.2. Ξεκινώντας από τον αρχικό κόμβο, που συμβολίζεται με το πράσινο κουτάκι στο σχήμα μας, ο αλγόριθμος επεκτείνεται κάθε φορά στον πρώτο κόμβο που βρίσκει πρώτο μπροστά του προσπαθώντας να φτάσει στον κόμβο-στόχο που συμβολίζεται με το κόκκινο κουτάκι. Ο πρώτος κόμβος κάθε φορά εξαρτάται από τον αλγόριθμο που χρησιμοποιήσαμε για να κατασκευάσαμε τον γράφο και συνήθως δεν είναι προβλέψιμος και κατ επέκταση και το μονοπάτι που θα υπολογιστεί. Σε έναν πλήρως συνδεδεμένο γράφο όπως αυτόν του σχήματος πάντα θα υπάρχει μία

39 Κεφάλαιο 3. Πλοήγηση 29 διαδρομή ανάμεσα σε δύο κόμβους, ωστόσο αυτήν που υπολογίζει ο DFS δεν είναι η βέλτιστη λύση. Ξανακοιτώντας τις εικόνες μπορούμε να καταλάβουμε γιατί ο DFS αλγόριθμος δεν χρησιμοποιείται ποτέ για εύρεση μονοπατιού. Breadth First Ο Breadth First αλγόριθμος κάνει αναζήτηση πρώτα σε πλάτος. Η στρατηγική του είναι η εξής: Επεκτείνει πρώτα τον κόμβο-ρίζα μετά τους απογόνους του κόμβου αυτού, μετά τους απόγονους των απογόνων του κ.ο.κ. Με αυτό τον τρόπο επεκτείνονται πρώτα όλοι οι κόμβοι του ίδιου επιπέδου (βάθους) στον γράφο και μετά τα οι κόμβοι του επόμενου επιπέδου. Ο αλγόριθμος αυτός χρησιμοποιεί ως δομή του μία ουρά, στην οποία αντίθετα με τον DFS παίρνει τους κόμβους που θα εξετάσει από την αρχή της ουράς και τοποθετεί τους κόμβους που επεκτείνει στο τέλος αυτής. Πιο κάτω βλέπουμε φωτογραφίες του μονοπατιού που βρήκε ο αλγόριθμος με εμπόδια και χωρίς 3.3. Με μπλε χρώμα συμβολίζεται το τελικό μονοπάτι που θα ακολουθηθεί, ενώ με κόκκινο συμβολίζονται οι ακμές που εξερευνήθηκαν και τελικά απορρίφθηκαν από τον αλγόριθμο. Στην βιβλιογραφία το δέντρο που εξερευνήθηκε και τελικά απορρίφθηκε ονομάζεται spanning tree και είναι μία ένδειξη του πόσο απλώθηκε η αναζήτηση μας πριν καταλήξουμε στο τελικό αποτέλεσμα. (αʹ) χωρί εμπόδια (βʹ) μ εμπόδια Σ 3.3: Breadth First αναζήτηση

40 Κεφάλαιο 3. Πλοήγηση 30 (αʹ) χωρί εμπόδια (βʹ) μ εμπόδια Σ 3.4: Breadth First αναζήτηση Dijkstra Ο Dijkstra ή αλλιώς uniform cost καθώς και ο AStar αλγόριθμος που θα αναφέρουμε παρακάτω είναι οι δύο κύριοι αλγόριθμοι που θα μας απασχολήσουν στην εύρεση μονοπατιού (pathfinding). Η λογική αυτού του αλγορίθμου μοιάζει με αυτήν του BFS με την διαφορά ότι ο BFS επεκτείνει πρώτα τον κόμβο με το μικρότερο βάθος στον γράφο, ενώ τον Dijkstra δεν τον ενδιαφέρει το βάθος αυτό κάθ αυτό αλλά το κόστος της διαδρομής μέχρι την δεδομένη χρονική στιγμή. Έτσι θα επεκτείνει πρώτα τον κόμβο που έχει το μικρότερο κόστος διαδρομής. Η δομή δεδομένων που χρησιμοποιεί ονομάζεται ουρά προτεραιότητας (priority queue low) και εισάγοντας έναν κόμβο τον τοποθετεί σε φθίνουσα σειρά με βάση το κόστος που θα έχει όταν φτάσει μέχρι εκεί. Με αυτόν τον τρόπο η ουρά είναι πάντα ταξινομημένη. Τραβώντας έναν κόμβο από την ουρά παίρνουμε πάντα αυτόν με το μικρότερο κόστος μέχρι στιγμής. Πιο κάτω βλέπουμε φωτογραφίες του μονοπατιού που βρήκε ο αλγόριθμος με εμπόδια και χωρίς 3.4. AStar Ο AStar είναι ο πιο αποδοτικός αλγόριθμος για την εύρεση μονοπατιού, διότι κάνει πληροφορημένη αναζήτηση. Χρησιμοποιεί και αυτός την ουρά προτεραιότητας. Για κλειδιά προτεραιότητας όμως κάνει χρήση της συνάρτησης f(n) = g(n) + h(n), αντί του συνολικού κόστους της μέχρι τώρα διαδρομής που χρησιμοποιεί ο Dijkstra,.

41 Κεφάλαιο 3. Πλοήγηση 31 Όπου f(n) είναι το εκτιμώμενο κόστος της φθηνότερης λύσης μέσω του κόμβου n, g(n) το κόστος μετάβασης στον κόμβο n και h(n) το κόστος μετάβασης από τον κόμβο n στον στόχο. Η εκτίμηση h είναι ένας ευρετικός μηχανισμός (heuristic) που υπολογίζει την απόσταση από τον κόμβο που θα πάμε μέχρι τον στόχο. Αποδεικνύεται μαθηματικά ότι για να δώσει ο AStar το βέλτιστο μονοπάτι θα πρέπει η ευρετική αυτή συνάρτηση να είναι αισιόδοξη η αλλιώς παραδεκτή (admissible), όπως αναφέρετε στην βιβλιογραφία 6. Υπάρχουν πολλές ευρετικές συναρτήσεις τις οποίες θα εξετάσουμε. Πιο κάτω βλέπουμε φωτογραφίες του μονοπατιού που βρήκε ο αλγόριθμος AStar χωρίς εμπόδια 3.5 και είναι ίδιο για όλες τις ευρετικές συναρτήσεις που θα εξετάσουμε παρακάτω. Σ 3.5: AStar αναζήτηση Ευρετικές Συναρτήσεις Euclidean Ίσως η πιο γνωστή ευρετική συνάρτηση είναι το μήκος της ευθείας γραμμής που ενώνει τον κόμβο με τον στόχο. Η Ευκλείδεια απόσταση είναι παραδεκτή συνάρτηση. Στο σχήμα 3.6 φαίνεται το μονοπάτι που βρήκε ο AStar με χρήση της Ευκλείδειας απόστασης, όταν εμπόδια βρίσκονται ανάμεσα στην αρχή και στον στόχο.

42 Κεφάλαιο 3. Πλοήγηση 32 (αʹ) Euclidean (βʹ) Euclidean Square Σ 3.6: AStar αναζήτηση με εμπόδια Euclidean Square Συνήθως λόγω υπολογιστικού κόστους της τετραγωνικής ρίζας σε αναζητήσεις που θέλουμε ταχύτητα υπολογισμού χρησιμοποιούμε το τετράγωνο της ευκλείδειας απόστασης. Η ευρετική αυτή συνάρτηση δεν είναι παραδεκτή και δεν επιστρέφει το καλύτερο δυνατό μονοπάτι, αφού υπερεκτιμάει το κόστος διαδρομής. Ειδικά για μεγάλες αποστάσεις ο AStar εκφυλίζεται σε Best First αφού στην συνάρτηση f(n) = g(n) + h(n) ο όρος g(n) μετριέται σε μονάδες μήκους ενώ ο h(n) σε τετραγωνικές μονάδες. Πολλές φορές όμως αυτό γίνεται σκόπιμα, είτε γιατί δεν μας νοιάζει η καλύτερη διαδρομή, είτε γιατί θέλουμε να διαφοροποιήσουμε το μονοπάτι του πράκτορά μας από των υπολοίπων. Στο σχήμα πιο κάτω 3.6 φαίνεται το μονοπάτι που βρήκε ο AStar με χρήση του τετραγώνου της Ευκλείδειας απόστασης, όταν εμπόδια βρίσκονται ανάμεσα στην αρχή και στον στόχο. Manhattan Η ευρετική συνάρτηση Manhattan πήρε το όνομά της από την ομώνυμη περιοχή της νέας Υόρκης. Ο τρόπος που υπολογίζει την απόσταση θυμίζει οικοδομικά τετράγωνα και δίνεται από τον τύπο ((x 1 x 2 ) + (y 1 y 2 ). Δηλαδή είναι η κατακόρυφη απόσταση και η οριζόντια που απέχουν οι δύο κόμβοι. Η συνάρτηση αυτή δεν έχει τον χρονοβόρο υπολογισμό της τετραγωνικής ρίζας και δουλεύει αρκετά καλά για πλεγματικούς γράφους. Στο σχήμα πιο κάτω 3.7 φαίνεται το μονοπάτι που βρήκε ο

43 Κεφάλαιο 3. Πλοήγηση 33 (αʹ) Manhattan (βʹ) Chebyshev Σ 3.7: AStar αναζήτηση με εμπόδια AStar με χρήση της απόστασης Manhattan όταν εμπόδια βρίσκονται ανάμεσα στην αρχή και στον στόχο. Chebyshev Μία πιο ψαγμένη επέκταση της απόστασης Manhattan που εισάγει και την διαγώνια μετατόπιση σε πλεγματικό γράφο είναι η απόσταση Chebyshev. Έχει ελαφρώς καλύτερες επιδόσεις στο παράδειγμά μας όπως φαίνεται στο σχήμα πιο πάνω 3.7, όταν βρίσκονται εμπόδια ανάμεσα στην αρχή και στον στόχο. Lester Η ευρετική συνάρτηση Lester εισάγει μία προσέγγιση της τετραγωνικής ρίζας της διαγώνιας μετατόπισης πολλαπλασιάζοντας το κόστος με 1.4. Με αυτόν τον τρόπο δεν προτιμάται περισσότερο η διαγώνια μετατόπιση όπως στην ευρετική συνάρτηση Chebyshev. Στο σχήμα πιο κάτω 3.8 φαίνεται το μονοπάτι που βρήκε ο AStar με χρήση της Ευκλείδειας απόστασης, όταν εμπόδια βρίσκονται ανάμεσα στην αρχή και στον στόχο.

44 Κεφάλαιο 3. Πλοήγηση 34 Σ 3.8: AStar (Lester) αναζήτηση με εμπόδια Εξομάλυνση Διαδρομής Μερικές φορές θέλουμε να απλοποιήσουμε τον αριθμό των σημείων στο μονοπάτι μας όσο το δυνατόν περισσότερο κυρίως για δύο λόγους. 1. Όταν οι πράκτορες κινούνται σε ανοιχτό χώρο, οι κινήσεις τους θα πρέπει να φαίνονται φυσιολογικές πράγμα που δεν γίνεται στην περίπτωση του πλεγματικού γράφου, διότι οι κινήσεις είναι κβαντισμένες σε πολλαπλάσια των 45 μοιρών. Συνήθως φαίνεται άσχημα όταν συμβαίνει αυτό, δηλαδή ο χαρακτήρας AI κάνει zig-zag χωρίς λόγο, εκτός αν αυτός είναι κάποια γάτα η κάποιου είδους τρωκτικό. 2. Ο δεύτερος λόγος που θέλουμε να κάνουμε εξομάλυνση είναι ο τρόπος με τον οποίο ο πράκτορας από οποιοδήποτε σημείο του κόσμου μπαίνει στον γράφο. Για να γίνει η αναζήτηση πρώτα βρίσκουμε τους πλησιέστερους κόμβους στα σημεία αφετηρίας και τερματισμού, ωστόσο οι κοντινότεροι κόμβοι δεν είναι πάντα οι καλύτερες επιλογές από άποψη φυσικότητας. Υπάρχουν αλγοριθμικά δύο τρόποι να κάνουμε εξομάλυνση των ακμών μας.

45 Κεφάλαιο 3. Πλοήγηση Ο γρήγορος τρόπος ελέγχει ανά δύο τις ακμές, δοσμένης μίας συνάρτησης που υπολογίζει αν υπάρχει εμπόδιο μεταξύ δύο κόμβων. Αν μεταξύ του αρχικού κόμβου της πρώτης ακμής και του τελικού κόμβου της δεύτερης ακμής δεν υπάρχει εμπόδιο, τότε βάζουμε ως τελικό κόμβο της πρώτης ακμής τον τελικό κόμβο της δεύτερης και διαγράφουμε την δεύτερη ακμή. 2. Ο δεύτερος και πιο ακριβής αλγόριθμος βασίζεται στην ίδια λογική με την διαφορά ότι δεν ελέγχει μόνο αν ισχύει η συνθήκη για δύο συνεχόμενες ακμές, αλλά για όλες μεταξύ τους. Ωστόσο αυτή η μέθοδος έχει αυξημένο υπολογιστικό κόστος Καταμερισμός Χρόνου Εκτέλεσης Παιχνίδια που πρέπει να κάνουν πολλές αναζητήσεις για διαφορετικούς χαρακτήρες ταυτόχρονα, όπως είναι τα παιχνίδια στρατηγικής κολλάνε, όταν ο χρόνος εκτέλεσης όλων των αναζητήσεων είναι μεγαλύτερος από το μέγιστο επιτρεπτό χρόνο ενός κύκλου του παιχνιδιού. Η λύση σε αυτό το πρόβλημα είναι να κάνουμε ίσο καταμερισμό του χρόνου εκτέλεσης (timeslice) όλων των αναζητήσεων που βρίσκονται σε εξέλιξη. Σε κάθε κύκλο παιχνιδιού κάνουμε μόνο μερικά βήματα από κάθε αναζήτηση. Αν δεν βρούμε αποτέλεσμα, σώζουμε την κατάσταση της αναζήτησης για να την συνεχίσουμε σε επόμενο κύκλο. Ο αριθμός των βημάτων που θα κάνουμε σε κάθε κύκλο εξαρτάται από τον υπολογιστικό φόρτο των διεργασιών μας, καθώς και από την υπολογιστική ισχύ που διαθέτει ο υπολογιστής μας. Αυτή η τεχνική μπορεί να μας γλυτώνει από τα κολλήματα σε αυτές τις περιπτώσεις, αλλά έχει και ως αποτέλεσμα την αύξηση του χρόνου που η κάθε αναζήτηση θα δώσει αποτελέσματα. Γι αυτόν τον λόγο χρειάζεται ένας προσεκτικός σχεδιασμός στον χρονοπρογραμματισμό του κύκλου του παιχνιδιού μας, καθώς μεγάλοι χρόνοι απόκρισης των πρακτόρων συνεπάγονται αφύσικη συμπεριφορά. Σε περίπτωση που ο σχεδιασμός που κάναμε εξ αρχής δεν μας επιτρέπει να αποφύγουμε την καθυστέρηση αυτή, θα πρέπει να αποφασίσουμε τι θα κάνουμε στον χρόνο αναμονής των αποτελεσμάτων αναζήτησης. Η πιο συνηθισμένη λύση είναι ο πράκτορας να πηγαίνει σε ευθεία προς τον στόχο μέχρι να υπολογιστεί το μονοπάτι που πρέπει να ακολουθήσει. Άλλη λύση είναι να συνεχίσει να ακολουθεί το προηγούμενο μονοπάτι, αν υπάρχει, έως ότου αυτό αναβαθμιστεί από την καινούργια αναζήτηση. Βέβαια η πιο απλή λύση, η οποία θα πρέπει να αποφεύγεται, όπου είναι εφικτό για λόγους μη φυσικής συμπεριφοράς είναι ο πράκτορας να ακινητοποιείται όταν δεν ξέρει που να πάει. Ο καταμερισμός του χρόνου εκτέλεσης των αναζητήσεων σε παιχνίδια με πολλούς χαρακτήρες είναι καίριας σημασίας, καθώς μπορεί να ισορροπήσει

46 Κεφάλαιο 3. Πλοήγηση 36 τον χρόνο αντίδρασης των πρακτόρων και την ομαλή λειτουργία εκτέλεσης σε κάθε κύκλο παιχνιδιού. 3.3 Αποφυγή εμποδίων Η δυναμική αποφυγή εμποδίων είναι μια πολύ απλούστερη εργασία πλοήγησης. Σχετίζεται με το να κάνει τον πράκτορα να πάει γύρω-γύρω από τα αντικείμενα που βρίσκονται πάνω στην πορεία του. Αποφυγή είναι το ότι ένας παίκτης αλλάζει προσωρινά την πορεία του και παρακάμπτει, δηλαδή πάει γύρω από ένα αντικείμενο. Το σύστημα σχεδιασμού διαδρομής έχει βρει στον παίκτη μια γενική πορεία για να φτάσει στο στόχο του, αλλά ο παίκτης πρέπει να προσαρμόσει το μονοπάτι, γιατί κάτι μπήκε στον δρόμο του. Αυτή η προσωρινή συμπεριφορά επιτρέπει στους χαρακτήρες AI να χειρίζονται δυναμικά εμπόδια που εμφανίζονται στον κόσμο ανεξάρτητα από το στατικό σύστημα σχεδιασμού διαδρομής. Η αποφυγή εμποδίων γίνεται συνήθως με δυο διαφορετικούς τρόπους: 1. Δυναμικά πεδία. Εάν στο σχεδιασμό του παιχνιδιού μας χρησιμοποιούμε ήδη τα δυναμικά πεδία για την εύρεση μονοπατιού, μπορούμε να χρησιμοποιήσουμε μια παρόμοια μέθοδο για την αποφυγή εμποδίων. Τα διάφορα δυναμικά εμπόδια απλώς εφαρμόζουν μια απωθητική δύναμη ακτινικά από το κέντρο τους σπρώχνοντας τους πράκτορες μακριά. Η δύναμη αυτή θα πρέπει να γίνεται ισχυρότερη καθώς ο πράκτορας πλησιάζει μέχρι τελικά να σταματήσει σε κάποια ελάχιστη απόσταση. 2. Οδηγητικές συμπεριφορές. Ο Craig Reynolds το 1987 δημοσίευσε paper[4] όπου αναλυόταν λεπτομερώς συστήματα συμπεριφορών για χαρακτήρες - πλάσματα τα οποία τα ονομάζει boids. Τα boids μετακινούνται σε ομάδες και έχουν ζωώδη συμπεριφορά χωρίς πολύπλοκο σχεδιασμό. Το 1999 ο ίδιος ανανέωσε την έρευνά του με την έκδοση ενός δεύτερου paper με τίτλο Steering Behaviors for Autonomous Characters [5] όπου τα παιχνίδια δανείζονται τις τεχνικές του μέχρι και σήμερα. Σε αυτό το paper απεικονίζεται πώς με λίγες μαθηματικές δυνάμεις μπορούμε πολύ εύκολα να προσομοιάσουμε ρεαλιστικά πρότυπα κίνησης για να ελέγχουμε τους χαρακτήρες AI. Η πιο δημοφιλής εφαρμογή των τεχνικών του Reynolds ήταν τα συστήματα κοπαδιών, δηλαδή συστήματα προσομοίωσης συμπεριφορών για μεγάλες ομάδες χαρακτήρων, όπως τα πουλιά και τα ψάρια. Το ίδιο σύστημα των οδηγητικών συμπεριφορών μπορεί επίσης να χρησιμοποιηθεί για τη γενική κίνηση συμπεριλαμβανομένης και της αποφυγής εμποδίων. Η αποφυγή εμποδίων είναι απλώς άλλη μία συμπεριφορά

47 Κεφάλαιο 3. Πλοήγηση 37 στο σύνολο του συστήματός μας, όπου με τη χρήση πολύ απλών αισθητήρων για τον προσδιορισμό μελλοντικών συγκρούσεων εφαρμόζουμε αναλόγως τις οδηγητικές συμπεριφορές που έχουμε. Θα μπορούσαμε να πούμε ότι η αποφυγή εμποδίων μοιάζει με το πρόβλημα της ανίχνευσης σύγκρουσης στα γραφικά, το οποίο απασχολεί για πολλά χρόνια την επιστημονική κοινότητα. Υπάρχουν προσεγγίσεις που δίνουν βαρύτητα στην ακρίβεια [6] και προσεγγίσεις που ενδιαφέρονται περισσότερο για την ταχύτητα και τις επιδόσεις του αλγορίθμου ανίχνευσης σύγκρουσης σε πραγματικό χρόνο [7]. Στην περίπτωση του AI μας ενδιαφέρει περισσότερο η δεύτερη προσέγγιση, διότι τα παιχνίδια δεν είναι κρίσιμες σε επιδόσεις εφαρμογές, εκτός αν πρόκειται για παιχνίδια προσομοιώσεων. Αντιθέτως πολλές φορές χρησιμοποιούμε τεχνικές που δημιουργούν ανακρίβεια προς όφελός μας προκειμένου η αντίδραση να φαίνεται πιο ρεαλιστική. Μπορούμε παραδείγματος χάρη να βάλουμε ένα συντελεστή που αυξάνει τον περιβάλλοντα όγκο του πράκτορα μας προς την διεύθυνση του διανύσματος της ταχύτητας του, προκειμένου να φαίνεται ότι αποφεύγει το εμπόδιο και όχι ότι πέφτει πάνω σ αυτό και μετά απομακρύνεται. Ακόμη πρέπει να έχουμε υπόψη ότι ένας βαρύς επεξεργαστικά αλγόριθμος θα επιβάρυνε κατά πολύ το παιχνίδι μας, διότι ο έλεγχος για αποφυγή εμποδίων θα πρέπει να εκτελείται καθ όλη την διάρκεια που ο πράκτορας κινείται. Υπάρχουν πάρα πολλά άρθρα και βιβλία σχετικά με την πλοήγηση. Τα πρώτα παιχνίδια που δεν δώσανε μεγάλη σημασία σε αυτό το κομμάτι κρίθηκαν αναλόγως, κυρίως διότι η διεργασία αυτή είναι στην πραγματικότητα ένα από τα πιο βασικά προβλήματα στον κόσμο του AI.

48 Κεφάλαιο 4 Γνωριμία με το Hive3D 4.1 Τι είναι το Hive3D Το Hive3D είναι η πλατφόρμα ανάπτυξης παιχνιδιών (Game Engine) της Eyelead που χρησιμοποιήσαμε για την επιτυχή διεκπεραίωση αυτής της εργασίας. Όπως αναγράφεται και στο site το Hive3D είναι μία πρωτοποριακή μηχανή γραφικών και ήχου όπου μπορούν να δουλεύουν παράλληλα πολλοί developers μέσω του διαδικτύου, ανεξαρτήτως λειτουργικού συστήματος σε πραγματικό χρόνο. Η τρέχουσα έκδοση SDK με την οποία δουλέψαμε είναι η Hive3D - Architecture Το Hive3D είναι βασισμένο στην φιλοσοφία του λειτουργικού συστήματος Unix και χρησιμοποιεί έναν ελαφρύ πυρήνα (kernel) για τις βασικές διεργασίες. Τα παιχνίδια, οι editors, τα εργαλεία για debug είναι διεργασίες που βρίσκονται πάνω από τον πυρήνα. Ο γράφος σκηνής στο Hive3D υλοποιείται με ένα σύστημα εικονικών αρχείων (Hive Virtual File System), έτσι κάθε κόμβος στο γράφο σκηνής είναι ένα vfile στο Hive3D. Ακριβώς όπως ένα λειτουργικό σύστημα διαχειρίζεται τα αρχεία, έτσι και το Hive3D χειρίζεται τα τρισδιάστατα μοντέλα και τις εφαρμογές. Το παιχνίδι και οι editors εκτελούνται ταυτόχρονα και μοιράζονται τα ίδια δεδομένα. Κάθε αλλαγή στο περιεχόμενο 3D, στα κινούμενα σχέδια, στη μοντελοποίηση, στην επιφάνειας εδάφους και στα scripts, μπορεί να συμβεί ενώ το παιχνίδι είναι σε λειτουργία και αντανακλάται άμεσα στο παιχνίδι. Όλα τα script και ο περιβάλλων κώδικας γίνονται interpret και ανανεώνονται αυτόματα χωρίς reload και compile. Το ίδιο ισχύει και για αρχεία 38

49 Κεφάλαιο 4. Γνωριμία με το Hive3D 39 Σ 4.1: Hive Browser Menu 1 πόρων (resource files) οποιουδήποτε τύπου. Οι επανεκκινήσεις εφαρμογής περιορίζονται στο ελάχιστο. Επιπλέον, το Hive3D παράγει αυτόματα multithreading κώδικα για να δημιουργήσει ευέλικτες και επεκτάσιμες εφαρμογές. Το Hive3D επιτρέπει στους καλλιτέχνες να εργαστούν απευθείας στη μηχανή. Τα υλικά και τα περιβάλλοντα της σκηνής μπορούν να δημιουργούνται, επεξεργάζονται και να απεικονίζονται εντός της μηχανής με τη χρήση ολοκληρωμένων editors. Καλλιτέχνες μπορούν να δουν πώς το έργο τους θα φανεί στο τελικό προϊόν και μπορούν να έχουν πρωτοφανή έλεγχο με διάφορα οπτικά στοιχεία που τους προσφέρει το Hive3D. Τα υλικά με βάση τους κόμβους, τα δυναμικά συστήματα σωματιδίων, το ανάγλυφο του εδάφους, η μαζική αρχικοποίηση, οι προσομοιώσεις και η μη-γραμμική κίνηση, υποστηρίζονται μέσα από το ολοκληρωμένο αυτό περιβάλλον. Ο καλλιτεχνικός διευθυντής μπορεί να ελέγξει το περιεχόμενο εξ αποστάσεως μέσα από την μηχανή. Η 3D εφαρμογή μπορεί να ξεκινήσει μέσα από το περιβάλλον ανά πάσα στιγμή, χωρίς καθυστερήσεις για τη δοκιμή. Με την εξάλειψη των καθυστερήσεων προεπισκόπησης και διαθέτοντας νέες δυνατότητες συνεργασίας, το Hive3D έχει ως στόχο να συντομεύσει τη διαδρομή από την ιδέα στο πρωτότυπο μέχρι το τελικό προϊόν. Νέες ιδέες για παιχνίδια μπορούν να πρωτοτυπήσουν και να παρουσιαστούν με τη χρήση ολοκληρωμένων εργαλείων και

50 Κεφάλαιο 4. Γνωριμία με το Hive3D 40 Σ 4.2: Hive Browser Menu 2 scripting, χωρίς την ανάγκη προγραμματισμού χαμηλού επιπέδου. Μόλις το πρωτότυπο είναι έτοιμο, βελτιστοποιημένες εκδόσεις του κώδικα μπορούν να παράγονται και να δοκιμάζονται μέσω του ολοκληρωμένου περιβάλλοντος. Κάθε εφαρμογή βασισμένη στο Hive3D μπορεί να τρέχει μέσα από τον web-browser. Επιπλέον, το Hive3D υποστηρίζει στοιχεία του διαδικτύου, επιτρέποντας οποιοδήποτε συστατικό του παιχνιδιού να φέρει δεδομένα από οποιοδήποτε web server. Οι σύγχρονες τεχνολογίες web, όπως το Facebook και το Google App Engine υποστηρίζονται επίσης. Κάθε εφαρμογή Hive3D είτε αυτόνομα, είτε browser-based μπορεί εύκολα να έχει πρόσβαση στα δεδομένα facebook προφίλ. Ένα εξορθολογισμένο API για διασύνδεση με το Google App Engine και επιτρέπει γρηγορότερη προτυποποίηση και την ανάπτυξη της cloud-βάσης για παιχνίδια Hive3D - Script Όπως ειπώθηκε και πιο πριν το Hive3D έχει δικιά του scripting γλώσσα που ονομάζεται Hivescript. Είναι μία C-like γλώσσα προγραμματισμού με απλή σύνταξη που έχει την δυνατότητα αποστολής μηνυμάτων ανάμεσα στα scripts.

51 Κεφάλαιο 4. Γνωριμία με το Hive3D 41 Δεσμευμένες Λέξεις Το Hivescript χρησιμοποιεί τις εξής λέξεις: Μ : int float float2 float3 float4 float4x4 void vfile handle Π : #using #include #pragma #hive Τ :. + - * / ++ = == += -= *= /= & &&! < > <= >= &= = // /* */ Δ Ρ : break return this super init finish spawn if else while for { ( ) input public extend Τα σχόλια θα πρέπει να αρχίζουν με // σε κάθε γραμμή η με /*...*/ για ολόκληρο block. Το Hivescript υποστηρίζει ένα σύνολο από ορισμούς προεπεξεργασίας π.χ. για συμβατότητα με Hive VM πρέπει να γράψουμε #hive 1.6 ή την αντίστοιχη έκδοση. Με την δεσμευμένη λέξη #using και δίπλα το όνομα μίας βιβλιοθήκης που το.whl αρχείο (αντίστοιχο.dll για το Hive3D) βρίσκετε στο path $HIVEROOT/diskfs/bin/ μπορούμε να χρησιμοποιήσουμε τύπους και κλάσεις που υλοποιήθηκαν στην C++. Επίσης η λέξη #pragma και μία δήλωση και ακριβώς δίπλα ορίζουμε ένα block για τον compiler όπως και στην C. Τέλος η λέξη #include και δίπλα ένα αρχείο Hivescript εισάγει τον κώδικα του αρχείου αυτού στο script.

52 Κεφάλαιο 5 Υλοποίηση Pathfinder 5.1 Τι Κάναμε και Γιατί Στην διάρκεια αυτής της διπλωματικής εργασίας, όπως φάνηκε και από την έκταση του 3ου κεφαλαίου επικεντρωθήκαμε κυρίως στο θέμα της πλοήγησης και του σχεδιασμού διαδρομής. Επιλέξαμε να ασχοληθούμε με αυτό το κομμάτι του AI, γιατί είναι ένα από τα βασικά του στοιχεία και χρησιμοποιείται κατά κόρον σε όλα τα σημερινά παιχνίδια. Ο σχεδιασμός διαδρομής είναι επίσης μία αρκετά γενική διεργασία που θα μπορούσε να ενσωματωθεί σε ένα engine για να βοηθήσει τους developers να αναπτύξουν αποτελεσματικά το παιχνίδι τους. Άλλος ένας λόγος που το επιλέξαμε είναι ότι οι τεχνικές που χρησιμοποιούνται για τον σχεδιασμό διαδρομών, δηλαδή οι αλγόριθμοι αναζήτησης, θεωρούνται ώς μέθοδοι AI και με τον προγραμματιστικό αλλά και με τον ακαδημαϊκό όρο. Τέλος επειδή αυτή η εργασία έγινε στο περιβάλλον του Hive3D χρησιμοποιήσαμε τις ήδη υπάρχουσες δομές που μας προσέφερε το SDK του Hive για να μπορέσουμε τελικά να φτιάξουμε το API της βιβλιοθήκης μας και να την κάνουμε να είναι χρησιμοποιήσιμη στο hivescript Δομή Βιβλιοθήκης στη C++ Αρχικά λοιπόν, χρησιμοποιήσαμε το Visual Studio 2010 και φτιάξαμε μία βιβλιοθήκη σε C++ που περιέχει εκτός των άλλων και την κλάση Pathfinder που είναι μία από τις τρεις βασικές κλάσεις της βιβλιοθήκης μας. Αυτή η κλάση, κάνοντας χρήση των αντίστοιχων αλγορίθμων αναζήτησης (Dijkstra, AStar), μας επιστρέφει μία λίστα από σημεία που πρέπει να προσεγγίσουμε προκειμένου να φτάσουμε στον προορισμό μας. Ωστόσο για να λειτουργήσει θα πρέπει πρώτα να ορίσουμε τα σημεία άφιξης, τερματισμού καθώς και τον γράφο του περιβάλλοντος που βρισκόμαστε. Για να 42

53 Κεφάλαιο 5. Υλοποίηση Pathfinder 43 πάρουμε μία ιδέα περί τίνος πρόκειται παραθέτουμε συνοπτικά το header file που γίνεται η δήλωση της κλάσης. Περιέχονται σχόλια όπου αυτό είναι εφικτό. class Pathfinder:public HScript_Handle { private: // the terrain type of each cell BList <int> m_terraintype; //our graph NavGraph* m_pgraph; // this list will store any path returned from a graph search BList <BMVec3f > m_pathasvec; // this list will store any path returned from a graph search as edges BList <class PathEdge > m_pathaspathedges; // this stores the index of current way point the agent gonna follow unsigned int m_icurwaypoint; // this vector of edges is used to store any subtree returned from // any of the graph algorithms (such as an SPT) BList <const NavGraphEdge*> m_subtree; // the currently selected algorithm ALGORITHM_TYPE_e m_currentalgorithm; // the currently selected Heuristic HEURISTIC_TYPE_e m_currentheuristic; // the vectors of the start and destination position BMVec3f m_vstartpos, m_vdestinationpos; // class pointer used to switch between Astar and dijkstra in time sliced mode //a pointer to an instance of the current graph search algorithm. GraphSearchTimeSliced <class NavGraphEdge >* m_pcurrentsearch; // current search status TSSEARCHSTATUS_e m_isearchstatus; // the total cost of the path from target to source double m_dcosttotarget; public: Pathfinder(HScript_Instance *_instance,navgraph *_pgraph=null); ~Pathfinder() {delete m_pcurrentsearch; void setgraph(navgraph* graph); void setalgorithm(int alg); void setheuristic(int heur); void setstart(const BMVec3f pos); void setdestination(const BMVec3f pos); // initialize current search algorithm void initsearch(); //do th whole search till get final result TSSEARCHSTATUS_e dosearch(); //do num steps each time this function called when TimeSlice mode is on TSSEARCHSTATUS_e dosearchsteps(int num=3); // get current search status TSSEARCHSTATUS_e getsearchstatus() {return m_isearchstatus; // returns the number of nodes in Path list int getnumofwaypoints() {return (int)m_pathasvec.num; // returns the number of nodes in Path list int getnumofpathedges() {return (int)m_pathaspathedges.num; // returns the Point you want to folow

54 Κεφάλαιο 5. Υλοποίηση Pathfinder 44 BMVec3f getwaypoint(unsigned int idx); // returns the Point you are folowing bool getthiswaypoint(bmvec3f &waypoint); // returns the Point you just pass bool getbeforethiswaypoint(bmvec3f &waypoint); // returns the distance from next point you should folow and sets waypoint bool getnextwaypoint(bmvec3f &waypoint); // returns the distance from previous point yand sets waypoint bool getprevwaypoint(bmvec3f &waypoint); // returns true if cur way point is the last one bool islastpoint() {return (m_icurwaypoint==m_pathasvec.num); // returns the list of Point you should should folow const BList <BMVec3f > getlistofwaypoints() {return m_pathasvec; // returns the list of Point you should should folow bool reachwaypoint(bmvec3f pos, float reachdist) { return ( (( m_pathasvec[m_icurwaypoint -1]-pos). magnitude()) < reachdist); // get the name of algorithm BString GetNameOfCurrentSearchAlgorithm()const; void printpath(); // smooths a path by removing extraneous edges. (may not remove all // extraneous edges) void smoothpathedgesquick(); void smoothpathedgesprecise(); private: void getsearchresults(); ;./Code/Pathfinder.h Ο γράφος στη βιβλιοθήκη μας αντιπροσωπεύεται με μία απόγονο κλάση της κλάσης NavGraph, η οποία μπορεί να είναι NavGrid, NavSPLine ή MultiNavSPLine. Η πρώτη δημιουργεί έναν πλεγματικό γράφο και χρησιμοποιείται κυρίως σε ανοιχτά περιβάλλοντα. Η δεύτερη και η τρίτη κλάση δίνουν την δυνατότητα δημιουργίας γράφου από SPLines. Χρησιμοποιώντας την κλάση MultiNavSPLine για την δημιουργία του γράφου παράλληλα συνδέουμε και τα γειτονικά SPLines μεταξύ τους. Τα SPLines είναι καμπύλες που χρησιμοποιούνται στο Hive3D για να σχεδιαστούν τα μονοπάτια. Εκμεταλλευτήκαμε το γεγονός αυτό και καταφέραμε να δημιουργούμε τους γράφους πλοήγησης των πρακτόρων μας από τα SPLines αυτά. Έτσι καταστήσαμε ικανούς τους πράκτορες μας να βλέπουν τα μονοπάτια του κόσμου πού βρίσκονται, να τα προτιμούν και να τα ακολουθούν για την καλύτερη πλοήγησή τους. Το interface της virtual κλάσης NavGraph παρατίθεται συνοπτικά παρακάτω: class NavGraph:public HScript_Handle, public SparseGraph <NavGraphNode <void*>, NavGraphEdge > { public: // the current terrain brush BRUSH_TYPE_e m_currentterrainbrush;

55 Κεφάλαιο 5. Υλοποίηση Pathfinder 45 protected: // returns if a neighbour is valid bool validneighbour(int x, int y, int numcellsx, int numcellsz); // change the cost to go to a node void weightnavgraphnodeedges(int node, double weight); public: //ctor NavGraph(HScript_Instance *_instance, bool digraph=false); ~NavGraph() { ; // add graph for multigraph child virtual bool addspline(bstring vpath) {return false; // create grid virtual void create(bstring vpath, int numcellsz=20, int numcellsx=20) { // converts a vector to an index into the graph. virtual int getclosestnodetoposition(bmvec3f pos)const {return 0; // just print nodes and edges virtual void print() { // draw the graph virtual void render() { // set y of each node same as terrains y in each position virtual void snaptoterrain(bstring vpath) { // change brush type void changebrush(const BRUSH_TYPE_e NewBrush); // returns the terrain cost of the brush type double getterraincost(brush_type_e brush);./code/navgraph.h Όμως απλά ο σχεδιασμός του μονοπατιού δεν αρκεί για να βεβαιωθούμε ότι όλα βαίνουν καλώς. Έτσι δημιουργήσαμε την κλάση Agent που προσομοιώνει την κλασική νευτώνεια μηχανική με βάση πάντα τις δυνάμεις που ασκούνται στον πράκτορα αυτόν καθώς και την τρέχουσα κατάσταση του. Κάνοντας update σε τακτά χρονικά διαστήματα υπολογίζεται η νέα θέση του πράκτορα. Η κλάση Agent περιέχει τις εξής μεθόδους και μεταβλητές: class Agent_Handle : public HScript_Handle { public: bool alive; BMVec3f velocity,forces,accel,pos; BMRotHPR rot; float max_speed,max_force,mass,tar_heading,acceldamping,speedscale,oldss; HScript_HFStream* vfile; Pathfinder *pfdr; private: bool dirtyforce; BList <BMVec3f > l_forces; BMVec3f friction,frctonextpoint,paralleltopath,verticaltopath,proj, nextpoint,prevpoint;

56 Κεφάλαιο 5. Υλοποίηση Pathfinder 46 public: //ctor Agent_Handle(HScript_HFStream *_vfile, HScript_Instance *_instance, Pathfinder *_pfdr=null); ~Agent_Handle(); // update each tick void update(float _felapsed); // adds an new force to the agent unsigned int addforce(const BMVec3f &frc); // sets/changes an existing force bool setforce(unsigned int id, const BMVec3f &frc); // set an existing force to zero bool delforce(unsigned int id); bool delforce(const BMVec3f &frc); // sets all forces to zero bool clearforces(); // get proposed position and rotation for vfile BMVec3f getpos() {return pos; BMRotHPR getrot() {return rot; private: // linear interpolation BMVec3f lerp(bmvec3f _src, BMVec3f _tar, float _time); BMVec3f lookat(bmvec3f _src, BMVec3f _tar); ; #endif./code/agent.h Ο Agent μπορεί να χρησιμοποιήσει το μονοπάτι που έχει πει στον Pathfinder να του υπολογίσει. Έπειτα ασκώντας μία δύναμη στον εαυτό του προς το σημείο που θέλει να προσεγγίσει διαδοχικά και με την σειρά που του έχει δώσει ο Pathfinder φτάνει τελικά στον στόχο του Expose Pathfinder στο hivescript Προκειμένου να κάνουμε την βιβλιοθήκη μας λειτουργική σε hivescript χρησιμοποιήσαμε glue code όπως ονομάζεται στην argo των προγραμματιστών. Glue code είναι ο κώδικας που ορίζει στο hivescript το όνομα μίας συνάρτησης, τον αριθμό των παραμέτρων και των εξόδων της, καθώς και τους τύπους αυτών, προκειμένου να καθοριστεί μία σωστή επικοινωνία ανάμεσα σε C++ και hivescript. Οι συναρτήσεις που δίνονται στον developer που χρησιμοποιεί την βιβλιοθήκη μας για το hivescript, επιλέχθηκαν και σχεδιάστηκαν προσεκτικά, ώστε το API μας να

57 Κεφάλαιο 5. Υλοποίηση Pathfinder 47 είναι εύχρηστο, απλό στη χρήση του χωρίς ο developer να χρειάζεται να γνωρίζει πώς λειτουργεί η κάθε συνάρτηση που του δίνουμε. Το API χρησιμοποιεί default μεταβλητές χωρίς να δεσμεύει αυτόν που γνωρίζοντας κάτι παραπάνω θέλει να τις αλλάξει. Αυτό επιτυγχάνεται κάνοντας overload στις συναρτήσεις που περιέχουν παραμέτρους οι οποίες έχουν default τιμές και μπορούν να παραλειφθούν. Για παράδειγμα η συνάρτηση Pathfinder::setAlgorithm(); δέχεται μηδέν, ένα ή δύο ορίσματα. Την πρώτη περίπτωση θα την χρησιμοποιήσει κάποιος που δεν ξέρει τι είναι ο AStar, ίσως και να μην τον νοιάζει να μάθει, επιλέγοντας τις default επιλογές που έχουμε ορίσει εμείς. Στην περίπτωση του ενός ορίσματος κάποιος θα μπορούσε να ορίσει ως αλγόριθμο αναζήτησης τον Dijkstra, γράφοντας την εντολή Pathfinder::setAlgorithm(DIJKSTRA);. Στον developer δίνεται η επιλογή να ορίσει ακόμα και την ευρετική συνάρτηση που θέλει να χρησιμοποιήσει μέσω του δεύτερου ορίσματος. π.χ. Pathfinder::setAlgorithm(ASTAR, ΜΑΝΗΑΤΤΑΝ);. Με αυτή την λογική της ευχρηστίας, της λειτουργικότητας και του πλήρη ελέγχου του API μέσα από το hivescript σχεδιάσαμε τις παρακάτω συναρτήσεις.

58 Κεφάλαιο 5. Υλοποίηση Pathfinder 48 N G N SPL M N SPL N G handle NavGrid() void NavGrid::create(string,int,int) void NavGrid::render() void NavGrid::snapToTerain(string) handle NavSPLine() void NavSPLine::create(string,int) void NavSPLine::render() handle MultiNavSPLine() int MultiNavSPLine:: addspline(string) void MultiNavSPLine::create(int, int) void MultiNavSPLine::render() NavGrid constructor Δημιουργία στο terrain πλέγματος x επί y κελιών Σχεδιάζει τους κόμβους του γράφου μας Τοποθετεί τους κόμβους πάνω στο terrain NavSPLine constructor Δημιουργία από SPLine γράφου πλοήγησης προτεινόμενου μήκους μεταξύ κόμβων x Σχεδιάζει τους κόμβους του γράφου μας MultiNavSPLine constructor Προσθέτει SPLine στον γράφο Δημιουργία του γράφου από SPLines με προτεινόμενη απόσταση μεταξύ κόμβων x και y μέγιστη απόσταση για ένωση SPLines Σχεδιάζει τους κόμβους του γράφου μας

59 Κεφάλαιο 5. Υλοποίηση Pathfinder 49 P handle Pathfinder() Pathfinder constructor void Pathfinder::setGraph(NavGraph) Θέτουμε τον γράφο που θα αναζητήσουμε αργότερα void Pathfinder::setStartPoint(float3) Θέτουμε το σημείο αφετηρίας void Pathfinder::setDestinationPoint(float3) Θέτουμε το σημείο τερματισμού int Pathfinder::getSearchStatus() Παίρνουμε την κατάσταση που βρίσκεται η τρέχουσα αναζήτηση void Pathfinder::initSearch() Αρχικοποιούμε τις εσωτερικές μεταβλητές για να αρχίσουμε νέα αναζήτηση int Pathfinder::doSearch() Κάνουμε όλη την αναζήτηση μέχρι τέλους int Pathfinder::doSearchSteps(int) Κάνουμε μερικά μόνο βήματα της αναζήτησης void Pathfinder::setAlgorithm(int, int) Θέτουμε τον αλγόριθμο αναζήτησης int Pathfinder::getAlgorithm() Παίρνουμε τον αλγόριθμο αναζήτησης int Pathfinder::getNumOfWayPoints() Παίρνουμε τον συνολικό αριθμό των σημείων της διαδρομής float3 Pathfinder::getWayPoint(int) Παίρνουμε το χιοστό σημείο της διαδρομής float3 Pathfinder::getNextWayPoint() Παίρνουμε το επόμενο σημείο της διαδρομής float3 Pathfinder::getPrevWayPoint() Παίρνουμε το προηγούμενο σημείο της διαδρομής int Pathfinder::isLastPoint() Επιστρέφει άσσο όταν το σημείο που πηγαίνουμε είναι το τελευταίο της διαδρομής listf3 Pathfinder::getListOfWayPoints() Παίρνουμε ολόκληρη την λίστα των σημείων της διαδρομής int Pathfinder::reachWayPoint(float3, float) Επιστρέφει άσσο άν προσεγγίσαμε το τρέχων σημείο void Pathfinder::printPath() Εκτυπώνει τα σημεία του τρέχοντος μονοπατιού

60 Κεφάλαιο 5. Υλοποίηση Pathfinder 50 A handle Agent(vfile) Agent constructor handle Agent(handle) Κάνουμε cast σε Agent void Agent::setVelocity(float3) Θέτουμε την ταχύτητα float3 Agent::getVelocity() Παίρνουμε την ταχύτητα float Agent::getSpeedScale() Παίρνουμε τον λόγο ταχύτητας προς μέγιστο μέτρο ταχύτητας int Agent::addForce(float3) Προσθέτουμε μία δύναμη που ασκείται στον πράκτορα επιστρέφεται το ID αυτής void Agent::setForce(int,float3) Θέτουμε την δύναμη με αυτό το ID int Agent::delForce(int) Θέτουμε την δύναμη με αυτό το ID ίση με το μηδενικό διάνυσμα int Agent::clearForces() Θέτουμε όλες τις δυνάμεις ίσες με το μηδενικό διάνυσμα float3 Agent::getForces() Παίρνουμε την συνισταμένη των δυνάμεων void Agent::setMaxSpeed(float) Θέτουμε το μέτρο της μέγιστης ταχύτητας float Agent::getMaxSpeed() Παίρνουμε το μέτρο της μέγιστης ταχύτητας void Agent::setMaxForce(float) Θέτουμε τo μέγιστο μέτρο των δυνάμεων float Agent::getMaxForce() Παίρνουμε τo μέγιστο μέτρο των δυνάμεων void Agent::setMass(float) Θέτουμε την μάζα του Agent float Agent::getMass() Παίρνουμε την μάζα του Agent handle Agent::getVFile() Παίρνουμε το vfile του Agent void Agent::update(float) Ανανεώνουμε τις μεταβλητές κατάστασης ( θέση ταχύτητα, περιστροφή κτλ. ) με βάση τον αριθμό των frames που πέρασαν από την προηγούμενη ανανέωση void Agent::pos() Παίρνουμε την προτεινόμενη θέση του πράκτορα void Agent::rot() Παίρνουμε την προτεινόμενη περιστροφή του πράκτορα 5.2 Demos ο Παράδειγμα Στο πρώτο μας παράδειγμα φτιάξαμε ένα περιβάλλον στο οποίο δημιουργήσαμε έναν πλεγματικό γράφο πλοήγησης NavGrid. Επειδή το έδαφος δεν είναι επίπεδο

61 Κεφάλαιο 5. Υλοποίηση Pathfinder 51 κάναμε τον γράφο snap to terrain. Σε αυτό το περιβάλλον βάλαμε μέσα έναν πράκτορα όπου μπορεί να κινηθεί πάνω στο έδαφος. Στο 3D περιβάλλον υπάρχει μία κάμερα που ακολουθεί τον χαρακτήρα μας. Κάνοντας click με το ποντίκι μας σε ένα σημείο του εδάφους, λέμε στον πράκτορά μας να πάει εκεί. Το σημείο αυτό υπολογίζεται λύνοντας το σύστημα των εξισώσεων της ευθείας και του εδάφους στον τρισδιάστατο αυτό χώρο, η μέθοδος αυτή ονομάζεται raycasting, διότι εκπέμπει μία ακτίνα και σημαδεύει τα αντικείμενα που διαπερνάει. Αφού ορίσαμε το σημείο-στόχο και γνωρίζουμε την θέση του πράκτορα μπορούμε να υπολογίσουμε την διαδρομή που θα ακολουθήσουμε χρησιμοποιώντας έναν από τους αλγορίθμους αναζήτησης που διαθέτουμε. Η αναζήτηση μπορεί να γίνει κατ ευθείαν ή σε βήματα, κατανέμοντας αναλόγως τον υπολογιστικό φόρτο της διεργασίας αναζήτησης. Όταν η αναζήτηση δώσει αποτέλεσμα ο πράκτορας θα ξεκινήσει να ακολουθεί το μονοπάτι, ασκώντας μία δύναμη στον εαυτό του με κατεύθυνση προς το επόμενο σημείο του μονοπατιού που θέλει να προσεγγίσει. Τα σημεία τα παίρνουμε έναένα γνωρίζοντας κάθε φορά ποιο αριθμημένο στοιχείο της λίστας είναι καθώς και το σύνολο αυτών. Όταν όλα τα σημεία τελειώσουν ο πράκτορας έχει φτάσει στο στόχο του. Παρακάτω στις εικόνες 5.1 και 5.2 φαίνονται μερικά στιγμιότυπα από το περιβάλλον αυτού του demo. Σ 5.1: Περιβάλλον 1oυ Demo

62 Κεφάλαιο 5. Υλοποίηση Pathfinder 52 Σ 5.2: Πλεγματικός γράφος 1ου Demo ο Παράδειγμα Στο δεύτερο παράδειγμα έχουν σχεδιαστεί τέσσερα SPLines τα οποία σχηματίζουν διασταυρώσεις όπου ο πράκτορας καλείται να επιλέξει την συντομότερη. Με την χρήση της κλάσης MultiNavSPLines δημιουργούμε τον γράφο που θα πλοηγηθεί ο πράκτοράς μας. Με αντίστοιχο τρόπο όπως αυτόν του προηγούμενου παραδείγματος λέμε στον πράκτορα πού θέλουμε να πάει. Αφού όπως και στο προηγούμενο παράδειγμα υπολογιστεί από τον Pathfinder του πράκτορα το μονοπάτι, παίρνουμε ένα-ένα τα σημεία διαδρομής, χωρίς τώρα να ξέρουμε σε ποιο αριθμημένο σημείο βρισκόμαστε. Όταν τα σημεία τελειώσουν σηκώνεται ένα flag που μας ενημερώνει και η συνάρτηση int getnextwaypiont(float3)μας επιστρέφει μηδέν για να καταλάβουμε στο hivescript ότι το μονοπάτι τελείωσε. Γενικά αυτή η μέθοδος είναι πιο αποδοτική, έχει όμως το μειονέκτημα ότι προσπελαύνουμε σειριακά την λίστα των σημείων του μονοπατιού μας. Ένα στιγμιότυπο αυτού του παραδείγματος φαίνονται στην εικόνα ο Παράδειγμα Ακόμη ένα demo έγινε για να δούμε τι γίνεται στην περίπτωση που δεν έχουμε πλήρως συνδεδεμένο γράφο. Όπως και στο δεύτερο παράδειγμα έτσι και εδώ έχουμε

63 Κεφάλαιο 5. Υλοποίηση Pathfinder 53 Σ 5.3: Γράφος 2ου Demo τέσσερα SPLines, το ένα εκ των οποίων δεν συνδέεται με τα υπόλοιπα. Σε αυτή την περίπτωση το σύστημά μας θα προειδοποιήσει με ένα ανάλογο μήνυμα τον developer, αλλά θα συνεχίσει να λειτουργεί κανονικά. Όταν ζητηθεί μία διαδρομή μεταξύ κόμβων που δεν συνδέονται στον γράφο, ο Pathfinder, όπως μπορούμε να φανταστούμε θα επιστρέψει ως κατάσταση target not found. Άλλη μία διαφορά με τα προηγούμενα παραδείγματα, εκτός από τον διαφορετικό τύπο γράφου, είναι ότι αφού τελειώσει η αναζήτηση επιτυχώς, παίρνουμε όλη την λίστα των σημείων του μονοπατιού που υπολογίστηκε. Έτσι μπορούμε να επεξεργαστούμε ολόκληρο το μονοπάτι, πριν ξεκινήσουμε να οδεύουμε προς τον στόχο. Ωστόσο προτείνουμε, αν δεν υπάρχει σοβαρός λόγος, αυτή η μέθοδος να αποφεύγεται, διότι μεγάλος όγκος πληροφοριών αντιγράφεται με αποτέλεσμα να αυξάνεται το υπολογιστικό κόστος. Ο γράφος αυτού του demo φαίνεται στην εικόνα ο Παράδειγμα Το τέταρτο παράδειγμα είχε ως στόχο την εφαρμογή της βιβλιοθήκης σε ένα υπάρχον project και την μέτρηση της απόδοσης σε περιπτώσεις που πολλοί πράκτορες αναζητούν ταυτόχρονα διαδρομές. Βάλαμε λοιπόν εκατό πράκτορες σε ένα περιβάλλον με μονοπάτια που θα πρέπει να ακολουθήσουν προκειμένου να φτάσουν σε τυχαία σημεία εντός του περιβάλλοντος αυτού. Όταν τελικά προσεγγίσουν τον

64 Κεφάλαιο 5. Υλοποίηση Pathfinder 54 Σ 5.4: Γράφος 3ου Demo στόχο τους οι πράκτορες, ενημερώνουν με ένα Event το σύστημα που είναι υπεύθυνο για την κίνησή τους και αυτό τους δείχνει ένα καινούργια σημείο να πάνε. Τα αποτελέσματα έδειξαν ότι το bottleneck του συστήματος δεν βρίσκεται στο AI, αλλά στην επεξεργαστική ισχύ που χρειάζεται για να γίνουν render όλα τα γραφικά μοντέλα των πρακτόρων μας, ακόμα και όταν αυτά ήταν αρκετά απλοποιημένα με πολύ λιγότερα πολύγωνα από το κλασικό μοντέλο του λαγού που χρησιμοποιήσαμε για τα προηγούμενα demos. Πιο κάτω έχουμε φωτογραφία από το demo αυτό 5.5. Το επόμενο βήμα ήταν να κάνουμε τους πράκτορές μας να αποφεύγουν ο ένας τον άλλο. Για να γίνει αυτό εφικτό κλείσαμε τους πράκτορές μας σε κυλινδρικούς περιβάλλοντες όγκους. Όταν ένας περιβάλλον όγκος μπαίνει μέσα σε έναν άλλο περιβάλλοντα όγκο τότε στέλνεται ένα Event στον αντίστοιχο πράκτορα πού λέει ποιος μπήκε στον χώρο αυτό. Έπειτα ασκείται μία κάθετη στην πορεία του πράκτορα δύναμη αναγκάζοντάς τον να κάνει ελιγμό προς τα δεξιά. Αφού οι δύο πράκτορες απομακρυνθούν και οι περιβάλλοντες όγκοι επανέλθουν στην προηγούμενη κατάσταση, η δύναμη που δημιούργησε τον ελιγμό εξαφανίζεται. Ο κάθε πράκτορας συνεχίζει κανονικά την πορεία του μέχρι να φτάσει στον προορισμό του η μέχρι να συναντήσει άλλον πράκτορα όπου πάλι με τον ίδιο τρόπου θα τον αποφύγει. Στην εικόνα 5.6 μπορούμε να δούμε ένα στιγμιότυπο όπου πράκτορες αποφεύγουν ο ένας τον άλλον.

65 Κεφάλαιο 5. Υλοποίηση Pathfinder 55 Σ 5.5: Περιβάλλον 4oυ Demo 5.3 Δομή hivescript Σ όλα τα παραδείγματα που αναφέρθηκαν παραπάνω χρησιμοποιείται μία βασική δομή για την σωστή ροή του προγράμματος μας. Προσπαθήσαμε να αποφύγουμε την τεχνική της δημοσκόπησης (polling) όπου ήταν εφικτό και να χρησιμοποιήσουμε γεγονότα. Έτσι εκμεταλλευτήκαμε το σύστημα των Listeners που έχει το Hive3D, όπως περιγράφεται εδώ. Πιο αναλυτικά προσθέτουμε στο script που περιγράφει την συμπεριφορά του πράκτορά μας, όταν φορτώσει το μοντέλο του, τους εξής Listeners. // callback that is triggered when the bunny actor is mounted under the entity object void actorloaded() { // initially the "used" vfiles are hidden, make it visible actor.show(); // add listener when scene has been loaded addlistener(on_sceneloaded, "sceneloaded"); // register a key up event for bunny movement addlistener(on_mousedown,"mousedown"); // add a tick listener to capture tick events addlistener(on_timeout_msec, "100", "initactor");./code/actorloaded.hs Όταν φορτώσει και η σκηνή μας αρχικοποιούμε τις κλάσεις που χρησιμοποιεί το AI όπως φαίνεται παρακάτω.

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

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

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

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

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

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

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

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

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

Οδηγός διαφοροποίησης για την πρωτοβάθµια

Οδηγός διαφοροποίησης για την πρωτοβάθµια Οδηγός διαφοροποίησης για την πρωτοβάθµια Γιατί χρειάζεται να κάνουµε τόσο ειδική διαφοροποίηση; Τα παιδιά που βρίσκονται στο φάσµα του αυτισµού έχουν διαφορετικό τρόπο σκέψης και αντίληψης για τον κόσµο,

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

Τιμή Τιμή. σκορ. ζωές

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

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

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Επεξήγηση web site με λογικό διάγραμμα «Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Web : www.e-base.gr E-mail : support@e-base.gr Facebook : Like Twitter : @ebasegr Πολλοί άνθρωποι

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

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Φτάσαμε σιγά σιγά στο τέλος του βιβλίου. Αντί για κάποιον επίλογο σκέφτηκα να συλλέξω κάποια πράγματα που θα ήθελα να πω σε κάποιον ο οποίος αρχίζει

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

710 -Μάθηση - Απόδοση

710 -Μάθηση - Απόδοση 710 -Μάθηση - Απόδοση Διάλεξη 6η Ποιοτική αξιολόγηση της Κινητικής Συμπεριφοράς Παρατήρηση III Η διάλεξη αυτή περιλαμβάνει: Διαδικασία της παρατήρησης & της αξιολόγησης Στόχοι και περιεχόμενο παρατήρησης

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

710 -Μάθηση - Απόδοση

710 -Μάθηση - Απόδοση 710 -Μάθηση - Απόδοση Διάλεξη 6η Ποιοτική αξιολόγηση της Κινητικής Παρατήρηση Αξιολόγηση & Διάγνωση Η διάλεξη αυτή περιλαμβάνει: Διαδικασία της παρατήρησης & της αξιολόγησης Στόχοι και περιεχόμενο παρατήρησης

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

Καροτοκυνηγός. Αντικείμενα

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

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

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

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

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

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

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

Αναπαραγωγή και stop/pause έτοιμων ηχητικών clips

Αναπαραγωγή και stop/pause έτοιμων ηχητικών clips Αναπαραγωγή και stop/pause έτοιμων ηχητικών clips Το scratch διαθέτει αρκετά μεγάλη ποικιλία έτοιμων ενσωματωμένων ηχητικών clips τα οποία θα βρείτε πολύ ενδιαφέροντα και θα σας βάλουν σε πειρασμό να πειραματιστείτε

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

Εγκατάσταση της Unity

Εγκατάσταση της Unity Εγκατάσταση της Unity Όπως έχουμε πει, θα χρησιμοποιήσουμε την Unity για να φτιάξουμε τα παιχνίδια μας. Η Unity είναι μια μηχανή παιχνιδιών (game engine). Τι σημαίνει όμως αυτό; Σημαίνει απλά ότι είναι

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

Εκτίμηση αναγκών & Κοινωνικός Σχεδιασμός. Μάθημα 2 ο Κοινωνικός Σχεδιασμός. Κούτρα Κλειώ Κοινωνική Λειτουργός PhD, MPH

Εκτίμηση αναγκών & Κοινωνικός Σχεδιασμός. Μάθημα 2 ο Κοινωνικός Σχεδιασμός. Κούτρα Κλειώ Κοινωνική Λειτουργός PhD, MPH Εκτίμηση αναγκών & Κοινωνικός Σχεδιασμός Μάθημα 2 ο Κοινωνικός Σχεδιασμός Κούτρα Κλειώ Κοινωνική Λειτουργός PhD, MPH kkoutra@staff.teicrete.gr 1 Κοινωνικός Σχεδιασμός 2 Κοινωνικός Σχεδιασμός Αναφέρεται

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

Τι μαθησιακός τύπος είναι το παιδί σας;

Τι μαθησιακός τύπος είναι το παιδί σας; Για τους γονείς και όχι μόνο από το Τι μαθησιακός τύπος είναι το παιδί σας; Ακουστικός, οπτικός ή μήπως σφαιρικός; Ανακαλύψτε ποιος είναι ο μαθησιακός τύπος του παιδιού σας, δηλαδή με ποιο τρόπο μαθαίνει

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

Υπολογιστικής Σκέψης

Υπολογιστικής Σκέψης Απόκτηση και καλλιέργεια Υπολογιστικής Σκέψης Διακριτά Μαθηματικά Εισαγωγή στους Αλγόριθμους Αλγοριθμικά Θέματα Ασύρματων Δικτύων Υπολογιστική Επιστήμη και Πολιτισμός Τι είναι η υπολογιστική σκέψη; Οι

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

αντίστοιχο γεγονός. Όταν όντως το κουμπί

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

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

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

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

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

Σαχπατζίδης Αβραάμ Καθηγητής Πληροφορικής Π.Ε 20

Σαχπατζίδης Αβραάμ Καθηγητής Πληροφορικής Π.Ε 20 Σαχπατζίδης Αβραάμ Καθηγητής Πληροφορικής Π.Ε 20 Master of Arts (M.A) in "Gender, New Forms of Education, New Forms of Employment and New Technologies in the Information Age". Top???????????? μ?????????????

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

Unity Editor #02 Κεντρικό Μενού: File, Build Settings και Build & Run

Unity Editor #02 Κεντρικό Μενού: File, Build Settings και Build & Run Unity Editor #02 Κεντρικό Μενού: File, Build Settings και Build & Run Καλώς ήλθες. Στο προηγούμενο μάθημα είδαμε τις λειτουργίες του μενού File του Editor της Unity. Όπως είπαμε οι δύο επιλογές που διαφέρουν

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

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

ΩΡΑ ΓΙΑ ΚΙΝΟΥΜΕΝΑ ΣΧΕΔΙΑ ΕΠΙΡΡΟΗ ΚΙΝΟΥΜΕΝΩΝ ΣΧΕΔΙΩΝ ΣΤΗ ΠΑΙΔΙΚΗ ΨΥΧΟΛΟΓΙΑ 9 ο ΓΕΛ Πατρών ΩΡΑ ΓΙΑ ΚΙΝΟΥΜΕΝΑ ΣΧΕΔΙΑ ΕΠΙΡΡΟΗ ΚΙΝΟΥΜΕΝΩΝ ΣΧΕΔΙΩΝ ΣΤΗ ΠΑΙΔΙΚΗ ΨΥΧΟΛΟΓΙΑ ΚΑΡΑΚΙΤΣΟΥ ΕΛΕΥΘΕΡΙΑ ΚΟΛΙΑΒΡΑ ΦΩΤΕΙΝΗ ΚΥΡΙΑΚΟΠΟΥΛΟΥ ΦΩΤΕΙΝΗ ΣΥΛΑΙΔΟΥ ΑΝΑΣΤΑΣΙΑ ΟΜΑΔΑ: Tom&Jerry Υπεύθυνοι καθηγητές:

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

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος Η έννοια του προβλήματος 1. Αναφέρετε μερικά από τα προβλήματα που συναντάτε στην καθημερινότητά σας. Απλά προβλήματα Ποιο δρόμο θα ακολουθήσω για να πάω στο σχολείο; Πως θα οργανώσω μια εκδρομή; Πως θα

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

Gerards Papadakis Soccer Academy

Gerards Papadakis Soccer Academy Παιδί Τεχνική Στόχος Gerards Papadakis Soccer Academy ΤΙ ΕΊΝΑΙ Η ΤΕΧΝΙΚΗ ΚΑΙ ΣΕ ΤΙ ΩΦΕΛΕΙ ΣΤΟ ΠΟΔΟΣΦΑΙΡΟ Τεχνική είναι η ικανότητα του παίκτη να μπορεί να ελέγχει την μπάλα και το σώμα του κάτω από την

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

Breakdance Computer Game σε Scratch.

Breakdance Computer Game σε Scratch. Breakdance Computer Game σε Scratch. Ταστίογλου Μαριάννα 1, Τραντοπούλου Μαργαρίτα 2 1 Μαθήτρια Γ Τάξης, 2 ο Γυμνάσιο Ευόσμου atas94@otenet.gr 2 Μαθήτρια Γ Τάξης, 2 ο Γυμνάσιο Ευόσμου daizy@in.gr Δασκαλάκης

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

Ενότητα εκπαίδευσης και κατάρτισης για τις δεξιότητες ηγεσίας

Ενότητα εκπαίδευσης και κατάρτισης για τις δεξιότητες ηγεσίας 3 Ενότητα εκπαίδευσης και κατάρτισης για τις δεξιότητες ηγεσίας Εποικοδομητική κριτική Οι ενότητες κατάρτισης για τις δεξιότητες ηγεσίας έχουν αναπτυχθεί για να σας βοηθήσουν να προετοιμαστείτε για το

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

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

Πλάνο Παρουσίασης. Στο δεύτερο μέρος θα μελετήσουμε τον σχεδιασμό και κώδικα πίσω από την εφαρμογή. Pong Game Project Επιβλέπων:Δασυγένης Μηνάς Φοιτητής:Τερζή Αναστασία Ιούνιος 2018,Κοζάνη Τμήμα Μηχανικών πληροφορικής και τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών http://arch.icte.uowm.gr/

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

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

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

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

β) Αν είχες τη δυνατότητα να «φτιάξεις» εσύ έναν ιδανικό κόσμο, πώς θα ήταν αυτός;

β) Αν είχες τη δυνατότητα να «φτιάξεις» εσύ έναν ιδανικό κόσμο, πώς θα ήταν αυτός; 1α) H πραγματική ζωή κρύβει χαρά, αγάπη, στόχους, όνειρα, έρωτα, αλλά και πόνο, απογοήτευση, πίκρες, αγώνα. Aν λείπουν όλα αυτά τα συναισθήματα και οι ανατροπές, αν χαθεί η καρδιά και η ψυχή, η ελευθερία,

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

Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape

Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape Επιμέλεια: Γκέκα Ασπασία Ιωάννου Ελένη Κούνουπα Άννα Τμήμα Εφαρμογών Πληροφορικής Α 1 Εξάμηνο Δ.ΙΕΚ Αιγάλεω 1 ΠΕΡΙΕΧΟΜΕΝΑ

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

O7: Πρόγραμμα Κατάρτισης Εκπαιδευτικών O7-A1: Αναπτύσσοντας εργαλεία για το Πρόγραμμα Κατάρτισης Εκπαιδευτικών

O7: Πρόγραμμα Κατάρτισης Εκπαιδευτικών O7-A1: Αναπτύσσοντας εργαλεία για το Πρόγραμμα Κατάρτισης Εκπαιδευτικών O7: Πρόγραμμα Κατάρτισης Εκπαιδευτικών O7-A1: Αναπτύσσοντας εργαλεία για το Πρόγραμμα Κατάρτισης Εκπαιδευτικών Prepared by University Paderborn 30/11/2015 Project name: Project acronym: Project number:

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

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

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

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

Βιωματικό εργαστήριο ασκήσεων επαγγελματικής συμβουλευτικής με τη χρήση των αρχών της Θετικής Ψυχολογίας

Βιωματικό εργαστήριο ασκήσεων επαγγελματικής συμβουλευτικής με τη χρήση των αρχών της Θετικής Ψυχολογίας Βιωματικό εργαστήριο ασκήσεων επαγγελματικής συμβουλευτικής με τη χρήση των αρχών της Θετικής Ψυχολογίας Το πραγματικό ταξίδι της ανακάλυψης δεν συνίσταται στην αναζήτηση νέων τοπίων, αλλά στην απόκτηση

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

ΜΙΛΩΝΤΑΣ ΣΤΑ ΠΑΙΔΙΑ ΓΙΑ ΤΗΝ ΟΙΚΟΝΟΜΙΚΗ ΚΡΙΣΗ. ΕΛΕΥΘΕΡΙΑ ΚΑΒΒΑΔΙΑ Σύμβουλος Ψυχικής Υγείας

ΜΙΛΩΝΤΑΣ ΣΤΑ ΠΑΙΔΙΑ ΓΙΑ ΤΗΝ ΟΙΚΟΝΟΜΙΚΗ ΚΡΙΣΗ. ΕΛΕΥΘΕΡΙΑ ΚΑΒΒΑΔΙΑ Σύμβουλος Ψυχικής Υγείας ΜΙΛΩΝΤΑΣ ΣΤΑ ΠΑΙΔΙΑ ΓΙΑ ΤΗΝ ΟΙΚΟΝΟΜΙΚΗ ΚΡΙΣΗ ΕΛΕΥΘΕΡΙΑ ΚΑΒΒΑΔΙΑ Σύμβουλος Ψυχικής Υγείας 29.05.2015 Ερωτήματα που μας απασχολούν Τι κάνουμε όταν αμφιβάλλουμε για το αν θα τα καταφέρουμε να κρατήσουμε

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

The Mind. Mind σε ένα νέο επίπεδο.επιλέξτε ένα από τα δύο μουσικά κομμάτια στο CD. Με το πρώτο κομμάτι

The Mind. Mind σε ένα νέο επίπεδο.επιλέξτε ένα από τα δύο μουσικά κομμάτια στο CD. Με το πρώτο κομμάτι The Mind Παίκτες: 2-4 Ηλικία: 8 ετών και άνω Διάρκεια: περίπου 20 λεπτά Wolfgang Warsch Ας γίνουμε ένα...! Όσο προχωρείτε σε αυτό το πείραμα, τόσο περισσότερο βιώνετε το The Mind σε μια νέα διάσταση. Λαμβάνετε

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

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

Σχέδιο Μαθήματος: Κοινωνικές και Επικοινωνιακές Δεξιότητες για Ανάπτυξη Αυτοπεποίθησης και Τεχνικών Επίλυσης Διαφορών

Σχέδιο Μαθήματος: Κοινωνικές και Επικοινωνιακές Δεξιότητες για Ανάπτυξη Αυτοπεποίθησης και Τεχνικών Επίλυσης Διαφορών Σχέδιο Μαθήματος: Κοινωνικές και Επικοινωνιακές Δεξιότητες για Ανάπτυξη Αυτοπεποίθησης και Τεχνικών Επίλυσης Διαφορών Διάρκεια: Περιληπτική Περιγραφή: Δύο 45λεπτες διδακτικές περίοδοι Η πρώτη περίοδος

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

Επιμέλεια παρουσίασης: Αριστείδης Παλιούρας ΤΙ ΕΊΝΑΙ ΈΝΑ ΡΟΜΠΟΤ (ROBOT)?

Επιμέλεια παρουσίασης: Αριστείδης Παλιούρας   ΤΙ ΕΊΝΑΙ ΈΝΑ ΡΟΜΠΟΤ (ROBOT)? 1 ΤΙ ΕΊΝΑΙ ΈΝΑ ΡΟΜΠΟΤ (ROBOT)? Τι είναι το ρομπότ (robot)? 1. Περιγράψτε με μια πρόταση την έννοια της λέξης ρομπότ (robot) Το ρομπότ είναι μια μηχανή που συλλέγει δεδομένα από το περιβάλλον του (αισθάνεται),

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

Ο Μπούκλας παίζει και μουσική όταν στην πράσινη σημαία γί νει κλικ. αίξε ήχο _ χρι τέλους περίμενε για _ χρόνους. περίμενε για δευτερόλεπτα.

Ο Μπούκλας παίζει και μουσική όταν στην πράσινη σημαία γί νει κλικ. αίξε ήχο _ χρι τέλους περίμενε για _ χρόνους. περίμενε για δευτερόλεπτα. Παραδείγματα εφαρμογών μουσικής Ο Μπούκλας παίζει και μουσική Στο παράδειγμα «Δοκιμαστήριο» του κεφαλαίου 7, είχαμε 3 αντικείμενα: δυο χαρακτήρες, τον Μπούκλα και το Σορτσάκια και το Παραβάν πίσω από το

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

Ανάπτυξη και αξιολόγηση ποιότητας λογισµικού παιχνιδιών

Ανάπτυξη και αξιολόγηση ποιότητας λογισµικού παιχνιδιών Πρόγραµµα Μεταπτυχιακών Σπουδών Τµήµατος Εφαρµοσµένης Πληροφορικής ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Ανάπτυξη και αξιολόγηση ποιότητας λογισµικού παιχνιδιών ηµητριάδης Στέφανος Α.Μ. 2/11 Επιβλέπων καθηγητής: Χατζηγεωργίου

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

Έννοιες Φυσικών Επιστημών Ι

Έννοιες Φυσικών Επιστημών Ι Τμήμα Εκπαίδευσης και Αγωγής στην Προσχολική Ηλικία Έννοιες Φυσικών Επιστημών Ι Ενότητα 4: Θεωρίες διδασκαλίας μάθησης στη διδακτική των Φ.Ε. Σπύρος Κόλλας (Βασισμένο στις σημειώσεις του Βασίλη Τσελφέ)

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

Άδειες Χρήσης. Μοντέλο προαγωγής προγραμμάτων αγωγής υγείας μέσω της φυσικής αγωγής. Χρηματοδότηση. Σκοποί ενότητας. Οι παρακάτω θεωρίες

Άδειες Χρήσης. Μοντέλο προαγωγής προγραμμάτων αγωγής υγείας μέσω της φυσικής αγωγής. Χρηματοδότηση. Σκοποί ενότητας. Οι παρακάτω θεωρίες ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Άδειες Χρήσης Μοντέλο προαγωγής προγραμμάτων αγωγής υγείας μέσω της φυσικής αγωγής Θεοδωράκης Γιάννης Τμήμα Επιστήμης Φυσικής Αγωγής και Αθλητισμού Το παρόν εκπαιδευτικό υλικό υπόκειται

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

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών Κεφ. 2 Θεωρητική Επιστήμη Υπολογιστών 2.3.1.1 Έννοια προγράμματος Τι είναι πρόγραμμα και τι προγραμματισμός; Πρόγραμμα είναι το σύνολο εντολών που χρειάζεται

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

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

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

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

«Ταξίδι γεύσης στην Ευρωπαϊκή Ένωση»

«Ταξίδι γεύσης στην Ευρωπαϊκή Ένωση» «Ταξίδι γεύσης στην Ευρωπαϊκή Ένωση» Εκπαιδευτικός: Βαμβουνάκη Άρτεμις (ΠΕ 70) Επιβλέπων επιμορφωτής: Μανωλάκης Κωνσταντίνος Σχολείο Διεξαγωγής: Εκπαιδευτήρια Μαυροματάκη-Μητέρα Χανιά, Μάιος 2016 Εισαγωγή

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

Εργαλεία Κατασκευής Παιχνιδιών Ι (Unreal Editor, Half Life, Doom Editor)

Εργαλεία Κατασκευής Παιχνιδιών Ι (Unreal Editor, Half Life, Doom Editor) Τεχνικός Εφαρμογών Πληροφορικής Εργαλεία Κατασκευής Παιχνιδιών Ι (Unreal Editor, Half Life, Doom Editor) Τεχνική Δημιουργίας Παιχνιδιών Εξάμηνο: 2014Β Διδάσκουσα: Ηλεκτρονική Τάξη: http://moodleforall.ictlab.edu.gr/

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

Σχέδιο Μαθήματος Νο3 «SimSafety» Σενάριο Παιχνιδιού: «Κλοπή» (Theft)

Σχέδιο Μαθήματος Νο3 «SimSafety» Σενάριο Παιχνιδιού: «Κλοπή» (Theft) Σχέδιο Μαθήματος Νο3 «SimSafety» Σενάριο Παιχνιδιού: «Κλοπή» (Theft) 1. Μάθημα (κατά το οποίο μπορεί να διδαχτεί η συγκεκριμένη δραστηριότητα): Αγγλικά, Πληροφορική, Ευέλικτη ζώνη στην πρωτοβάθμια εκπαίδευση

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

Ποδόσφαιρο, τι είναι?

Ποδόσφαιρο, τι είναι? ΟΜΑΔΙΚΗ ΤΑΚΤΙΚΗ Ποδόσφαιρο, τι είναι? επίθεση Κύκλος τεσσάρων φάσεων σκοράρισμα εναλλαγή + - παρεμπόδιση ανάπτυξης άμυνα ανάπτυξη + - εναλλαγή αποσόβηση σκοραρίσματος Στόχος του παιχνιδιού: Νίκη Ομαδικές

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

Βιολογική εξήγηση των δυσκολιών στην ανθρώπινη επικοινωνία - Νικόλαος Γ. Βακόνδιος - Ψυχολόγ

Βιολογική εξήγηση των δυσκολιών στην ανθρώπινη επικοινωνία - Νικόλαος Γ. Βακόνδιος - Ψυχολόγ Οι άνθρωποι κάνουμε πολύ συχνά ένα μεγάλο και βασικό λάθος, νομίζουμε ότι αυτό που λέμε σε κάποιον άλλον, αυτός το εκλαμβάνει όπως εμείς το εννοούσαμε. Νομίζουμε δηλαδή ότι ο «δέκτης» του μηνύματος το

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

Εξελιξη των ηλεκτρονικων υπολογιστων. Εξέλιξη της τεχνολογίας Υπολογιστές του μέλλοντος Έξυπνες συσκευές του μέλλοντος Τεχνητή νοημοσύνη

Εξελιξη των ηλεκτρονικων υπολογιστων. Εξέλιξη της τεχνολογίας Υπολογιστές του μέλλοντος Έξυπνες συσκευές του μέλλοντος Τεχνητή νοημοσύνη Εξελιξη των ηλεκτρονικων υπολογιστων Εξέλιξη της τεχνολογίας Υπολογιστές του μέλλοντος Έξυπνες συσκευές του μέλλοντος Τεχνητή νοημοσύνη Εξελιξη της τεχνολογιας Η εξέλιξη της τεχνολογίας αφορά: Την Ιατρική

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

Αντικείμενα, συμπεριφορές, γεγονότα

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

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

Ενότητα εκπαίδευσης και κατάρτισης για τις δεξιότητες ηγεσίας

Ενότητα εκπαίδευσης και κατάρτισης για τις δεξιότητες ηγεσίας 3 Ενότητα εκπαίδευσης και κατάρτισης για τις δεξιότητες ηγεσίας Επίλυση προβλήματος Οι ενότητες κατάρτισης για τις δεξιότητες ηγεσίας έχουν αναπτυχθεί για να σας βοηθήσουν να προετοιμαστείτε για το Συνέδριο

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

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

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

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

Οδηγίες σχεδίασης στο περιβάλλον Blender

Οδηγίες σχεδίασης στο περιβάλλον Blender Οδηγίες σχεδίασης στο περιβάλλον Blender Στον πραγματικό κόσμο, αντιλαμβανόμαστε τα αντικείμενα σε τρεις κατευθύνσεις ή διαστάσεις. Τυπικά λέμε ότι διαθέτουν ύψος, πλάτος και βάθος. Όταν θέλουμε να αναπαραστήσουμε

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

Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου

Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου 1. Τι ονομάζουμε κόμβο και τι σύνδεσμο σε μια μη γραμμικά διαρθρωμένη ύλη; Με την έννοια σύνδεσμος (link) σε μια μη γραμμικά διαρθρωμένη

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

Μέθοδοι Σχεδίασης κίνησης

Μέθοδοι Σχεδίασης κίνησης Μέθοδοι Σχεδίασης κίνησης Τασούδης Σταύρος Ο προγραμματισμός τροχιάς(trajectory planning) είναι η κίνηση από το σημείο Α προς το σημείο Β αποφεύγοντας τις συγκρούσεις με την πάροδο του χρόνου. Αυτό μπορεί

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

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Διπλωματικές

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

13/1/2010. Οικονομική της Τεχνολογίας. Ερωτήματα προς συζήτηση ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΤΗΣ ΔΙΟΙΚΗΣΗΣ

13/1/2010. Οικονομική της Τεχνολογίας. Ερωτήματα προς συζήτηση ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΤΗΣ ΔΙΟΙΚΗΣΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΤΗΣ ΔΙΟΙΚΗΣΗΣ Τμήμα Μηχανικών Οικονομίας και Διοίκησης Οικονομική της Τεχνολογίας Διάλεξη 6 η: Οικονομική Θεωρία και το Ζήτημα της Τεχνολογικής Αλλαγής: & II 1 Ερωτήματα

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

THE ECONOMIST ΟΜΙΛΙΑ STEVE WELLS GLOBAL FUTURIST, COO, FAST FUTURE, UK

THE ECONOMIST ΟΜΙΛΙΑ STEVE WELLS GLOBAL FUTURIST, COO, FAST FUTURE, UK THE ECONOMIST ΟΜΙΛΙΑ STEVE WELLS GLOBAL FUTURIST, COO, FAST FUTURE, UK SECOND YOUTH SUMMIT THE FUTURE WORKPLACE: THE NEW JOBS THE NEW SKILLS The youth takes over ΠΕΜΠΤΗ 28 ΜΑΡΤΙΟΥ 2019 1 THE ECONOMIST

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

«Άρτος και Ευρωπαϊκή Ένωση»

«Άρτος και Ευρωπαϊκή Ένωση» «Άρτος και Ευρωπαϊκή Ένωση» Εκπαιδευτικός: Βαμβουνάκη Άρτεμις (ΠΕ 70) Επιβλέπων επιμορφωτής: Μανωλάκης Κωνσταντίνος Σχολείο Διεξαγωγής: Εκπαιδευτήρια Μαυροματάκη-Μητέρα Χανιά, Μάιος 2017 Εισαγωγή Η παρούσα

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

Τοκπασίδης Παναγιώτης Προπονητής Ποδοσφαίρου UEFA A ΠΩΣ ΝΑ ΑΝΑΠΤΥΞΕΤΕ ΔΗΜΙΟΥΡΓΙΚΟΥΣ ΠΟΔΟΣΦΑΙΡΙΣΤΕΣ

Τοκπασίδης Παναγιώτης Προπονητής Ποδοσφαίρου UEFA A ΠΩΣ ΝΑ ΑΝΑΠΤΥΞΕΤΕ ΔΗΜΙΟΥΡΓΙΚΟΥΣ ΠΟΔΟΣΦΑΙΡΙΣΤΕΣ Τοκπασίδης Παναγιώτης Προπονητής Ποδοσφαίρου UEFA A ΠΩΣ ΝΑ ΑΝΑΠΤΥΞΕΤΕ ΔΗΜΙΟΥΡΓΙΚΟΥΣ ΠΟΔΟΣΦΑΙΡΙΣΤΕΣ Χαλκίδα, 2019 "Σταματήστε να σκέφτεστε τον Ρονάλντο και τον Μέσσι και προσπαθήστε να κάνετε το απλό",

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

ΣΕΜΙΝΑΡΙΟ ΠΕΤΟΣΦΑΙΡΙΣΗΣ Α/ΘΜΙΑΣ Β/ΘΜΙΑΣ ΕΚΠΑΙΔΕΥΣΗΣ

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

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

Εισαγωγή στη σχεδίαση κινούμενων γραφικών

Εισαγωγή στη σχεδίαση κινούμενων γραφικών ΕΣΔ200 Δημιουργία Περιεχομένου ΙI Εισαγωγή στη σχεδίαση κινούμενων γραφικών Νικόλας Τσαπατσούλης Επίκουρος Καθηγητής Τμήμα Επικοινωνίας & Σπουδών Διαδικτύου Εισαγωγή Εφαρμογές Κύρια Χαρακτηριστικά Flash

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

ΕΡΓΑΣΙΕΣ. Α ομάδα. Αφού επιλέξεις τρία από τα παραπάνω αποσπάσματα που σε άγγιξαν περισσότερο, να καταγράψεις τις δικές σου σκέψεις.

ΕΡΓΑΣΙΕΣ. Α ομάδα. Αφού επιλέξεις τρία από τα παραπάνω αποσπάσματα που σε άγγιξαν περισσότερο, να καταγράψεις τις δικές σου σκέψεις. Α ομάδα ΕΡΓΑΣΙΕΣ 1. Η συγγραφέας του βιβλίου μοιράζεται μαζί μας πτυχές της ζωής κάποιων παιδιών, άλλοτε ευχάριστες και άλλοτε δυσάρεστες. α) Ποια πιστεύεις ότι είναι τα μηνύματα που θέλει να περάσει μέσα

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

ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΠΩΛΗΣΗ

ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΠΩΛΗΣΗ ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΠΩΛΗΣΗ Καταρχάς, βασική προϋπόθεση για το κλείσιμο μιας συνάντησης είναι να έχουμε εξακριβώσει και πιστοποιήσει ότι μιλάμε με τον υπεύθυνο που λαμβάνει μια απόφαση συνεργασίας ή επηρεάζει

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

Μάχη Νικολάρα: Δεν ακούγεται και πολύ δημιουργικό αυτό, έτσι όπως το περιγράφετε.

Μάχη Νικολάρα: Δεν ακούγεται και πολύ δημιουργικό αυτό, έτσι όπως το περιγράφετε. Μάχη Νικολάρα: Θα μιλήσουμε για τον τομέα της εκπαίδευσης από μια άλλη σκοπιά. Οι ανακοινώσεις του Υπουργείου Παιδείας εχθές ανέτρεψαν κατά κάποιο τρόπο τον προγραμματισμό αυτής της εκπομπής, όμως όλα

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

ΑΥΤΟ ΕΙΝΑΙ ΤΟ ΠΟΔΟΣΦΑΙΡΙΚΟ ΤΑΛΕΝΤΟ. Επιμέλεια football-academies Δευτέρα, 04 Μάρτιος 2013

ΑΥΤΟ ΕΙΝΑΙ ΤΟ ΠΟΔΟΣΦΑΙΡΙΚΟ ΤΑΛΕΝΤΟ. Επιμέλεια football-academies Δευτέρα, 04 Μάρτιος 2013 Στο ποδόσφαιρο η έναρξη της συστηματικής προπονητικής διαδικασίας γίνεται ολοένα και πιο νωρίς. Αυτό πλέον αποτελεί τη βάση της προπονητικής φιλοσοφίας μεγάλων ευρωπαϊκών και όχι μόνο συλλόγων. Η προπόνηση

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

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

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

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

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

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

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

Οι γνώμες είναι πολλές

Οι γνώμες είναι πολλές Η Ψυχολογία στη Φυσική Αγωγή στο πλαίσιο του σχολικού περιβάλλοντος ΚασταμονίτηςΚωνσταντίνος Ψυχολόγος Οι γνώμες είναι πολλές Πολλές είναι οι γνώμες στο τι προσφέρει τελικά ο αθλητισμός στην παιδική ηλικία

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

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ. Δημητρίου Σωτήρης 6417

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

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

Αλληλεπίδραση Ανθρώπου- Υπολογιστή & Ευχρηστία

Αλληλεπίδραση Ανθρώπου- Υπολογιστή & Ευχρηστία Αλληλεπίδραση Ανθρώπου- Υπολογιστή & Ευχρηστία Ενότητα 2: Ο Άνθρωπος Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

Τεχνολογία Πολυμέσων. Ενότητα # 1: Εισαγωγή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

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

Διερευνητική μάθηση We are researchers, let us do research! (Elbers and Streefland, 2000)

Διερευνητική μάθηση We are researchers, let us do research! (Elbers and Streefland, 2000) Διερευνητική μάθηση We are researchers, let us do research! (Elbers and Streefland, 2000) Πρόκειται για την έρευνα που διεξάγουν οι επιστήμονες. Είναι μια πολύπλοκη δραστηριότητα που απαιτεί ειδικό ακριβό

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

ΚΟΛΛΙΑΣ ΤΑΣΟΣ Εκπαιδευτικός M.Ed. Υπ. Δρ. Παν/μίου Αθηνών

ΚΟΛΛΙΑΣ ΤΑΣΟΣ Εκπαιδευτικός M.Ed. Υπ. Δρ. Παν/μίου Αθηνών ΚΟΛΛΙΑΣ ΤΑΣΟΣ Εκπαιδευτικός M.Ed. Υπ. Δρ. Παν/μίου Αθηνών Τα τρία υποσυστήματα του συστήματος ψηφιακό παιχνίδι Οπαίκτης Η μηχανή Ο σχεδιαστής Το ψηφιακό παιχνίδι είναι μια μορφή διαδραστικής αφηγηματικής

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

ΦΟΙΤΗΤΡΙΑ: ΠΑΤΣΑΤΖΑΚΗ ΕΛΕΝΗ, ΑΕΜ:3196 ΕΡΓΑΣΙΑ ΣΤΟ ΜΑΘΗΜΑ : ΥΕ258 ΕΝΑΛΛΑΚΤΙΚΕΣ ΜΟΡΦΕΣ ΑΞΙΟΛΟΓΗΣΗΣ ΤΩΝ ΓΛΩΣΣΙΚΩΝ ΔΕΞΙΟΤΗΤΩΝ

ΦΟΙΤΗΤΡΙΑ: ΠΑΤΣΑΤΖΑΚΗ ΕΛΕΝΗ, ΑΕΜ:3196 ΕΡΓΑΣΙΑ ΣΤΟ ΜΑΘΗΜΑ : ΥΕ258 ΕΝΑΛΛΑΚΤΙΚΕΣ ΜΟΡΦΕΣ ΑΞΙΟΛΟΓΗΣΗΣ ΤΩΝ ΓΛΩΣΣΙΚΩΝ ΔΕΞΙΟΤΗΤΩΝ 2015 ΕΡΓΑΣΙΑ ΣΤΟ ΜΑΘΗΜΑ : ΥΕ258 ΕΝΑΛΛΑΚΤΙΚΕΣ ΜΟΡΦΕΣ ΑΞΙΟΛΟΓΗΣΗΣ ΤΩΝ ΓΛΩΣΣΙΚΩΝ ΔΕΞΙΟΤΗΤΩΝ ΦΟΙΤΗΤΡΙΑ: ΠΑΤΣΑΤΖΑΚΗ ΕΛΕΝΗ, ΑΕΜ:3196 ΕΠΙΒΛΕΠΟΥΣΑ ΚΑΘΗΓΗΤΡΙΑ: ΓΡΙΒΑ ΕΛΕΝΗ 5/2/2015 ΕΙΣΑΓΩΓΗ Αυτό το portfolio φτιάχτηκε

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

ΚΩΝΣΤΑΝΤΙΝΟΣ & ΠΕΤΡΟΣ ΣΟΦΙΚΙΤΗΣ:

ΚΩΝΣΤΑΝΤΙΝΟΣ & ΠΕΤΡΟΣ ΣΟΦΙΚΙΤΗΣ: Wedding PHOTOGRAPHY ΚΩΝΣΤΑΝΤΙΝΟΣ & ΠΕΤΡΟΣ ΣΟΦΙΚΙΤΗΣ: «ΤΗΝ ΗΜΕΡΑ ΤΟΥ ΓΑΜΟΥ ΔΕΝ ΥΠΑΡΧΕΙ ΠΡΩΤΟΚΟΛΛΟ ΣΧΕΤΙΚΑ ΜΕ ΤΙΣ ΛΗΨΕΙΣ» Πώς εκτιμάτε αυτήν τη στιγμή την κατάσταση της Φωτογραφίας Γάμου στην Ελλάδα; Η φωτογράφιση

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

Βασίλειος Κοντογιάννης ΠΕ19

Βασίλειος Κοντογιάννης ΠΕ19 Ενότητα2 Προγραμματιστικά Περιβάλλοντα Δημιουργία Εφαρμογών 5.1 Πρόβλημα και Υπολογιστής Τι ονομάζουμε πρόβλημα; Πρόβλημα θεωρείται κάθε ζήτημα που τίθεται προς επίλυση, κάθε κατάσταση που μας απασχολεί

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

ΨΗΦΙΑΚΑ ΠΑΙΧΝΙΔΙΑ ΣΕ ΣΥΣΚΕΥΕΣ ΚΙΝΗΤΗΣ

ΨΗΦΙΑΚΑ ΠΑΙΧΝΙΔΙΑ ΣΕ ΣΥΣΚΕΥΕΣ ΚΙΝΗΤΗΣ 1 of 18 4/16/2015 4:11 PM ΨΗΦΙΑΚΑ ΠΑΙΧΝΙΔΙΑ ΣΕ ΣΥΣΚΕΥΕΣ ΚΙΝΗΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Το ερωτηματολόγιο αυτό έχει διάφορες ενότητες για τα ψηφιακά παιχνίδια που παίζονται σε συσκευές κινητής τεχνολογίας και ειδικότερα

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

Πως μπορεί να επιτευχθεί η αυτονομία του φοιτητή; http://www.lib.auth.gr/ Βιβλία Summon αναζήτηση Π.χ. class management physical education

Πως μπορεί να επιτευχθεί η αυτονομία του φοιτητή; http://www.lib.auth.gr/ Βιβλία Summon αναζήτηση Π.χ. class management physical education Πως μπορεί να επιτευχθεί η αυτονομία του φοιτητή; http://www.lib.auth.gr/ Βιβλία Summon αναζήτηση Π.χ. class management physical education Άρθρα σε περιοδικά Στην αρχική σελίδα της βιβλιοθήκης αριστερά

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

ΔΙΔΑΣΚΑΛΙΑ ΓΝΩΣΤΙΚΗΣ ΣΤΡΑΤΗΓΙΚΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ Δρ. Ζαφειριάδης Κυριάκος Οι ικανοί αναγνώστες χρησιμοποιούν πολλές στρατηγικές (συνδυάζουν την

ΔΙΔΑΣΚΑΛΙΑ ΓΝΩΣΤΙΚΗΣ ΣΤΡΑΤΗΓΙΚΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ Δρ. Ζαφειριάδης Κυριάκος Οι ικανοί αναγνώστες χρησιμοποιούν πολλές στρατηγικές (συνδυάζουν την 1 ΔΙΔΑΣΚΑΛΙΑ ΓΝΩΣΤΙΚΗΣ ΣΤΡΑΤΗΓΙΚΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ Δρ. Ζαφειριάδης Κυριάκος Οι ικανοί αναγνώστες χρησιμοποιούν πολλές στρατηγικές (συνδυάζουν την παλαιότερη γνώση τους, σημειώνουν λεπτομέρειες, παρακολουθούν

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

Προσόντα με υψηλή αξία για τους εργοδότες σε σχέση με την αναπηρία

Προσόντα με υψηλή αξία για τους εργοδότες σε σχέση με την αναπηρία Προσόντα με υψηλή αξία για τους εργοδότες σε σχέση με την αναπηρία Απρίλιος 2013 Χαρακτηριστικά που ζητούν οι εργοδότες αναπηρία Πως θα όριζες τη λέξη προσόν ή τη λέξη δεξιότητα ; Και τι εννοούν οι εργοδότες

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

Tank Rescue Computer Game σε Scratch

Tank Rescue Computer Game σε Scratch Tank Rescue Computer Game σε Scratch Μπέλτσος Νικόλαος 1, Παναγιωτόπουλος Ευάγγελος 2, Παπαδόπουλος Βασίλης 3, Παπουδάρης Κωνσταντίνος 4 1 sokin2@yahoo.gr 2 vaggelispan@yahoo.gr 3 papadopoulos_vasilis@yahoo.gr

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

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

ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΓΙΑ ΤΗ ΜΑΘΗΣΗ ΚΑΙ ΤΗ ΔΙΔΑΣΚΑΛΙΑ ΣΤΗΝ ΠΡΟΣΧΟΛΙΚΗ ΕΚΠΑΙΔΕΥΣΗ ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΓΙΑ ΤΗ ΜΑΘΗΣΗ ΚΑΙ ΤΗ ΔΙΔΑΣΚΑΛΙΑ ΣΤΗΝ ΠΡΟΣΧΟΛΙΚΗ ΕΚΠΑΙΔΕΥΣΗ ΑΝΑΓΝΩΡΙΖΟΝΤΑΣ ΤΗ ΔΙΑΦΟΡΕΤΙΚΟΤΗΤΑ & ΑΝΑΠΤΥΣΣΟΝΤΑΣ ΔΙΑΦΟΡΟΠΟΙΗΜΕΝΕΣ ΠΡΟΣΕΓΓΙΣΕΙΣ Διαστάσεις της διαφορετικότητας Τα παιδιά προέρχονται

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

Naoki HigasHida. Γιατί χοροπηδώ. Ένα αγόρι σπάει τη σιωπή του αυτισμού. david MiTCHELL. Εισαγωγή:

Naoki HigasHida. Γιατί χοροπηδώ. Ένα αγόρι σπάει τη σιωπή του αυτισμού. david MiTCHELL. Εισαγωγή: Naoki HigasHida Γιατί χοροπηδώ Ένα αγόρι σπάει τη σιωπή του αυτισμού Εισαγωγή: david MiTCHELL 41 Ε13 Προτιμάς να είσαι μόνος σου; «Α, μην ανησυχείτε γι αυτόν προτιμά να είναι μόνος του». Πόσες φορές το

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

Δραστηριότητα: Εγκλεισμός

Δραστηριότητα: Εγκλεισμός Δραστηριότητα: Εγκλεισμός Ηλικίες στις οποίες έχει χρησιμοποιηθεί με επιτυχία: Προαπαιτούμενες Ικανότητες: Χρόνος: Εστίαση Μέγεθος Ομάδας 11 - ενήλικες Καμία Τι είναι αλγόριθμος Αλγόριθμοι αναζήτησης:

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

Ενότητα εκπαίδευσης και κατάρτισης για τις δεξιότητες ηγεσίας. Αξιολόγηση Ικανοτήτων

Ενότητα εκπαίδευσης και κατάρτισης για τις δεξιότητες ηγεσίας. Αξιολόγηση Ικανοτήτων 3 Ενότητα εκπαίδευσης και κατάρτισης για τις δεξιότητες ηγεσίας Αξιολόγηση Ικανοτήτων Αξιολόγηση Ικανοτήτων Γενική Περιγραφή της Ενότητας: Αυτή η ενότητα στοχεύει στην αξιολόγηση των ηγετικών ικανοτήτων

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

ΛΟΓΙΣΜΟΣ ΜΙΑΣ ΜΕΤΑΒΛΗΤΗΣ, ΕΣΠΙ 1

ΛΟΓΙΣΜΟΣ ΜΙΑΣ ΜΕΤΑΒΛΗΤΗΣ, ΕΣΠΙ 1 ΛΟΓΙΣΜΟΣ ΜΙΑΣ ΜΕΤΑΒΛΗΤΗΣ, ΕΣΠΙ 1 ΣΥΝΑΡΤΗΣΕΙΣ Η έννοια της συνάρτησης είναι θεμελιώδης στο λογισμό και διαπερνά όλους τους μαθηματικούς κλάδους. Για το φοιτητή είναι σημαντικό να κατανοήσει πλήρως αυτή

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

Eκπαίδευση Εκπαιδευτών Ενηλίκων & Δία Βίου Μάθηση

Eκπαίδευση Εκπαιδευτών Ενηλίκων & Δία Βίου Μάθηση Πρόγραμμα Eξ Aποστάσεως Eκπαίδευσης (E learning) Eκπαίδευση Εκπαιδευτών Ενηλίκων & Δία Βίου Μάθηση Οδηγός Σπουδών Το πρόγραμμα εξ αποστάσεως εκπαίδευσης ( e-learning ) του Πανεπιστημίου Πειραιά του Τμήματος

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

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

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

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

Εφαρμογές Προσομοίωσης

Εφαρμογές Προσομοίωσης Εφαρμογές Προσομοίωσης H προσομοίωση (simulation) ως τεχνική μίμησης της συμπεριφοράς ενός συστήματος από ένα άλλο σύστημα, καταλαμβάνει περίοπτη θέση στα πλαίσια των εκπαιδευτικών εφαρμογών των ΤΠΕ. Μπορούμε

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

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Γλώσσες & Τεχνικές 4 ο Εξάμηνο. - Ενότητα 1 - Δημοσθένης Σταμάτης http://www.it.teithe.gr/~demos

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Γλώσσες & Τεχνικές 4 ο Εξάμηνο. - Ενότητα 1 - Δημοσθένης Σταμάτης http://www.it.teithe.gr/~demos Γλώσσες & Τεχνικές 4 ο Εξάμηνο - Ενότητα 1 - Εισαγωγή στην Τεχνητή Νοημοσύνη Δημοσθένης Σταμάτης http://www.it.teithe.gr/~demos Τμήμα Πληροφορικής A.T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ Rethinking University Teaching!!!

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

ΔΙΔΑΣΚΑΛΙΑ ΣΤΟ Γ1 ΤΟΥ 10 ΟΥ Δ.Σ. ΤΣΕΣΜΕ ( ) ΠΟΡΕΙΑ ΔΙΔΑΣΚΑΛΙΑΣ. ΜΑΘΗΜΑ: Μελέτη Περιβάλλοντος. ( Ενότητα 3: Μέσα συγκοινωνίας και μεταφοράς

ΔΙΔΑΣΚΑΛΙΑ ΣΤΟ Γ1 ΤΟΥ 10 ΟΥ Δ.Σ. ΤΣΕΣΜΕ ( ) ΠΟΡΕΙΑ ΔΙΔΑΣΚΑΛΙΑΣ. ΜΑΘΗΜΑ: Μελέτη Περιβάλλοντος. ( Ενότητα 3: Μέσα συγκοινωνίας και μεταφοράς ΔΙΔΑΣΚΑΛΙΑ ΣΤΟ Γ1 ΤΟΥ 10 ΟΥ Δ.Σ. ΤΣΕΣΜΕ (10.11.2010) ΠΟΡΕΙΑ ΔΙΔΑΣΚΑΛΙΑΣ ΜΑΘΗΜΑ: Μελέτη Περιβάλλοντος ( Ενότητα 3: Μέσα συγκοινωνίας και μεταφοράς Κεφάλαιο 3: Κυκλοφορούμε με ασφάλεια) ΔΙΔΑΚΤΙΚΟΙ ΣΤΟΧΟΙ

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

6. '' Καταλαβαίνεις οτι κάτι έχει αξία, όταν το έχεις στερηθεί και το αναζητάς. ''

6. '' Καταλαβαίνεις οτι κάτι έχει αξία, όταν το έχεις στερηθεί και το αναζητάς. '' 1. '' Τίποτα δεν είναι δεδομένο. '' 2. '' Η μουσική είναι η τροφή της ψυχής. '' 3. '' Να κάνεις οτι έχει νόημα για σένα, χωρίς όμως να παραβιάζεις την ελευθερία του άλλου. '' 4. '' Την πραγματική μόρφωση

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

Βασικοί κανόνες σύνθεσης στη φωτογραφία

Βασικοί κανόνες σύνθεσης στη φωτογραφία Βασικοί κανόνες σύνθεσης στη φωτογραφία Πάτρα, Δεκέμβρης 2012 Ποια είναι η σχέση ανάμεσα στην τέχνη και την πληροφόρηση; Πώς μπορεί η φωτογραφία να είναι τέχνη, εάν είναι στενά συνδεδεμένη με την αυτόματη

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

Ασκήσεις μελέτης της 6 ης διάλεξης

Ασκήσεις μελέτης της 6 ης διάλεξης Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Τεχνητή Νοημοσύνη, 2016 17 Διδάσκων: Ι. Ανδρουτσόπουλος Ασκήσεις μελέτης της 6 ης διάλεξης 6.1. (α) Το mini-score-3 παίζεται όπως το score-4,

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

ΓΙΝΕ ΑΝΕΞΑΡΤΗΤΟΣ! ΜΑΘΕ ΝΑ ΛΕΣ ΟΧΙ!

ΓΙΝΕ ΑΝΕΞΑΡΤΗΤΟΣ! ΜΑΘΕ ΝΑ ΛΕΣ ΟΧΙ! ΓΙΝΕ ΑΝΕΞΑΡΤΗΤΟΣ! ΜΑΘΕ ΝΑ ΛΕΣ ΟΧΙ! Μαθητές: Βαγγελιώ Χατζάκη Ρένα Νικολούδη Άρης Ζαχαριουδάκης Νίκος Φραγκιουδάκης Υπεύθυνος καθηγητής: Στέφανος Παναγιωτόπουλος Λύκειο Μοιρών Σχολ. έτος: 2014-2015 1 Περιεχόμενα

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

Πρόλογος: Γιατί ένα τέτοιο βιβλίο και πώς να «e-ξεκολλήσουμε» παρέα;

Πρόλογος: Γιατί ένα τέτοιο βιβλίο και πώς να «e-ξεκολλήσουμε» παρέα; Πρόλογος: Γιατί ένα τέτοιο βιβλίο και πώς να «e-ξεκολλήσουμε» παρέα; Αν και είναι συνηθισμένο να λέμε ότι το Διαδίκτυο, οι υπολογιστές, τα κινητά, τα τάμπλετ και άλλες ηλεκτρονικές συσκευές άλλαξαν ριζικά

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