[1] Κεφάλαιο 1. GameMaker



Σχετικά έγγραφα
Το τρίτο παιχνίδι ΛΑΒΥΡΙΝΘΟΣ ΜΕ ΕΜΠΟΔΙΑ

Το δεύτερο παιχνίδι ΤΟΥΒΛΑΚΙΑ

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

Ενότητα: GameMaker Τα βασικά. Δημιουργώντας ένα παιχνίδι µε το GameMaker

Δημιουργία παιχνιδιού με το Game Maker

Φύλλο Εργασίας: Παιχνίδι Λαβύρινθος (MAZE) Προγραμματιστικό Εργαλείο: GAME MAKER. Ονοματεπώνυμο:

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010

στο μένες ις ε ε μειώ αι σ σύντο Game Maker 8.1 Ν του συ

Δημιουργία παιχνιδιού με το Game Maker 8.1 Lite 1

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

Φύλλο Εργασίας: Παιχνίδι Λαβύρινθος (MAZE) Προγραμματιστικό Εργαλείο: SCRATCH. Ονοματεπώνυμο:

Games: Εξοικείωση με το περιβάλλον του Game Maker μέσα από την κατασκευή ενός παιχνιδιού

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

Αναπαραγωγή με αρχεία ήχου

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

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

1ο μέρος 1. Φτιάχνουμε την πίστα. Μια ενδεικτική πίστα φαίνεται παρακάτω:

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

Ελέγξτε την ταινία σας

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

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

Σημειώσεις στο PowerPoint

Τροποποίηση συνδυασμών κίνησης

ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ. Από τον κατάλογο που εμφανίζεται επιλέγω: Αποστολή προς Δισκέτα (3,5)

1ο Φύλλο Εργασίας. της παλέτας Ήχος. Πώς μπορούμε να εισάγουμε και να αναπαράγουμε έναν ήχο;

Προγραμματισμός. Το περιβάλλον του scratch

Slalom Race Computer Game on Scratch

ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΤΗΣ. Εργαλειοθήκη Παρουσιάζετε το έργο σας Εκκινείτε τα σενάριά σας Σταματάτε όλα τα σενάρια. Οι 8 ομάδες της Παλέτας εντολών

Ποιές εντολές του Scratch πρέπει να ξέρω;

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

Κεφάλαιο 1 Χρήση προτύπου 2. Κεφάλαιο 2 Τροποποίηση μιας παρουσίασης 9. Κεφάλαιο 4 Προσθήκη αντικειμένων 26. Κεφάλαιο 5 Ειδικά εφέ 35

Δημιουργία παρουσιάσεων (Power Point)

ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ ΠΑΙΧΝΙΔΙ.

Πρακτικές συμβουλές κατά την πληκτρολόγηση ., ; :! ( ) " " Άνοιγμα και αποθήκευση εγγράφου Αρχείο, Άνοιγμα. Αρχείο / Αποθήκευση

3 ο εργαστήριο Scratch for NinjaCoders

ΒΑΣΙΚΑ ΜΑΘΗΜΑΤΑ ΝΤΟΥΛΑΚΗΣ - ΜΕΝΙΟΥΔΑΚΗΣ ΕΠΑ.Λ ΕΛ. ΒΕΝΙΖΕΛΟΥ

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

Δημιουργία προσαρμοσμένης διαδρομής κίνησης και αλλαγή του μεγέθους της με χρήση σημείων επεξεργασίας

Αλλαγή της εμφάνισης κειμένου: μέγεθος γραμματοσειράς, είδος γραμματοσειράς

Η εντολή «επανέλαβε Χ»

Μάθημα 1: Εισαγωγή. Κάνε κλικ την εντολή "κινήσου" και με το ποντίκι πατημένο μετέφερε τη στη περιοχή σεναρίων.

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

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo;

Λεπτομέριες τοιχοποιίας Σχεδίαση κάτοψης

Εφαρμογή δημιουργίας σεναρίων Sctatch

Τα Windows Πολύ Απλά και Πολύ Σύντομα

Ταυτότητα εκπαιδευτικού σεναρίου

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ: Εντολές κίνησης και στροφής στο προγραμματιστικό περιβάλλον Scratch. ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

7.Α.1 Παρουσιάσεις. 7.Α.2 Περιγραφή περιεχομένων της εφαρμογής

MANAGER SIDE BAR. Μία άλλη λειτουργία είναι το ξυπνητήρι. Μπορείτε να ορίσετε τον χρόνο υπενθύμισης. Μετά την λήξη του χρόνου θα ειδοποιηθείτε ηχητικά

1. Τα τμήματα της επιφάνειας εργασίας των Windows

Παλέτα Κίνηση. Για να μετακινήσουμε ένα αντικείμενο χρησιμοποιούμε την εντολή ΚΙΝΗΣΟΥ

Η Δραστηριότητα 1 του Φύλλου Εργασίας 1 έχει ως στόχο την εξοικείωση με το περιβάλλον του scratch και πιο συγκεκριμένα με τις μορφές και τα σκηνικά.

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

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

Γνωρίστε το χώρο εργασίας του PowerPoint

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

Scratch 2.0 Προκλήσεις

Μαθήματα Scratch -Δραστηριότητα 1 Παλέτα Κίνηση

Βιωματικό εργαστήριο ηλεκτρονικών υπολογιστών. Οργάνωση εκπαιδευτικού υλικού με Η/Υ από δραστηριότητες στο Δημοτικό και στο Νηπιαγωγείο.

B) Ετοιμάζοντας μια Παρουσίαση

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

Περιεχόμενα. Λίγα λόγια από το συγγραφέα Windows Vista Επιφάνεια εργασίας Γραμμή εργασιών... 31

Ο ΗΓΙΕΣ DOCUMENT DESIGNER

Γεωργάκης Αριστείδης ΠΕ20

Τετράδια Κιθάρας. Χρήση του PowerTab

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

Το λογισμικό παρουσιάσεων Power Point 2007

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

Εφέ επικάλυψης χρησιμοποιώντας χρονικές καθυστερήσεις

Breakdance Computer Game σε Scratch.

ΣΚΗΝΙΚΟ ΥΠΟΒΑΘΡΑ ΑΡΧΙΚΗ

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

Εγκατάσταση αρχείων βιβλιοθήκης VHOPE και VHOPE

Βασικές Εντολές MicroWorlds Pro.

«Αβάκιο» Οδηγός χρήσης Μικρόκοσμου που αποτελείται από τις ψηφίδες Καμβάς, Χελώνα, Γλώσσα, Μεταβολέας, Χρώματα.

Οδηγίες Εγκατάστασης της εφαρμογής Readium και Readium για μαθητές με αμβλυωπία για την ανάγνωση βιβλίων epub σε Υπολογιστή.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ

Παλέτα Κίνηση. Καλό είναι πριν ξεκινήσετε το παρακάτω φυλλάδιο να έχετε παρακολουθήσει τα παρακάτω δύο videos: a) Εισαγωγή στο περιβάλλον του Scratch

Movie Maker (Δημιουργία βίντεο)

Tank Rescue Computer Game σε Scratch

Σχεδίαση και ανάπτυξη δραστηριοτήτων στο προγραμματιστικό περιβάλλον MicroWorlds Pro

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access Κεφάλαιο 2: Microsoft Access

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

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

Παρατηρώντας την κίνηση των παιδιών Πλοήγηση

Εισαγωγή 6. Δημιουργία λογαριασμού 13. Εγκατάσταση και λειτουργία του Skype 28. Βασικές λειτουργίες 32. Επιλογές συνομιλίας 48

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

Εγχειρίδιο χρήσης Εκπαιδευτικού λογισμικού «Αθηνά Core 4»

Γνωριμία με το περιβάλλον

Οδηγίες Χρήσης Εφαρμογής

Δραστηριότητα 1 Σχεδιασμός σκηνικού

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

Οδηγίες για τη Χρήση του Google Drive

Φτιάξε ένα απλό παιχνίδι

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: PowerPoint Κεφάλαιο 2: Εκκίνηση του PowerPoint... 13

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

Copyright 2017 HP Development Company, L.P.

Scratch Δημοτικό 2 : Εισαγωγή στις βασικές εντολές και λειτουργίες της Scratch

Transcript:

Κεφάλαιο 1. GameMaker Το Game Maker είναι ένα περιβάλλον ανάπτυξης λογισμικού που γράφτηκε από τον Mark Overmars το 2000. Το περιβάλλον έχει σχεδιαστεί για την εύκολη δημιουργία παιχνιδιών σε υπολογιστή χωρίς να χρειάζεται να γνωρίζει κανείς πολύπλοκες γλώσσες προγραμματισμού όπως η C++ ή η Pascal. Οι έμπειροι χρήστες του Game Maker μπορούν να χρησιμοποιήσουν την ενσωματωμένη γλώσσα ανάπτυξης σεναρίων που ονομάζεται Game Maker Language GML. Τα παιχνίδια που κατασκευάζει κανείς με το GameMaker μπορεί να τα διανέμει αυτόνομα με όποια μορφή άδειας επιθυμεί. Το περιβάλλον είναι διαθέσιμο σε μια έκδοση δωρεάν και μια με καταχώρηση η οποία έχει μερικές δυνατότητες επιπλέον με συμβολικό κόστος. Το GameMaker δεν είναι ευρύτερα γνωστό ούτε χρησιμοποιείται για ανάπτυξη παιχνιδιών όσο άλλες πλατφόρμες. Παρ όλα αυτά έχει προσελκύσει το ενδιαφέρον σημαντικού αριθμού χρηστών κυρίως εξ αιτίας της ευκολίας που παρέχει στους αρχάριους χωρίς να θυσιάζει την πολυπλοκότητα των επιτεύξιμων έργων. Άλλο πλεονέκτημα του περιβάλλοντος είναι η υποστήριξη ανάπτυξης μεγάλης γκάμας διαφορετικών ειδών παιχνιδιών μεταξύ των οποίων και παιχνίδια πολλών παιχτών και προσομοιώσεων. Το GameMaker συνδυάζει τον αντικειμενοστρεφή, καθοδηγούμενο από γεγονότα προγραμματισμό με εικονίδια ο οποίος σε μεγάλο βαθμό υλοποιείται σέρνοντας εικονίδια πράξεων ώστε να συνδεθούν με τα κατάλληλα γεγονότα. Στα επόμενα θα δούμε ένα παράδειγμα δημιουργίας απλού παιχνιδιού από την εκτενή τεκμηρίωση του εργαλείου που είναι διαθέσιμη στον δικτυακό του τόπο: http://www.gamemaler.nl. 1.1 Ένα παράδειγμα. Μάθημα: Το πρώτο μας παιχνίδι Copyright 2003-2004, Mark Overmars Τελευταία τροποποίηση: September 1, 2004 Έκδοση GameMaker: version 6.0, simple mode Επίπεδο: Beginner Το μάθημα αυτό απευθύνεται σε όσους αντιμετωπίζουν προβλήματα στο ξεκίνημά τους με το Game Maker. Θα σας οδηγήσει βήμα προς βήμα στην διαδικασία της κατασκευής του πρώτου σας παιχνιδιού. Λάβετε υπόψη ότι αυτό είναι το δυσκολότερο μέρος. Για να δημιουργήσετε το πρώτο σας παιχνίδι χρειάζεται να κατανοήσετε ένα πλήθος από βασικά στοιχεία του Game Maker. Γι αυτό προσπαθήστε να διαβάσετε προσεκτικά και να κατανοήσετε όλα τα βήματα. Εφόσον ολοκληρώσετε το πρώτο παιχνίδι η κατασκευή του δεύτερου θα είναι πολύ ευκολότερη. [1]

1.1.1 Η ιδέα του παιχνιδιού Είναι σημαντικό να γράψουμε αρχικά μια συνοπτική περιγραφή του παιχνιδιού που σκοπεύουμε να δημιουργήσουμε. Επειδή πρόκειται για το πρώτο μας παιχνίδι είναι προτιμότερο να σχεδιάσουμε κάτι απλό. Θα φτιάξουμε ένα απλό παιχνίδι δράσης (action game) που θα διατηρεί το ενδιαφέρον του παίκτη για ένα μικρό σχετικά χρονικό διάστημα. Το όνομα του παιχνιδιού είναι: Το κυνήγι του Κλόουν (Catch the Clown), ένα εύστοχο όνομα πάντα βοηθά. Ακολουθεί σύντομη περιγραφή του παιχνιδιού: Το κυνήγι του Κλόουν Το κυνήγι του κλόουν είναι ένα απλό παιχνίδι δράσης. Ένας κλόουν τριγυρίζει (moves around) σε ένα αγωνιστικό χώρο (γήπεδο - playing field). Σκοπός του παίχτη είναι να πιάσει τον κλόουν κάνοντας κλικ πάνω του. Κάθε φορά που ο παίκτης πιάνει τον κλόουν αυτός αρχίζει να κινείται ταχύτερα δυσκολεύοντας το κυνηγητό. Το σκορ αυξάνει με κάθε πιάσιμο και ο τελικός στόχος είναι η μεγιστοποίηση της βαθμολογίας του παίκτη. Η αναμενόμενη διάρκεια του παιχνιδιού είναι μερικά λεπτά. Είναι φανερό ότι ένα τέτοιο παιχνίδι είναι περιορισμένης ελκυστικότητας αλλά πρέπει να ξεκινήσουμε με κάτι απλό. Αργότερα μπορούμε να προσθέσουμε κάποια στοιχεία για να το κάνουμε πιο ενδιαφέρον. 1.1.2 Ο σχεδιασμός Το δεύτερο βήμα στην δημιουργία του παιχνιδιού είναι η σύνταξη ενός πιο λεπτομερούς σχεδίου. Προτείνεται να κάνετε πάντα σχέδιο ακόμα και για τα απλά παιχνίδια. Η σύντομη περιγραφή παραπάνω, μαζί με το κείμενο που ακολουθεί αποτελούν το σχέδιο για το κυνήγι του κλόουν : Σχέδιο για το κυνήγι του κλόουν Αντικείμενα του παιχνιδιού Θα υπάρχουν μόνο δύο αντικείμενα: ο κλόουν και ο τοίχος. Το αντικείμενο τοίχος έχει ένα τετράγωνο σχήμα και θα χρησιμοποιηθεί για την κατασκευή του τοίχου γύρω από το γήπεδο. Ο τοίχος δεν κάνει τίποτα άλλο από το να εμποδίζει τον κλόουν να κινηθεί έξω από το γήπεδο. Το αντικείμενο κλόουν έχει γραφική αναπαράσταση ένα πρόσωπο κλόουν και κινείται με σταθερή ταχύτητα. Κάθε φορά που κτυπά σε τοίχο ο κλόουν αναπηδά. Όταν ο παίκτης κάνει κλικ πάνω στον κλόουν με το ποντίκι: 1. Η βαθμολογία του αυξάνεται κατά 10 πόντους, 2. Ο κλόουν πηδά σε μια νέα τυχαία θέση και 3. Η ταχύτητα του αυξάνεται κατά ένα μικρό ποσό Ήχοι Θα χρειαστούμε δύο ήχους για το παιχνίδι. Έναν για την αναπήδηση που θα ακούγεται όταν ο κλόουν κτυπά σε τοίχο καθώς και έναν ήχο που θα ακούγεται όταν ο παίκτης πετυχαίνει τον κλόουν με κλικ. Χειριστήρια Το μόνο χειριστήριο που θα διαθέτει ο παίκτης είναι το ποντίκι. Το αριστερό κλικ του ποντικιού πάνω στον κλόουν θα σημαίνει το πιάσιμο του. Η ροή (πλοκή?) του παιχνιδιού Στην αρχή του παιχνιδιού η βαθμολογία του παίκτη μηδενίζεται και εμφανίζεται το δωμάτιο (γήπεδο?) με τον κλόουν να κινείται. Το παιχνίδι ξεκινά αμέσως μετά και τερματίζεται με το πλήκτρο διαφυγής <Esc>. Επίπεδα Υπάρχει ένα και μόνο επίπεδο. Η δυσκολία του παιχνιδιού αυξάνεται εξαιτίας της αύξησης της ταχύτητας κάθε φορά που ο παίκτης πιάνει τον κλόουν. Το σχέδιο αυτό είναι αρκετό προς το παρόν. Μπορούμε τώρα να αρχίσουμε να δημιουργούμε το παιχνίδι γι αυτό ξεκινήστε το Game Maker. Στο μάθημα αυτό υποθέτουμε ότι υπάρχει διαθέσιμη η έκδοση 6.0 του Game Maker ρυθμισμένη να τρέχει σε απλή μορφή. Το μάθημα μπορεί να χρησιμοποιηθεί και σε άλλες εκδόσεις του περιβάλλοντος Game Maker με ελάχιστες διαφορές ενώ η κατάσταση λειτουργίας του Game Maker μπορεί να εναλλάσσεται μεταξύ της απλής (simple) και της προηγμένης (advanced) από το στοιχείο Advanced Mode του μενού File. Στην προηγμένη κατάσταση εμφανίζονται πολύ περισσότερες επιλογές στα διάφορα μενού και τις φόρμες αλλά δεν τις χρειαζόμαστε για το απλό παιχνίδι του κλόουν. Στην πραγματικότητα, το παιχνίδι που πρόκειται να δημιουργήσουμε περιέχεται έτοιμο στον φάκελο example του πρόγραμματος μαζί με όλα τα εικονίδια, τους ήχους κλπ. Μπορείτε να το φορτώσετε αλλά προτείνεται να το αναδημιουργήσετε ακολουθώντας τα βήματα που περιγράφονται παρακάτω. Έτσι θα κατανοήσετε καλύτερα πώς κατασκευάζεται ένα παιχνίδι στο Game Maker. [2]

1.1.3 Προσθήκη εικονιδίων και ήχων Όπως περιγράφεται στο σχέδιο του παιχνιδιού θα χρειαστούμε δύο εικόνες για τα αντίστοιχα αντικείμενα του παιχνιδιού. Οι γραφικές αναπαραστάσεις των αντικειμένων στο Game Maker λέγονται sprites (καλικαντζούρες) αλλά εμείς θα τις λέμε απλά εικόνες. Υπάρχουν πολλά που πρέπει να μάθουμε για τις εικόνες αυτές αλλά όχι στο μάθημα αυτό. Προς το παρόν πρέπει να δημιουργήσουμε ή να βρούμε τέτοιες εικόνες. Για την δημιουργία των εικόνων υπάρχει ενσωματωμένο στο Game Maker σχεδιαστικό πρόγραμμα αλλά μπορείτε να χρησιμοποιήσετε και οποιοδήποτε σχεδιαστικό πρόγραμμα της αρεσκείας σας, όπως το Ζωγραφική που παρέχεται μαζί με τα windows. Η δημιουργία όμορφων εικόνων είναι τέχνη που απαιτεί αρκετή εξάσκηση. Ευτυχώς υπάρχουν μεγάλες συλλογές εικόνων όλων των ειδών διαθέσιμες δωρεάν. Μερικές από αυτές διατίθενται μαζί με το Game Maker ενώ στον δικτυακό τόπο www.gamemaker.nl μπορείτε να βρείτε κι άλλες. Εναλλακτικά μπορείτε να ψάξετε στον παγκόσμιο ιστό (www) και θα βρείτε μεγάλες ποσότητες εικόνων. Για το μικρό μας παιχνίδι θα πάρουμε δύο εικόνες από την ενσωματωμένη συλλογή default. Τον κλόουν: και τον τοίχο:. Για να προσθέσετε τις εικόνες στο παιχνίδι επιλέξτε Add Sprite από το μενού Add. Θα εμφανισθεί η επόμενη φόρμα: Πιέστε το κουμπί Load Sprite και επιλέξτε το αρχείο που περιέχει την εικόνα του κλόουν (θα το βρείτε στον υποφάκελο resources του φακέλου example). Η εικόνα θα εμφανισθεί μέσα στην φόρμα. Συμπληρώστε το πεδίο Name με ένα ταιριαστό όνομα για την εικόνα όπως spr_clown για παράδειγμα. (Ξεκινώντας όλα τα ονόματα των εικόνων με το πρόθεμα spr_ θα μπορείτε εύκολα να καταλάβετε ότι το όνομα αντιστοιχεί σε εικόνα. Η τήρηση τέτοιων συμβάσεων ονοματολογίας με συνέπεια, είναι καλή πρακτική.) Σημειώστε ότι η ιδιότητα Transparent (Διαφανής) είναι επιλεγμένη. Αυτό σημαίνει ότι το χρώμα υπόβαθρου της εικόνας θα είναι διαφανές ώστε να μπορείτε να δείτε το πραγματικό υπόβαθρο μέσα από αυτό. Γενικά θέλετε οι εικόνες σας να έχουν διάφανο υπόβαθρο. [3]

Πατήστε το κουμπί ΟΚ και η εικόνα θα προστεθεί. Κάντε το ίδιο και με την εικόνα για τον τοίχο την οποία θα ονομάσετε spr_wall. Όπως ίσως θα παρατηρήσατε, τα ονόματα των δύο εικόνων εμφανίζονται τώρα στα αριστερά του παραθύρου του Game Maker. Στο χώρο αυτό θα βρίσκετε πάντα όλες τις εικόνες, τους ήχους, τα αντικείμενα, τα δωμάτια κλπ στοιχεία που θα ορίζετε. Τα στοιχεία αυτά θα τα λέμε με ένα όνομα πόρους (resources) του παιχνιδιού. Για να επιλέξετε ένα πόρο αρκεί να κάνετε κλικ πάνω στο όνομα του. Μπορείτε να επεξεργαστείτε ένα επιλεγμένο πόρο (αλλαγή, κλωνοποίηση, διαγραφή) με το μενού Edit. Τις ίδιες επιλογές θα δείτε και με δεξί κλικ πάνω στο όνομα του πόρου. Η συστηματική επισκόπηση των πόρων γίνεται κρίσιμη σε πολύπλοκα παιχνίδια. Μετά τις δύο εικόνες θα προσθέσουμε και τα δύο ηχητικά εφέ. Το ένα θα παίζει όταν ο κλόουν κτυπά σε τοίχο και το άλλο όταν ο κλόουν πιαστεί με το ποντίκι. Για το σκοπό αυτό θα χρησιμοποιήσουμε δύο αρχεία κυματομορφής (wave) που είναι ότι πρέπει για σύντομα ηχητικά εφέ. Όπως και με τις εικόνες, με την εγκατάσταση του Game Maker αποκτάτε αρκετά, ενώ περισσότερα μπορείτε να βρείτε στο διαδίκτυο. Μπορείτε επίσης να τα δημιουργήσετε μόνοι σας αλλά αυτό απαιτεί οπωσδήποτε κάποιες δεξιότητες. Για να προσθέσετε τον ήχο της αναπήδησης επιλέξτε Add Sound από το μενού Add. Εμφανίζεται μια φόρμα με την οποία μπορείτε να αλλάξετε τις ιδιότητες του ήχου. Πατήστε το κουμπί Load Sound για να επιλέξετε τον σωστό ήχο. Ονομάστε τον ήχο: snd_bounce. Η φόρμα ιδιοτήτων ήχου θα εμφανίζεται τώρα όπως παρακάτω: Με το κουμπί με το πράσινο τριγωνάκι που δείχνει προς τα δεξιά μπορείτε να ακούσετε τον ήχο. Πατήστε ΟΚ για να ολοκληρώσετε την εισαγωγή. Εισάγετε με τον ίδιο τρόπο τον ήχο για το κλικ και ονομάστε τον snd_click. Παρατηρήστε πάλι ότι οι δύο ήχοι εμφανίζονται στα αριστερά του παραθύρου στην επισκόπηση των πόρων. 1.1.4 Αντικείμενα και δράσεις Η προσθήκη των εικόνων και των ήχων δεν αρκεί, πρέπει να ορίσουμε τα αντικείμενα που αναπαριστούν οι εικόνες και πότε θα ακουστούν οι ήχοι. Παρακάτω θα ορίσουμε τα δύο αντικείμενα που χρειαζόμαστε αφού εξηγήσουμε τον βασικό τρόπο λειτουργίας του Game Maker. Σε κάθε παιχνίδι έχουμε ένα σύνολο αντικειμένων. Κατά την εκτέλεση του παιχνιδιού εμφανίζονται στην οθόνη ένα ή περισσότερα στιγμιότυπα (instances) αυτών των αντικειμένων στην οθόνη ή πιο γενικά σ αυτό που λέμε κόσμο του παιχνιδιού. Σημειώστε ότι είναι δυνατό να υπάρχουν πολλαπλά στιγμιότυπα του ίδιου αντικειμένου. Για παράδειγμα στο κυνήγι του κλόουν θα υπάρχει μεγάλος αριθμός στιγμιότυπων του αντικειμένου τοίχος ώστε να περικυκλώνει το γήπεδο ενώ θα υπάρχει μόνο ένα στιγμιότυπο του αντικειμένου κλόουν. Τα στιγμιότυπα των αντικειμένων δεν παρουσιάζουν κάποιο είδος δράσης εκτός και αν τους ορίσουμε εμείς. Η δράση-συμπεριφορά των αντικειμένων ορίζεται ως αντίδραση σε κάποιο γεγονός (event). Υπάρχουν διάφορα είδη γεγονότων που συμβαίνουν στα στιγμιότυπα των αντικειμένων. Το πρώτο σημαντικό γεγονός συμβαίνει με την δημιουργία του αντικειμένου και ονομάζεται Creation Event. Συχνά κάποια αντίδραση απαιτείται για το συμβάν της δημιουργίας, για παράδειγμα στην περίπτωση του κλόουν θα πρέπει να του πούμε να αρχίσει να κινείται προς κάποια κατεύθυνση. Ένα άλλο σημαντικό γεγονός συμβαίνει όταν δύο στιγμιότυπα συγκρουστούν (Collision Event). Για παράδειγμα όταν ένα στιγμιότυπο του κλόουν συγκρουστεί με ένα στιγμιότυπο του τοίχου, ο κλόουν πρέπει να αντιδράσει αλλάζοντας την κατεύθυνση στην οποία κινείται. Άλλα γεγονότα συμβαίνουν επίσης όταν ο παίκτης-χρήστης πιέσει ένα πλήκτρο ή κάνει κλικ με το ποντίκι σε ένα στιγμιότυπο. Στην περίπτωση του κλόουν θα αξιοποιήσουμε ένα γεγονός ποντικιού (Mouse Event) για να τον κάνουμε να αντιδρά όταν ο παίκτης κάνει κλικ πάνω του. Για να υποδείξετε τι πρέπει να γίνει όταν συμβεί ένα γεγονός ορίζετε δράσεις-εντολές (actions). Υπάρχουν πολλές χρήσιμες δράσεις από τις οποίες επιλέγετε κάθε φορά. Για παράδειγμα, υπάρχει μια εντολή για την επιλογή της κατεύθυνσης της κίνησης ενός στιγμιότυπου, άλλη για την αλλαγή της βαθμολογίας του παίκτη, άλλη για την αναπαραγωγή ενός ήχου κλπ [4]

Έτσι ο ορισμός ενός αντικειμένου περιλαμβάνει: Την απόδοση μιας εικόνας που να αναπαριστά το αντικείμενο Τον καθορισμό των τιμών κάποιων ιδιοτήτων Την υπόδειξη των γεγονότων στα οποία θα πρέπει να αντιδρούν τα στιγμιότυπα και ποιες δράσεις θα πρέπει να υλοποιηθούν κατά την αντίδραση. Σημειώστε ότι γίνεται διάκριση μεταξύ των αντικειμένων (object) και των στιγμιότυπων (instances) τους. Ένα αντικείμενο ορίζει ένα συγκεκριμένο αντικείμενο του παιχνιδιού με την συμπεριφορά του (δηλαδή τις αντιδράσεις στα γεγονότα). Είναι δυνατό να υπάρχουν πολλά στιγμιότυπα από κάποιο αντικείμενο σε ένα παιχνίδι. Τα στιγμιότυπα αυτά θα δρουν σύμφωνα με την συμπεριφορά που τους έχουμε προκαθορίσει. Με άλλα λόγια τα αντικείμενα είναι αφηρημένες προδιαγραφές για τα στιγμιότυπα τους. Τα αντικείμενα είναι ένα είδος σχεδίων για την κατασκευή των στιγμιότυπων. Ας γυρίσουμε όμως στην κατασκευή του παιχνιδιού μας. Θα ορίσουμε πρώτα το αντικείμενο τοίχος που είναι τόσο απλό ώστε να μην έχει καθόλου συμπεριφορά. Επιλέξτε Add Object από το μενού Add για να προσθέσετε ένα νέο αντικείμενο. Με την επιλογή θα εμφανισθεί η επόμενη μάλλον πολύπλοκη φόρμα: Στο αριστερό μέρος υπάρχουν χειριστήρια για μερικές ιδιότητες του αντικειμένου. Ορίστε obj_wall για όνομα του αντικειμένου. Για να ορίσετε την εικόνα κάντε κλικ στο μενού κάτω και δεξιά από την λέξη Sprite. Θα εμφανιστεί ένα μενού με όλες τις διαθέσιμες εικόνες (τον κλόουν και τον τοίχο). Διαλέξτε την εικόνα του τοίχου. Ο τοίχος είναι συμπαγής με την έννοια ότι δεν μπορούν άλλα αντικείμενα να περνάνε από μέσα του. Για να δηλώσουμε την ιδιότητα αυτή στο πρόγραμμα επιλέγουμε την ιδιότητα Solid (Συμπαγές) με κλικ. Πιέστε το κουμπί OK για να ολοκληρώσετε τον ορισμό του αντικειμένου. Για να ορίσουμε το αντικείμενο κλόουν προσθέτουμε ένα νέο αντικείμενο όπως παραπάνω, το ονομάζουμε obj_clown και επιλέγουμε την κατάλληλη εικόνα. Ο κλόουν δεν χρειάζεται να είναι συμπαγής αλλά υπάρχουν πολλά άλλα που πρέπει να γίνουν για να καθορισθεί η συμπεριφορά του. Στην μέση της φόρμας υπάρχει μια άδεια λίστα με τρία κουμπιά από κάτω της. Η λίστα αυτή περιέχει τα γεγονότα στα οποία το αντικείμενο θα πρέπει να μάθει να αντιδρά. Με τα κουμπιά μπορούμε να προσθέτουμε, να διαγράφουμε και να αλλάζουμε γεγονότα. Υπάρχει μεγάλος αριθμός διαφορετικών γεγονότων αλλά συνήθως χρειαζόμαστε μόνο μερικά από αυτά. Δίπλα στην λίστα με τα γεγονότα υπάρχει μια κενή λίστα που θα περιέχει τις δράσεις-εντολές που θα εκτελεστούν αν συμβεί το επιλεγμένο στην αντίστοιχη λίστα γεγονός. Δεξιά από αυτή τη λίστα υπάρχουν καρτέλες με εικονίδια που αναπαριστούν δράσεις. Συνολικά υπάρχουν περίπου 100 διαφορετικές δράσεις για να διαλέξετε. Τοποθετώντας τον δείκτη του ποντικιού πάνω σε ένα από αυτά τα εικονίδια εμφανίζεται μια σύντομη περιγραφή της αντίστοιχης δράσης. Σέρνοντας εικονίδια στην λίστα των δράσεων συντάσσουμε την συμπεριφορά του αντικειμένου για το επιλεγμένο γεγονός. Κάντε κλικ στο κουμπί Add Event για να ορίσουμε τι πρέπει να συμβεί όταν δημιουργείται ένα στιγμιότυπο του αντικειμένου κλόουν. Ο κλόουν μόλις δημιουργηθεί θα πρέπει να αρχίσει να κινείται προς τυχαία κατεύθυνση. Στο παράθυρο επιλογής γεγονότων κάντε κλικ στο κουμπί Create ώστε να προστεθεί το αντίστοιχο γεγονός στην λίστα των γεγονότων. [5]

Επιλέξτε το γεγονός αν δεν είναι ήδη επιλεγμένο και κατόπιν σύρατε το εικονίδιο με τα οκτώ κόκκινα βελάκια στην λίστα των δράσεων. Η δράση του εικονιδίου έχει ως αποτέλεσμα την κίνηση του στιγμιότυπου προς μια συγκεκριμένη κατεύθυνση. Με το σύρσιμο θα εμφανισθεί η επόμενη φόρμα για να ορίσουμε μερικές λεπτομέρειες για την κίνηση. Αγνοήστε προς το παρόν το τμήμα Applies to (Εφαρμογή σε), πατήστε όλα τα βελάκια (εκτός από το μεσαίο με το τετράγωνο) ώστε να κινηθεί ο κλόουν προς τυχαία κατεύθυνση. Το μεσαίο κουμπί θα σταματήσει τον κλόουν. Ορίστε επίσης την ταχύτητα στο 4 και πατήστε το κουμπί ΟΚ για να ολοκληρωθεί ο ορισμός της δράσης. Η φόρμα ιδιοτήτων αντικειμένου θα μοιάζει τώρα με την επόμενη: Το επόμενο γεγονός που χρειάζεται να ορίσουμε είναι η σύγκρουση με ένα αντικείμενο τοίχο. Κάντε κλικ πάλι στο κουμπί Add Event και επιλέξτε το κουμπί με τίτλο Collision. Θα εμφανιστεί ένα μενού με όλα τα υπάρχοντα [6]

αντικείμενα (τοίχος και κλόουν) επιλέξτε τον τοίχο. Για την συμπεριφορά του κλόουν σε περίπτωση σύγκρουσης θα χρησιμοποιήσουμε την δράση αναπήδηση (bounce), το εικονίδιό της δείχνει ένα βέλος που ανακλάτε από ένα τοίχο (τέρμα κάτω δεξιά στην πρώτη καρτέλα εικονιδίων). Σύρατε το στη λίστα των δράσεων και θα εμφανισθεί η επόμενη φόρμα. Υπάρχουν δύο ιδιότητες-παράμετροι που μπορούμε να αλλάξουμε αλλά αφήστε τις εξ ορισμού τιμές. Πατήστε ΟΚ για να ολοκληρωθεί ο ορισμός της δράσης. Κατά την σύγκρουση θέλουμε επίσης να αναπαράγεται ένας ήχος. Οι δράσεις που σχετίζονται με τους ήχους υπάρχουν στην καρτέλα main1. Επιλέξτε την δράση Play Sound που έχει σαν εικονίδιο ένα ηχείο και σύρατε την στην λίστα δράσεων ώστε να εμφανισθεί η επόμενη φόρμα: Με τη φόρμα αυτή μπορούμε να διαλέξουμε ποιος ήχος θα αναπαραχθεί και αν θα ακουστεί μια φορά ή συνεχώς. Διαλέξτε τον ήχο snd_bounce από το πρώτο μενού και αφήστε την δεύτερη παράμετρο με τιμή false ώστε να ακουστεί μόνο μια φορά ο ήχος. Κάντε κλικ στο OK, η φόρμα ιδιοτήτων αντικειμένου θα είναι τώρα όπως η επόμενη: [7]

Υπάρχουν δύο δράσεις (ενέργειες-εντολές) που θα λάβουν χώρα με την σειρά που εμφανίζονται σε περίπτωση σύγκρουσης. Αν για κάποιο λόγο θέλετε να αφαιρέσετε μια δράση μπορείτε να επιλέξετε Delete στο μενού που θα εμφανισθεί με δεξί κλικ πάνω στην συγκεκριμένη δράση. Είναι επίσης δυνατό να αλλάξουμε τιμές στις παραμέτρους των δράσεων με διπλό κλικ και να τους αλλάξουμε σειρά σέρνοντας τις πάνω ή κάτω. Χρειάζεται τέλος να ορίσουμε τι θα συμβαίνει όταν ο χρήστης κάνει αριστερό κλικ πάνω στον κλόουν. Κάντε κλικ στο Add Event και επιλέξτε γεγονότα Mouse. Από το μενού που εμφανίζεται επιλέξτε Left pressed που αντιστοιχεί στο αριστερό κλικ. Θα ορίσουμε τρεις ενέργειες, η πρώτη θα αυξάνει την βαθμολογία. Το Game Maker κρατά και εμφανίζει αυτόματα μια βαθμολογία. Για να αυξήσετε την βαθμολογία σύρατε το εικονίδιο δράσης που δείχνει τρία κέρματα από την καρτέλα δράσεων με όνομα score. Θα εμφανισθεί η επόμενη φόρμα: Πληκτρολογήστε 10 και επιλέξτε την επιλογή Relative (σχετική αύξηση) όπως φαίνεται παραπάνω ώστε να αυξάνεται αντίστοιχα η βαθμολογία. Πατήστε ΟΚ για να κλείσετε τη φόρμα. Η επόμενη ενέργεια είναι να αναπαραχθεί ο ήχος του κλικ. Επαναλάβετε τα βήματα που ακολουθήσαμε για τον ήχο της αναπήδησης στο προηγούμενο γεγονός. Μετά πρέπει να κάνουμε τον κλόουν να πηδήξει σε μια νέα τυχαία θέση ώστε να δυσκολέψουμε λίγο το παιχνίδι. Για τον σκοπό αυτό επιλέγουμε από την καρτέλα Move το εικονίδιο που δείχνει ένα βέλος από το Χ προς το?. [8]

Οι εξ ορισμού τιμές των παραμέτρων είναι εντάξει, πατήστε ΟΚ για να ολοκληρωθεί ο ορισμός της ενέργειας. Η τελευταία ενέργεια για το γεγονός αυτό θα κάνει τον κλόουν να κινηθεί προς μια νέα κατεύθυνση με αυξημένη ταχύτητα. Επιλέγουμε πάλι το εικονίδιο με τα οκτώ κόκκινα βέλη, πατήστε όλα τα βέλη, πληκτρολογήστε την τιμή 0.5 στο πλαίσιο κειμένου για την ταχύτητα και επιλέξτε την σχετική αύξηση (Relative). Η φόρμα θα είναι όπως η επόμενη: Το αντικείμενο κλόουν είναι τώρα ορισμένο αφού ορίσαμε τις ενέργειες που πρέπει να λάβουν χώρα για τρία σημαντικά γεγονότα. Κάντε κλικ στο OK για να ολοκληρώσετε τον ορισμό του. 1.1.5 Δημιουργία δωματίου Τώρα που ορίσαμε τα αντικείμενα του παιχνιδιού μένει μόνο να ορίσουμε το δωμάτιο μέσα στο οποίο θα διαδραματίζεται το παιχνίδι. Ο σχεδιασμός δωματίων (λέγονται και επίπεδα) είναι χρονοβόρος αλλά στην περίπτωση του κυνηγιού του κλόουν το δωμάτιο είναι πολύ απλό. Πρόκειται για περιτοιχισμένη περιοχή με ένα στιγμιότυπο του κλόουν μέσα της. Επιλέξτε Add Room από το μενού Add. Θα εμφανισθεί η επόμενη φόρμα για να ορίσετε το νέο δωμάτιο. [9]

Στα αριστερά διακρίνονται τρεις καρτέλες από τις οποίες θα χρησιμοποιήσουμε μόνο την σελίδα objects (αντικείμενα). Στα δεξιά βλέπετε το τρέχον δωμάτιο που προς το παρόν είναι μια γκρίζα περιοχή με ένα πλέγμα στοίχισης αντικειμένων (κάναβος) να υπερίπταται. Επειδή τα αντικείμενα του παιχνιδιού μας έχουν διάσταση 32x32 αλλάξτε την απόσταση των γραμμών του πλέγματος από 16x16 σε 32x32 με τα χειριστήρια κειμένου στο πάνω μέρος της φόρμας. Για να προσθέσετε στιγμιότυπα αντικειμένων κάντε κλικ στο κουμπί με το εικονίδιο μενού και επιλέξτε το αντικείμενο obj_wall. Χρησιμοποιήστε το ποντίκι για να βάλετε στιγμιότυπα του τοίχου γύρω από το δωμάτιο. Μπορεί να χρειαστεί να μεγαλώσετε το παράθυρο ή να χρησιμοποιήσετε τις γραμμές ολίσθησης για να δείτε όλο το παράθυρο. Για να βάλετε πολλαπλά στιγμιότυπα καθώς κινείτε το δείκτη του ποντικιού κρατήστε το πλήκτρο <Shift> πατημένο. Για να αφαιρέσετε ένα στιγμιότυπο κάντε δεξί κλικ πάνω του. Όταν τελειώσετε επιλέξτε το αντικείμενο obj_clown και τοποθετήστε ένα στιγμιότυπο στο κέντρο του δωματίου. Το δωμάτιο είναι έτοιμο. Πατήστε OK (Το κουμπί με το πράσινο τικ στο πάνω αριστερό μέρος) για να κλείσετε την φόρμα. 1.1.6 Αποθήκευση και έλεγχος Το παιχνίδι είναι έτοιμο, έχουν ορισθεί οι εικόνες, έχουν προστεθεί οι ήχοι, έχουν ορισθεί τα αντικείμενα και τέλος το ένα και μοναδικό δωμάτιο. Ήρθε η ώρα να το αποθηκεύσουμε και να το δοκιμάσουμε. Επιλέξτε Save από το μενού File, προσδιορίστε ένα φάκελο και ένα όνομα αρχείου για το παιχνίδι. Το Game Maker v6 χρησιμοποιεί την κατάληξη.gm6. Προς το παρόν δεν μπορείτε να εκτελέσετε απευθείας τα αρχεία του Game Maker χωρίς να τα φορτώσετε στο σύστημα, παρακάτω θα δούμε πώς φτιάχνουμε αυτόνομα εκτελέσιμα παιχνίδια. Για να δοκιμάσετε το παιχνίδι επιλέξτε Run normally από το μενού Run. Το παράθυρο σχεδιασμού θα εξαφανισθεί και αν το παιχνίδι δεν έχει σφάλματα θα εμφανισθεί στην οθόνη το δωμάτιο του παιχνιδιού με τον κλόουν να κινείται τυχαία. Κάθε φορά που καταφέρνετε να κάνετε κλικ πάνω του ο κλόουν πηδάει σε άλλη θέση και η ταχύτητά του αυξάνεται. Για να τερματίσετε το παιχνίδι πατήστε το πλήκτρο <Esc> ή κάντε κλικ στο γνωστό κουμπί τερματισμού. [10]

Τώρα ήρθε η ώρα να ρυθμίσουμε το παιχνίδι. Για να οδηγηθούμε προςτην σωστή κατεύθυνση πρέπει να αναρωτηθούμε: Είναι σωστή η αρχική ταχύτητα; Είναι η αύξηση της ταχύτητας αποδεκτή; Είναι το μέγεθος του δωματίου σωστό; Είναι καλές οι εικόνες που χρησιμοποιήσαμε; Πιο αξιόπιστος έλεγχος γίνεται όταν τις ερωτήσεις αυτές τις απαντάνε άτομα διαφορετικά από τον κατασκευαστή του παιχνιδιού. Όταν είστε ικανοποιημένοι με το παιχνίδι σας επιλέξτε Create executable από το μενού File για να δημιουργήσετε ένα ανεξάρτητο εκτελέσιμο αρχείο με το παιχνίδι σας ώστε να το εκτελείτε χωρίς να χρειάζεστε το Game Maker. Μπορείτε να δώσετε το αρχείο στους φίλους σας ή να το βάλετε στον δικτυακό σας τόπο. 1.1.7 Τελευταίες πινελιές Θα κάνουμε μερικές τελευταίες βελτιώσεις στο κυνήγι του κλόουν. Κατ αρχήν θα βάλουμε μουσική υπόβαθρου. Αυτό γίνεται εύκολα. Πρώτα προσθέτουμε ένα ήχο τον οποίο θα ονομάσουμε snd_background. Για ήχους υπόβαθρουπροτιμάμε τα αρχεία τύπουmidiεπειδή τα αρχεία κυματομορφής (wav) απαιτούν πολύ χώρο. Για να ακουστεί ο ήχος προσθέτουμε μια ακόμα ενέργεια ήχου στο γεγονός δημιουργίας στιγμιότυπου του κλόουν. Για να ακούγεται συνεχώς ο ήχος επιλέγουμε true για την τιμή Loop του ήχου. Κατόπιν θα προσθέσουμε μια εικόνα υπόβαθρου (background image) επειδή η προκαθορισμένη γκρίζα εικόνα είναι μάλλον βαρετή. Επιλέγουμε Add Background από το μενού Add. Εμφανίζεται μια φόρμα που μοιάζει με αυτήν της εισαγωγής εικόνων sprite. Κάντε κλικ στο κουμπί Load Background και διαλέξτε μια όμορφη εικόνα. Η φόρμα θα γίνει όπως η επόμενη εικόνα: Σημειώστε ότι η ιδιότητα Transparent είναι εξ ορισμού ψευδής. Πατήστε OK. Για να αποδώσετε στο υπόβαθρο τη σωστή εικόνα ανοίξτε πάλι το δωμάτιο με διπλό κλικ και μεταβείτε στην καρτέλα backgrounds θα εμφανισθούν οι επόμενες πληροφορίες: Αποεπιλέξτε την ιδιότητα Draw background color και κάντε κλικ στο μικρό εικονίδιο μενού στην μέση για να διαλέξετε την εικόνα του υπόβαθρου. Παρατηρήστε τις δύο ιδιότητες Tile Hor. (οριζόντια πλακόστρωση) και Tile Vert. (κατακόρυφη πλακόστρωση). Επιλέγοντας τις ιδιότητες αυτές προκαλούμε την αντίστοιχη επανάληψη της [11]

εικόνας υπόβαθρου ώστε να καταλάβει όλο το δωμάτιο. Για να μπορεί να γίνει αυτό θα πρέπει η εικόνα να είναι ειδικά φτιαγμένη ώστε να μην παρουσιάζει ασυνέχειες. Αν παίξετε λίγο το παιχνίδι θα παρατηρήσετε ότι είναι εύκολο επειδή ξέρετε προς τα πού θα κινηθεί ο κλόουν. Για να το δυσκολέψουμε λίγο θα επιτρέψουμε στον κλόουν να αλλάζει κάθε τόσο την κατεύθυνση του. Για να γίνει αυτό θα χρησιμοποιήσουμε ένα ρολόι συναγερμού. Τα ρολόγια αυτά μετρούν ανάποδα και όταν φτάσουν στο μηδέν τότε πυροδοτείται ένα γεγονός. Κάθε στιγμιότυπο αντικειμένου μπορεί να έχει μέχρι οκτώ διαφορετικά τέτοια ρολόγια αν και εμείς θα χρειαστούμε μόνο ένα. Στο γεγονός της δημιουργίας του κλόουν προσθέτουμε την ενέργεια αρχικοποίησης ενός ρολογιού συναγερμού που βρίσκεται στην καρτέλα main2. Χρησιμοποιούμε alarm 0 και αριθμό βημάτων 50 (αυτό σημαίνει περίπου 1.5 δευτερόλεπτα επειδή συμβαίνουν περίπου 30 βήματα το δευτερόλεπτο, αν και αυτό μπορεί να αλλάξει από την καρτέλα settings στις ιδιότητες του δωματίου). Οι επιλογές για το ρολόι φαίνονται στην επόμενη εικόνα. Κατόπιν πρέπει να ορίσουμε τι θα συμβεί όταν το ρολόι φτάσει στο 0. Επιλέξτε Alarm από το μενού Add Event, και επιλέξτε alarm 0 από το μενού. Με τις ενέργειες του γεγονότος αυτού ο κλόουν θα ακολουθεί μια νέα τυχαία κατεύθυνση χρησιμοποιώντας το εικονίδιο με τα κόκκινα βελάκια (δώστε στο πεδίο speed την τιμή και επιλέξτε το Relative έτσι ώστε να μη μεταβληθεί η ταχύτητα του Κλόουν). Θέτουμε επίσης το ρολόι Alarm 0 ξανά στην τιμή 50, έτσι ώστε το γεγονός να επαναληφθεί μετά από 1.5. Έτσι τώρα κάθε 1.5 ο Κλόουν θ αλλάζει την κατεύθυνση της κίνησή του. Τέλος κάθε παιχνίδι θα πρέπει να ενημερώνει τους παίκτες για τον στόχο και τους κανόνες του. Το Game Maker διαθέτει ένα τυποποιημένο τρόπο για να γίνει αυτό, επιλέξτε Change Game Information από το μενού Add. Θα εμφανισθεί μια φόρμα σύνταξης κειμένου, πληκτρολογήστε το επόμενο κείμενο: Κατά την εκτέλεση του παιχνιδιού, το κείμενο αυτό εμφανίζεται με το πλήκτρο F1. 1.1.8 Το πρώτο μας παιχνίδι είναι έτοιμο Συγχαρητήρια! Ολοκληρώσατε το πρώτο σας παιχνίδι. Το πρώτο παιχνίδι είναι πάντα και το πιο δύσκολο. Είδατε επίσης τα πιο σημαντικά στοιχεία του Game Maker: sprites, εικόνες, ήχους, αντικείμενα, γεγονότα, ενέργειες και δωμάτια. Αυτά είναι γενικότερα τα σημαντικά στοιχεία σε κάθε σύστημα κατασκευής παιχνιδιών και όχι μόνο στο, Game Maker. Πριν προχωρήσετε στην κατασκευή νέου παιχνιδιού προτείνεται να παίξετε λίγο με το κυνήγι του κλόουν. Δοκιμάστε για παράδειγμα τα επόμενα: Βάλτε δύο κλόουν στο παιχνίδι (απλά τοποθετείτε δύο στιγμιότυπα στο δωμάτιο) Βάλτε ένα διαφορετικό κλόουν που δεν πρέπει να τον πιάνετε γιατί τότε μειώνετε την βαθμολογία σας. [12]

1.2 Εκπαιδευτική άσκηση: Δημιουργία παιχνιδιών λαβυρίνθου (maze games) Copyright 2003-2004, Mark Overmars Τελευταία ενημέρωση: September 2,2004 Απαιτούμενη έκδοση GameMaker: version 6.0, advanced mode Επίπεδο: Beginner Παρά το γεγονός ότι το Game Maker είναι αρκετά απλό στην χρήση και η δημιουργία περίπλοκων παιχνιδιών είναι εύκολη, οι δυνατότητές του μπορεί να φαντάζουν υπερβολικές με τη πρώτη ματιά ώστε να μην ξέρει κανείς από πού ν αρχίσει. Η άσκηση αυτή σκοπεύει να σας διδάξει πώς να αναπτύσσετε παιχνίδια λαβύρινθου, που θεωρούνται από τα ευκολότερα είδη. Η άσκηση είναι δομημένη σε ακολουθία βημάτων που καθοδηγούν στην διαδικασία δημιουργίας του παιχνιδιού. Από τα θετικά της διαδικασίας αυτής είναι ότι από το πρώτο κιόλας βήμα έχουμε ένα παιχνίδι που επεκτείνεται και βελτιώνεται στα επόμενα βήματα. Όλα τα ενδιάμεσα παιχνίδια παρέχονται στα συνοδευτικά αρχεία και είναι επεξεργάσιμα με το Game Maker. 1.2.1 Η ιδέα του παιχνιδιού Πριν να ξεκινήσουνε την δημιουργία ενός παιχνιδιού πρέπει να διατυπώσουμε κάπως την ιδέα για το πώς θα είναι το συγκεκριμένο παιχνίδι. Αυτό είναι το σημαντικότερο (και κατά κάποιο τρόπο το δυσκολότερο) βήμα στο σχεδιασμό ενός παιχνιδιού. Ένα καλό παιχνίδι είναι συναρπαστικό-εντυπωσιακό, εκπληκτικό και εθιστικό. Θα πρέπει επίσης να διαθέτει σαφείς στόχους για τους παίκτες και η διεπαφή με τον χρήστη θα πρέπει να είναι εργονομική και συμβατή με την διαίσθηση. Στα παιχνίδια λαβυρίνθου όπως αυτό που θα φτιάξουμε, κάθε δωμάτιο αποτελεί ένα λαβύρινθο. Για να δραπετεύσει από τον λαβύρινθο ο παίκτης θα πρέπει να συλλέξει όλα τα διαμάντια και να φτάσει στην έξοδο. Για να το πετύχει αυτό ο παίκτης θα χρειαστεί να λύσει γρίφους (puzzles) και να αποφύγει τέρατα (monsters). Πληθώρα γρίφων είναι δυνατό να δημιουργηθούν όπως: σώματα (block) που πρέπει να σπρωχθούν σε τρύπες, τμήματα του δωματίου που μπορούν να ανατιναχθούν με την χρήση βομβών κλπ. Είναι πολύ σημαντικό να μην εμφανισθούν όλα αυτά μονομιάς από το πρώτο δωμάτιο. Για να διατηρηθεί το ενδιαφέρον του παιχνιδιού θα πρέπει να εμφανίζονται σταδιακά νέα στοιχεία και τέρατα. Έτσι το βασικό αντικείμενο του παιχνιδιού είναι ένας χαρακτήρας-πρόσωπο που ελέγχεται από τον παίκτη. Υπάρχουν τοίχοι διαφόρων ενδεχομένως τύπων για να καθιστούν τον λαβύρινθο ελκυστικότερο. Υπάρχουν διαμάντια για μάζεμα. Υπάρχουν αντικείμενα διάσπαρτα στο δωμάτιο που κάνουν κάτι όταν τα σηκώσει ή τα ακουμπήσει ο παίκτης. Ένα συγκεκριμένο τέτοιο αντικείμενο θα αποτελεί την έξοδο από το δωμάτιο. Επίσης υπάρχουν τέρατα που κινούνται από μόνα τους αλλά ας βάλουμε τα πράγματα σε μια σειρά. 1.2.2 Μια απλή αρχή Για αρχή θα ξεχάσουμε τα διαμάντια, θέλουμε απλά ένα παιχνίδι στο οποίο θα πρέπει να φτάσουμε στην έξοδο. Υπάρχουν τρία βασικά συστατικά στο παιχνίδι αυτό: ο παίκτης, ο τοίχος και η έξοδος. Θα χρειαστούμε μια εικόνα (sprite) για το κάθε ένα. Το απλό αυτό παιχνίδι είναι διαθέσιμο στο αρχείο maze_1.gm6. Φορτώστε το και παρατηρήστε το. 1.2.3 Τα αντικείμενα Ας ξεκινήσουμε με την δημιουργία των αντικειμένων. Για κάθε ένα από τα αντικείμενα χρησιμοποιούμε τα επόμενα 32x32 sprite: Ας δημιουργήσουμε πρώτο τον τοίχο. Θα του δώσουμε το sprite του τοίχου (το μεσαίο στην παραπάνω γραμμή) και θα το ορίσουμε ως συμπαγές με τη βοήθεια του ομώνυμου πλαισίου ελέγχου (solid check box). Η επιλογή αυτή θα απαγορεύει στα άλλα αντικείμενα να διαπεράσουν τον τοίχο. Το αντικείμενο τοίχος δεν κάνει τίποτε παραπάνω και επομένως δεν χρειάζεται να ορίσουμε κάποιο γεγονός για αυτό. Ας ορίσουμε τώρα το αντικείμενο στόχο. Πρόκειται για το αντικείμενο στο οποίο πρέπει να φτάσει ο χρήστης και είναι μη συμπαγές. Θα του δώσουμε ως εικόνα την σημαία τερματισμού. Έτσι θα είναι ξεκάθαρο για τον παίχτη πού πρέπει να πάει. Όταν ο παίκτης φτάσει στο στόχο θα πρέπει να οδηγηθεί στο επόμενο δωμάτιο. Για να γίνεται αυτό τοποθετούμε την αντίστοιχη πράξη στο γεγονός της σύγκρουσης (βρίσκεται στην καρτέλα main1). Το μειονέκτημα της λύσης αυτής είναι ότι στο τελευταίο δωμάτιο προκαλείται σφάλμα. Χρειάζεται να ελέγχουμε [13]

πρώτα αν υπάρχει επόμενο δωμάτιο πριν προσπαθήσουμε να μεταβούμε εκεί, σε διαφορετική περίπτωση ξεκινάμε πάλι το παιχνίδι. Το γεγονός λοιπόν θα μοιάζει όπως την επόμενη εικόνα: Είναι φανερό ότι στο τελικό παιχνίδι θα πρέπει να κάνουμε κάτι περισσότερο όταν ο χρήστης ολοκληρώνει το τελευταίο επίπεδο, όπως να εμφανίζουμε μια όμορφη εικόνα, ή να του δείχνουμε την θέση του στην κατάταξη των παικτών. Αυτά θα τα δούμε αργότερα. Τέλος πρέπει να δημιουργήσουμε τον χαρακτήρα που θα ελέγχει ο παίκτης. Εδώ χρειάζεται κάπως περισσότερη δουλειά. Θέλουμε να αντιδρά σε είσοδο από τον χρήστη και δεν θα πρέπει να συγκρούεται με τον τοίχο. Για την μετακίνηση θα χρησιμοποιήσουμε τα πλήκτρα βελάκια. Υπάρχουν διάφοροι τρόποι με τους οποίους μπορούμε να κάνουμε τον χαρακτήρα να κινείται, ο ευκολότερος είναι να τον μετακινούμε κατά ένα κελί προς την κατεύθυνση που υποδηλώνει το βελάκι που πάτησε ο παίχτης. Ένας δεύτερος τρόπος, τον οποίο και θα χρησιμοποιήσουμε, είναι να κινούμε τον χαρακτήρα προς μια κατεύθυνση συνεχώς για όσο διάστημα ο παίκτης κρατά πατημένο το αντίστοιχο πλήκτρο με τα βελάκια. Μια άλλη προσέγγιση είναι να προκαλούμε την συνεχή κίνηση του χαρακτήρα με το πάτημα ενός πλήκτρου μέχρι να πατηθεί κάποιο άλλο πλήκτρο (όπως στο pacman). Θα χρειαστούμε πράξεις για όλα τα πλήκτρα-βελάκια. Οι πράξεις είναι μάλλον τετριμμένες εφόσον θέτουν απλά την σωστή κατεύθυνση για την κίνηση (για ταχύτητα θα χρησιμοποιήσουμε την τιμή 4). Για να σταματά ο χαρακτήρας όταν ο παίκτης ελευθερώνει το πλήκτρο θα χρησιμοποιήσουμε το γεγονός <no key>. Υπάρχει πλέον ένα δύσκολο σημείο, θα πρέπει να διατηρήσουμε την στοίχιση του χαρακτήρα με τα κελιά του πλέγματος που διαμορφώνει τον λαβύρινθο ώστε να γίνει ευκολότερη η κίνηση (για παράδειγμα θα πρέπει να σταματήσετε στην σωστή θέση ακριβώς ώστε να μπείτε σε ένα διάδρομο). Η στοίχιση επιτυγχάνεται ως εξής: στην καρτέλα control υπάρχει μια πράξη (action) για τον έλεγχο της στοίχισης ενός αντικειμένου με το πλέγμα. Η επόμενη πράξη εκτελείται μόνο όταν ισχύει η στοίχιση. Προσθέτουμε την πράξη στα γεγονότα κάθε πλήκτρου-βέλους και θέτουμε 32 ως τιμή των παραμέτρων επειδή αυτό είναι το μέγεθος του πλέγματος. [14]

Είναι φανερό ότι χρειαζόμαστε επίσης να σταματήσουμε την κίνηση όταν χτυπήσουμε σε τοίχο. Έτσι, στο γεγονός της σύγκρουσης (collision) του χαρακτήρα-ήρωα του παιχνιδιού με τον τοίχο αντιστοιχούμε την πράξη τερματισμού της κίνησης. Ένα σημείο που χρειάζεται προσοχή εδώ αφορά στην περίπτωση που η εικόνα (sprite) του ήρωα δεν γεμίζει πλήρως το κελί (που είναι το πιο πιθανό). Υπάρχει τότε πιθανότητα ο ήρωας να μην είναι στοιχισμένος με το πλέγμα όταν συγκρουστεί με τον τοίχο. (Για την ακρίβεια αυτό συμβαίνει όταν υπάρχει πλαίσιο γύρω από το sprite με μέγεθος μεγαλύτερο από την ταχύτητα) Στην περίπτωση αυτή ο ήρωας θα κολλήσει επειδή δε θα αντιδρά στα πλήκτρα εφόσον δεν είναι στοιχισμένος με το πλαίσιο και έχει σταματήσει λόγω της σύγκρουσης με τον τοίχο. Η λύση είναι είτε να μεγαλώσουμε την εικόνα του ήρωα είτε να επιλέξουμε να μην γίνεται ακριβής έλεγχος της σύγκρουσης και ως περιβάλλον ορθογώνιο να θεωρείται ολόκληρη η εικόνα. 1.2.4 Δημιουργία δωματίων Τα παραπάνω είναι ό,τι είχαμε να κάνουμε σχετικά με τις πράξεις. Τώρα θα δημιουργήσουμε μερικά δωμάτια. Δημιουργήστε ένα ή δύο δωμάτια που να μοιάζουν με λαβύρινθο. Σε κάθε δωμάτιο τοποθετήστε ένα αντικείμενοστόχο στην θέση προορισμού και τοποθετήστε τον ήρωα στην θέση εκκίνησης. 1.2.5 Ολοκλήρωση Αυτό ήταν όλο. Το πρώτο παιχνίδι είναι έτοιμο. Παίξτε λίγο μαζί του, για παράδειγμα αυξήστε την ταχύτητα του ήρωα στο γεγονός δημιουργίας, δημιουργήστε μερικά επίπεδα ακόμα, αλλάξτε τις εικόνες κλπ 1.2.6 Συλλέγοντας διαμάντια Ο σκοπός όμως του παιχνιδιού ήταν η συλλογή διαμαντιών. Η προσθήκη των διαμαντιών δεν φαίνεται τόσο δύσκολη, πώς θα εξασφαλίσουμε όμως ότι ο παίκτης δεν θα μπορεί να βγει από το δωμάτιο αν δεν έχει συλλέξει όλα τα διαμάντια; Για το σκοπό αυτό θα εισάγουμε ένα αντικείμενο πόρτα. Η πόρτα θα συμπεριφέρεται ως τοίχος όσο υπάρχουν ακόμα διαμάντια και θα εξαφανίζεται όταν συλλεχθούν όλα τα διαμάντια. Η δεύτερη έκδοση του παιχνιδιού είναι διαθέσιμη στο αρχείο maze_2.gm6. Φορτώστε την στο GameMaker για επισκόπηση. Εκτός από τα αντικείμενα τοίχος, στόχος και ήρωας χρειαζόμαστε δύο ακόμα με αντίστοιχα sprites: το διαμάντι και την πόρτα. Το διαμάντι είναι εξαιρετικά απλό αντικείμενο. Η μοναδική πράξη που χρειάζεται είναι να καταστρέφεται όταν ο ήρωας συγκρούεται μαζί του. Έτσι αντιστοιχούμε την πράξη της διαγραφής με το γεγονός της σύγκρουσης. Το αντικείμενο πόρτα θα τοποθετηθεί σε σημείο ώστε να εμποδίζει την πρόσβαση στον στόχο. Η πόρτα θα πρέπει να ορισθεί ως συμπαγές αντικείμενο ώστε να μην είναι δυνατό να τη διαπεράσει ο ήρωας. Στο γεγονός της σύγκρουσης με τον ήρωα θα πρέπει να αντιστοιχίσουμε τον τερματισμό της κίνησης. Στο γεγονός step της πόρτας θα ελέγχουμε αν το πλήθος των διαμαντιών είναι 0 οπότε και θα αυτοκαταστρέφεται με την εκτέλεση της πράξης που υπάρχει για τον σκοπό αυτό. Επιπλέον όταν εξαφανίζεται η πόρτα θα αναπαράγεται κάποιος ήχος ώστε να ενημερώνεται ο παίκτης. Το step της πόρτας θα μοιάζει όπως στην επόμενη εικόνα: [15]

1.2.7 Ας το βελτιώσουμε λίγο Τώρα που τα βασικά του παιχνιδιού είναι στη θέση τους θα το κάνουμε κάπως καλύτερο. Οι τοίχοι είναι αρκετά άσκημοι έτσι θα φτιάξουμε τρία αντικείμενα τοίχων, ένα για τις γωνίες, ένα για τους κάθετους και ένα για τους οριζόντιους τοίχους. Θα τους δώσουμε τα κατάλληλα sprite και θα τα ορίσουμε συμπαγή. Τα δωμάτια φαίνονται τώρα ομορφότερα. Η απόδοση μιας εικόνας υπόβαθρου (background) βοηθάει επίσης. Για να αποφύγουμε τον επανορισμό των γεγονότων της σύγκρουσης με τον ήρωα για κάθε ξεχωριστό είδος τοίχου (και αργότερα για κάθε είδος τέρατος) θα χρησιμοποιήσουμε μια πολύ σημαντική τεχνική στο Game Maker και στην αντικειμενοστραφή τεχνολογία γενικότερα που είναι γνωστή ως κληρονομικότητα. Ειδικότερα, θα ορίσουμε τα αντικείμενα τοίχους ως απογόνους του αντικειμένου γωνιακός τοίχος. Με την κίνηση αυτή τα αντικείμενα θα κληρονομήσουν την συμπεριφορά του προγόνου τους αυτόματα. Τα αντικείμενα τοίχου θα συμπεριφέρονται όπως το αντικείμενο γωνιακός τοίχος εκτός και αν ορίσουμε νέα συμπεριφορά σε κάποιο γεγονός. Τα γεγονότα της σύγκρουσης χρειάζεται λοιπόν να ορισθούν μόνο για το αντικείμενο γωνιακός τοίχος. Ο γωνιακός τοίχος μπορεί να ορισθεί ως γονικό αντικείμενο του αντικειμένου πόρτα. 1.2.8 Score-Βαθμολογία Ας δώσουμε στον παίκτη την δυνατότητα να μετρά την πρόοδο του με μια βαθμολογία. Η εισαγωγή βαθμολογίας είναι μάλλον τετριμμένη. Για κάθε διαμάντι που καταστρέφεται θα αυξάνουμε την βαθμολογία κατά 5 μονάδες. Έτσι στο γεγονός της καταστροφής προσθέτουμε την πράξη αύξησης της βαθμολογίας. Η ολοκλήρωση ενός επιπέδου θα αποδίδει 40 ακόμα πόντους, έτσι προσθέτουμε την πράξη αύξησης της βαθμολογίας κατά 40 στο γεγονός της σύγκρουσης του ήρωα με τον στόχο. Όταν ο παίκτης φτάσει στο τελευταίο δωμάτιο θα πρέπει να εμφανίζεται ο πίνακας της βαθμολογίας. Στο περιβάλλον Game Maker η εμφάνιση γίνεται με την αντίστοιχη πράξη που υπάρχει γι αυτό. Το αντικείμενο-στόχος γίνεται έτσι πολυπλοκότερο και μοιάζει με την επόμενη εικόνα: Το γεγονός της σύγκρουσης με τον στόχο αυξάνει τη βαθμολογία, αναπαράγει ένα ήχο, περιμένει για λίγο και κατόπιν, είτε μεταβαίνει στο επόμενο δωμάτιο ή, αν είναι το τελευταίο, εμφανίζει ένα μήνυμα, τον πίνακα βαθμολογίας και ξεκινά το παιχνίδι από την αρχή. Παρατηρήστε ότι η βαθμολογία εμφανίζεται αυτόματα στην γραμμή τίτλου, αυτό είναι λίγο άσχημο γι αυτό θα δημιουργήσουμε ένα αντικείμενο ελεγκτή (controller) χωρίς εικόνα (sprite). Το αντικείμενο αυτό θα τοποθετηθεί σε όλα τα δωμάτια με σκοπό να εκτελεί κεντρικό έλεγχο των τεκταινόμενων στο παιχνίδι. Προς το παρόν θα το χρησιμοποιήσουμε απλά για να εμφανίζουμε την βαθμολογία. Ειδικότερα, στο γεγονός drawing ρυθμίζουμε τη γραμματοσειρά και το χρώμα της γραφής και κατόπιν χρησιμοποιούμε την πράξη εμφάνισης της βαθμολογίας. 1.2.9 Οθόνη έναρξης Είναι ωραίο να ξεκινάμε το παιχνίδι με μια οθόνη που δείχνει το όνομα του, για το σκοπό αυτό χρησιμοποιούμε το πρώτο δωμάτιο. Δημιουργούμε ένα πόρο υπόβαθρου με μια κατάλληλη εικόνα. Σημειώστε ότι η αρχική οθόνη με τον τρόπο αυτό δεν δεσμεύει μνήμη στο υποσύστημα απεικόνισης επειδή αφορά μόνο το πρώτο δωμάτιο. Ακόμα καλύτερη αξιοποίηση πόρων επιτυγχάνουμε με την αποτροπή της εμφάνισης του χρώματος υπόβαθρου και της [16]

πλακόστρωσης (non-tiled). Στην οθόνη έναρξης δημιουργούμε ένα αντικείμενο (αόρατο) ελεγκτή που περιμένει μέχρι να πατηθεί κάποιο πλήκτρο οπότε μεταβαίνει στο επόμενο δωμάτιο, επίσης μηδενίζει την βαθμολογία και εξασφαλίζει ότι δεν εμφανίζεται αυτή στην γραμμή τίτλου. 1.2.10 Ήχοι Ένα παιχνίδι χωρίς ήχο είναι μάλλον βαρετό, έτσι θα βάλουμε μερικούς ήχους. Κατ αρχήν θα χρειαστούμε μουσική υπόβαθρου (background). Για τον σκοπό αυτό θα χρησιμοποιήσουμε ένα συμπαθητικό αρχείο midi που θα ξεκινά να ακούγεται από το αντικείμενο start_controller και θα επαναλαμβάνεται συνεχώς. Κατόπιν θα προσθέσουμε ένα ηχητικό εφέ για την συλλογή κάθε διαμαντιού, το άνοιγμα της πόρτας και την προσέγγιση του στόχου. Οι ήχοι αυτοί αναπαράγονται στα κατάλληλα γεγονότα όπως έχουν περιγραφεί παραπάνω. Όταν ο ήρωας φτάσει στο στόχο και μετά το ηχητικό εφέ είναι καλό να βάλουμε μια πράξη αναστολής εκτέλεσης (sleep action) ώστε να καθυστερεί η εξέλιξη για κάποιο χρονικό διάστημα πριν την είσοδο στο επόμενο δωμάτιο. 1.2.11 Δημιουργία δωματίων Τώρα μπορούμε να δημιουργήσουμε μερικά δωμάτια με διαμάντια. Παρατηρήστε ότι το πρώτο δωμάτιο είναι απλό και δεν περιέχει διαμάντια ώστε ο παίκτης να εξοικειωθεί με την έννοια της κίνησης προς την σημαία πριν από την εισαγωγή του στη φάση συλλογής των διαμαντιών. Η απόδοση ενός ενδεικτικού ονόματος στο δεύτερο δωμάτιο διευκολύνει τον παίκτη να καταλάβει τι πρέπει να κάνει. 1.2.12 Τέρατα και άλλες προκλήσεις Το παιχνίδι έχει αρχίσει να φαίνεται ωραίο αλλά παραμένει τετριμμένο και συνεπώς βαρετό. Χρειάζεται να προσθέσουμε δράση με την μορφή τεράτων, επίσης θα προσθέσουμε βόμβες, μετακινούμενα τμήματα και τρύπες. Το πλήρες παιχνίδι μπορεί να βρεθεί στο αρχείο maze_3.gm6. 1.2.12.1 Τέρατα Θα δημιουργήσουμε τρία διαφορετικά είδη τεράτων: ένα που θα κινείται αριστερά-δεξιά, ένα που θα κινείται πάνω-κάτω και ένα πουθα κινείται προςόλες τις κατευθύνσεις. Η προσθήκη ενόςτέρατοςείναι στην πραγματικότητα αρκετά απλή. Το τέρας είναι ένα αντικείμενο που ξεκινά να κινείται και αλλάζει κατεύθυνση όταν χτυπήσει σε τοίχο. Όταν ένας χαρακτήρας συγκρουσθεί με τέρας σκοτώνεται, που σημαίνει ότι το επίπεδο ξεκινά από την αρχή και ο παίκτης χάνει μια ζωή. Θα εφοδιάσουμε τον χαρακτήρα με τρεις ζωές αρχικά. Ας δημιουργήσουμε πρώτα το τέρας που κινείται αριστερά-δεξιά. Χρησιμοποιούμε ένα απλό sprite και δημιουργούμε ένα αντικείμενο. Στο γεγονός της δημιουργίας του αποφασίζει να πάει αριστερά ή δεξιά. Για να δυσκολέψουμε λίγο την κατάσταση θέτουμε την ταχύτητά του ελάχιστα μεγαλύτερη. Σε περίπτωση σύγκρουσης το αντικείμενο αναστρέφει την οριζόντιά του κατεύθυνση. Το δεύτερο τέρας εργάζεται ακριβώς με τον ίδιο τρόπο με την διαφορά ότι ξεκινά να κινείται πάνω-κάτω και όταν συγκρουσθεί με τοίχο αντιστρέφει την κάθετη κατεύθυνση της κίνησης του. Το τρίτο τέρας είναι ελάχιστα πολυπλοκότερο. Ξεκινά να κινείται είτε οριζόντια είτε κάθετα και όταν συγκρουσθεί με τοίχο ελέγχει αν μπορεί να κάνει αριστερή ή δεξιά στροφή. Αν αποτύχουν και οι δυο δοκιμές αντιστρέφει την κατεύθυνση του. Η υλοποίηση φαίνεται στην επόμενη εικόνα: [17]

Για να αποφύγουμε προβλήματα από το ότι το μέγεθος των τεράτων είναι ελάχιστα μικρότερο από αυτό του κελιού από-επιλέγουμε τον ακριβή έλεγχο σύγκρουσης και θέτουμε το περιβάλλον ορθογώνιο στο μέγεθος της εικόνας. Όταν ο ήρωας συγκρούεται με ένα τέρας θα πρέπει να ακούγεται ένας απαίσιος ήχος, να προκαλείται μια μικρή καθυστέρηση, να μειώνονται οι ζωές κατά μία και να ξεκινά το δωμάτιο από την αρχή. Σημειώστε ότι η σειρά των προηγούμενων ενεργειών είναι κρίσιμη επειδή μετά την επανεκκίνηση του δωματίου δεν είναι δυνατό να εκτελεστούν άλλες ενέργειες στο ίδιο γεγονός. Στην περίπτωση του γεγονότος «no more lives» το αντικείμενο ελεγκτής εμφανίζει τον πίνακα βαθμολογίας και ξεκινά το παιχνίδι από την αρχή. 1.2.12.2 Ζωές Χρησιμοποιήσαμε τον σχετικό μηχανισμό του Game Maker για να δώσουμε στον παίκτη τρεις ζωές, θα ήταν όμως επίσης ωραίο να δείχναμε το πλήθος των διαθέσιμων ζωών. Το αντικείμενο ελεγκτής μπορεί να αναλάβει το έργο αυτό όπως και στην περίπτωση της βαθμολογίας αλλά θα ήταν πιο καλά αν βλέπαμε μικρές εικόνες που να αναπαριστούν τις ζωές. Υπάρχει μια ειδική πράξη για τον σκοπό αυτό στην καρτέλα score. Το γεγονός drawing γίνεται τώρα όπως στην επόμενη εικόνα: Παρατηρήστε ότι χρησιμοποιήθηκε ένας πόρος γραμματοσειρά για την εμφάνιση της βαθμολογίας. 1.2.13 Βόμβες Θα προσθέσουμε τώρα βόμβες και πυροδότες για να τις ανατινάζουν. Η ιδέα είναι όταν θα φτάνει ο παίκτης στον πυροδότη όλες οι βόμβες να εκρήγνυνται καταστρέφοντας τα πάντα στην περιοχή τους. Η έκρηξη των βομβών μπορεί να χρησιμοποιηθεί για την δημιουργία περασμάτων μέσα στους τοίχους ή/και την καταστροφή τεράτων. Θα χρειαστούμε τρία νέα sprite για τα αντίστοιχα αντικείμενα: ένα πυροδότη-σκανδάλη, μια βόμβα και μια έκρηξη. Η βόμβα είναι αρκετά απλό αντικείμενο, κάθεται απλά στην θέση της και δεν κάνει τίποτα. Για να εξασφαλίσουμε ότι τα τέρατα θα περνάνε πάνω από τις βόμβες και όχι πίσω τους θέτουμε το βάθος της βόμβας στην τιμή 10. Τα στιγμιότυπα των αντικειμένων εμφανίζονται στην οθόνη με την σειρά του βάθους, δηλαδή πρώτα εμφανίζονται αυτά με το μεγαλύτερο βάθος και έτσι φαίνονται πίσω από τα υπόλοιπα. Η εξ ορισμού (προκαθορισμένη) τιμή για το βάθος είναι 0. Οι πυροδότες είναι επίσης απλοί. Όταν ο χαρακτήρας συγκρουσθεί με έναν πυροδότη μετατρέπει όλες τις βόμβες σε εκρήξεις. Για την μετατροπή ενός αντικειμένου σε ένα άλλο υπάρχει ειδική πράξη όπως φαίνεται και στην επόμενη εικόνα. Στην εικόνα παρατηρήστε ότι απαιτούμε να εφαρμοστεί σε όλα τα στιγμιότυπα των βομβών. [18]

Το αντικείμενο έκρηξη εμφανίζει απλά ένα αντίστοιχο κινούμενο σχέδιο και μετά καταστρέφει τον εαυτό του. Το αντικείμενο καταστρέφει επίσης οποιοδήποτε άλλο ακουμπά σε αυτό. Αυτό χρειάζεται λίγη δουλειά. Κατ αρχήν δεν θέλουμε να αυτοκαταστραφεί η έκρηξη γι αυτό την αφήνουμε για λίγο στην άκρη Kατόπιν καταστρέφουμε όλα τα στιγμιότυπα αντικειμένων σε θέσεις γύρω από την αρχική θέση της έκρηξης και τέλος ξαναβάζουμε την έκρηξη στην αρχική της θέση. Παρατηρήστε ότι η παραπάνω διαδικασία δεν πετυχαίνει αν ο χαρακτήρας είναι δίπλα στη βόμβα γι αυτό εξασφαλίστε ότι οι πυροδότες δεν συνορεύουν με βόμβες. Είναι σημαντικό να σχεδιάσουμε προσεκτικά τα επίπεδα με τις βόμβες και τους πυροδότες ώστε να αποτελούν ενδιαφέρουσες προκλήσεις για τους παίκτες. 1.2.14 Σώματα (blocks) και τρύπες Ας δημιουργήσουμε κάτι άλλο που θα επιτρέπει την δημιουργία ακόμα πιο πολύπλοκων γρίφων. Θα φτιάξουμε σώματα που θα μπορεί να τα σπρώχνει ο παίκτης ώστε να αλλάζουν θέση. Θα φτιάξουμε επίσης τρύπες που ο παίκτης δεν θα μπορεί να περάσει αλλά θα γεμίζουν με σώματα ώστε να δημιουργούνται περάσματα. Έτσι αυξάνονται οι σχεδιαστικές δυνατότητες και με την απαίτηση για δημιουργία περασμάτων αλλά και με την δυνατότητα να απομονώσουμε τα τέρατα σε κάποια περιοχή. Τα σώματα είναι συμπαγή αντικείμενα, το πρόβλημα τους είναι ότι πρέπει να ακολουθούν την κίνηση του χαρακτήρα όταν τα σπρώχνει. Όταν ένα σώμα συγκρούεται με τον χαρακτήρα υλοποιούμε τις επόμενες πράξεις: Ελέγχουμε αν η σχετική θέση 8*other.hspeed, 8*other.vspeed είναι κενή και αν είναι τότε μετακινούμε το σώμα εκεί. Το ίδιο κάνουμε και όταν στην θέση αυτή υπάρχει τρύπα. Για να αποφύγουμε τα τέρατα να περνάνε πάνω από τα σώματα καθιστούμε το γωνιακό τοίχο ως γονέα του σώματος. Η κίνηση αυτή δημιουργεί ένα μικρό πρόβλημα. Επειδή υπάρχει ορισμένο ένα γεγονός σύγκρουσης μεταξύ του χαρακτήρα και του γωνιακού τοίχου και όχι μεταξύ του χαρακτήρα και του σώματος, το κληρονομούμενο γεγονός θα εκτελείται σταματώντας έτσι τον ήρωα. Η συμπεριφορά αυτή δεν είναι επιθυμητή και για να την αποφύγουμε τοποθετούμε μια χαζή εντολή-πράξη στο γεγονός της σύγκρουσης του ήρωα με το σώμα ώστε να εκτελείται αυτή αντί της κληρονομημένης. Η ιδιότητα [19]

αυτή ονομάζεται υπερφόρτωση και μπορεί να χρησιμοποιηθεί για να διαφοροποιήσει την συμπεριφορά των απογόνων ενός αντικειμένου. Η τρύπα είναι επίσης συμπαγές αντικείμενο με γονικό αντικείμενο τον γωνιακό τοίχο. Όταν συγκρούεται με ένα σώμα το καταστρέφει και αυτοκαταστρέφεται. Αν και με τα σώματα και τις τρύπες μπορείτε να δημιουργήσετε πολλά ενδιαφέροντα δωμάτια υπάρχει ένα μικρό πρόβλημα. Είναι δυνατό να κλειδωθείτε σε ένα δωμάτιο που να μην μπορεί να λυθεί. Για να μπορούμε να ξεφύγουμε από μια τέτοια κατάσταση χρειάζεται να δώσουμε στον παίκτη την δυνατότητα να ξεκινά από την αρχή ένα επίπεδο με κόστος μια ζωή. Θα χρησιμοποιήσουμε το πλήκτρο R για την επανεκκίνηση. Κατά το γεγονός του πλήκτρου αυτού αφαιρούμε μια ζωή και επανεκκινούμε το δωμάτιο. Εδώ τελειώσαμε την τρίτη έκδοση του παιχνιδιού-λαβύρινθου το οποίο διαθέτει πλέον όλα τα συστατικά για την δημιουργία ενδιαφερόντων επιπέδων. 1.2.15 Μερικές τελικές βελτιώσεις Μπαίνουμε στην τελική φάση της ανάπτυξης του παιχνιδιού. Στη φάση αυτή θα βελτιώσουμε τα γραφικά και θα προσθέσουμε επίπεδα με την εισαγωγή νέων δώρων και χαρακτηριστικών. Το τελικό παιχνίδι βρίσκεται στο αρχείο: maze.gm6. 1.2.15.1 Καλύτερα γραφικά Τα γραφικά του παιχνιδιού μας είναι μάλλον φτωχά. Το βασικό αντικείμενο που θέλουμε να αλλάξουμε είναι ο ήρωας έτσι ώστε να κοιτάει προς την κατεύθυνση που κινείται. Ο ευκολότερος τρόπος για να το πετύχουμε είναι να χρησιμοποιήσουμε μια νέα εικόνα με τέσσερις υπό-εικόνες που αντιστοιχούν στις τέσσερις κατευθύνσεις: Κανονικά το Game Maker εμφανίζει εκ περιτροπής τις υπό-εικόνες και για να το αποφύγουμε θα θέσουμε την μεταβλητή image_speed στην τιμή 0. Όταν αλλάξουμε την κατεύθυνση του ήρωα τότε θα αλλάζουμε και την υπό-εικόνα που θα εμφανίζεται με την βοήθεια της πράξης που αλλάζει το sprite: Παρόμοια βελτίωση θα μπορούσαμε να έχουμε και για τα τέρατα αλλά στην περίπτωση τους δεν έχουμε άμεσα διαθέσιμα τα γεγονότα αλλαγής της κατεύθυνσης. Είναι ευκολότερο να βάλουμε σχετικό έλεγχο στο γεγονός τέλος βήματος (end step) για να βρούμε προς ποια κατεύθυνση κινούνται τα τέρατα ώστε να τροποποιήσουμε κατάλληλα τα sprite. 1.2.15.2 Δώρα Ας προσθέσουμε δύο είδη δώρων: ένα των εκατό πόντων και ένα που θα χαρίζει μία επιπλέον ζωή. Και τα δύο είναι εξαιρετικά απλά. Όταν συγκρούονται με τον ήρωα αναπαράγουν ένα ήχο και αυξάνουν τη βαθμολογία και τις διαθέσιμες ζωές αντίστοιχα πριν αυτοκαταστραφούν. [20]

1.2.16 Μονόδρομοι Για να αυξήσουμε την πολυπλοκότητα κάποιων επιπέδων θα προσθέσουμε μονόδρομους που θα μπορούν να προσπελαστούν μόνο προς την μία κατεύθυνση. Για να το πετύχουμε κατασκευάζουμε τέσσερα αντικείμενα, κάθε ένα από τα οποία έχει την μορφή βέλους που δείχνει προς την κατεύθυνση της κίνησης. Όταν ο ήρωας βρίσκεται πλήρως πάνω στο βέλος θα τον μετακινούμε προς την αντίστοιχη κατεύθυνση. Αυτό γίνεται στο γεγονός step του ήρωα όπου ελέγχουμε αν η ήρωας είναι στοιχισμένος στο πλέγμα προς την σωστή κατεύθυνση και αν συναντά το συγκεκριμένο βέλος ώστε να θέσουμε την κίνηση προς την σωστή κατεύθυνση με ταχύτητα 8 για περισσότερο ενδιαφέρον. 1.2.17 Τρομαγμένα τέρατα Για να μπορέσουμε να φτιάξουμε παιχνίδια τύπου pacman δίνουμε σε κάθε τέρας μια μεταβλητή με όνομα afraid (τρομαγμένο) η αρχική τιμή της οποίας τίθεται στο γεγονός της δημιουργίας και είναι 0 (ψευδής). Όταν ο ήρωας συναντά το νέο αντικείμενο δακτυλίδι που δημιουργήσαμε για τον σκοπό αυτό, τότε η μεταβλητή παίρνει τη τιμή αληθής για όλα τα τέρατα και αλλάζει η εικόνα τους ώστε να απεικονίζει την κατάσταση τους. Τώρα όταν ο ήρωας συναντά ένα τέρας ελέγχει πρώτα αν είναι τρομαγμένο και αν ναι, τότε μετακινείται στην αρχική του θέση διαφορετικά χάνει μια ζωή. Δείτε το παιχνίδι για λεπτομέρειες. 1.2.18 Ας φτιάξουμε το τελικό παιχνίδι Έχουμε δημιουργήσει αρκετά αντικείμενα αλλά ακόμα δεν έχουμε ένα πραγματικό παιχνίδι. Ένα πολύ σημαντικό θέμα στα παιχνίδια είναι ο σχεδιασμός των επιπέδων. Θα πρέπει να είναι αύξουσας δυσκολίας. Στην αρχή θα πρέπει να περιέχουν λίγα αντικείμενα ενώ στα επόμενα θα εμφανίζονται όλο και περισσότερα. Εξασφαλίστε ότι θα κρατήσετε κάποιες εκπλήξεις που θα εμφανίζονται από κάποιο επίπεδο και μετά. Επίσης τα επίπεδα θα πρέπει να προσαρμόζονται στο κοινό που θα απευθύνονται, άλλοι γρίφοι χρειάζονται για τα παιδιά και άλλοι για τους ενήλικες. Επιπλέον κάθε παιχνίδι χρειάζεται τεκμηρίωση. Στο Game Maker μπορείτε εύκολα να προσθέσετε τεκμηρίωση με την χρήση του Game Information. Τέλος, οι παίκτες δεν θα παίζουν τα παιχνίδια μονοκόμματα, θα πρέπει να προσθέσετε ένα μηχανισμό για την αποθήκευση και το φόρτωμα των παιχνιδιών. Ευτυχώς στο Game Maker είναι πολύ εύκολο γιατί υπάρχει ενσωματωμένος μηχανισμός για την αποθήκευση και το φόρτωμα παιχνιδιών. Με F5 αποθηκεύουμε το τρέχον και με F6 φορτώνουμε το τελευταία αποθηκευμένο παιχνίδι. Θα πρέπει να αναφέρετε τις δυνατότητες αυτές στην τεκμηρίωση. Η πλήρης έκδοση του παιχνιδιού που περιλαμβάνει όλα τα παραπάνω χαρακτηριστικά βρίσκεται στο αρχείο maze.gm6. Μπορείτε να το ανοίξετε, να το παίξετε και να το τροποποιήσετε όσο θέλετε. Μπορείτε για παράδειγμα να προσθέσετε περισσότερα επίπεδα (υπάρχουν μόνο 20 προς το παρόν). Μπορείτε να προσθέσετε αντικείμενα όπως π.χ. κλειδιά που ανοίγουν συγκεκριμένες πόρτες, μεταφορείς που σας μεταφέρουν από ένα σημείο του λαβυρίνθου σε άλλο, σφαίρες με τις οποίες θα σκοτώνει ο ήρωας τα τέρατα, πόρτες που ανοίγουν και κλείνουν περιοδικά, πάγο πάνω στον οποίο ο ήρωας διατηρεί τη κατεύθυνση της κίνησης του, παγίδες που πυροβολούν κλπ 1.2.19 Εν κατακλείδι Ελπίζω η συγκεκριμένη εργαστηριακή άσκηση να σας βοήθησε να φτιάξετε τα δικά σας παιχνίδια με το Game Maker. Μην ξεχνάτε να σχεδιάζετε το παιχνίδι σας αρχικά και κατόπιν να το κατασκευάζετε βήμα προς βήμα (ή καλύτερα αντικείμενο προς αντικείμενο) σταδιακά. Συνήθως υπάρχουν πολλοί τρόποι για να πετύχετε κάτι, έτσι αν κάτι δεν δουλεύει δοκιμάστε κάτι άλλο. Καλή τύχη! [21]