Κεφάλαιο+7

=Το ολοκληρωμένο βιβλίο για το Microsoft Kodu βρίσκεται στη διεύθυνση http://www.koduplay.gr=

Ομάδα 6 Σπανέλλης Δημήτριος Γιωργαλλίδης Αντρέας

=
======================================================
 * ΠΑΡΑΚΑΤΩ ΠΑΡΑΘΕΤΟΥΜΕ ΟΛΑ ΤΑ ΑΡΧΕΙΑ ΣΧΕΤΙΚΑ ΜΕ ΤΟ** ΚΕΦΑΛΑΙΟ 7









=
====================================================== Παιχίδι "Super Kodu Bros"
 * ΟΡΙΖΟΝΤΙΑ ΔΡΑΣΗ ΚΕΦΑΛΑΙΟΥ 7**



Η τεκμηρίωση βρίσκεται στο αρχείο **Orizontia Drasi_Super Kodu Game.doc**

=
=====================================================

include component="comments" page="Κεφάλαιο 7" limit="10"

[|How to Move the Camera Video]

ΚΕΦΑΛΑΙΟ 7: Αλληλεπιδρώ με τον κόσμο! 7.1 Ο κόσμος, ιδιότητες του κόσμου  7.2 Η κάμερα  7.3 Οι αισθητήρες του Kodu: κατανοώ τον κόσμο μου  7.4 H συμπεριφορά του Kodu: ενέργειες  7.5 Παραδείγματα συμπεριφορών στα παιχνίδια  7.6 Δημιουργώντας ένα παιχνίδι Χ

 Μαθησιακοί στόχοι
 * 1) Να αντιλαμβάνονται τον κόσμο μέσα στον οποίο διαδραματίζεται το παιχνίδι.
 * 2) Να επιφέρουν αλλαγές στις ιδιότητες του κόσμου.
 * 3) Να χρησιμοποιούν τις λειτουργίες που προσφέρει η κάμερα για την αλλαγή οπτικής γωνίας κατά την διάρκεια του παιχνιδιού.
 * 4) Να συνθέτουν προτάσεις αλληλεπίδρασης Kodu/αντικειμένων - κόσμου.
 * 5) Να συνθέτουν ένα παιχνίδι με βάση τα παραπάνω.

Στο κεφάλαιο αυτό παρουσιάζετε τις ιδιότητες που έχει ο κόσμος όπως και την επεξεργασία αυτών (όπως οι καιρικές συνθήκες,μέρα/νύχτα,ήχοι) από το μενού change world settings. Επιπλέον, αναλύετε την αλληλεπίδραση των αντικειμένων/Kodu/χαρακτήρων με τον κόσμο χρησιμοποιώντας τη δομή when/do με διάφορους τρόπους. Στο σημείο αυτό πρέπει να τονιστεί ότι οι συνθήκες (when) στο Kodu έχουν περισσότερο την μορφή αισθητήρων που η ενεργοποίησή τους στα διάφορα γεγονότα οδηγούν σε κάποια ενέργεια(do) .Ένα παράδειγμα για να καταλάβετε την αλληλεπίδραση του Kodu με το περιβάλλον είναι για παράδειγμα όταν το Kodu βρίσκεται πάνω σε κάποιο συγκεκριμένο είδος εδάφους να μειώνεται η ταχύτητά του.

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

= = =<span style="font-family: Arial,Helvetica,sans-serif;">ΚΕΦΑΛΑΙΟ 7: Αλληλεπιδρώ με τον κόσμο! =

7.1.1 Διευθέτηση περιβάλλοντος
7.1.2.1 Γυάλινο Τείχος (Glass Walls) 7.1.2.2 Ουρανός (Sky) 7.1.2.3 Φωτισμός (Lighting) 7.1.2.4 Ύψος Κύματος (Wave Height) 7.1.2.5 Μεγιστο Αεράκι και Ελάχιστο Αεράκι ( Max Breeze and Min Breeze) 7.1.3.1 Ένδειξη Μετρητή Πόρων (Show Resource Meter) 7.1.3.2 Ενεργοποίηση Περιορισμού Πόρων (Enable Resource Limiting) 7.1.4.1 Αποσφαλμάτωση Ακολουθίας Μονοπατιού (Debug Path Following) 7.1.4.2 Αποσφαλμάτωση Οπτικής Επαφής και Ήχου (Debug Sight and Sound) 7.1.4.3 Αποσφαλμάτωση Δεδομένων Σύγκρουσης (Debug Display Collision Data) 7.1.5.1 Ένταση Ήχου (Music Volume) 7.1.5.2 Ένταση Ηχητικών Εφέ (Effects Volume) //**7.1.6 Ρυθμίσεις Παιχνιδιού**// 7.1.6.1 Πυξίδα (Show Compass) 7.1.6.2 Έναρξη Παιχνιδιού Με.. (Start Game With:) 7.1.6.2.1 Έναρξη Παιχνιδιου Με : Τίποτα (Start Game With: Nothing) 7.1.6.2.2 Έναρξη Παιχνιδιού Με : Τίτλο Κόσμου (Start Game With: World Title) 7.1.6.2.3 Έναρξη Παιχνιδιού Με : Περιγραφή Κόσμου (Start Game With: World Description) 7.1.6.2.4 Έναρξη Κόσμου Με : Αντίστροφη Μέτρηση (Start Game With: Countdown) 7.1.6.2.5 Έναρξη Κόσμου Με : Περιγραφή Κόσμου και Αντίστροφη Μέτρηση (Start Game With: Description with Countdown) 7.1.7.1 Λειτουργία της Kάμερας (Camera Mode) 7.1.7.2 Ελαστικότητα Κάμερας ( Camera Spring Strength)
 * 7.1.2 Διαμόρφωση Φυσικού περιβάλλοντος**
 * 7.1.3 Περιορισμός Πόρων**
 * 7.1.4 Αποσφαλμάτωση**
 * 7.1.5 Ρύθμιση Ήχου**
 * 7.1.7 Ρυθμίσεις Κάμερας**

7.3.6 Η εντολή quiet(color)
7.3.7 Η ενέργεια άλματος(jump)(ΘΑ ΜΕΤΑΦΕΡΘΕΙ ΣΕ ΑΛΛΑ ΚΕΦΑΛΑΙΑ)

__Είσαγωγή__
Φαντάζεστε ένα παιχνίδι αγώνων ταχύτητας, όπου το αυτοκίνητο που οδηγείτε μπορεί να πηγαίνει με την ίδια ταχύτητα και μέσα στα όρια της πίστας αλλά και εκτός αυτής( όταν πατάει πάνω σε γρασίδι ή σε χώμα, όταν συγκρούεται σε φράχτες κτλ); Κάτι τέτοιο θα άλλαζε εντελώς τον χαρακτήρα του παιχνιδιού και τον σκοπό του. Πλέον δεν θα έπρεπε να οδηγείτε το αυτοκίνητο μέσα στο δρόμο αποφεύγοντας τα εμπόδια, αλλά να σημαδέψετε την γραμμή τερματισμού και να πατήσετε το γκάζι( πράγμα που δεν θα ενθουσίαζε και δεν θα προσέλκυε και τόσο το ενδιαφέρον).

Στο κεφάλαιο 4 μελετήσαμε τον τρόπο δημιουργίας του κόσμου των παιχνιδιών μας. Είδαμε πως μπορούμε να τροποποιήσουμε το έδαφος καθώς και πως μπορούμε να εισάγουμε αντικείμενα που δίνουν στον κόσμο κάποια ιδιαίτερη μορφή και συγκεκριμένο χαρακτήρα. Σε αυτό το κεφάλαιο θα μιλήσουμε για το πως ο κεντρικός χαρακτήρας του παιχνιδιού μας, ο Kodu αλληλεπιδρά με το κόσμο αυτό. Δηλαδή θα προσπαθήσουμε να εξηγήσουμε τον τρόπο με τον οποίο η διαμόρφωση και τα χαρακτηριστικά του κόσμου (τα οποία και καθορίζουμε εμείς) επηρεάζουν την κίνηση και την συμπεριφορά του καθώς και πως μπορούμε να αξιοποιήσουμε τα χαρακτηριστικά αυτά στον προγραμματισμό των χαρακτήρων μας. Ας μην ξεχνάμε πως η διαμόρφωση του κόσμου γίνεται με σκοπό ο Kodu να αλληλεπιδρά με αυτόν και να συμπεριφέρεται ανάλογα έτσι ώστε το παιχνίδι να έχει νόημα και σκοπό. Θα ξεκινήσουμε εξετάζοντας μια σειρά από πολύ ενδιαφέρουσες ιδιότητες του κόσμου κάθε παιχνιδιού που μπορούμε να ρυθμίσουμε ως προγραμματιστές.

7.1 Ο κόσμος, οι ιδιότητες του κόσμου

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

Το MSKodu προσφέρει μια γκάμα απο επιλογές που μας επιτρέπουν να διαμορφώσουμε τον **κόσμο** του παιχνιδιού που θέλουμε να δημιουργήσουμε. Επιλέγοντας το **Ιδιότητες Κόσμου** (Change World Settings) όπως φαίνεται στην πιο πάνω εικόνα προκύπτει το menu επιλογών **Change** **World** **Settings** **Menu** το οποίο απαρτίζεται απο πολλές επιλογές τις οποίες θα εξερευνήσουμε μία μία μέσα απο παραδείγματα, τα οποία θα μας βοηθήσουν να αντιληφθούμε την σημασία και την χρησιμότητα τους.
 * 7.1.1 Διευθέτηση περιβάλλοντος (change world settings)**



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

Ο προσδιορισμός Φυσικό περιβάλλον συμβάλει στον περιορισμό των επιλογών και την ένταξη τους σε μία ομάδα που αφορά ιδιότητες της Φύσης. Όταν αναφερόμαστε στη Φύση, αυτό που έρχεται στο μυαλό μας είναι η γή, το νερό, ο ουρανός κ.α τα οποία αφορούν οι ιδιότητες που θα μελετήσουμε σε αυτή την υποενότητα.
 * 7.1.2 Διαμόρφωση Φυσικού περιβάλλοντος**

7.1.2.1 Γυάλινο Τείχος Ενεργοποιώντας αυτή την επιλογή (γίνεται πράσινο το αντίστοιχο εικονίδιο), τοποθετούμε στον περίγυρο(στα όρια) του κόσμου μας μια διαφανή Γυάλινη Περίφραξη. Αυτή εμποδίζει τον Kodu να πέσει στο κενό όταν φτάσει στα άκρα του κόσμου. Μπορείτε να τη φανταστείτε σαν μία Περίφραξη στην ταράτσα μίας πολυκατοικίας που προστατεύει κάποιον που βρίσκεται εκεί να μην πέσει στο κενό.
 * //__Glass Walls__//** : Θεωρητικά κατά την κατασκευή ενός κόσμου μπορούμε να επεκτείνουμε το έδαφος όσο θέλουμε, αλλά αυτό ουσιαστικά κάπου θα τελειώνει. Με μία πρώτη ματιά αυτό δεν φαίνεται να μας επηρεάζει. Τι γίνετε όμως όταν ο πρωταγωνιστής μας φτάσει στο όριο, στην άκρη του εδάφους; Όπως και στην πραγματικότητα, εάν ο Kodu ξεπεράσει το όριο του εδάφους, θα πέσει στο κενό.

Στην πρώτη εικόνα, έχοντας την επιλογή Glass Walls απενεργοποιημένη παρατηρούμε τον Kodu να πέφτει στο κενό αφού έχει ξεπεράσει τα όρια του εδάφους, ενώ στην δεύτερη εικόνα όπου η επιλογή είναι ενεργοποιημένη ο Kodu συγκρούετε με τον Γυάλινο τοίχο( γι' αυτό και φαίνεται μια μικρή λάμψη γύρω του) αποτρέποντας έτσι την πτώση του στο κενό.

//__**Γυάλινο Τείχος : Απενεργοποιημένο**__ (Glass Wall : Off)//

//__**Γυάλινο Τείχος : Ενεργοποιημένο**__ (Glass Wall : On)//

7.1.2.2 Ουρανός


 * //__Sky__// :** Η σημασία επιλογής Ουρανού στο παιχνίδι μας δεν είναι κάτι το οποίο μπορούμε να αγνοήσουμε. Ο προγραμματιστής, πρέπει να σκεφτεί τις συνθήκες που θα επικρατούν στον κόσμο του παιχνιδιού ώστε να επιλέξει τον κατάλληλο Ουρανό! Ναι μπορούμε να αλλάξουμε και τον ουρανό του κόσμου μας! Ένα παράδειγμα στο οποίο μπορούμε να αξιοποιήσουμε τη συγκεκριμένη ιδιότητα είναι οι αγώνες αυτοκινήτων που διεξάγονται σε διάφορες χώρες του κόσμου. Οι καιρικές συνθήκες σε κάθε χώρα αλλάζουν, οπότε και η όψη του ουρανού διαφέρει σε κάθε μία από αυτές. Έτσι, ο προγραμματιστής, για κάθε πίστα που θα δημιουργήσει, θα πρέπει να κάνει την κατάλληλη επιλογή ουρανού η οποία να αντιπροσωπεύει με τον καλύτερο δυνατό τρόπο τις πραγματικές συνθήκες που επικρατούν. Για παράδειγμα, εάν οι αγώνες πραγματοποιούνται στην Ελλάδα, μία από τις επιλογές θα ήταν ο ουρανός να είναι ηλιόλουστος.



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



7.1.2.3 Φωτισμός //**__Lighting__**// : Τι θα γινόταν αν θέλαμε να δημιουργήσουμε την ίδια πίστα και ο αγώνας να διεξαγόταν βράδυ; Υπάρχουν αρκετές επιλογές Φωτισμού στο παιχνίδι οι οποίες μπορούν να βοηθήσουν τον προγραμματιστή να προσδιορίσει με μεγαλύτερη ακρίβεια τις συνθήκες του παιχνιδιού του! Ας δούμε το πιο κάτω παράδειγμα. Συγκριτικά με την πιο πάνω εικόνα, επιλέξαμε τον Φωτισμό Lighting : Dark. Μπορούμε να πούμε πως προσομοιώνει αρκετά καλά ένα αγώνα ο οποίος διεξάγεται βράδυ. Αυτό που προβληματίζει λίγο είναι πως ο ουρανός, παρόλο που έγινε πιο σκούρος, δεν πείθει πώς είναι βράδυ. Ο προγραμματιστής θα μπορούσε να χρησιμοποιήσει τον κατάλληλο συνδιασμό Ουρανού και Φωτισμού( κρατώντας σταθερή την επιλογή φωτισμού) ώστε να προσομοιώσει καλύτερα το Βράδυ στον κόσμο.

//__**Εικόνα 1**__//

//__**Εικόνα 2**__// (με αλλαγή επιλογής ουρανού)

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

7.1.2.4 Ύψος Κύματος Στο πιο κάτω παράδειγμα βλέπουμε δύο εικόνες, όπου στην πρώτη δεν υπάρχει κύμα ενώ στην δεύτερη υπάρχει κύμα που συναρτήσει με τον μουντό καιρό (διαφορετικό ουρανό) δημιουργεί αίσθημα κακοκαιρίας.
 * //__Wave__ __Height__//** :Μπορείτε να δημιουργήσετε ήρεμα αλλά και άγρια νερά για μια λιμνούλα, ένα ποτάμι ή μια θάλασσα που έχετε προσθέσει στον κόσμο σας. Δημιουργώντας μεγάλα κύματα μπορείτε να αναπαραστήσετε εώς ένα βαθμό τις καιρικές συνθήκες. Θα μπορούσατε να δείξετε έμμεσα ένα άστατο, με άνεμους κόσμο δημιουργώντας κύματα ανάλογου ύψους στην λίμνη ή στο ποτάμι που έχετε προσθέσει.

//__**Εικόνα1**__// (χωρίς κύμα)

//__**Εικόνα 2**__// (με κύμα)

7.1.2.5 Μεγιστο Αεράκι και Ελάχιστο Αεράκι __//**Max - Min Breeze**//__ : Στηριζόμενοι στο προηγούμενο παράδειγμα, και υποθέτωντας ότι θέλουμε το παιχνίδι μας να εξελιχθεί σε άστατο καιρό, εκτός απο το κύμα που δημιουργείται στην λίμνη, θα έπρεπε να υπάρχει και μια ανάλογη κίνηση στα δέντρα λόγο των ανέμων που φυσούν. Επειδή ο άνεμος συνήθως δεν είναι σταθερός, το Kodu μας επιτρέπει να ορίσουμε δύο ιδιότητες που προσδιορίζουν το πάνω και το κάτω όριο της έντασης του ανέμου. Για να αντιληφθούμε οπτικά τι συμβαίνει, τα κλαδιά των δέντρων κινούνται δεξιά και αριστερά τόσο, όσο ορίσουμε εμείς την ένταση. Στην πιο κάτω εικόνα έχουμε έχουμε σημειώσει με δύο κόκκινες γραμμές την περιοχή μεταξύ της οποίας κινείται το άνω μέρος του δέντρου στα δεξιά. Αντίστοιχα γίνεται παρόμοια κίνηση για όλα τα δέντρα που υπάρχουν στο περιβάλλον.



Ένα βασικό πρόβλημα που μπορεί να προκύψει κατα την δημιουργία ενός παιχνιδιού είναι η υπερφόρτωση του κόσμου μας με χαρακτήρες, αντικείμενα και έδαφος. Κάθε στοιχείο απαιτεί επεξεργαστική ισχύ και κατά συνέπεια μπορεί να φτάσουμε σε ένα σημείο όπου ο υπολογιστής μας δεν θα μπορεί να ανταποκριθεί στις απαιτήσεις του παιχνιδιού μας. Αυτό βέβαια δεν προκαλεί αλλοιώσεις στο προγραμματιστικό/σχεδιαστικό κομμάτι του παιχνιδιού μας αλλά στην αισθητική του. Το παιχνίδι μας θα συνεχίσει να λειτουργεί «σωστά», αλλά λόγο υπερφόρτωσης θα είναι πολύ αργό! Οι κινήσεις και γενικά οι συμπεριφορές των αντικειμένων, θα εκτελούνται πιο αργά απ'ότι θα θέλαμε. Αυτό είναι κουραστικό για τον χρήστη που αλληλεπιδρά με το παιχνίδι. Το MSKodu μας προσφέρει δύο επιλογές οι οποίες μας βοηθούν να υπολογίζουμε το φόρτο των χαρακτήρων,αντικειμένων και του εδάφους ώστε να διατηρούμε τα επίπεδα σε τέτοια πλαίσια που το παιχνίδι μας να κυλά ομαλά.
 * 7.1.3 Περιορισμός Πόρων**

7.1.3.1 Ένδειξη Μετρητή Πόρων __//**Show Resource Meter**//__ : αυτή την επιλογή, το περιβάλλον μας ενημερώνει για το ποσοστό των πόρων (έδαφος,χαρακτήρες,αντικείμενα) που έχουμε χρησιμοποιήσει στο παιχνίδι μας σε σχέση με τη μέγιστη δυνατότητα. Η ένδειξη αυτή παρουσιάζεται σαν ένα Θερμόμετρο στα δεξιά της οθόνης μας. Όσο πιο πολλούς πόρους χρησιμοποιούμε, τόσο ανεβαίνει και η αντίστοιχη «θερμοκρασία». Εάν απενεργοποιήσουμε την επιλογή αυτή, το θερμόμετρο παύει πλέον να φαίνεται στην οθόνη μας.

__//**Παιχνίδι που χρησιμοποιεί λίγους πόρους**//__ (ελάχιστη θερμοκρασία)

__//**Παιχνίδι που χρησιμοποιεί πολλούς πόρους**//__ (θερμοκρασία στο πορτοκαλί)

7.1.3.2 Ενεργοποίηση Περιορισμού Πόρων __//**Enable Resource Limiting**//__ : Εάν φτάσουμε στα όρια των πόρων που έχουμε χρησιμοποιήσει, τότε το MSKodu μας περιορίζει και δεν μας επιτρέπει να προσθέσουμε οτιδήποτε άλλο στον κόσμο μας. Αυτό μας αποτρέπει να ωθήσουμε το παιχνίδι πέρα απο τα όρια του. Εάν όμως επιθυμούμε για κάποιο λόγο(έστω σχεδιαστικό) να προσθέσουμε κι άλλους πόρους, μπορούμε να το κάνουμε **απενεργοποιώντας** αυτή την επιλογή (γκρίζο χρώμα). Επαναλαμβάνουμε πώς ο προγραμματιστής δεν έχει πλέον στην διάθεση του την Ένδειξη Μετρητή Πόρων (Θερμόμετρο) με αποτέλεσμα αν υπερβεί αρκετά το όριο να ωθήσει το παιχνίδι σε κατάρρευση. Αυτό πρακτικά σημαίνει πώς το παιχνίδι δεν θα λειτουργεί.

__//**Δημιουργία κόσμου χωρίς την ένδειξη Θερμομέτρου**//__ ( Enable Resource Limiting : Off)

Καθώς ο προγραμματιστής ξεκινήσει να δημιουργεί το παιχνίδι του, υπάρχει σημαντική πιθανότητα να κάνει λάθη στο σχεδιασμό και στην ανάπτυξη του προγράμματός του. Στο MSKodu, όταν αναφερόμαστε σε λάθη, εννοούμε τις μη αναμενόμενες συμπεριφορές χαρακτήρων στο παιχνίδι μας. Παρ' ότι ο προγραμματιστής θέλει να θέσει ένα χαρακτήρα να κάνει συγκεκριμένες κινήσεις ή να έχει συγκεκριμένες αντιδράσεις ( πχ να αλλάξει κατεύθυνση, να ξεκινήσει να μιλά) σε κάποια ερεθίσματα ( πχ όταν ακούσει ένα ήχο, όταν δεί κάποιον άλλο χαρακτήρα), ο χαρακτήρας μπορεί να ενεργεί τελικά διαφορετικά απ' ότι ήθελε ο προγραμματιστής. Για τον λόγο αυτό, ο προγραμματιστής συχνά πρέπει να κάνει αποσφαλμάτωση, πρέπει δηλαδή να ελέγξει αν οι νέες λειτουργίες/ενέργειες που έχει προσθέσει, όντως εκτελούνται όπως ανέμενε αρχικά. Οι πιο κάτω επιλογές που θα αναφέρουμε, βοηθούν τον προγραμματιστή να κάνει ευκολότερα την αποσφαλμάτωση του παιχνιδιού του.
 * 7.1.4 Αποσφαλμάτωση**

7.1.4.1 Αποσφαλμάτωση Ακολουθίας Μονοπατιού
 * __Debug Path Following__**: Όταν δημιουργείτε ένα μονοπάτι το οποίο θα ακολουθεί ένας ή περισσότεροι χαρακτήρες,αυτό, όταν παίζουμε το παιχνίδι δεν είναι ορατό. Μπορεί απο λάθος να έχουμε προγραμματίσει ασυναίσθητα κάποιον χαρακτήρα να ακολουθεί κάποιο άλλο μονοπάτι από αυτό που θα έπρεπε χωρίς να πέσει στην αντίληψη μας. Ενεργοποιώντας αυτή την επιλογή, το μονοπάτι θα είναι πλέον ορατό κατά τη διάρκεια του παιχνιδιού και θα μπορείτε να κατανοήσετε τη μορφή των μονοπατιών σας και ποια αντικείμενα κινούνται πάνω σε αυτά. Μπορείτε έτσι να αποσφαλματώσετε το παιχνίδι σας σε λιγότερο χρόνο και να το τροποποιήσετε ώστε να λειτουργεί όπως πραγματικά επιθυμείτε. Μη ξεχνάτε να απενεργοποιείται τη συγκεκριμένη ιδιότητα όταν έχετε ολοκληρώσει το παιχνίδι σας.

__//**Αποσφαλμάτωση Ακολουθίας Μονοπατιού : απενεργοποιημένη**//__

__//**Αποσφαλμάτωση Ακολουθίας Μονοπατιού : ενεργοποιημένη**//__

7.1.4.2 Αποσφαλμάτωση Οπτικής Επαφής και Ήχου **__Debug Sight and Sound Lines__**: Εξίσου σημαντική είναι η αποσφαλμάτωση όταν έχουμε εισάγει τους αισθητήρες όρασης (see) ή ακοής (hear) σε κάποια αντικείμενα του παιχνιδιού μας. Όταν υπάρχουν πολλά αντικείμενα και σύνθετοι κόσμοι μπορεί να μην είμαστε σίγουροι ποιός θα δεί ποιόν και ποιος θα ακούσει ποιον. Όταν η επιλογή αυτή είναι ενεργοποιημένη, μια φωτεινή γραμμή σηματοδοτεί τους δύο ή περισσότερους χαρακτήρες που επικοινωνούν.

Στην παρακάτω εικόνα, εκτός από τον Kodu, ξεκινώντας από αριστερά βλέπουμε τον Cycle, τον Jet και τον Sub. Στο πρώτα παράδειγμά μας έχουμε προγραμματίσει τον Kodu, όταν ακούσει τον Sub, να κινηθεί προς αυτόν.

Καθώς ο προγραμματιστής δοκιμάζει αν το παιχνίδι του όντος λειτουργεί όπως θα ήθελε (αποσφαλμάτωση), δεν μπορεί να ξεχωρίσει από που προέρχεται αυτός ο ήχος και πότε προκαλείται. Ενεργοποιώντας την επιλογή Debug Sight and Sound Lines και εκτελώντας το παιχνίδι, εμφανίζεται μια γραμμή (ασπρη-πράσινη) μεταξύ Kodu και Sub που υποδεικνύει στον προγραμματιστή ότι μεταξύ Kodu και Sub δημιουργήθηκε μια σχέση ( ο ένας παράγει ήχο και ο άλλος τον ακούει).



Η ίδια ιδιότητα ενεργοποιεί και τις σχέσεις «Όρασης» μεταξύ των αντικειμένων. Άς υποθέσουμε πως θέλουμε στο παιχνίδι μας ο Sub να έχει μαλώσει με τον Cycle και **μόλις τον δεί** να τον φοβάται και να **ζητά από** τον Kodu (παράγει ήχο) να πάει δίπλα του (για να νιώθει ασφαλής). Περιμένετε να εμφανιστεί κι άλλη γραμμή; Μεταξύ ποιών χαρακτήρων;

__**Προγραμματισμός Kodu**__
 * __Προγραμματισμός Sub__**

Βλέποντας την παρακάτω εικόνα, διαπιστώνουμε πως όταν παίζουμε το παιχνίδι παρουσιάζεται ακόμη μια γραμμή (κόκκινη-άσπρη) μεταξύ του Sub και του Cycle. Αυτή σηματοδοτεί την έκφραση "**μόλις τον δεί"** που προαναφέραμε.



7.1.4.3 Αποσφαλμάτωση Δεδομένων Σύγκρουσης //__**Debug Display Collision Data**__// : Η επιλογή αυτή εμφανίζει με μώβ χρώμα τα αντικείμενα που είναι σταθερά στο έδαφος και συνεχίζουν να παραμένουν σταθερά εάν συγκρουστούν με κάποιο αντικείμενο. Στην παρακάτω εικόνα βλέπουμε ένα Κάστρο, δύο Δέντρα και δύο μεγάλους Βράχους. Ενεργοποιώντας την επιλογή αυτή περιμένουμε να χρωματιστούν με μώβ χρώμα όλα τα αντικείμενα. Και όμως αυτό δεν ισχύει. όπως φαίνεται και από την παρακάτω εικόνα, όταν οι Βράχοι συγκρουστούν με τον Kodu θα μετακινηθούν, δεν θεωρούνται σταθερά αντικείμενα στο έδαφος και γι'αυτό δεν χρωματίζονται.

__//**Αποσφαλμάτωση Δεδομένων Σύγκρουσης : απενεργοποιημένη**//__

__//**Αποσφαλμάτωση Δεδομένων Σύγκρουσης : ενεργοποιημένη**//__


 * 7.1.5 Ρύθμιση Ήχου**

7.1.5.1 Ένταση Ήχου __//**Music Volume**//__ : Τα αντικείμενά μας με την ενέργεια Play έχουν τη δυνατότητα να αναπαράγουν Η συγκεκριμένη ιδιότητα του κόσμου μας επιτρέπει να καθορίσουμε πόσο δυνατά θα ακούγεται η μουσική αυτή.

7.1.5.2 Ένταση Ηχητικών Εφέ __//**Effects Volume**//__ : Όπως έχετε ήδη παρατηρήσει (αν έχετε τα ηχεία σας ανοικτά όταν φορτώνετε το Kodu), οι διάφοροι χαρακτήρες που ζουν στο παιχνίδι μας παράγουν ήχους είτε από μόνοι τους είτε όταν πραγματοποιούν κάποιες συγκεκριμένες ενέργειες που προκαλούν επιπρόσθετους ήχους (π.χ εκρήξεις, συγκρούσεις). Για να ελέγξουμε την ένταση με την οποία θα ακούγονται οι ήχοι αυτοί **αλλάζουμε την τιμή της ιδιότητας** Effects Volume.
 * Σημαντικό** είναι να αναφέρουμε πως οι ήχοι που επέρχονται από ενέργειες των χαρακτήρων του παιχνιδιού μπορούν να διαδραματίσουν καθοριστικό ρόλο στην ψυχολογία του χρήστη. Όσο πιο δυνατή θα είναι η έκρηξη, τόσο πιο έντονα θα επηρεαστεί ο χρήστης.

//**7.1.6 Ρυθμίσεις Παιχνιδιού**//

7.1.6.1 Πυξίδα
 * Show Compass**: Έχοντας ενεργοποιήσει αυτή την επιλογή, η πυξίδα που βρίσκεται στο κάτω δεξί σημείο της οθόνης είναι ορατή, όχι μόνο κατά την διάρκεια δημιουργίας του παιχνιδιού αλλά και κατά τη διάρκεια που ο χρήστης παίζει με το παιχνίδι. Έτσι μπορεί να την συμβουλευτεί για να φέρει εις πέρας την αποστολή του. Για παράδειγμα, ας υποθέσουμε ότι ο Kodu έχει ως αποστολή να περάσει μέσα από ένα άγνωστο δάσος, να φτάσει στο χωριό και να παραδώσει ένα πολύ σημαντικό μήνυμα στους κατοίκους. Το δάσος όμως το βράδυ εγκυμονεί πολλούς κινδύνους γι 'αυτό συμβουλεύεται τον μόνο κάτοικο του δάσους για το ποια κατεύθυνση θα πρέπει να ακολουθήσει για να φτάσει με ασφάλεια στον προορισμό του. Ο Sub (κάτοικος δάσους) το μόνο που κάνει είναι να ενημερώσει τον Kodu να κατευθυνθεί Ανατολικά. Πώς γνωρίζει ο Kodu προς ποια κατεύθυνση κατευθύνεται;



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



7.1.6.2 Έναρξη Παιχνιδιού Με: Τι θέλουμε να εμφανίζεται όταν κάποιος τρέξει το παιχνίδι μας. Το περιβάλλον MSKodu μας δίνει 5 εναλλακτικές και μόνο μια απο αυτές μπορεί να επιλεγεί για κάθε παιχνίδι που δημιουργεί ο προγραμματιστής.

7.1.6.2.1 Έναρξη Παιχνιδιου Με : Τίποτα __//**Nothing**//__ : Το παιχνίδι ξεκινάει κανονικά, χωρίς να εμφανίζεται κάτι στην οθόνη.



7.1.6.2.2 Έναρξη Παιχνιδιού Με : Όνομα Κόσμου __//**World Title**//__ : Εμφανίζει το Όνομα του Κόσμου για 3 δευτερόλεπτα και το παιχνίδι ξεκινάει.



7.1.6.2.3 Έναρξη Παιχνιδιού Με : Περιγραφή Κόσμου __//**World Description**//__ : Μαζί με τον Τίτλο, θα μπορούσαμε να ενημερώνουμε και να δίνουμε οδηγίες στον χρήστη για τις ενέργειες που πρέπει να κάνει ούτως ώστε να πετύχει το σκοπό του παιχνιδιού μας.



Ο τίτλος και η περιγραφή μπορούν να προστεθούν όταν αποθηκεύσουμε το παιχνίδι μας. Επιλέγοντας **Save my world** εμφανίζεται το πιο κάτω παράθυρο όπου μπορούμε να θέσουμε Τίτλο και Περιγραφή για το παιχνίδι μας. Σε αυτήν την περίπτωση το παιχνίδι ξεκινά εφόσον ο χρήστης πατήσει Enter.



7.1.6.2.4 Έναρξη Κόσμου Με : Αντίστροφη Μέτρηση __//**Countdown**//__ : Επίσης, σε συγκεκριμένα είδη παιχνιδιών, είναι απαραίτητο να δώσουμε κάποια δευτερόλεπτα στον χρήστη ώστε να είναι προετοιμασμένος για αυτό που πρόκειται να αντιμετωπίσει. Πάρτε για παράδειγμα ένα παιχνίδι αγώνων δρόμου όπου ο χρήστης πρέπει να αντιδράσει ακαριαία με την έναρξη του παιχνιδιού για να μην τον προσπεράσουν οι συναγωνιστές του. Η αντίστροφη μέτρηση ξεκινάει απο το 3 και μετά το 1 δευτερόλεπτο, το παιχνίδι ξεκινάει.



7.1.6.2.5 Έναρξη Κόσμου Με : Περιγραφή Κόσμου και Αντίστροφη Μέτρηση __//**Description with Countdown**//__ : Η τελευταία αυτή επιλογή συνοψίζει τις δύο τελευταίες επιλογές μαζί. Προτού ξεκινήσει το παιχνίδι μας, παρουσιάζεται αρχικά ο Τίτλος και η Περιγραφή του παιχνιδιού και μόλις ο χρήστης πατήσει Enter ξεκινά η αντίστροφη μέτρηση.




 * 7.1.7 Ρυθμίσεις Κάμερας**

7.1.7.1 Λειτουργία Κάμερας **__Camera Mode__:**Η ιδιότητα αυτή επιτρέπει στον προγραμματιστή να επιλέξει τη θέση της κάμερας κατά τη διάρκεια του παιχνιδιού. Μας δίνονται τρεις επιλογές:

Α) η κάμερα σε ελεύθερη θέση (Camera Mode : Free). Η κάμερα ακολουθεί το χρήστη από πίσω αλλά δε βρίσκεται σε ένα συγκεκριμένο σημείο. Ο χρήστης του παιχνιδιού μας μπορεί να την ελέγξει όπως ακριβώς την ελέγχουμε και εμείς κατά την κατασκευή του παιχνιδιού. Έτσι π.χ. πατώντας το δεξί πλήκτρο του ποντικιού και σέρνοντας το ποντίκι μπορεί να αλλάζει τη θέση της κάμερας στις τρεις διαστάσεις (αλλάζει τη θέση αλλά και τη γωνία θέασης) ενώ χρησιμοποιώντας τη ροδέλα του ποντικιού μπορεί να κάνει ζουμ σε ένα συγκεκριμένο σημείο ή το αντίστροφο. Καθώς μετακινείται ο πρωταγωνιστής μας μετακινείται και η κάμερα.

Β) η κάμερα σε συγκεκριμένη θέση (Camera Mode : Fixed Position). Ενεργοποιώντας αυτή την επιλογή, η κάμερα παραμένει καθ’όλη την διάρκεια του παιχνιδιού σταθερή. Ο παίκτης θα βλέπει από το ίδιο σημείο την πίστα, όπου και αν εξελίσσεται η δράση. Θυμηθείτε το παιχνίδι Χ στο οποίο ο Kodu παιρνούσε τους δρόμους και μετακινούνταν ενώ εμείς βλέπαμε την πίστα μας από σταθερή απόσταση. Πως μπορούμε να προσδιορίσουμε όμως ποια θα είναι η συγκεκριμένη θέση της κάμερας; Πατήστε πάνω στην επιλογή //Καθόρισε την κάμερα// (Set Camera):

Στη συνέχεια αλλάξτε τη θέση της κάμερας με τους τρόπους που αναφέραμε προηγουμένως ώστε να βρείτε την κατάλληλη για το παιχνίδι σας. Τέλος, πατήστε Enter. Θα διαπιστώσετε ότι κάθε φορά που παίζετε το παιχνίδι, η κάμερα βρίσκεται σε μια και μοναδική θέση (αυτό δεν ισχύει κατά το σχεδιασμό του παιχνιδιού). Στην παρακάτω εικόνα ο προγραμματιστής έχει πατήσει στην επιλογή Fixed Camera, στη συνέχεια Set Camera και αφού τοποθέτησε την κάμερα είναι έτοιμος να πατήσει Enter



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



Tip: Από τη στιγμή που η κάμερά σας είναι σταθερή, υπάρχει πιθανότητα ο Kodu ή ο εκάστοτε πρωταγωνιστής του παιχνιδιού να βρεθεί εκτός οπτικού πεδίου της κάμερας. Αυτό σημαίνει ότι ο παίκτης δε θα βλέπει τον ήρωά του! Για το λόγο αυτό πρέπει να είστε προσεκτικοί όταν χρησιμοποιείτε τη συγκεκριμένη επιλογή.



Θα μπορούσαμε έτσι να θέσουμε την κάμερα, πάλι στο Fixed Offset αλλά απο πιο μακρυνή απόσταση και διαφορετική οπτική γωνία ώστε να μην υπάρχει περίπτωση ο χρήστης να χάσει οπτική επαφή με τον πρωταγωνιστή Kodu που διαχειρίζεται.

Γ) η κάμερα σε συγκεκριμένη θέση σχετικά με τον πρωταγωνιστή μας (Camera Mode : Fixed Offset). Στην τρίτη επιλογή, η κάμερα παραμένει σταθερή σχετικά με τη θέση του πρωταγωνιστή του παιχνιδιού, δηλαδή τον ακολουθεί όπου και αν πάει. Για τη ρύθμιση της σχετικής θέσης, πρέπει πάλι να πατήσουμε πάνω στην επιλογή Set Camera X, να επιλέξουμε τη θέση της κάμερας σε σχέση με τον πρωταγωνιστή μας και στη συνέχεια να πατήσουμε Enter. Ενώ λοιπόν η επιλογή Σταθερή θέση κρατάει την κάμερα σε **σταθερή θέση σε όλη τη διάρκεια του παιχνιδιού**, η επιλογή Σχετική Θέση κρατάει την κάμερα σε **σταθερή θέση ως προς τον πρωταγωνιστή** που χειρίζεται ο χρήστης. Στο πιο κάτω παράδειγμα η κάμερα ακολουθεί τον Kodu που κινείται προς τα δεξιά.





7.1.7.2 Ελαστικότητα Κάμερας


 * __Camera Spring Strength__** : H ιδιότητα αυτή έχει νόημα όταν έχουμε επιλέξει την κάμερα να βρίσκεται σε ελεύθερη θέση. Όπως αναφέραμε σε αυτή την περίπτωση η κάμερα ακολουθεί την πλάτη του πρωταγωνιστή μας. Όταν όμως ο πρωταγωνιστής μας μετακινείται και στρίβει, πόσο γρήγορα θέλουμε να αντιδρά η κάμερά μας και να έρχεται ακριβώς πίσω από τον Kodu; Αν στην ιδιότητα αυτή προσδιορίσουμε τιμή 1, τότε η κάμερα πραγματοποιεί τη λήψη της διαρκώς πίσω από τον Kodu. Όπως ακριβώς συμβαίνει μέχρι τώρα στα παιχνίδια μας. Αν στην ιδιότητα αυτή όμως προσδιορίσουμε τιμή μικρότερη, τότε η κάμερα αντιδρά πιο ομαλά-ήρεμα και φτάνει στην πλάτη του Kodu σε μεγαλύτερο χρόνο, χωρίς βίαιες μετακινήσεις. Έτσι, για παράδειγμα,





καθώς ο Kodu περιστρέφεται αριστερόστροφα, όταν έχουμε επιλέξει ένταση 0.3, η Camera θα καθυστερήσει να κάνει και αυτή την αριστερόστροφη κίνηση συγκριτικά με την ένταση 0.8. Δοκιμάστε μια μικρή τιμή για να δείτε πόσο πιο ομαλά κινείται η κάμερα σε αυτήν την περίπτωση.



7.2 O kodu στην γη και στη θάλασσα Στην δημιουργία ενός παιχνιδιού στο MSKodu μας δίνεται η δυνατότητα να προγραμματίσουμε τον Kodu για το πως θα αντιδράει σε διάφορες καταστάσεις. Μπορούμε να προγραμματίσουμε τον kodu να συμπεριφέρεται ανάλογα με το είδος του εδάφους που βρίσκεται πάνω καθώς και σε περίπτωση που βρίσκεται σε περιοχή με νερό. Ας πάρουμε όμως τα πράγματα ένα ένα.

7.2.1 Ο Kodu στο έδαφος(on land): Όπως είδαμε σε προηγούμενο κεφάλαιο στο MSKodu όταν δημιουργούμε ένα κόσμο μπορούμε να επιλέξουμε και να βάλουμε σε αυτόν πολλά είδη εδάφους που με τη σειρά του αυτό μας δινει και την δυνατότητα να επεκτείνουμε τις επιλογές μας για την δημιουργία του παιχνιδιου.Η πλατφόρμα μας λοιπόν εκτός όλων των άλλων μας δίνει την δυνατότητα να προσδιορίζουμε την συμπεριφορά του Kodu ανάλογα με το είδος του εδάφους που αυτός βρίσκεται. Μπορούμε δηλαδή να προγραμματίσουμε τον Kodu έτσι ώστε ο τύπος του εδάφους που βρίσκεται πάνω να επηρεάζει τις ενεργειες του. Για παράδειγμα αν θέλουμε να δημιουργήσουμε ένα παιχνίδι αγώνων ταχύτητας θα πρέπει μέσα σε όλα μας να περιλάβουμε και την ταχύτητα. Θα πρέπει ο χαρακτήρας μας σε περίπτωση που βγει εκτός δρόμου και πατήσει γρασίδι να μειώνεται η ταχύτητά του μέχρι να ξαναμπεί στο δρόμο. Όλα αυτά μπορούμε να τα προγραμματίσουμε με την επιλογή on land που βρίσκεται στην κατηγορία αισθητήρων more, όπου αφού την βάλουμε, επιλέγουμε το είδος του εδάφους στο οποίο θέλουμε να αναφερθούμε και διαλέγουμε την αντίδραση από το μενού των ενεργειών.

Τι έχει ο προγραμματιστής στο μυαλό του: ΌΤΑΝ [Είμαι σε έδαφος] [Προσδιοριστικό εδάφους] ΤΟΤΕ [Ενέργεια] [Προσδιοριστικό ενέργειας]

Ρήματα συμπεριφορών που θα πρέπει να μας φέρνουν στο μυαλό τον αισθητήρα: είμαι, βρίσκομαι, περνάω, πατάω

Παράδειγμα 07_01.kodu:

onland1.png



Έστω ότι θέλουμε να φτιάξουμε ένα παιχνίδι στο οποίο ο Kodu θα τρέχει σε ένα δρόμο μαζί με άλλα αντικείμενα με σκοπό να τερματίσει πρώτος. Δηλαδή αγώνες ταχύτητας. Αφού δημιουργήσουμε το περιβάλλον και προγραμματίσουμε τα αντικείμενά του πρέπει να προγραμματίσουμε και τον Kodu. Αυτό που θέλουμε είναι να τον κάνουμε να κινείται με τα βελάκια (έτσι ώστε να τον ελέγχει ο χρήστης) και να μειώνεται η ταχύτητά του όταν βγαίνει εκτός δρόμου. Και πως θα μπορούσε ο kodu να αντιληφθεί ότι περπατάει πάνω σε γρασίδι και όχι σε χώμα; Μήπως υπάρχει κάποιος αισθητήρας που μπορεί να τον βοηθήσει να τα διακρίνει; Μα φυσικά! Αυτός είναι ο αισθητήρας on land. Αυτό προγραμματίζεται με τον τρόπο που φαίνεται στην εικόνα.

onland2.png

Εφόσον θέλουμε να μειώνεται η ταχύτητα του Kodu όταν πατάει πάνω στο γρασίδι επιλέγουμε στις προυποθέσεις να βάλουμε τον αισθητήρα on land και προσδιοριστικό του τον τύπο εδάφους(το γρασίδι) και στην συνέχεια σαν ενέργεια το move και σαν προσδιοριστικό το slowly.

Δηλαδή ΌΤΑΝ [Από το πληκτρολόγιο] [πατηθούν τα βελάκια] ΤΟΤΕ [Κινήσου] ΌΤΑΝ [Είσαι σε έδαφος] [πράσινου τύπου] ΤΟΤΕ [Κινήσου] [Αργά]

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

7.2.2 Ο Kodu στο νερό(on water): Στο παιχνίδι μας μπορούμε να βάλουμε και νερό, και μάλιστα διάφορα "είδη" νερόυ. Οι λίμνες και τα ποτάμια που δημιουργούμε με τα διάφορα είδη νερού είναι μέρος του κόσμου στον οποίο ενεργεί ο Kodu και μπορεί ανά πάσα στιγμή να βρεθεί πάνω σε αυτά. Έτσι εκτός από το να μπορούμε να προγραμματίζουμε συμπεριφορά του Kodu στο έδαφος πρέπει να μπορούμε να προγραμματίζουμε την συμπεριφορά του και πάνω νερό. Ας πούμε πως σε κάποιο παιχνίδι ο κόσμος αποτελείται από μία λίμνη με λάβα(κόκκινο νερό) και ένα μονοπάτι πάνω σε αυτή ΄πάνω στο οποίο ο χαρακτήρας μας πρέπει να κινηθεί με σκοπό να φτάσει στον τερματισμό. Σε περίπτωση που πέσει πάνω στην λάβα μειώνονται οι πόντοι του. Η υλοποίηση αυτής της λειτουργίας θα γίνει με την επιλογή on water που βρίσκεται στην κατηγορία more. Αφού την επιλέξουμε επιλέγουμε το είδος του νερου και την ενέργεια που θέλουμε να λαμβάνει χώρα.

Τι έχει ο προγραμματιστής στο μυαλό του: ΌΤΑΝ [Είμαι σε νερό] [Προσδιοριστικό νερού] ΤΟΤΕ [Ενέργεια] [Προσδιοριστικό ενέργειας]

Ρήματα συμπεριφορών που θα πρέπει να μας φέρνουν στο μυαλό τον αισθητήρα: είμαι, βρίσκομαι, περνάω, πατάω, επιπλέω, βουλιάζω, κολυμπάω

Παράδειγμα 07_02.kodu:

onwater1.png

Έστω ότι θέλουμε να δημιουργήσουμε ένα παιχνίδι στο οποίο ο kodu θα τρέχει σε ένα δρόμο μαζί με άλλα αντικείμενα με σκοπό να τερματίσει πρώτος όπως και πριν. Τώρα όμως αριστερά και δεξιά της πίστας υπάρχουν και λίμνες με νερό. Αν ο Kodu πέσει μέσα σε αυτές το παιχνίδι τελείωνει. Αφού δημιουργήσουμε τον κόσμο και προγραμματίσουμε τα υπόλοιπα αντικείμενα θα προγραμματίσουμε και τον Kodu. Θέλουμε όπως και πριν να κινείται με τα βελάκια και να χάνει μόλις πατήσει το νερό που βρίσκεται γύρω από την πίστα. Και πως θα μπορούσε ο Kodu να αντιληφθεί ότι περπατάει πάνω σε νερό και όχι σε χώμα; Μήπως υπάρχει κάποιος αισθητήρας που μπορεί να τον βοηθήσει να τα διακρίνει; Μα φυσικά! Αυτός είναι ο αισθητήρας on water. Αυτό υλοποιείται με τον τρόπο που φαίνεται στην εικόνα.

onwater2.png

Όπως και προηγουμένως εφόσον θέλουμε να τελειώνει το παιχνίδι όταν πατάει ο Kodu πάνω στο νερό επιλέγουμε στις προυποθέσεις να βάλουμε τον αισθητήρα on water και προσδιοριστικό του τον τύπο νερού (γαλάζιο) και στην συνέχεια σαν ενέργεια το end που δηλώνει την λήξη του παιχνιδιού.

Δηλαδή ΌΤΑΝ [Από το πληκτρολόγιο] [πατηθούν τα βελάκια] ΤΟΤΕ [Κινήσου] ΌΤΑΝ [Είσαι σε νερό] [γαλάζιου τύπου] ΤΟΤΕ [Το παιχνίδι τελειώνει]

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

7.3 Στα κεφάλαια 5 και 6 μιλήσαμε για την συμπεριφορά του Kodu και συγκεκριμένα για τις ενέργειές του. Στο κεφάλαιο αυτό θα επεκταθούμε και σε άλλες ενέργειες, και συγκεκριμένα θα μιλήσουμε για τις ενέργειες Εξέφρασε (express), Πες (say), Χρωμάτισε (color), Παίξε (play), Σταμάτα (quiet).

7.3.1 Η ενέργεια εξέφρασε(express): Η έκφραση συναισθημάτων από τους χαρακτήρες είναι κάτι που δεν έχουμε συνηθίσει να βλέπουμε στα παιχνίδια μέχρι τώρα. Παρόλα αυτά το MSKodu μας δίνει την δυνατότητα να προγραμματίσουμε το κύριο χαρακτήρα μας έτσι ώστε να εκφράζεται ανάλογα με τις περιστάσεις. Ο Kodu λοιπόν μπορεί να εκφράση διάφορα συναισθήματα όπως λύπη,χαρά,θυμό και τρέλα καθώς και ένα συνδιασμό τους. Η εντολή έκφρασης εξυπηρετεί δύο σκοπούς. Ο πρώτος είναι να μπορεί ο χρήστης να καταλαβαίνει την "ψυχολογική" διάθεση του χαρακτήρα έτσι ώστε να προβαίνει στις κατάλληλες αντιδράσεις(πχ να πατήσει κάποιο κουμπί) και να κάνει το παιχνίδι πιο εντυπωσιακό και διαδραστικό. Ο δέυτερος είναι να αλληλεπιδρά ο χαρακτήρας με τα άλλα αντικείμενα αλλά και τον υπόλοιπο κόσμο.

Τι είχε ο προγραμματιστής στο μυαλό του: ΌΤΑΝ [Αισθητήρας] [Προσδιοριστικά αισθητήρα] ΤΟΤΕ [Εξέφρασε] [Προσδιοριστικά έκφρασης]

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

Παράδειγμα 07_03.kodu:

express1.png

Έστω ότι θέλουμε να δημιουργήσουμε ένα παιχνίδι στο οποίο ο Kodu να όταν βλέπει κάποιο άλλο αντικείμενο να χαίρεται. Αφού τελειώσουμε με όλα τα άλλα όταν προγραμματίσουμε τον Kodu θα πρέπει να του βάλουμε στις συνθήκες τον αισθητήρα δεις με προσδιοριστικά τα αντικείμενα που θέλουμε με αντίστοιχη ενέργεια την εξέφρασε και το προσδιοριστικό χαρά. Και πως θα μπορούσε ο Kodu να εκφράσει συναισθήματα; Μήπως υπάρχει κάποια ενέργεια που μπορεί να τον βοηθήσει να το κάνει; Μα φυσικά! Αυτη είναι η ενέργεια Εξέφρασε. Αυτό θα γίνει όπως φαίνεται στην εικόνα.

express2.png

[έξυπνη ερώτηση: που επηρεάζουν οι εκφράσεις την επικοινωνία των αντικειμένων του παιχνιδιού;]

ΌΤΑΝ[Δεις][Αερόστατο] ΤΟΤΕ[Εξέφρασε] [Χαρά] ΌΤΑΝ[Δεις][Μηχανάκια] ΤΟΤΕ[Εξέφρασε] [Χαρά]

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

7.3.2

Η εντολή Πες(say): Όταν αναφερόμαστε στην εντολή λόγου για το Kodu εννοούμε πως εμφανίζεται ένα συννεφάκι με τον συγκεκριμένο λόγο πάνω από τον χαρακτήρα που "μιλάει" και όχι την ανάπτυξη ακουστικής πρότασης από τον χαρακτήρα αυτόν. Η ενέργεια του λόγου είναι παρόμοια με την ενέργεια της έκφρασης και εξυπηρετεί και αυτή στα ίδια ακριβώς πράγματα. Η διαφορά ανάμεσα τους είναι πως με την εντολή λόγου ο χαρακτήρας μπορεί να εκφράσει με ακρίβεια την σκέψη του καθώς είναι αυτή που ακριβώς θα του ορίσουμε εμείς. Αν επιλέξουμε την ενέργεια του λόγου θα μας ζητηθεί να γράψουμε τι θέλουμε να "πει" ο χαρακτήρας μας. Πρέπει να αναφέρουμε πως οι "κακές" λέξεις εμφανίζονται με αστεράκια.

Τι έχει ο προγραμματιστής στο μυαλό του: ΌTAN [Αισθητήρας] [Προσδιοριστικά αισθητήρα] TOTE [Πες] [Προσδιοριστικά λόγου]

Ρήματα συμπεριφορών που θα πρέπει να μας φέρνουν στο μυαλό τον αισθητήρα: πες, μίλα, εξήγησε, κτλπ.

Παράδειγμα 07_04.kodu:

say1.png

Έστω ότι θέλουμε να δημιουργήσουμε ένα παιχνίδι στο οποίο ο Kodu θα λέει "excuse me" σε όποιο αντικείμενο πέσει πάνω. Αφού τελειώσουμε με όλα τα άλλα όταν προγραμματίσουμε τον Kodu θα πρέπει να του βάλουμε στις συνθήκες τον αισθητήρα συγκρούομαι με προσδιοριστικά τα αντικείμενα που θέλουμε με αντίστοιχη ενέργεια την πες και το προσδιοριστικό πρόταση που θα γράψουμε εμείς. Και πως θα μπορούσε ο Kodu να μιλήσει; Μήπως υπάρχει κάποια ενέργεια που μπορεί να τον βοηθήσει να το κάνει; Μα φυσικά! Αυτη είναι η ενέργεια Πες. Αυτό γίνεται όπως δείχνει η εικόνα.

say2.png

[tip: Μην προσπαθήσετε να γράψετε κάτι "κακό", δεν θα το εμφανίσει]

ΌΤΑΝ[Συγκρουστείς με][Οποιοδήποτε ρομπότ] ΤΟΤΕ[Πες] ["excuse me"]

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

7.3.3

Η εντολή χρώματος(color): Η εντολή χρώματος είναι η εντολή με την οποία ο δημιουργός ενός παιχνιδιού μπορεί να προγραμματίσει τον Kodu να αλλάξει χρώμα στον εαυτό του ή και σε κάποιο άλλο αντικείμενο αν συμβεί κάτι. Είναι μια απλή ενέργεια αλλά πολύ σημαντική καθώς δίνει στον χαρακτήρα μας συγκεκριμένο χαρακτήρα. Ένας μωβ Kodu είναι διαφορετικός από ένα ροζ Kodu. Πρέπει να σημειώσουμε πως υπάρχουν συγκεκριμένα χρώματα από τα οποία διαλέγουμε όταν επιλέξουμε να χρησιμοποιήσουμε την εντολή αυτή.

Τι έχει ο προγραμματιστής στο μυαλό του: ΌΤΑΝ [Αισθητήρας] [Προσδιοριστικά αισθητήρα] ΤΟΤΕ [Άλλαξε χρώμα] [Προσδιοριστικό αλλαγής χρώματος]

Ρήματα συμπεριφορών που θα πρέπει να μας φέρνουν στο μυαλό τον αισθητήρα: χρωμάτισε, βάψε, ζωγράφισε,

Παράδειγμα 07_04.kodu:

color1.png

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

color2.png

ΌΤΑΝ[Δεις][Kodu] ΤΟΤΕ[Χρωμάτισε] [Εμένα] [Κόκκινο] ΌΤΑΝ[Δεις][Οποιοδήποτε ρομπότ] ΤΟΤΕ[Χρωμάτισε] [Αυτό] [Τυχαίο χρώμα]

Τα προσδιοριστικά της ενέργειας αυτής είναι τα χρώματα και η επιλογή αν θα αλλάξει χρώμα ο δικός μας χαρακτήρας(me) ή το αντικείμενο που αναφέρεται στον αισθητήρα(it).

7.3.4

Η εντολή παίξε (play): Όπως και σε όλα τα παιχνίδια έτσι και στο Kodu μπορεί να ακούγεται μουσική και ήχοι ανάλογα με το συμβάν. Έτσι έχουμε την ενέργεια παίξε. Με αυτή την εντολή ο δημιουργός του παιχνιδιού δίνει την δυνατότητα στον Kodu να βγάλει (παίξει) κάποιον ήχο. Με άλλα λόγια η ενέργεια αυτή είναι το στόμα του Kodu. Είναι μία ενέργεια που όπως όλες οι άλλες μπορεί να χρησιμοποιηθεί σε συνδυασμό με τους αισθητήρες.

Τι έχει ο προγραμματιστής στο μυαλό του: ΌΤΑΝ [Αισθητήρας] [Προσδιοριστικά αισθητήρα] ΤΟΤΕ [Παίξε] [Προσδιοριστικά ήχου]

Ρήματα συμπεριφορών που θα πρέπει να μας φέρνουν στο μυαλό τον αισθητήρα: παίξε, ακούστηκε, τραγόυδα, κτλπ.

Παράδειγμα 07_06.kodu:

play1.png

Έστω ότι θέλουμε να δημιουργήσουμε ένα παιχνίδι στο οποίο σε όλη τη διάρκειά του θα ακούγεται μουσική. Αφού τελειώσουμε με όλα τα άλλα όταν προγραμματίσουμε τον Kodu θα πρέπει να του βάλουμε στις συνθήκες τον αισθητήρα πάντα με αντίστοιχη ενέργεια την παίξε και το προσδιοριστικό ήχο που θέλουμε. Και πως θα μπορούσε ο Kodu να παίξει κάποιο ήχο; Μήπως υπάρχει κάποια ενέργεια που μπορεί να τον βοηθήσει να το κάνει; Μα φυσικά! Αυτη είναι η ενέργεια Παίξε. Αυτό γίνεται όπως δείχνει η εικόνα.

play2.png

[tip: Αφήστε το ποντίκι πάνω στον ήχο που θέλετε και έτσι θα τον ακόυσετε για να μπορέσετε να πιστοποιήσετε πως είναι ο ιδανικός για αυτό που θέλετε να κάνετε]

ΌΤΑΝ [Από το πληκτρολόγιο] [πατηθούν τα βελάκια] ΤΟΤΕ [Κινήσου] ΌΤΑΝ[Πάντα] ΤΟΤΕ[Παίξε][Τον ήχο Kodu]

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

7.3.4

Η ενέργεια σταμάτα (quiet): Η ενέργεια σταμάτα είναι η εντολή που κάνει ακριβώς την αντίθετη δουλειά της προηγούμενης ενέργειας παίξε. Δηλαδή με την εντολή αυτή ο δημιουργός του παιχνιδιού μπορεί να σταματήσει τον ήχο που δίνει προσδιοριστικό στην ενέργεια αν αυτός ακούγεται. Είναι μία ενέργεια που όπως όλες οι άλλες μπορεί να χρησιμοποιηθεί σε συνδυασμό με τους αισθητήρες.

Τι έχει ο προγραμματιστής στο μυαλό του: ΌΤΑΝ [Αισθητήρας] [Προσδιοριστικά αισθητήρα] ΤΟΤΕ [Σταμάτα] [Προσδιοριστικά ήχου]

Ρήματα συμπεριφορών που θα πρέπει να μας φέρνουν στο μυαλό τον αισθητήρα: σώπασε, σκάσε, ησύχασε, σταμάτα, κτλπ.

Παράδειγμα 07_07.kodu:

quiet1.png

Συνεχίζοντας το προηγούμενο παράδειγμα της ενέργειας παίξε βάζουμε ακόμα ένα δεδομένο σύμφωνα με το οποίο όταν ο Kodu συγκρουστεί με οποιοδήποτε ρομπότ η μουσική που ακούγεται να σταματάει. Αφού τελειώσουμε με όλα τα άλλα όταν προγραμματίσουμε τον Kodu θα πρέπει να του βάλουμε στις συνθήκες και τον αισθητήρα συγκρούεσαι με προσδιοριστικό οποιοδήποτε ρομπότ με αντίστοιχη ενέργεια την σταμάτα και το προσδιοριστικό ήχο που θέλουμε. Και πως θα μπορούσε ο Kodu να σταματήσει κάποιο ήχο; Μήπως υπάρχει κάποια ενέργεια που μπορεί να τον βοηθήσει να το κάνει; Μα φυσικά! Αυτη είναι η ενέργεια Σταμάτα. Αυτό γίνεται όπως δείχνει η εικόνα.

quiet2.png

[tip: Αφήστε το ποντίκι πάνω στον ήχο που θέλετε και έτσι θα τον ακόυσετε για να μπορέσετε να πιστοποιήσετε πως είναι ο ιδανικός για αυτό που θέλετε να κάνετε]

ΌΤΑΝ[Συγκρούεσαι με][Οποιοδήποτε ρομπότ]ΤΟΤΕ[Σταμάτα][Τον ήχο Kodu]

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

**7.4 Η Κάμερα**
Η κάμερα μέχρι αυτό το σημείο του βιβλίου έχει χρησιμοποιηθεί με δυο τρόπους: α) για την πλοήγησή μας στον κόσμο του παιχνιδιού που δημιουργούμε (κυρίως με τη χρήση των πλήκτρων του ποντικιού) β) για να προσδιορίσουμε από ποια οπτική γωνία ο παίκτης θα παρακολουθεί την πλοκή του παιχνιδιού (από τις ιδιότητες του κόσμου). Το περιβάλλον του MSKodu όμως μας δίνει ακόμη μια δυνατότητα για τον έλεγχο της κάμερας κατά τη διάρκεια του παιχνιδιού: μέσω προγραμματισμού, δηλαδή μπορούμε να ελέγξουμε τη θέση της κάμερας μέσω ενεργειών. Οι τρεις ενέργειες που αφορούν την κάμερα βρίσκονται στο menu View των ενεργειών και είναι οι: (α) Follow, (β)First Person (γ )Ignore

Έστω πως ο προγραμματιστής αποφασίζει πως στο παιχνίδι αγώνων που έχει δημιουργήσει θέλει να προσδώσει τύπο κάμερας Follow (ακολουθεί τον πρωταγωνιστή συνεχώς απο πίσω) αλλά ταυτόχρονα θέλει να δώσει την ελευθερία στο χρήστη να θέσει από μόνος του το είδος κάμερας που επιθυμεί κατά την διάρκεια που αλληλεπιδρά με το παιχνίδι. Στην πρώτη εικόνα βλέπουμε την περίπτωση όπου ο προγραμματιστής έχει επιλέξει απο τις ιδιότητες την επιλογή Fixed Offset Camera. Δεδομένου πως ο Kodu δεν έχει προγραμματιστεί διαφορετικά, η κάμερα αυτή θα διατηρήσει τον Kodu στο κέντρο της οθόνης σε όλη την διάρκεια του παιχνιδιού.



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



Όταν ο χρήστης πατήσει το γράμμα C στο πληκτρολόγιο, τότε η κάμερα θα τεθεί σε First Person. Αυτό σημαίνει πώς η εικόνα που θα βλέπει ο χρήστης θα είναι αυτή που βλέπει ο Κodu μέσα απο το μάτια του.



Πληκτρολογώντας το γράμμα B, θα εκτελεστεί η ενέργεια κάμερας Ignore, η οποία θα ακύρωνε τις προγραμματιστικές επιλογές που κάναμε για την κάμερα και θα ενεργοποιούσε την αρχική ιδιότητα του κόσμου σε σχέση με την κάμερα,. Συνεπώς η λειτουργία της κάμερας θα επέστρεφε σε Fixed Offset κατάσταση (όπως δηλαδή στην εικόνα 1). Παρατήρηση: Έχοντας ενεργοποιήσει την επιλογή Fixed Offset στις ιδιότητες του κόσμου, εάν προσπαθήσουμε να εκτελέσουμε την ενέργεια κάμερας Follow (αντί First Person), τότε αυτή δεν θα εκτελεστεί. Ο συνδυασμός Fixed Offset(ιδιότητα) και Follow(επιλογή) δεν είναι εφικτός.

Αν ο προγραμματιστής είχε επιλέξει για τον κόσμο την κατάσταση Camera Mode: Fixed Position τότε τα πράγματα θα άλλαζαν καθώς θα μπορούσε να χρησιμοποιήσει και τις 3 ενέργειες, First Person,Follow και Ignore.

Στην πιο κάτω εικόνα ο προγραμματιστής έχει επιλέξει απο τις ιδιότητες την επιλογή Fixed Position Camera. Δεδομένου πως ο Kodu δεν έχει προγραμματιστεί διαφορετικά, η κάμερα θα μείνει αμετακίνητη σε όλη την διάρκεια παιχνιδιού.



Αντίστοιχα με το προηγούμενο παράδειγμα, αξιοποιώντας τις ενέργειες της κάμερας, μπορούμε να επιτρέψουμε στον χρήστη να αλλάξει τον τρόπο λειτουργίας της. Όταν ο χρήστης πατήσει το γράμμα F στο πληκτρολόγιο, τότε η κάμερα θα τεθεί σε Follow. Αυτό σημαίνει πως η κάμερα θα ακολουθεί συνεχώς την πλάτη του πρωταγωνιστή Kodu.



Ακριβώς οι ίδιες συνθήκες ισχύουν όπως και εδώ όταν ο προγραμματιστής επιλέξει απο τις ιδιότητες Camera Mode: Free.

Η ενέργεια First Person δεν μπορεί να αναπαρασταθεί απο κάποιο μοντέλο κάμερας που υπάρχει στις ιδιότητες. Αντίθετα, η ενέργεια Follow μπορεί να αναπαρασταθεί απο το Camera Mode: Fixed Offset. Επομένως, υπάρχουν περιπτώσεις όπου ο προγραμματιστής υποχρεωτικά πρέπει να επέμβει και στις ιδιότητες για να κάνει τις ρυθμίσεις κάμερας που επιθυμεί να υπάρχει στο παιχνίδι του.

Περίληψη Σε αυτό το κεφάλαιο αναφερόμαστε τις ιδιότητες του κόσμου όπως την διαμόρφωση του περιβάλλοντος (γυάλινο τείχος, ουρανός κτλπ), τον περιορισμό των πόρων, την αποσφαλμάτωση (ακολουθίας μονοπατιού, οπτικής επαφής κτλπ) και τις ρυθμίσεις ήχου, παιχνιδιού και κάμερας. Επιπρόσθετα εξηγήσαμε τους αισθητήρες Σε έδαφος (on land) και Σε νερό (on water) για το πώς χρησιμοποιούνται και ποια είναι η χρησιμότητά τους και είπαμε ποιο είναι το προσδιοριστικό του καθενός. Ακόμη αναλύσαμε ενέργειες που έχουν να κάνουν με την διαδραστικότητα και την επικοινωνία μεταξύ του Kodu και του χρήστη. Τέτοιες ενέργειες είναι οι ενέργειες Εξέφρασε, Πες, Χρωμάτισε, Παίξε, Σταμάτα. Για τις ενέργειες αυτές εξηγήσαμε τα προσδιοριστικά τους. Τέλος δημιουργήσαμε παραδείγματα για τους αισθητήρες και τις ενέργειες που προαναφέραμε.

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

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