Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010
Δημιουργία ενός απλού παιχνιδιού με το Gamemaker (μετάφραση από το http://www.stuffucanuse.com/downloads/gamemaker-introductionlessons/free_game_downloads_gamemaker.htm) Αυτά είναι τα βασικότερα εργαλεία για τη δημιουργία του παιχνιδιού: 1 Κάποιες εικόνες που ονομάζονται SPRITES 2 Αντικείμενα (OBJECTS) που παίρνουν τη μορφή των sprites 3 Ένα χώρο (ROOM) για να εμφανιστούν και να κινούνται τα objects Δημιουργία Sprites Πρώτα πρέπει να εισάγουμε τις εικόνες μας, δηλαδή τα Sprites. Δεξί κλικ και Add new sprite. Click εδώ για εισαγωγή της εικόνας Με το Edit Sprite αλλάζουμε την εμφάνιση του. Επιλέγουμε την εικόνα που θα γίνει sprite. Αρχικά παίρνουμε τις εικόνες μας. Γι αυτό το παιχνίδι χρειαζόμαστε ένα wall και ένα clown. Προσθέτουμε τις εικόνες κάνοντας ADD / ADD SPRITE. Φτιάχνουμε ένα clown sprite και ένα wall sprite. 1
Με δεξί κλικ στο mouse προσθέτουμε το object. Ή επιλέγοντας ADD / ADD OBJECT. Πρέπει να δώσουμε στο sprite μερικές δυνατότητες, να κινείται ή να Δημιουργία ενός Object συγκρούεται με άλλα sprites. Τα Sprites που μπορούν να κάνουν ενέργειες λέγονται Objects. Όνομα Object. Επιλογή της ενέργειας που κάνει. Επιλογή του Sprite εδώ. Τα Tabs περιέχουν διάφορες ενέργειες των objects. Με Drag και drop της κάθε ενέργειας εδώ. Εδώ επιλέγουμε το Event με το οποίο πυροδοτείται μια ενέργεια. Στο Clown object: Κάνουμε τις ρυθμίσεις του clown Ο κλόουν αρχικά θα μετακινείται τυχαία μέσα στην πίστα. ΚάνουμεTick στο Solid για wall και clown. 2
Κλικ στο και επιλέγουμε Κάνουμε Drag της ενέργειας στο παράθυρο. Κάνουμε τη σύγκρουση (collision event) μεταξύ clown και wall (θα το δούμε παρακάτω σελ. 6): Όταν ο κλόουν χτυπήσει στον τοίχο θα κάνει bounce. Random(360) και στρέφεται σε τυχαία κατεύθυνση. Τι συμβαίνει αν κάνουμε κλικ πάνω στον κλόουν με το ποντίκι; Κινείται ακόμα γρηγορότερα σε τυχαία κατεύθυνση. Πατώντας όλα τα βέλη επιλέγουμε τυχαία κατεύθυνση. Αν κάνουμε κλικ σε αυτό το κουτάκι η ταχύτητα θα αυξάνει κατά 0.5 κάθε φορά που κάνουμε κλικ. Όλο και πιο γρήγορα! 3
Δημιουργία room (πίστας). Δεξί κλικ στο rooms και Add new room. Βάζουμε wall objects γύρω από την πίστα και ένα clown. Κάνουμε κλικ και επιλέγουμε μεταξύ των objects. Έλεγχος κίνησης ενός object με τα πλήκτρα-βελάκια Παρακάτω θα δούμε πως μπορούμε να ελέγξουμε την κίνηση ενός αντικειμένου με τα βελάκια. Στο παιχνίδι μας θα βάλουμε ένα απλό πρόβατο. Τα βελάκια θα οδηγούν το πρόβατο Left, right, up, down. Πρώτα φτιάχνουμε ένα νέο sprite με την εικόνα του προβάτου. Μετά ένα νέο OBJECT με το πρόβατο. Δεν ξεχνάμε να κάνουμε κλικ στο Solid box Με κλικ στο κουμπί επιλέγουμε event. Στο παράθυρο των Events επιλέγουμε KEY PRESS και μετά Left. Επιλογή του Key Press event 4
Θα θέλαμε να κινηθεί το πρόβατο αριστερά οπότε κάνουμε drag το εικονίδιο την ταχύτητα στο 2. Επαναλαμβάνουμε για τα UP / DOWN / RIGHT.. Πατάμε το left arrow βάζουμε Με τον τρόπο αυτό ένα πρόβατο θα μπορεί να κινηθεί στην πίστα ανάλογα με τις ενέργειες του χρήστη. Βάζουμε ένα πρόβατο στην πίστα μας. Αν πατήσουμε στο πράσινο RUN button το παιχνίδι θα ξεκινήσει. Τι μπορούμε να διορθώσουμε; Το πρόβατο κινείται αργά. Θα αλλάξουμε την ταχύτητα για κάθε κατεύθυνση σε 4 (UP / DOWN / LEFT / RIGHT) Το πρόβατο δε σταματάει αν αφήσουμε το πλήκτρο-βελάκι Το πρόβατο φεύγει εκτός πίστας και περνάει μέσα από τοίχους χρειαζόμαστε μια collision με το wall. 5
Κάνοντας το πρόβατο να σταματάει αν αφήσουμε το πλήκτρο-βελάκι Ανοίγουμε το Sheep-object. Επιλέγουμε το KEY RELEASE event, και στη συνέχεια στη λίστα που εμφανίζεται το <ANY KEY> (παρατηρήστε πόσες διαφορετικές επιλογές κουμπιών μπορείτε να χρησιμοποιήσετε σε ένα παιχνίδι). Πατάμε STOP, δηλ. το κεντρικό κουμπί Θέτουμε ταχύτητα 0 Ξανατρέχουμε το παιχνίδι μας. Δημιουργία Collision events (συγκρούσεις) Πώς σταματάει το πρόβατο αν χτυπήσει στο wall; Κάνουμε ένα νέο event, ένα Collision event με το Wall. Χρησιμοποιούμε μια ενέργεια Move και θέτουμε στο stop, και την ταχύτητα στο 0,όπως πριν. Το μόνο που μας μένει είναι να δημιουργήσουμε κάποιες ενέργειες που θα πραγματοποιηθούν αν έχουμε σύγκρουση προβάτου με κλόουν. 6
«Καταστρέφοντας» το πρόβατο αν συγκρουστεί με τον clown Δημιουργούμε ένα νέο collision event, αυτή τη φορά με τον κλόουν. Κάνουμε κλικ στο Tab για να επιλέξουμε την ενέργεια Destroy the instance. Drag στο παράθυρο του object μας. Επιλέγουμε το 2 ο tab. Click στο σκουπιδοτενεκέ. Με επιλογή του Self σύγκρουση με τον κλόουν. θα καταστραφεί το πρόβατο μετά τη Αν επιλέξουμε Other, τότε ο Clown θα είναι εκείνος που θα καταστραφεί. Στη συνέχεια θα δούμε πώς να ξαναγυρίσουμε το πρόβατο στην αρχική του θέση. Πώς να ξαναγυρίσουμε το πρόβατο στην αρχική του θέση; Ας αλλάξουμε λίγο το παιχνίδι μας. Αντί να καταστρέψουμε το πρόβατο μπορούμε να το οδηγήσουμε πάλι στην αρχική του θέση. Κάνουμε κλικ στην ενέργεια Destroy Instance action, στη σύγκρουση με τον clown και πατάμε το πλήκτρο DELETE key. Βρίσκουμε την ενέργεια Jump και κάνουμε κλικ στο Jump to the Start Position. Κάνουμε Drag και drop στο παράθυρο των events. Αυτό σημαίνει πως όταν συγκρουστούν clown-πρόβατο, το πρόβατο θα ξαναγυρίσει στην αρχική του θέση. 7
Make more clowns Μπορούμε να προσθέσουμε παραπάνω από έναν clown. Έτσι πάμε στην πίστα (room), επιλέγουμε clown από τη λίστα των objects και δημιουργούμε άλλα 5, καθώς και κάποια walls. Επιλέγουμε Clown από εδώ. Δημιουργώντας τροφή για το πρόβατο Οι εικόνες είναι από το http://www.gamingw.net αν θέλετε να βρείτε και άλλες. Φτιάχνουμε ένα νέο sprite που λέγεται plant και ένα νέο Object που λέγεται plant. Του δίνουμε τη μορφή του φυτού. Δημιουργούμε ένα νέο collision event στο Sheep object, όταν το πρόβατο συγκρουστεί με το φυτό. Πατάμε collision and και μετά plant Κάνουμε Drag ένα Destroy an Instance και επιλέγουμε να καταστρέψει Other (δηλαδή το plant,και όχι το πρόβατο) 8
Προσθέτουμε και άλλα φυτά στην πίστα. Τρέχουμε ξανά το παιχνίδι και βλέπουμε αν το πρόβατο μπορεί να φάει όλα τα φυτά χωρίς να το πιάσει ο κλόουν. 9
Variables (μεταβλητές) και Scoring Θα θέλαμε δύο πράγματα να συμβούν στο παιχνίδι μας: 1 Όταν το πρόβατο φάει όλα τα plants να προχωρήσουμε σε νέα και πιο δύσκολη πίστα. 2 Το πρόβατο θα έχει 3 ζωές (lives) και όταν τελειώσουν το παιχνίδι να ξεκινάει πάλι. Πώς μπορούμε, λοιπόν, να κάνουμε κάτι να συμβεί όταν ο αριθμός των plants = 0; Step events Ας φανταστούμε να είχαμε ένα event που κάθε στιγμή θα ελέγχει τις κινήσεις του παιχνιδιού και θα ελέγχει: Είναι ο αριθμός των plants 0; Αυτό λέγεται Step event. Στο sheep object δημιουργούμε ένα νέο event: το STEP. Κάτω από το CONTROL Tab υπάρχει το εικονίδιο If. Το μεταφέρουμε στο παράθυρο του αντικειμένου μας. Με το εργαλείο αυτό μετράμε πόσα αντίγραφα ενός αντικειμένου υπάρχουν σε μια πίστα και να φροντίσουμε να συμβεί κάτι αν φτάσουν σε ένα συγκεκριμένο αριθμό. Θα θέλαμε να ελέγξουμε το εξής: Αν (IF) ο αριθμός των plants είναι ίσος (equals) με το 0 τότε (THEN) να πάμε στην επόμενη πίστα (go to the next room). Κάνουμε κλικ στο και επιλέγουμε το object του οποίου τα αντίγραφα θέλουμε να μετρήσουμε. Στην περίπτωσή μας τα plants. Θα βάλουμε Equal to 0. Μέχρι στιγμής είδαμε ΠΟΤΕ θα συμβεί κάτι (αριθμός plants=0), αλλά δεν έχουμε προσδιορίσει ακόμα ΤΙ θα συμβεί. 10
Για να το κάνουμε αυτό θα τοποθετήσουμε τις εντολές μας σε ένα BLOCK. Πρόκειται για μια σειρά εντολών που ξεκινάνε με το και σταματάνε με το. Κάνουμε Drag n dropστα Start και Stop blocks και ένα εικονίδιο If the next room exists. Βρίσκεται στο MENU tab. Έτσι τελειώνουμε λέγοντας πως IF the number of plants equals 0 THEN go to the next room (αν υπάρχει). Προσθέτοντας σκορ Τοποθετούμε ένα νέο Object που το ονομάζουμε Scoring-χωρίς καμία εικόνα-sprite. Στο αντικείμενο αυτό δημιουργούμε ένα Create Event και πάμε στο Score tab. Κάνουμε Drag και drop τις Lives διπλό κλικ πάνω τους και θέτουμε τον αρχικό αριθμό ζωών σε 3 Άρα θα ξεκινάμε το παιχνίδι με 3 ζωές για το πρόβατο. Κάνουμε Drag στο Score και θέτουμε αρχική τιμή 0, Κάνοντας διπλό κλικ πάνω του. Κάνουμε Drag στο Set Windows caption. Θα μας εμφανίζει το score και τις ζωές (lives) Το αντικείμενο Scoring παρόλο που δεν έχει sprite πρέπει και αυτό να το τοποθετήσουμε στην πίστα μας. Ανοίγουμε το room και προσθέτουμε το αντικείμενο scoring. Εμφανίζεται ένα εικονίδιο. Το εικονίδιο αυτό δεν εμφανίζεται όταν παίξουμε το παιχνίδι. Το σκορ και οι ζωές θα εμφανίζονται στην πάνω αριστερά γωνία του παιχνιδιού. 11
Αλλάζοντας το σκορ και των αριθμό των ζωών Μείωση ζωών και τέλος παιχνιδιού Στο Sheep Object όταν συγκρούεται με τον clown, βάζουμε τις ζωές (set the lives) μειώνονται κατά 1. Οπωσδήποτε θα πρέπει να έχουμε tick στο relative box. Δηλαδή, ο νέος αριθμός των ζωών θα γίνεται όσο ήταν πριν μειωμένος κατά 1. να Αν οι ζωές, λοιπόν, γίνουν 0 το παιχνίδι θα τερματίζει. Στο Score Tab επιλέγουμε το If lives action. Το θέτουμε If the lives are equal to 0. Στην περίπτωση αυτή θα πρέπει να εκτελεστεί η ενέργεια End the Game που βρίσκεται στο main2 tab. Έτσι If the lives are equal to 0 then end the game. Υπάρχει ένα λάθος στο παιχνίδι μας! Αν ο clown χτυπήσει ένα sheep τότε πολύ γρήγορα ( κλάσματα δευτερολέπτου) χάνονται και οι τρεις ζωές. Το πρόβατο δεν προλαβαίνει να κινηθεί και έτσι με διαφορά κλασμάτων του δευτερολέπτου ο ίδιος κλόουν καταστρέφει και τις τρεις ζωές μας. Όταν το πρόβατα συγκρουστεί με τον κλόουν απλά θα προσθέσουμε μια ενέργεια Jump to a random position. Τη θέτουμε έτσι ώστε να αφορά το Other (Other σημαίνει ο Clown, Self θα σήμαινε το πρόβατο) 12