4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web...

195
ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ ΜΕ ΤΟ GAME MAKER Έκδοση 6.1 Συγγραφέας : Mark Overmars Μετάφραση : Σπύρος Σιούτας 1.ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ΠΡΟΓΡΑΜΜΑ Μια σφαιρική ιδέα του προγράμματος Πριν ερευνήσουμε της δυνατότητες του Game Maker είναι καλό να πάρουμε μια σφαιρική ιδέα πίσω από το πρόγραμμα. Τα παιχνίδια που δημιουργούνται με το Game Maker πραγματοποιούνται σε ένα ή περισσότερα δωμάτια. (Τα δωμάτια είναι επίπεδα, μη τρισδιάστατα, αλλά μπορούν να περιέχουν γραφικά που μοιάζουν με 3D). Σε αυτά τα δωμάτια τοποθετείτε αντικείμενα, (objects) τα οποία μπορείτε να καθορίσετε στο πρόγραμμα. Συνηθισμένα αντικείμενα είναι οι τοίχοι, οι κινούμενες μπάλες, ο κύριος χαρακτήρας, τα τέρατα, κ.λ.π.... Μερικά αντικείμενα, όπως π.χ οι τοίχοι, κάθονται και δεν κάνουν τίποτα. Άλλα αντικείμενα, όπως ο κύριος χαρακτήρας, θα κινηθούν και θα αντιδράσουν στις εντολές του παίχτη (πληκτρολόγιο, ποντίκι, και joystick) και το αντίθετο. Παραδείγματος χάριν, όταν συναντήσει ο κύριος χαρακτήρας ένα τέρας να πεθαίνει. Τα object είναι τα σημαντικότερα συστατικά των παιχνιδιών που γίνονται με το Game Maker, έτσι ας μιλήσουμε λίγο περισσότερο για αυτά. Καταρχήν, τα περισσότερα object χρειάζονται κάποια εικόνα για να τα καταστήσουν ορατά στην οθόνη. Τέτοιες εικόνες λέγονται sprites.To Sprite συχνά, δεν είναι μια ενιαία εικόνα αλλά ένα σύνολο εικόνων που παρουσιάζονται η μια μετά την άλλη για να δημιουργήσουν μια κινούμενη εικόνα (animation). Κατ' αυτό τον τρόπο φαίνεται ένας χαρακτήρας να περπατά, μια σφαίρα να περιστρέφεται, ένα διαστημόπλοιο μπορεί να εκραγεί, κ.λ.π. Κατά τη διάρκεια του παιχνιδιού, ένα sprite για ένα ιδιαίτερο object μπορεί να αλλάξει. (Έτσι ο χαρακτήρας μπορεί να φανεί διαφορετικός όταν περπατά αριστερά και διαφορετικός δεξιά). Μπορείτε να δημιουργήσετε τα δικά σας sprites στο Game Maker ή να τα φορτώνετε από αρχεία (π.χ. AnimatedGIF). Ορισμένα πράγματα θα συμβούν στα objects. Αυτά που θα συμβούν λέγονται γεγονότα (events). Τα αντικείμενα (objects) μπορούν να λάβουν ορισμένες ενέργειες (actions) όταν συμβαίνουν τα γεγονότα (events). Υπάρχει ένας μεγάλος αριθμός διαφορετικών γεγονότων που μπορούν να πραγματοποιηθούν και ένας μεγάλος αριθμός διαφορετικών ενεργειών που μπορούν τα αντικείμενά σας να πάρουν. Παραδείγματος χάριν, υπάρχει ένα γεγονός δημιουργίας (create event) όταν το

Transcript of 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web...

Page 1: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ

ΜΕ ΤΟ

GAME MAKER

Έκδοση   6.1

Συγγραφέας : Mark Overmars

Μετάφραση : Σπύρος Σιούτας

 

1.ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ΠΡΟΓΡΑΜΜΑΜια σφαιρική ιδέα του προγράμματος

Πριν ερευνήσουμε της δυνατότητες του Game Maker είναι καλό να πάρουμε μια σφαιρική ιδέα πίσω από το πρόγραμμα. Τα παιχνίδια που δημιουργούνται με το Game Maker πραγματοποιούνται σε ένα ή περισσότερα δωμάτια. (Τα δωμάτια είναι επίπεδα, μη τρισδιάστατα, αλλά μπορούν να περιέχουν γραφικά που μοιάζουν με 3D). Σε αυτά τα δωμάτια τοποθετείτε αντικείμενα, (objects) τα οποία μπορείτε να καθορίσετε στο πρόγραμμα. Συνηθισμένα αντικείμενα είναι οι τοίχοι, οι κινούμενες μπάλες, ο κύριος χαρακτήρας, τα τέρατα, κ.λ.π.... Μερικά αντικείμενα, όπως π.χ οι τοίχοι, κάθονται και δεν κάνουν τίποτα. Άλλα αντικείμενα, όπως ο κύριος χαρακτήρας, θα κινηθούν και θα αντιδράσουν στις εντολές του παίχτη (πληκτρολόγιο, ποντίκι, και joystick) και το αντίθετο. Παραδείγματος χάριν, όταν συναντήσει ο κύριος χαρακτήρας ένα τέρας να πεθαίνει. Τα object είναι τα σημαντικότερα συστατικά των παιχνιδιών που γίνονται με το Game Maker, έτσι ας μιλήσουμε λίγο περισσότερο για αυτά.

Καταρχήν, τα περισσότερα object χρειάζονται κάποια εικόνα για να τα καταστήσουν ορατά στην οθόνη. Τέτοιες εικόνες λέγονται sprites.To Sprite συχνά, δεν είναι μια ενιαία εικόνα αλλά ένα σύνολο εικόνων που παρουσιάζονται η μια μετά την άλλη για να δημιουργήσουν μια κινούμενη εικόνα (animation). Κατ' αυτό τον τρόπο φαίνεται ένας χαρακτήρας να περπατά, μια σφαίρα να περιστρέφεται, ένα διαστημόπλοιο μπορεί να εκραγεί, κ.λ.π. Κατά τη διάρκεια του παιχνιδιού, ένα sprite για ένα ιδιαίτερο object μπορεί να αλλάξει. (Έτσι ο χαρακτήρας μπορεί να φανεί διαφορετικός όταν περπατά  αριστερά και διαφορετικός δεξιά). Μπορείτε να δημιουργήσετε τα δικά σας sprites στο Game Maker ή να τα φορτώνετε από αρχεία (π.χ. AnimatedGIF).

Ορισμένα πράγματα θα συμβούν στα objects. Αυτά που θα συμβούν λέγονται γεγονότα (events). Τα αντικείμενα (objects) μπορούν να λάβουν ορισμένες ενέργειες (actions) όταν συμβαίνουν τα γεγονότα (events). Υπάρχει ένας μεγάλος αριθμός διαφορετικών γεγονότων που μπορούν να πραγματοποιηθούν και ένας μεγάλος αριθμός διαφορετικών ενεργειών που μπορούν τα αντικείμενά σας να πάρουν. Παραδείγματος χάριν, υπάρχει ένα γεγονός δημιουργίας (create event) όταν το αντικείμενο δημιουργείται στην οθόνη. (Για να είμαι ακριβέστερος, όταν μια περίπτωση ενός αντικειμένου δημιουργείται γιατί μπορούν να υπάρξουν πολλές περιπτώσεις του ίδιου αντικειμένου). Παραδείγματος χάριν, όταν ένα αντικείμενο (μια μπάλα) δημιουργείται μπορείτε να του δώσετε κάποια  κίνηση έτσι ώστε να αρχίζει να κινείται. Όταν δύο αντικείμενα συναντιούνται, έχουμε ένα γεγονός σύγκρουσης (collision event). Σε αυτή την περίπτωση μπορείτε να κάνετε τη μπάλα να σταματήσει ή να αντιστρέψει την κατεύθυνση. Μπορείτε επίσης να παίξετε έναν ήχο. Το πρόγραμμα σας αφήνει να καθορίσετε τους ήχους. Όταν ο παίχτης πιέζει ένα πλήκτρο στο πληκτρολόγιο υπάρχει ένα γεγονός πληκτρολογίου, και το αντικείμενο μπορεί να λάβει κατάλληλα μέτρα, όπως την κίνηση στην κατεύθυνση που του υποδεικνύεται. Ελπίζουμε ότι παίρνετε την ιδέα. Για κάθε αντικείμενο που σχεδιάζετε, μπορείτε να δείξετε τις ενέργειες σε διάφορα γεγονότα καθορίζοντας τη συμπεριφορά του αντικειμένου.

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

Page 2: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

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

Έτσι εν περιλήψει, τα ακόλουθα πράγματα (συχνά αποκαλούμενα πόροι) διαδραματίζουν έναν κρίσιμο ρόλο:

Αντικείμενα (objects): τα όποια είναι οι πραγματικές υπάρξεις στο παιχνίδι Δωμάτια (rooms): οι θέσεις (επίπεδα) στις οποίες τα αντικείμενα ζουν Sprites: εικόνες που χρησιμοποιούνται για να αντιπροσωπεύσουν τα αντικείμενα Ήχοι (sounds): μπορούν να χρησιμοποιηθούν στα παιχνίδια, είτε ως μουσική background είτε ως εφέ

Φόντο (background): οι εικόνες που χρησιμοποιούνται ως background για τα δωμάτια  

Υπάρχουν και άλλοι πόροι: χειρόγραφα (scripts),πορείες (paths), fonts (γραμματοσειρές), και χρονικές στιγμές (time lines). Αυτοί είναι σημαντικοί για πιο περίπλοκα παιχνίδια. Θα τους δείτε μόνο όταν τρέξετε το Game Maker στον προχωρημένο τρόπο (advance mode). Θα τους εξετάσουμε σε επόμενα κεφάλαια αργότερα στο παρόν έγγραφο.

Ας Εξετάσουμε ένα παράδειγμα 

Είναι καλό πρώτα για να ρίξουμε μια ματιά στο πώς να κάνουμε ένα πολύ απλό παιχνίδι. Υποθέτουμε εδώ ότι τρέχετε το Game Maker στον απλό τρόπο. Το πρώτο βήμα είναι να περιγράψουμε το παιχνίδι που θέλουμε να κάνουμε. (Πρέπει πάντα να το κάνετε αυτό πριν ξεκινήσετε, σας σώζει πολλή εργασία αργότερα). Το παιχνίδι θα είναι πολύ απλό: Υπάρχει μια μπάλα που αναπηδά γύρω γύρω μεταξύ μερικών τοίχων. Ο παίχτης πρέπει να προσπαθήσει να “χτυπήσει” τη μπάλα με το αριστερό κουμπί του ποντικιού. Κάθε φορά που την πετυχαίνει παίρνει ένα πόντο.

Όπως μπορείτε να δείτε, θα χρειαστούμε δύο διαφορετικά αντικείμενα (objects): τη μπάλα και τον τοίχο. Θα χρειαστούμε επίσης δύο διαφορετικά sprites: ένα για το αντικείμενο του τοίχου και ένα για το αντικείμενο της μπάλας. Τέλος, θέλουμε να ακούσουμε κάποιο ήχο όταν πετυχαίνουμε με το mouse την μπάλα. Θα χρησιμοποιήσουμε και ένα δωμάτιο στο οποίο το παιχνίδι πραγματοποιείται. (Εάν δεν θέλετε να κάνετε το ίδιο  μπορείτε να το φορτώσετε από το φάκελο παραδειγμάτων με το όνομα hit the ball.gm6).

Αρχικά κάνουμε τα sprites. Από τις επιλογές Add επιλέγουμε add sprite (μπορείτε επίσης να χρησιμοποιήσετε το κατάλληλο κουμπί στη μπάρα εργαλείων (toolbar). Μια φόρμα θα ανοίξει. Στο πεδίο name γράψτε "wall". Επιλέξτε load sprite και διαλέξτε μια κατάλληλη εικόνα. Αυτό είναι όλο, και μπορείτε να κλείσετε τη φόρμα. Με τον ίδιο τρόπο, δημιουργήστε sprite για την μπάλα.

Έπειτα, κάνουμε τον ήχο. Από τις επιλογές Add επιλέγουμε add sound. Μια διαφορετική φόρμα ανοίγει. Δώστε στον ήχο ένα όνομα και επιλέξτε το Load Sound. Επιλέξτε κάτι κατάλληλο ένα συμπαθητικό ήχο . Εάν είστε ικανοποιημένοι, με την επιλογή κλείστε τη φόρμα.

Το επόμενο βήμα είναι να δημιουργηθούν τα δύο αντικείμενα. Αρχικά κάνετε το αντικείμενο "wall". Πάλι από τις επιλογές Add επιλέξτε Αdd Object. Μια φόρμα θα ανοίξει αρκετά πιο σύνθετη από αυτά που έχουμε δει μέχρι τώρα. Στα αριστερά υπάρχουν κάποιες γενικές πληροφορίες για το αντικείμενο. Δώστε στο αντικείμενο ένα κατάλληλο όνομα, και από κάτω από την επιλογή δώστε το σωστό sprite το"wall". Επειδή ένας τοίχος είναι συμπαγής, πρέπει να “τσεκάρουμε” την επιλογή  Solid. Αυτό είναι όλο προς το παρόν. Πάλι δημιουργήστε ένα νέο αντικείμενο, το ονομάζουμε "ball", και του δίνουμε το sprite της μπάλας. Δεν κάνουμε την μπάλα στερεή. Για τη μπάλα, πρέπει να καθορίσουμε κάποια συμπεριφορά. Στη μέση βλέπετε έναν κενό κατάλογο γεγονότων(events).Υπάρχει ένα κουμπί ονομαζόμενο Add Event. Πατήστε το και θα δείτε όλα τα πιθανά γεγονότα που μπορεί να πάρει η μπάλα. Επιλέξτε το creation event. Αυτό προστίθεται τώρα στον κατάλογο γεγονότων.

Page 3: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Τέρμα δεξιά βλέπετε όλες τις πιθανές ενέργειες (actions) σε διάφορες ομάδες. Από την ομάδα move επιλέγουμε τη ενέργεια με τα 8 κόκκινα βέλη και την σέρνουμε στον κατάλογο ενέργειας στη μέση. Αυτή η ενέργεια θα κάνει το αντικείμενο να κινηθεί σε μια ιδιαίτερη κατεύθυνση. Μόλις το ρίξετε στον κατάλογο ενέργειας, ένας διάλογος εμφανίζετε στον οποίο μπορείτε να δείξετε την κατεύθυνση της κίνησης. Επιλέξτε και τα 8 βέλη για να επιλέξετε μια τυχαία κατεύθυνση. Βάλτε στην ταχύτητα την τιμή 8. Τώρα κλείστε το διάλογο. Έτσι τώρα η μπάλα θα αρχίσει να κινείται τη στιγμή που δημιουργείται. Δεύτερον, πρέπει να καθορίσουμε τι πρέπει να συμβεί στην περίπτωση ενός γεγονότος σύγκρουσης με τον τοίχο. Πάλι, πατήστε Add event.Click στο κουμπί Collision event (γεγονότα σύγκρουσης) και από τις επιλογές επιλέξτε το αντικείμενο wall. Για αυτό το γεγονός χρειαζόμαστε τη ενέργεια αναπήδησης. (Μπορείτε να δείτε τι κάνει κάθε ενέργεια  με το να αφήσετε το ποντίκι από πάνω). Τέλος, πρέπει να καθορίσουμε τι να συμβαίνει όταν πιέζει ο χρήστης το αριστερό κουμπί του ποντικιού στη μπάλα. Προσθέστε το αντίστοιχο γεγονός και επιλέξτε το αριστερό κουμπί του ποντικιού από τις επιλογές. Για αυτό το γεγονός χρειαζόμαστε μερικές ενέργειες: μια για να παίξει έναν ήχο (μπορεί να βρεθεί στην ομάδα ενεργειών main1) και μια για να αλλάξει το score και δύο για να κινήσει τη μπάλα προς μια νέα τυχαία θέση, και την κίνηση σε μια νέα κατεύθυνση (με τον ίδιο τρόπο όπως στο γεγονός δημιουργιών), επιλέξτε και έναν ήχο. Για το score, πληκτρολογήστε μια αξία 1 και τσεκάρετε το relative. Αυτό σημαίνει ότι το 1 προστίθεται στο τρέχον αποτέλεσμα. (Εάν κάνετε κάποιο λάθος  μπορείτε να πιέσετε δύο φορές τη ενέργεια για να αλλάξετε τις ιδιότητες της).

Τα αντικείμενά μας είναι έτοιμα τώρα. Αυτό που μένει είναι να καθοριστεί το δωμάτιο. Προσθέστε ένα νέο δωμάτιο στο παιχνίδι, πάλι από τις επιλογές Add. Στα δεξιά βλέπετε το κενό δωμάτιο. Στα αριστερά βρίσκουμε μερικές καρτέλες, μια για τον καθορισμό του φόντου (background), μια για τον καθορισμό μερικών γενικών ιδιοτήτων όπως το πλάτος και το ύψος του δωματίου, και μια όπου μπορείτε να προσθέσετε τις περιπτώσεις στο δωμάτιο. Από κάτω μπορείτε να επιλέξετε ένα αντικείμενο. Με κλίκ στο δωμάτιο μπορείτε να τοποθετήσετε τις περιπτώσεις εκείνου του αντικειμένου. Μπορείτε να αφαιρέσετε τις περιπτώσεις χρησιμοποιώντας το δεξί κουμπί του ποντικιού. Δημιουργήστε ένα συμπαθητικό όριο γύρω από το δωμάτιο χρησιμοποιώντας το αντικείμενο wall. Τέλος, τοποθετήστε 1 ή 2 αντικείμενα ball στο δωμάτιο. Το παιχνίδι μας είναι έτοιμο.

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

Συγχαρητήρια. Κάνατε το πρώτο σας μικρό παιχνίδι. Αλλά είναι ώρα να μάθουμε λίγα περισσότερα για το Game Maker.

 

 

Page 4: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Μια γενική ματιά στο πρόγραμμα

Όταν αρχίζετε το Game Maker η ακόλουθη φόρμα παρουσιάζεται:

(Στη πραγματικότητα, αυτό που βλέπετε είναι όταν τρέξουμε το Game Maker στον απλό τρόπο. Στον προχωρημένο τρόπο πρόσθετα στοιχεία παρουσιάζονται). Στα αριστερά βλέπετε διάφορους πόρους σε φακέλους όπου αναφερθήκαμε στο προηγούμενο κεφάλαιο: Sprites, sounds,backgrounds,objects,rooms,και δυο ακόμα:Game information και Global Game Settings. Στην κορυφή υπάρχουν οι γνώριμες επιλογές και η μπάρα εργαλείων (toolbar). Σε αυτό το κεφάλαιο θα περιγράψουμε εν συντομία τα διάφορα στοιχεία των επιλογών, τα κουμπιά, κ.λ.π.. Στα επόμενα κεφάλαια θα συζητήσουμε για κάθε ένα λεπτομερώς. Σημειώστε ότι πολλά πράγματα μπορούν να επιτευχθούν με διαφορετικούς τρόπους: με την επιλογή μιας εντολής από το menu, με κλίκ ενός κουμπιού, ή δεξί κλικ σε έναν πόρο.

File Menu

Στo file μπορείτε να βρείτε μερικές από τις συνηθισμένες εντολές για να φορτώσετε και να σώσετε τα αρχεία, συν μερικές ειδικές εντολές:

New. Επιλέξτε αυτήν την εντολή για να αρχίσετε ένα νέο παιχνίδι. Εάν το τρέχον παιχνίδι αλλάξει ρωτιέστε εάν θέλετε να το σώσετε. Υπάρχει επίσης και το εικονίδιο στη toolbar για αυτό.

Open. Ανοίγει ένα αρχείο. Τα αρχεία Game Maker έχουν την επέκταση gm6. (μπορείτε επίσης να ανοίξετε τα παλαιά αρχεία gmd που έγιναν με μια παλαιότερη έκδοση του Game Maker.Τα παλιά αρχεία όμως μπορεί να μην λειτουργήσουν σωστά στη νέα έκδοση). Υπάρχει ένα εικονίδιο στη toolbar για αυτήν την εντολή. Μπορείτε επίσης να ανοίξετε ένα παιχνίδι με το σύρσιμο του αρχείου στο παράθυρο του Game Maker.

Recent Files. Χρησιμοποιήστε αυτό το δευτερεύον μενού για να ανοίξετε πάλι τα πρόσφατα αρχεία. Save. Σώζει το αρχείο του παιχνιδιού με το τρέχον όνομά του. Εάν κανένα όνομα δεν διευκρινίστηκε πριν,

ρωτιέστε για ένα νέο όνομα. Μπορείτε να χρησιμοποιήσετε αυτήν την εντολή μόνο όταν αλλάξει το αρχείο. Πάλι, υπάρχει ένα κουμπί στη toolbar για αυτό.

Save As. Σώζει το αρχείο του παιχνιδιού με ένα διαφορετικό όνομα. Ρωτιέστε για ένα νέο όνομα. Create Executable. Μόλις το παιχνίδι σας είναι έτοιμο θα θελήσετε προφανώς να το δώσετε σε άλλους να το

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

Page 5: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Advanced Mode. Κάνοντας κλικ σε αυτή την εντολή το Game Maker θα αλλάξει μεταξύ του απλού και προχωρημένου τρόπου. Στον προχωρημένο τρόπο πρόσθετες εντολές και πόροι είναι διαθέσιμοι.

Exit. Προφανώς το αυτονόητο. Πιέστε το για έξοδο. Εάν αλλάξατε το τρέχον παιχνίδι θα ρωτηθείτε εάν θέλετε να το σώσετε.

Edit Menu

Το edit menu περιέχει διάφορες εντολές που αφορούν τους πόρους (object, sprite, sound, κ.λ.π).. Ανάλογα με τους πόρους μερικές από τις εντολές μπορεί να μην είναι διαθέσιμες.

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

Duplicate. Κάνει ένα αντίγραφο του πόρου και τον προσθέτει. Μια μορφή ανοίγει στην οποία μπορείτε να αλλάξετε τον πόρο.

Delete. Διαγράφει τον επιλεγμένο πόρο (ή μια ομάδα από πόρους). Να είστε προσεκτικοί. Αυτό είναι μη αναστρέψιμο. Εν τούτοις, θα προειδοποιηθείτε.                                           

Rename. Δίνει στον πόρο ένα νέο όνομα. Αυτό μπορεί επίσης να γίνει στη φόρμα του αντικειμένου. Properties. Χρησιμοποιήστε αυτήν την εντολή για να εμφανίσετε την φόρμα με τις ιδιότητες του κάθε πόρου.

Μπορείτε να χρησιμοποιήσετε πολλές φόρμες μαζί. Μπορείτε επίσης να εμφανίσετε τις ιδιότητες με διπλό κλικ στον κάθε πόρο.

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

Add Menu

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

Run Menu

Αυτές οι επιλογές χρησιμοποιούνται για να τρέξουν το παιχνίδι. Υπάρχουν δύο τρόποι να τρέξετε ένα παιχνίδι.

Run normally. Τρέχει το παιχνίδι κανονικά. Το παιχνίδι τρέχει με τον αποδοτικότερο τρόπο και θα κοιτάξει να ενεργήσει όπως σε ένα εκτελέσιμο παιχνίδι.

Run in debug mode. Τρέχει το παιχνίδι σε debug mode. Σε αυτόν τον τρόπο μπορείτε να ελέγξετε ορισμένες πτυχές του παιχνιδιού και μπορείτε να το σταματήσετε και να δείτε τη συμβαίνει βήμα βήμα. Αυτό είναι χρήσιμο όταν πηγαίνει στραβά κάτι αλλά είναι για πιο προχωρημένους χρήστες.

Μόλις τελειώσετε το παιχνίδι σας, μπορείτε να δημιουργήσετε αυτόνομο εκτελέσιμο αρχείο του παιχνιδιού χρησιμοποιώντας την εντολή στο File menu.

Window menu

Σε αυτές τις επιλογές βρίσκουμε μερικές από τις συνηθισμένες εντολές για να διαχειριστούμε τα παράθυρα:

Cascade. Επιλέξτε το για να φέρετε όλα τα παράθυρα έτσι ώστε να είναι ορατά. Arrange Icons. Τακτοποιήστε όλα τα παράθυρα. (Χρήσιμο ειδικότερα κατά την αλλαγή του μεγέθους της

κύριας φόρμας). Close all. Κλείστε όλα τα παράθυρα , ζητάει από τον χρήστη εάν πρέπει να σωθούν οι αλλαγές που έγιναν.

Help Menu

Εδώ βρίσκετε μερικές εντολές για να σας βοηθήσουν:

Contents. Χρησιμοποιήστε αυτήν την εντολή για να παρουσιάσετε το αρχείο βοήθειας. Registration. Αν και η βασική έκδοση του Game Maker μπορεί να χρησιμοποιηθεί δωρεάν, μπορείτε να

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

Page 6: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

Web site. Σας συνδέει με την ιστοσελίδα  του Game Maker όπου μπορείτε να βρείτε πληροφορίες για την πιο πρόσφατη έκδοση του Game Maker,συλλογές παιχνιδιών και πόρους για το Game Maker. Συστήνουμε να το ελέγχετε μία φορά το μήνα. 

About game maker Δίνει κάποιες σύντομες πληροφορίες για αυτήν την έκδοση του Game Maker. 

Οι φάκελοι των πόρων  

Στ' αριστερά της κύριας μορφής θα δείτε μια άποψη με φακέλους των πόρων στο παιχνίδι σας. Λειτουργεί με τον ίδιο τρόπο όπως ο windows explorer, και είστε εξοικειωμένοι πιθανότατα με αυτόν. Εάν ένα στοιχείο έχει το (+) σύμβολο μπροστά από αυτό μπορείτε να "κλικάρετε" στο σημάδι για να δείτε τους πόρους μέσα σε αυτό. Με κλικ στο (-)  αυτοί εξαφανίζονται πάλι. Μπορείτε να αλλάξετε το όνομα ενός πόρου (εκτός από τους φακέλους) επιλέγοντας τον (με ένα κλικ) και έπειτα κλικ στο όνομα. Διπλό κλικ σε έναν πόρο για της ιδιότητές του. Χρησιμοποιήστε το δεξί κουμπί του ποντικιού για να έχετε πρόσβαση στις ίδιες εντολές όπως στις Edit επιλογές. 

Μπορείτε να αλλάξετε τη δομή και την θέση των πόρων με το κράτημα του κουμπιού του ποντικιού πιεσμένο. Τώρα μπορείτε να σύρετε τον πόρο στην κατάλληλη θέση. (Φυσικά η θέση πρέπει να είναι η σωστή. Δεν μπορείτε να σύρετε έναν ήχο στον κατάλογο των sprites).

 Καθορισμός των sprites

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

Όταν κάνετε ένα παιχνίδι αρχίζετε κανονικά φτιάχνοντας sprites για τα αντικείμενα στο παιχνίδι σας. Πολλές συλλογές από sprites μπορούν να βρεθούν στην ιστοσελίδα του Game Maker. Άλλα sprites μπορούν να βρεθούν στο web, κανονικά υπό μορφή animated GIF αρχείων.

Για να προσθέσετε ένα sprite, επιλέξτε Add sprite από το Add menu, ή χρησιμοποιήστε το αντίστοιχο κουμπί στη μπάρα εργαλείων. Η ακόλουθη μορφή θα εμφανιστεί.

Στην κορυφή μπορείτε να βάλετε το όνομα του sprite. Όλα τα sprites (και όλοι οι άλλοι πόροι) έχουν ένα όνομα και καλύτερα είναι να δοθεί σε κάθε sprite ένα περιληπτικό όνομα. Σιγουρευτείτε ότι όλοι οι πόροι έχουν διαφορετικά ονόματα. Αν κι αυτό δεν απαιτείται, σαν συμβουλή, χρησιμοποιήστε μόνο γράμματα και ψηφία και το σύμβολο ( _ ) (κάτω παύλα) στο όνομα ενός sprite (και σε οποιονδήποτε άλλο πόρο) και να ξεκινά πάντα με γράμμα. Ειδικότερα μην χρησιμοποιήσετε το space. Αυτό θα το καταλάβετε μόλις αρχίσετε τον κώδικα.

Page 7: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Για να φορτώσετε ένα sprite, κλικ στο κουμπί load sprite. Ένας γνώριμος διάλογος αρχείων ανοίγει στον οποίο μπορείτε να επιλέξετε το sprite. Το Game maker μπορεί να φορτώσει πολλά διαφορετικά αρχεία γραφικών. Όταν φορτώνετε ένα animated GIF, διαφορετικές υπό-εικόνες διαμορφώνουν το sprite. Μόλις φορτωθεί το sprite η πρώτη υπό-εικόνα παρουσιάζεται στα δεξιά. Όταν υπάρχουν πολλές υπό-εικόνες, μπορείτε να της δείτε χρησιμοποιώντας τα βέλη.

Το checkbox transparent (διαφάνεια) δείχνει εάν το ορθογώνιο φόντο (background) ενός sprite  πρέπει να θεωρηθεί ως διαφανές. Οι περισσότερες εικόνες από sprites είναι διαφανείς. Το background καθορίζεται από το χρώμα του κάτω αριστερού pixel της εικόνας. Έτσι σιγουρευτείτε ότι κανένα pixel της εικόνας δεν έχει αυτό το χρώμα. (Σημειώστε ότι τα αρχεία GIF καθορίζουν συχνά το χρώμα διαφάνειάς τους. Αυτό το χρώμα δεν χρησιμοποιείται στο Game Maker).

Με το κουμπί edit sprite μπορείτε να μορφοποιήσετε το sprite, ή ακόμα και να δημιουργείτε ένα νέο sprite.

Ήχοι και μουσική 

Τα περισσότερα παιχνίδια έχουν ορισμένα εφέ και κάποια μουσική background. Πολλά χρήσιμα εφέ μπορούν να βρεθούν στην ιστοσελίδα του Game Maker. Πολλά περισσότερα μπορούν να βρεθούν σε άλλες θέσεις στον Web.

Για να προσθέσετε έναν ήχο στο παιχνίδι σας, χρησιμοποιήστε το Add sound στις επιλογές Add ή χρησιμοποιήστε το αντίστοιχο κουμπί στη μπάρα εργαλείων. Η ακόλουθη μορφή θα εμφανιστεί.

 

Για να φορτώσετε έναν ήχο, πιέστε το κουμπί load sound. Ένας γνώριμος διάλογος αρχείων ανοίγει πάνω στον οποίο μπορείτε να επιλέξετε το αρχείο. Υπάρχουν δύο τύποι αρχείων, Wave και Midi. Τα αρχεία Wave χρησιμοποιούνται για τα εφέ. Χρησιμοποιούν πολλή μνήμη αλλά για λίγο. Τα αρχεία Midi εκτελούν τη μουσική με διαφορετικό τρόπο. Κατά συνέπεια χρησιμοποιούν λιγότερη μνήμη, αλλά περιορίζονται μόνο για την μουσική φόντου (background). Επίσης, δεν μπορούν δύο Midi αρχεία να παίζουν ταυτόχρονα στο παιχνίδι, αντίθετα με τα wave που μπορούν.

Μόλις φορτώσετε ένα αρχείο μουσικής μπορείτε να ακούσετε τον ήχο χρησιμοποιώντας το κουμπί play. Υπάρχει επίσης ένα κουμπί save sound για να σώσει τον τρέχοντα ήχο σε ένα αρχείο. Αυτό το κουμπί μπορείτε να το χρησιμοποιήσετε μήπως χάσετε τον αρχικό ήχο.

Φόντο

Ο τρίτος τύπος βασικού πόρου είναι τα backgrounds. Τα backgrounds είναι συνήθως μεγάλες εικόνες που χρησιμοποιούνται ως Backgrounds (φόντο) ή  foregrounds (πρώτο πλάνο) για τα δωμάτια στα οποία το παιχνίδι πραγματοποιείται. Συχνά οι εικόνες background γίνονται κατά τέτοιο τρόπο ώστε μπορούν να γεμίσουν μια περιοχή χωρίς οπτικές ρωγμές (χωρίσματα). Κατ' αυτό τον τρόπο μπορείτε να γεμίσετε το background με κάποιο σχέδιο. Διάφορα τέτοια backgrounds μπορούν να βρεθούν στην ιστοσελίδα του Game Maker και σε άλλες θέσεις στο Web.

Για να προσθέσετε ένα background στο παιχνίδι σας, χρησιμοποιήστε το στοιχείο Add background στις επιλογές Add ή χρησιμοποιεί το αντίστοιχο κουμπί στη μπάρα εργαλείων. Η ακόλουθη μορφή θα εμφανιστεί.

Page 8: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Πατήστε Load background για να φορτώσετε μια εικόνα background. Το Game Maker υποστηρίζει πολλά formats. Οι εικόνες background δεν μπορούν να έχουν υπο-εικόνες!(Animation) Το checkbox transparent δείχνει εάν το background είναι ή όχι διαφανές. Τα περισσότερα backgrounds δεν είναι διαφανή έτσι σαν προεπιλογή δεν είναι επιλεγμένη. Σαν χρώμα διαφάνειας το χρώμα του κάτω αριστερού pixel χρησιμοποιείται.

Μπορείτε να αλλάξετε το background ή να δημιουργήσετε ένα νέο χρησιμοποιώντας το κουμπί Εdit background.

Καθορισμός των αντικειμένων

Με τους πόρους που έχουμε δει μέχρι τώρα μπορείτε να προσθέσετε μερικές εικόνες και ήχους στο παιχνίδι, αλλά δεν κάνουν τίποτα. Ερχόμαστε τώρα στον σημαντικότερο πόρο του Game Maker, τα αντικείμενα. Τα αντικείμενα είναι οντότητες στο παιχνίδι που κάνουν διάφορα πράγματα. Τις περισσότερες φορές έχουν ένα sprite ως γραφική αντιπροσώπευση έτσι ώστε να τα βλέπετε. Έχουν συμπεριφορά επειδή μπορούν να αντιδράσουν σε ορισμένα γεγονότα. Όλα τα πράγματα που βλέπετε στο παιχνίδι (εκτός από το background) είναι αντικείμενα. (Ή για να είμαι ακριβέστερος, είναι περιπτώσεις αντικειμένων). Οι χαρακτήρες, τα τέρατα, οι σφαίρες, οι τοίχοι, κ.λ.π. είναι όλα αντικείμενα. Επίσης μπορούν να υπάρξουν ορισμένα αντικείμενα που δεν βλέπετε αλλά που ελέγχουν ορισμένες πτυχές του παιχνιδιού.

Παρακαλώ αντιληφθείτε τη διαφορά μεταξύ των sprites και των αντικειμένων (objects). Το Sprite είναι εικόνες (ή πολλές εικόνες) που δεν έχουν καμία συμπεριφορά. Τα αντικείμενα (object) έχουν τα sprite για να τα αντιπροσωπεύουν αλλά τα αντικείμενα έχουν τη συμπεριφορά και της ενέργειες μέσα στο παιχνίδι. Χωρίς αντικείμενα δεν υπάρχει κανένα παιχνίδι

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

Για να προσθέσετε ένα αντικείμενο στο παιχνίδι σας, επιλέξτε Add object από τις επιλογές Add. Η ακόλουθη φόρμα θα εμφανιστεί:

Page 9: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

Όπως πάντα, μπορείτε (και πρέπει) να δώσετε στο αντικείμενο σας ένα όνομα. Έπειτα μπορείτε να επιλέξετε το sprite για το αντικείμενο. Για αυτό κάντε κλικ με το αριστερό κουμπί του ποντικιού στο παράθυρο sprite ή στο κουμπί επιλογών δίπλα σ’ αυτό. Εμφανίζονται οι επιλογές με όλα τα διαθέσιμα sprites. Επιλέξτε αυτό που θέλετε να χρησιμοποιήσετε για το αντικείμενο. Εάν δεν έχετε sprite ακόμα, μπορείτε να χρησιμοποιήσετε το κουμπί New για να προσθέσετε ένα νέο sprite και να το αλλάξετε. Επίσης, όταν επιλέγετε ένα sprite θα εμφανιστεί ένα κουμπί edit που σημαίνει ότι μπορείτε να το χρησιμοποιήσετε για να διαμορφώσετε το sprite. Αυτό είναι γρηγορότερο από το να βάζετε πρώτα το sprite και μετά να δηλώνετε το object. 

Κάτω από αυτό υπάρχουν δύο checkbox.Visible (ορατό) δείχνει εάν οι περιπτώσεις αυτού του αντικειμένου είναι ορατές. Σαφώς, τα περισσότερα αντικείμενα είναι ορατά, αλλά μερικές φορές είναι χρήσιμο να υπάρξουν αόρατα αντικείμενα. Παραδείγματος χάριν, μπορείτε να χρησιμοποιήσετε ένα αντικείμενο για να καθορίσετε την κίνηση σε ένα τέρας. Τα αόρατα αντικείμενα θα αντιδράσουν στα γεγονότα και άλλες περιπτώσεις μπορούν να συγκρουστούν με αυτά. Το checkbox Solid δείχνει εάν αυτό είναι ένα στερεό(συμπαγή) αντικείμενο (όπως ένας τοίχος). Οι συγκρούσεις με τα στερεά αντικείμενα αντιμετωπίζονται διαφορετικά από τις συγκρούσεις με τα μη-στερεά αντικείμενα. Να χρησιμοποιήσετε την επιλογή Solid μόνο για τα αντικείμενα που δεν κινούνται.

Γεγονότα

Το Game Maker χρησιμοποιεί αυτό που λέμε γεγονότα οδηγιών κατά προσέγγιση. Αυτή η εργασία είναι ως εξής. Όποτε κάτι συμβαίνει στο παιχνίδι οι περιπτώσεις των αντικειμένων παίρνουν τα γεγονότα (είδος μηνυμάτων που λένε ότι κάτι έχει συμβεί). Οι περιπτώσεις μπορούν έπειτα να αντιδράσουν σε αυτά τα μηνύματα με την εκτέλεση ορισμένων ενεργειών. Για κάθε αντικείμενο πρέπει να δείξετε σε ποια γεγονότα αποκρίνεται και ποίες ενέργειες πρέπει να εκτελέσει όταν το γεγονός εμφανίζεται. Αυτό μπορεί να ακούγεται περίπλοκο αλλά είναι πραγματικά πολύ εύκολο. Καταρχήν, για τα περισσότερα γεγονότα το αντικείμενο δεν είναι απαραίτητο να κάνει τίποτα. Για τα γεγονότα όπου κάτι πρέπει να γίνει μπορείτε να χρησιμοποιήσετε την μέθοδο drag-and-drop για να δείξετε τις ενέργειες.

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

Page 10: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Τώρα μπορείτε να προσθέσετε ενέργειες σε ένα άλλο γεγονός. Κλικ στο Add event με το αριστερό κουμπί του ποντικιού επιλέξετε το γεγονός και σύρετε τις ενέργειες στον κατάλογο.

Μπορείτε να αλλάξετε τη σειρά των ενεργειών στον κατάλογο χρησιμοποιώντας πάλι drag-and-drop. Εάν κρατάτε το< ALT > ενώ το σέρνετε μέσα τον κατάλογο, κάνετε ένα αντίγραφο της ενέργειας. Μπορείτε ακόμη και να χρησιμοποιήσετε drag-and-drop μεταξύ των καταλόγων ενέργειας  σε διαφορετικά αντικείμενα. Όταν κάνετε  δεξί κλικ σε μια ενέργεια, διάφορες επιλογές εμφανίζονται στις οποίες μπορείτε, να διαγράψετε την επιλεγμένη ενέργεια (μπορεί επίσης να γίνεί με τη χρησιμοποίηση του< Del > ) ή αντιγραφή και επικόλληση. (Μπορείτε να επιλέξετε πολλές ενέργειες μαζί κρατώντας το < shift> ή το < CTRL >, πιέστε < Ctrl><A > για να επιλέξετε όλες τις ενέργειες). Όταν κρατάτε το ποντίκι σας πάνω από μια ενέργεια, εμφανίζεται μια περιγραφή της ενέργειας. Δείτε στο επόμενο κεφάλαιο περισσότερες πληροφορίες για τις ενέργειες.

Για να διαγράψετε το επιλεγμένο γεγονός μαζί με όλες τις ενέργειές του πιέστε το κουμπί <Delete>. (Τα γεγονότα χωρίς καμία ενέργεια θα διαγραφούν αυτόματα όταν κλείσετε τη φόρμα έτσι δεν είναι ανάγκη να διαγραφούν με το χέρι). Εάν θέλετε να ορίσετε ενέργειες σε ένα διαφορετικό γεγονός πιέστε το κουμπί Change και επιλέξτε το νέο γεγονός που θέλετε. Χρησιμοποιώντας το δεξί κουμπί του mouse πάνω στον κατάλογο γεγονότων, εμφανίζονται οι επιλογές: duplicate, add, delete και change an event

Όπως είπαμε, για να προσθέσουμε ένα γεγονός, πιέστε το κουμπί add event. Η ακόλουθη φόρμα εμφανίζετε:

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

Create eventΑυτό το γεγονός συμβαίνει όταν μια περίπτωση ενός αντικειμένου δημιουργείται μέσα στο χώρο. Χρησιμοποιείται κανονικά για να θέσει την περίπτωση σε κίνηση ή/και για να θέσει ορισμένες μεταβλητές για την περίπτωση.

  Destroy event Αυτό το γεγονός συμβαίνει όταν η περίπτωση καταστρέφεται. Για να είμαι ακριβείς, συμβαίνει αμέσως προτού καταστραφεί, έτσι η περίπτωση ακόμα υπάρχει όταν εκτελείται το γεγονός! Τις περισσότερες φορές αυτό το γεγονός δεν χρησιμοποιείται αλλά μπορείτε παραδείγματος χάριν να το χρησιμοποιήσετε για να αλλάξετε το αποτέλεσμα ή για να δημιουργήσετε κάποιο άλλο αντικείμενο.

  Alarm eventΚάθε περίπτωση έχει 8 ρολόγια. Μπορείτε να θέσετε αυτά τα ρολόγια χρησιμοποιώντας ορισμένες ενέργειες (δείτε το επόμενο κεφάλαιο). Το ρολόι μετράει αντίστροφα έως ότου φθάσει 0 όπου θα χτυπήσει το ξυπνητήρι και το γεγονός θα συμβεί. Για να δείξετε τις ενέργειες για ένα ρολόι, πρέπει αρχικά να το επιλέξετε στις επιλογές add event. Τα ρολόγια ξυπνητήρια είναι πολύ χρήσιμα. Μπορείτε να τα χρησιμοποιήσετε για να αφήσετε ορισμένα πράγματα να συμβούν κατά διαστήματα. Παραδείγματος χάριν ένα τέρας μπορεί να αλλάξει την κατεύθυνση κίνησής του κάθε 20 βήματα. (Σε τέτοιες περιπτώσεις μια από τις ενέργειες στο γεγονός πρέπει να θέσει το ρολόι να χτυπήσει ξανά).

Step eventsΤο γεγονός βημάτων (step event) συμβαίνει σε κάθε βήμα του παιχνιδιού. Εδώ μπορείτε να βάλετε τις ενέργειες που πρέπει να εκτελούνται συνεχώς. Παραδείγματος χάριν, εάν ακολουθεί ένα αντικείμενο ένα άλλo, εδώ μπορείτε να προσαρμόσετε την κατεύθυνση της κίνησης προς το αντικείμενο που ακολουθεί. Να είστε προσεκτικός με αυτό το γεγονός . Μην βάλτε πολλές περίπλοκες ενέργειες στο γεγονός βημάτων των αντικειμένων του οποίου υπάρχουν πολλές περιπτώσεις. Αυτό μπορεί να επιβραδύνει το παιχνίδι. Για να είμαι ακριβείς, υπάρχουν τρία διαφορετικά γεγονότα βημάτων. Κανονικά χρειάζεστε μόνο την μια. Αλλά μπορείτε επίσης να επιλέξετε begin step

Page 11: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

και end step.Το begin step εκτελείται στην αρχή κάθε βήματος, προτού να πραγματοποιηθούν οποιαδήποτε άλλα γεγονότα. Το κανονικό γεγονός βημάτων<step event> εκτελείται αμέσως προτού να τεθούν οι περιπτώσεις στις νέες θέσεις τους. Το end step εκτελείται στο τέλος του βήματος, αμέσως πριν από τη σχεδίαση. Αυτό χρησιμοποιείται χαρακτηριστικά για να αλλάξει το sprite ανάλογα με την τρέχουσα κατεύθυνση.

Collision event Όποτε δύο περιπτώσεις συγκρούονται (δηλαδή η επικάλυψη τον sprites) ένα γεγονός μιας σύγκρουσης εμφανίζεται. Καλά, για να είμαστε ακριβείς δύο συγκρούσεις του γεγονότος εμφανίζονται, μια για κάθε περίπτωση. Η περίπτωση μπορεί να αντιδράσει σε αυτό το γεγονός. Για αυτόν τον λόγο, από τις επιλογές επιλέξτε το αντικείμενο με το οποίο θέλετε να καθορίσετε το γεγονός σύγκρουσης. Έπειτα τοποθετείτε τις ενέργειες.

Υπάρχει μια διαφορά σε αυτό που συμβαίνει όταν η περίπτωση συγκρούεται με ένα στερεό αντικείμενο ή με ένα μη-στερεό. Καταρχήν, όταν δεν υπάρχει καμία ενέργεια στο γεγονός σύγκρουσης, τίποτα δεν συμβαίνει. Η τρέχουσα περίπτωση κρατά απλά στην κίνηση ακόμα και όταν το άλλο αντικείμενο είναι στερεό. Όταν το γεγονός σύγκρουσης περιέχει ενέργειες τα εξής συμβαίνουν:

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

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

Keyboard events Όταν ο παίχτης πιέζει ένα πλήκτρο, ένα γεγονός του πληκτρολογίου συμβαίνει για όλες τις περιπτώσεις όλων των αντικειμένων. Υπάρχει ένα διαφορετικό γεγονός για κάθε πλήκτρο. Στις επιλογές μπορείτε να επιλέξετε το πλήκτρο για  να καθορίσετε το γεγονός  και τις ενέργειες που θα συμβούν. Όσο κρατά ο παίχτης το πλήκτρο πιεσμένο το γεγονός συμβαίνει. Υπάρχουν δύο ειδικά γεγονότα πληκτρολογίων. Το ένα λέγετε < no key >. Αυτό το γεγονός συμβαίνει σε κάθε βήμα όταν δεν πιέζεται κανένα πλήκτρο. To δεύτερο λέγετε < any key > και συμβαίνει όταν οποιοδήποτε πλήκτρο πιέζεται.

Mouse event Ένα γεγονός του ποντικιού<mouse event> συμβαίνει για μια περίπτωση όταν ο δείκτης του mouse βρίσκεται μέσα στο sprite που αντιπροσωπεύει την περίπτωση. Ανάλογα με ποιο κουμπί του mouse πιέζετε έχουμε τα: no button, left button, right button, ή middle button event. Τα γεγονότα των κουμπιών του ποντικιού παράγονται σε κάθε βήμα εφ' όσον κρατά ο παίχτης το κουμπί του ποντικιού πιεσμένο. Τα press event παράγονται μόνο όταν πιέζεται το κουμπί. Τα release event παράγονται μόνο όταν απελευθερώνεται το κουμπί. Σημειώστε ότι αυτά τα γεγονότα εμφανίζονται μόνο όταν είναι το ποντίκι επάνω από την περίπτωση. Εάν θέλετε να μην είναι πάνω στην περίπτωση  και να είναι σε μια αυθαίρετη θέση, χρησιμοποιήστε τα global mouse events που μπορούν να βρεθούν σε ένα δευτερεύον μενού. Υπάρχουν δύο ειδικά γεγονότα ποντικιού. Το Mouse enter, που συμβαίνει όταν το ποντίκι μπαίνει ανάμεσα στην περίπτωση. Το Mouse leave που συμβαίνει όταν το ποντίκι αφήνει την περίπτωση. Αυτά τα γεγονότα χρησιμοποιούνται χαρακτηριστικά για να αλλάξουν την εικόνα ή να παίξουν κάποιο ήχο. Τέλος υπάρχουν διάφορα γεγονότα σχετικά με το joystickk. Μπορείτε να δείξετε ενέργειες για τις τέσσερις κύριες κατευθύνσεις του joystick (σε μια διαγώνια κατεύθυνση και τα δύο γεγονότα συμβαίνουν). Επίσης μπορείτε να καθορίσετε ενέργειες μέχρι και για 8 κουμπιά του joystick. Μπορείτε να έχετε μέχρι 2 joystick.

Other events Υπάρχουν διάφορα άλλα γεγονότα που μπορούν να είναι χρήσιμα σε ορισμένα παιχνίδια. Βρίσκονται σε αυτές τις επιλογές. Τα ακόλουθα γεγονότα μπορούν να βρεθούν εδώ: outside: Αυτό το γεγονός συμβαίνει όταν η περίπτωση βρίσκεται εντελώς έξω από το δωμάτιο. Αυτό είναι

χαρακτηριστικά μια καλή στιγμή για να την καταστρέψετε. Boundary: Αυτό το γεγονός συμβαίνει όταν η περίπτωση φτάνει στο όριο του δωματίου.

Page 12: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Game start: Αυτό το γεγονός συμβαίνει για όλες τις περιπτώσεις στο πρώτο δωμάτιο όταν αρχίζει το παιχνίδι. Συμβαίνει πριν από το γεγονός έναρξης των δωματίων (δείτε παρακάτω) αλλά μετά από τα γεγονότα δημιουργιών για τις περιπτώσεις στο δωμάτιο. Αυτό το γεγονός καθορίζεται χαρακτηριστικά μόνο σε ένα αντικείμενο "ελεγκτή"(controller) και χρησιμοποιείται για να αρχίσει κάποια μουσική background, για να ξεκινήσει μερικές μεταβλητές, ή να φορτώσει μερικά δεδομένα.

Game end: Το γεγονός συμβαίνει σε όλες τις περιπτώσεις όταν τελειώνει το παιχνίδι. Πάλι χαρακτηριστικά μόνο ένα αντικείμενο καθορίζει αυτό το γεγονός. Χρησιμοποιείται παραδείγματος χάριν για να αποθηκεύσει ορισμένα δεδομένα σε ένα αρχείο.

Room start: Αυτό το γεγονός συμβαίνει για όλες τις περιπτώσεις αρχικά σε ένα δωμάτιο όταν αρχίζει το δωμάτιο. Συμβαίνει μετά από τα γεγονότα δημιουργιών.

Room end: Αυτό το γεγονός συμβαίνει σε όλες τις υπάρχουσες περιπτώσεις όταν τελειώνει το δωμάτιο. No more lives: Το Game Maker έχει ένα ενσωματωμένο σύστημα ζωών. Υπάρχει μια ενέργεια για να δηλωθεί

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

No more health: Το Game Maker έχει ένα ενσωματωμένο σύστημα για ενέργεια. Υπάρχει μια ενέργεια για να δηλωθεί και να αλλαχτεί η ενέργεια. Όποτε η ενέργεια γίνεται λιγότερη ή ίση από 0, αυτό το γεγονός συμβαίνει. Χρησιμοποιείται χαρακτηριστικά για να μειώσει τον αριθμό ζωών ή για να ξαναξεκινήσει το παιχνίδι.

End of animation: Όπως υποδεικνύεται πιο πάνω, ένα sprite αποτελείται από διάφορες εικόνες που παρουσιάζονται η μια μετά την άλλη. Αφότου παρουσιάζεται η τελευταία εικόνα αρχίζει πάλι με την πρώτη. Το γεγονός συμβαίνει ακριβώς σε εκείνη την στιγμή. Για παράδειγμα, αυτό μπορεί να χρησιμοποιηθεί για να αλλάξει το sprite, ή να καταστρέψει την περίπτωση.

End of path: Αυτό το γεγονός συμβαίνει όταν η περίπτωση ακολουθεί μια πορεία<path> και το τέλος της πορείας επιτυγχάνεται.

User defined: Υπάρχουν οκτώ από αυτά τα γεγονότα. Κανονικά δεν συμβαίνουν ποτέ εκτός αν εσείς τα καλείτε από ένα κομμάτι του κώδικα.

Drawing event Οι περιπτώσεις, όταν είναι ορατές, σχεδιάζουν το sprite τους σε κάθε βήμα στην οθόνη. Όταν τοποθετείτε ενέργειες στο γεγονός του σχεδιασμού <drawing event>,το sprite δεν σχεδιάζετε, αλλά αυτές οι ενέργειες εκτελούνται αντί για αυτό. Αυτό μπορεί να χρησιμοποιηθεί για να σχεδιάσει κάτι εκτός από sprite, ή να κάνει πρώτα μερικές αλλαγές  στις παραμέτρους του sprite. Υπάρχουν διάφορες ενέργειες για σχέδιο ειδικά για το Drawing event. Σημειώστε ότι το γεγονός σχεδίων<drawing event> εκτελείται μόνο όταν το αντικείμενο είναι ορατό. Επίσης σημειώστε ότι, ανεξαρτήτως από αυτό που σχεδιάζετε, τα γεγονότα σύγκρουσης<collision events> είναι βασισμένα στο  sprite που συνδέεται με την περίπτωση.

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

Key release events Αυτό το γεγονός είναι παρόμοιο με το γεγονός του πληκτρολογίου αλλά συμβαίνει μόνο μόλις απελευθερώνεται το πλήκτρο, και όχι συνεχώς. Eίναι σημαντικό να γίνει κατανοητή η σειρά με την οποία το Game Maker επεξεργάζεται τα γεγονότα. Αυτή είναι το ακόλουθη: Begin step events Alarm events Keyboard, Key press, and Key release events Mouse events

o Normal step events (τώρα όλες οι περιπτώσεις τοποθετούνται στις νέες θέσεις τους) Collision events End step events                                     Drawing events

Creation, destroy και άλλα γεγονότα εκτελούνται όταν συμβαίνουν τα αντίστοιχα γεγονότα.  

Page 13: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Ενέργειες

Οι ενέργειες δείχνουν τα πράγματα που συμβαίνουν σε ένα παιχνίδι που δημιουργείται με το Game Maker. Οι ενέργειες τοποθετούνται στα γεγονότα των αντικειμένων. Όποτε το γεγονός πραγματοποιείται αυτές οι ενέργειες εκτελούνται, με συνέπεια ορισμένη συμπεριφορά για τις περιπτώσεις του αντικειμένου. Υπάρχει ένας μεγάλος αριθμός διαφορετικών ενεργειών διαθέσιμων και είναι σημαντικό να καταλάβετε τι κάνουν. Σε αυτό το κεφάλαιο θα περιγράψω τις ενέργειες στον απλό τρόπο. Σημειώστε ότι μερικές από αυτές τις ενέργειες είναι διαθέσιμες, μόνο στην δηλωμένη έκδοση (registered version) του Game Maker.

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

Ας επαναλάβουμε εν συντομία: Για να βάλετε μια ενέργεια σε ένα γεγονός, σέρνετε τη ενέργεια από τις   καρτέλες στον κατάλογο ενέργειας, ή πατώντας το δεξί κουμπί του mouse. Μπορείτε να αλλάξετε τη σειρά στον κατάλογο, χρησιμοποιώντας πάλι το σύρσιμο. Κρατώντας το< ALT > ενώ σέρνετε μια ενέργεια κάνετε ένα αντίγραφο της ενέργειας. (Μπορείτε να σέρνετε και να αντιγράψετε τις ενέργειες μεταξύ των καταλόγων σε διαφορετικές φόρμες ενός αντικειμένου). Χρησιμοποιήστε το δεξί κουμπί του ποντικιού και επιλέξτε την επιλογή delete για να αφαιρέσετε τις ενέργειες (ή χρησιμοποιήστε το < Del >) και επίσης για να αντιγράψετε και να κολλήσετε τις επιλεγμένες ενέργειες.

Όταν ρίχνετε μια ενέργεια στον κατάλογο ενέργειας, ένα παράθυρο διαλόγου εμφανίζετε τις περισσότερες φορές, στο οποίο μπορείτε να συμπληρώσετε ορισμένες παραμέτρους για τη ενέργεια. Οι παράμετροι θα περιγραφούν παρακάτω κατά την περιγραφή των ενεργειών. Δύο τύποι παραμέτρων εμφανίζονται σε πολλές ενέργειες έτσι θα τους περιγράψουμε  εδώ. Στην κορυφή μπορείτε να δείξετε σε ποια περίπτωση η ενέργεια θα ισχύσει. Η προεπιλογή είναι self, η οποία είναι για την ίδια περίπτωση στην οποία η ενέργεια εκτελείται. Τις περισσότερες φορές, είναι αυτό που θέλετε. Στην περίπτωση ενός γεγονότος σύγκρουσης, μπορείτε επίσης να προσδιορίσετε  να εφαρμοστή η ενέργεια στην άλλη περίπτωση<other> που περιλαμβάνεται στη σύγκρουση. Παραδείγματος χάριν, κατ' αυτό τον τρόπο μπορείτε να καταστρέψετε την άλλη περίπτωση. Τέλος, μπορείτε να επιλέξετε να εφαρμόσετε την ενέργεια σε όλες τις περιπτώσεις<all> ενός ιδιαίτερου αντικειμένου. Κατ' αυτό τον τρόπο θα μπορούσατε να αλλάξετε όλες τις κόκκινες σφαίρες σε μπλε σφαίρες. Η δεύτερη παράμετρος είναι το checkbox "relative". Με την επιλογή αυτή, οι τιμές που τυπώνετε μέσα στη φόρμα είναι σχετικές με τις τρέχουσες τιμές. Παραδείγματος χάριν, κατ' αυτό τον τρόπο μπορείτε να προσθέσετε πόντους στο τρέχον score, παρά την αλλαγή του score σε μια νέα τιμή. Οι άλλες παράμετροι θα περιγραφούν παρακάτω. Μπορείτε αργότερα να αλλάξετε τις παραμέτρους κάνοντας διπλό κλικ πάνω στο εικονίδιο της ενέργειας.

 Ενέργειες κίνησης

Το πρώτο σύνολο ενεργειών αποτελείται από εκείνες που είναι σχετικές για την κίνηση των αντικειμένων. Οι ενέργειες είναι:

Start moving in a direction

Χρησιμοποιήστε αυτήν την ενέργεια για να αρχίσει η περίπτωση να κινείται σε μια ιδιαίτερη κατεύθυνση. Μπορείτε να δείξετε την κατεύθυνση χρησιμοποιώντας τα κουμπιά με τα βέλη. Χρησιμοποιήστε το μεσαίο κουμπί για να σταματήσετε την κίνηση. Επίσης πρέπει να διευκρινίσετε την ταχύτητα της κίνησης. Αυτή η ταχύτητα δίνεται σε pixels ανά βήμα<pixel per step>. Κατά προτίμηση μην χρησιμοποιήσετε αρνητικές ταχύτητες.

Set direction and speed of motion

Αυτός είναι ο δεύτερος τρόπος να διευκρινιστεί μια κίνηση. Εδώ μπορείτε να δείξετε μια ακριβή κατεύθυνση. Αυτό είναι μια γωνία μεταξύ 0 και 360 μοιρών. 0 σημαίνει δεξιά. Η κατεύθυνση είναι αντίθετη προς τη φορά των δεικτών του ρολογιού. Έτσι παραδείγματος χάριν 90 δηλώνει μια ανοδική κατεύθυνση. Εάν θέλετε μια αυθαίρετη κατεύθυνση, μπορείτε να πληκτρολογήσετε random(360). Όπως θα δούμε παρακάτω η λειτουργία random δίνει έναν τυχαίο αριθμό μικρότερο από την υποδειγμένη αξία. Όπως έχετε παρατηρήσει υπάρχει το checkbox relative. Εάν το τσεκάρουμε, η νέα κίνηση προστίθεται στη προηγούμενη. Παραδείγματος χάριν, εάν η περίπτωση κινείται προς τα πάνω και προσθέτετε σ αυτή κίνηση στα αριστερά, η νέα κίνηση θα είναι πάνω αριστερά.

Page 14: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Move towards a point

Αυτή η ενέργεια μας δίνει έναν τρίτο τρόπο να διευκρινιστεί μια κίνηση. Δείχνετε μια θέση και μια ταχύτητα και η περίπτωση αρχίζει να κινείται με την ταχύτητα προς τη θέση αυτή. (Δεν θα σταματήσει στη θέση!) Παραδείγματος χάριν, εάν θέλετε μια σφαίρα να πάει προς τη θέση όπου είναι ένα spaceship μπορείτε να χρησιμοποιήσετε ως θέση spaceship.x, spaceship.y.   (Θα μάθετε περισσότερα για τη χρήση των μεταβλητών όπως αυτές, παρακάτω). Εάν επιλέξετε relative, διευκρινίζετε τη θέση σχετικά με την τρέχουσα θέση της περίπτωσης. (Η ταχύτητα δεν λαμβάνεται υπόψη!)

Set the horizontal speed

Η ταχύτητα  μιας περίπτωσης αποτελείται από μια οριζόντια θέση  και μια κάθετη θέση. Με αυτήν την ενέργεια μπορείτε να αλλάξετε την οριζόντια ταχύτητα. Μια θετική οριζόντια ταχύτητα σημαίνει μια κίνηση στα δεξιά. Μια αρνητική σημαίνει μια κίνηση στα αριστερά. Η κάθετη ταχύτητα θα παραμείνει η ίδια. Χρησιμοποιώντας το relative αυξάνουμε την οριζόντια ταχύτητα (ή την μειώνουμε με την παροχή ενός αρνητικού αριθμού).

Set the vertical speed

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

Set the gravity

Με αυτήν την ενέργεια μπορείτε να δημιουργήσετε τη βαρύτητα για ένα ιδιαίτερο αντικείμενο. Διευκρινίζετε μια κατεύθυνση (γωνία μεταξύ 0 και 360 μοιρών) και μια ταχύτητα, και σε κάθε βήμα αυτό το ποσό ταχύτητας στη δεδομένη κατεύθυνση προστίθεται στην τρέχουσα κίνηση της περίπτωσης του αντικειμένου. Κανονικά χρειάζεστε μια πολύ μικρή αύξηση ταχύτητας (όπως 0.01). Χαρακτηριστικά θέλετε μια προς τα κάτω κατεύθυνση (270 βαθμοί).   Εάν επιλέξετε το relative αυξάνετε την ταχύτητα και την κατεύθυνση βαρύτητας. Σημειώστε ότι, αντίθετα προς την πραγματική ζωή, το αντικείμενο μπορεί να έχει διαφορετικές κατευθύνσεις βαρύτητας.

Reverse horizontal direction

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

Reverse vertical direction

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

Set the friction

Η τριβή επιβραδύνει τις περιπτώσεις όταν κινούνται. Διευκρινίζετε το ποσό της τριβής. Σε κάθε βήμα αυτό το ποσό αφαιρείται από την ταχύτητα έως ότου η ταχύτητα γίνεται 0, Κανονικά θέλετε έναν πολύ μικρό αριθμό εδώ (π.χ. 0.01).

Jump to a given position

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

Page 15: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Jump to the start position

Αυτή η ενέργεια τοποθετεί την περίπτωση πίσω στη θέση όπου δημιουργήθηκε.

Jump to a random position

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

Snap to grid

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

 Wrap when moving outside

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

Μove to contact positionΜε αυτήν την ενέργεια μπορείτε να κινήσετε την περίπτωση σε μια δεδομένη κατεύθυνση έως ότου επιτυγχάνεται μια επαφή με ένα αντικείμενο. Εάν ήδη υπάρχει μια σύγκρουση στην τρέχουσα θέση η περίπτωση δεν κινείται. Διαφορετικά, η περίπτωση τοποθετείται αμέσως προτού να εμφανιστεί μια σύγκρουση. Μπορείτε να διευκρινίσετε την κατεύθυνση αλλά και μια μέγιστη απόσταση για να κινηθεί. Παραδείγματος χάριν, όταν πέφτει μια περίπτωση μπορεί να κινηθεί σε μια μέγιστη απόσταση κάτω έως ότου αντιμετωπίσει ένα αντικείμενο. Μπορείτε επίσης να δείξετε εάν θα λειτουργήσει σε στερεά αντικείμενα ή σε όλα τα αντικείμενα. Βάζετε χαρακτηριστικά αυτήν την ενέργεια στο γεγονός σύγκρουσης (collision event) για να σιγουρευτείτε ότι οι περιπτώσεις σταματάνε στην επαφή με την άλλη περίπτωση που περιλαμβάνεται στη σύγκρουση

Bounce against objects Όταν βάζετε αυτήν την ενέργεια στο γεγονός σύγκρουσης με κάποιο αντικείμενο, η περίπτωση αναπηδά με έναν φυσικό τρόπο. Εάν θέσετε την παράμετρο precise <ακριβώς> σε false <ψεύτικη>, μόνο οριζόντιους και κάθετους τοίχους θα αντιμετωπίζει σωστά. Όταν θέσετε το precise σε true τοίχοι που έχουν μια κλήση (ακόμη και καμπυλωμένοι) αντιμετωπίζονται σωστά. Επίσης μπορείτε να δείξετε εάν η αναπήδηση γίνετε σε στερεά αντικείμενα ή σε όλα τα αντικείμενα. Παρακαλώ συνειδητοποιήστε ότι η αναπήδηση δεν είναι απολύτως ακριβής επειδή αυτό εξαρτάται από πολλές παραμέτρους. Αλλά σε πολλές καταστάσεις το αποτέλεσμα είναι καλό. Κύριες ενέργειες, set 1

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

Create an instance of an object

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

Page 16: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

τη θέση της τρέχουσας περίπτωσης. Η δημιουργία των περιπτώσεων κατά τη διάρκεια του παιχνιδιού είναι εξαιρετικά χρήσιμη. Ένα διαστημικό σκάφος μπορεί να δημιουργήσει σφαίρες μια βόμβα μπορεί να δημιουργήσει μια έκρηξη, κ.λ.π.... Σε πολλά παιχνίδια θα έχετε κάποιο αντικείμενο ελεγκτή<controller> που δημιουργεί κατά διαστήματα τέρατα ή άλλα αντικείμενα. Για την καινούρια δημιουργημένη περίπτωση το γεγονός δημιουργιών εκτελείται<creative event>.

Create an instance of an object with a speed and direction

Αυτή η ενέργεια λειτουργεί όπως η προηγούμενη ενέργεια πιο πάνω αλλά με δύο πρόσθετους τομείς. Μπορείτε επίσης τώρα να διευκρινίσετε την ταχύτητα και την κατεύθυνση της πρόσφατα δημιουργημένης περίπτωσης. Σημειώστε ότι εάν επιλέξετε το relative, μόνο η θέση είναι σχετική, όχι η ταχύτητα και η κατεύθυνση. Παραδείγματος χάριν, για να κάνετε μια σφαίρα να κινηθεί στην κατεύθυνση ενός στρατιώτη πρέπει να χρησιμοποιήσετε ένα μικρό τέχνασμα. Σαν θέση βάζουμε 0.0 και επιλέγουμε relative. Σαν κατεύθυνση χρειαζόμαστε την τρέχουσα κατεύθυνση της περίπτωσης. Αυτό μπορεί να γίνει πληκτρολογώντας την λέξη direction. (Αυτό είναι μια μεταβλητή που δείχνει πάντα την τρέχουσα κατεύθυνση στην οποία η περίπτωση κινείται).

Create instance of random object

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

Change the instance

Με αυτήν την ενέργεια μπορείτε να αλλάξετε την τρέχουσα περίπτωση σε μια περίπτωση ενός άλλου αντικειμένου. Έτσι παραδείγματος χάριν, μπορείτε να αλλάξετε μια περίπτωση μιας βόμβας σε μια έκρηξη. Όλες οι ρυθμίσεις, όπως η κίνηση και η αξία των μεταβλητών, θα μείνουν οι ίδιες. Μπορείτε να δείξετε εάν πρέπει να εκτελεσθεί το destroy event για το τρέχον αντικείμενο και το creation event για το νέο αντικείμενο.

Destroy the instance

Με αυτήν την ενέργεια καταστρέφετε την τρέχουσα περίπτωση.

Destroy instances at a position

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

Change the sprite

Χρησιμοποιήστε αυτήν την ενέργεια για να αλλαχτεί το sprite για την περίπτωση. Προσδιορίζετε το νέο sprite. Μπορείτε επίσης να δείξετε με ποιο subimage πρέπει να παρουσιαστεί. Κανονικά θα χρησιμοποιούσατε 0 (το πρώτο subimage) εκτός αν θέλετε να δείξετε ένα ιδιαίτερο subimage. Βαλτε -1 εάν δεν θέλετε να αλλάξετε το τρέχον subimage που παρουσιάζεται. Τέλος μπορείτε να αλλάζετε την ταχύτητα των subimages. Εάν θέλετε να δείτε ένα ιδιαίτερο subimage, θέστε την ταχύτητα σε 0. Εάν η ταχύτητα είναι μεγαλύτερη από τα subimages κάποια θα πηδηθούν. Εάν είναι μικρότερη από τα subimages κάποια θα παρουσιαστούν περισσότερο χρόνο. Μην χρησιμοποιήσετε αρνητική ταχύτητα. Η αλλαγή του sprite είναι ένα σημαντικό χαρακτηριστικό γνώρισμα. Παραδείγματος χάριν, συχνά θέλετε να αλλάξετε το sprite ενός χαρακτήρα ανάλογα με την κατεύθυνση στην οποία περπατά. Αυτό μπορεί να επιτευχθεί δημιουργώντας διαφορετικά sprites για κάθε μια από τις (τέσσερις)

Page 17: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

κατευθύνσεις. Μέσα στα γεγονότα του πληκτρολογίου για τα βέλη θέτετε την κατεύθυνση της κίνησης και το sprite.

Transform the sprite

Χρησιμοποιήστε αυτήν την ενέργεια για να αλλαχτεί το μέγεθος και ο προσανατολισμός του sprite για την περίπτωση. Χρησιμοποιήστε τους παράγοντες κλίμακας για να το μεταμορφώσετε σε μεγαλύτερο ή μικρότερο. Η γωνία δίνει τον αντίθετο προς τη φορά των δεικτών του ρολογιού προσανατολισμό στο sprite. Μπορείτε επίσης να δείξετε εάν το sprite πρέπει να γυρίσει οριζόντια ή/και κάθετα. Αυτή η ενέργεια είναι διαθέσιμη μόνο στην δηλωμένη έκδοση.

Set sprite blending

Κανονικά το sprite σχεδιάζετε καθώς καθορίζεται. Χρησιμοποιώντας αυτήν την ενέργεια μπορείτε να αλλάξετε το χρώμα του sprite. Αυτό το χρώμα συνδυάζεται με το sprite, δηλαδή ανακατεύετε με τα χρώματα του sprite. Εάν θέλετε να σχεδιάσετε sprite σε διαφορετικά χρώματα καθορίζετε καλύτερα το sprite σε μαύρο και λευκό και χρησιμοποιείστε το χρώμα μίγματος για να θέσετε το πραγματικό χρώμα. Μπορείτε επίσης να δείξετε μια άλφα διαφάνεια.Η αξία 1 κάνει το sprite να είναι αδιαφανές.Η αξία 0 είναι απολύτως διαφανές. Αξίες μεταξύ 1 και 0 θα φανεί  μερικώς το background μέσω του sprite. Αυτό είναι ωραίο για τη δημιουργία εκρήξεων. Αυτή η ενέργεια είναι διαθέσιμη μόνο στην δηλωμένη έκδοση.

Play a sound

Με αυτήν την ενέργεια παίζετε έναν από τους ήχους που προσθέσατε στο παιχνίδι σας. Μπορείτε να επιλέξετε τον ήχο που θέλετε να παίξετε και να επιλέξετε εάν πρέπει να παίξει μόνο μία φορά (η προεπιλογή) ή συνεχώς. Ήχοι wave μπορούν να παιχτούν ταυτόχρονα αλλά μόνο ένας Midi μπορεί να παίξει. Έτσι εάν αρχίζετε έναν ήχο Midi, ο τρέχοντας ήχος  Midi θα σταματήσει

Stop a sound

Αυτή η ενέργεια σταματά τον υποδειγμένο ήχο. Εάν πολλές περιπτώσεις αυτού του ήχου παίζουν σταματούν όλες.

If a sound is playing

Εάν ο υποδειγμένος ήχος παίζει η επόμενη ενέργεια εκτελείται. Διαφορετικά αγνοείται. Μπορείτε να επιλέξετε not για να δείξετε ότι η επόμενη ενέργεια πρέπει να εκτελεσθεί εάν ο υποδειγμένος ήχος δεν παίζει. Παραδείγματος χάριν, μπορείτε να ελέγξετε εάν κάποια μουσική background παίζει ,και αν δεν παίζει, αρχίζετε κάποια νέα μουσική background.

Go to previous room

Πήγαινε στο προηγούμενο δωμάτιο. Μπορείτε να δείξετε τον τύπο μετάβασης μεταξύ των δωματίων. Πρέπει να πειραματιστείτε για να δείτε ποιο είναι καλύτερο για σας. Εάν είστε στο πρώτο δωμάτιο παίρνετε ένα λάθος.

Go to next room Πήγαινε στο επόμενο δωμάτιο. Μπορείτε να δείξετε τη μετάβαση.

Restart the current room Το τρέχον δωμάτιο ξαναξεκινά. Δείχνετε την επίδραση μετάβασης.

Go to a different room

Page 18: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Με αυτήν την ενέργεια μπορείτε να πάτε σε ένα ιδιαίτερο δωμάτιο. Δείχνετε το δωμάτιο και την επίδραση μετάβασης.

If previous room exists Αυτή η ενέργεια εξετάζει εάν το προηγούμενο δωμάτιο υπάρχει. Σε αυτή την περίπτωση, η επόμενη ενέργεια εκτελείται. Χρειάζεστε κανονικά αυτήν την δοκιμή πριν κινηθείτε προς το προηγούμενο δωμάτιο.

If next room exists

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

Κύριες ενέργειες, set 2 

Εδώ είναι περισσότερο κύριες ενέργειες, που εξετάζουν το συγχρονισμό<timing>, δίνοντας μηνύματα στον παίχτη, και εξετάζοντας το παιχνίδι συνολικά.

Set an alarm clock

Με αυτήν την ενέργεια μπορείτε να θέσετε ένα από τα δώδεκα ρολόγια ξυπνητήρια για την περίπτωση. Επιλέγετε τον αριθμό βημάτων και το ρολόι. Μετά από τον υποδειγμένο αριθμό βημάτων, η περίπτωση θα λάβει το αντίστοιχο γεγονός του ρολογιού που έχουμε υποδείξει. Μπορείτε επίσης να αυξήσετε ή να μειώσετε την αξία με την επιλογή του checkbox relative. Εάν ρυθμίσετε το ρολόι σε μια αξία λιγότερη ή ίση από το 0 το κλείνετε, έτσι το γεγονός δεν παράγεται.

Sleep for a while

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

Display a message

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

Show the game information

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

Restart the game

Με αυτήν την ενέργεια ξεκινάτε το παιχνίδι από την αρχή.

End the game

Με αυτήν την ενέργεια τελειώνετε το παιχνίδι.

Page 19: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Save the game

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

Load the game

Φορτώστε ένα παιχνίδι από ένα αρχείο. Διευκρινίζετε το όνομα του αρχείου. Σιγουρευτείτε ότι το σωσμένο παιχνίδι είναι για το ίδιο παιχνίδι και δημιουργήθηκε με την ίδια έκδοση του Game Maker. Διαφορετικά ένα λάθος θα εμφανιστεί. (Για να είμαι ακριβείς, το παιχνίδι φορτώνεται στο τέλος του τρέχοντος βήματος. Έτσι μερικές ενέργειες μετά από το φόρτωμα εκτελούνται ακόμα στο τρέχον παιχνίδι)!

Ενέργειες ελέγχου

Υπάρχουν διάφορες ενέργειες με τις οποίες μπορείτε να ελέγξετε άλλες ενέργειες την ώρα που εκτελούνται. Οι περισσότερες από αυτές τις ενέργειες υποβάλλουν μια ερώτηση, παραδείγματος χάριν εάν μια θέση είναι κενή. Όταν η απάντηση είναι ναι (true) η επόμενη ενέργεια εκτελείται, διαφορετικά αγνοείται. Εάν θέλετε πολλές ενέργειες να εκτελεσθούν ή να παραλείψετε (ανάλογα με το αποτέλεσμα) μπορείτε να τις βάλετε σε block.Το πρώτο block προσδιορίζει την αρχή και το τελευταίο το τέλος με της ενέργειες ανάμεσα. Μπορεί επίσης να υπάρξει και η εντολή else που εκτελείται όταν η απάντηση είναι αρνητική. Έτσι μια ερώτηση έχει ως εξής:

Εδώ η ερώτηση είναι εάν μια θέση για την τρέχουσα περίπτωση είναι ελεύθερη (if a position is collision free). Εάν είναι ελεύθερη, η περίπτωση αρχίζει μια δεδομένη κατεύθυνση (start moving in a direction). Αν όχι, η περίπτωση πηδά σε μια δεδομένη θέση (jump to a given position).

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

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

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

If a position is collision free

Page 20: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

If there is a collision at a position

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

If there is an object at a position

Αυτή η ερώτηση γίνετε true εάν η περίπτωση που τοποθετείται δείχνει ότι στη θέση συναντά μια περίπτωση του υποδειγμένου αντικειμένου.

If the number of instances is a value

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

With a change perform next action

Διευκρινίζετε τον αριθμό πλευρών ενός ζαριού που έπειτα ρίχνεται. Κατόπιν εάν το ζάρι πέσει στο ένα, το αποτέλεσμα είναι true και η επόμενη ενέργεια εκτελείται. Αυτό μπορεί να χρησιμοποιηθεί για να βάλει ένα στοιχείο του τυχαίου στο παιχνίδι σας. Παραδείγματος χάριν, σε κάθε βήμα μπορείτε να δημιουργείτε, με μια πιθανότητα, μια βόμβα ή μια αλλαγή της κατεύθυνσης. Όσο μεγαλύτερος ο αριθμός τον πλευρών του ζαριού, τόσο μικρότερη η πιθανότητα. Εάν θέσετε τον αριθμό πλευρών σε 1,5 η επόμενη ενέργεια εκτελείται δύο από τρεις φορές. Η χρησιμοποίηση ενός αριθμού μικρότερου από 1 δεν έχει κανένα νόημα.

If the user answers yes to a question

Διευκρινίζετε μια ερώτηση. Ένας διάλογος παρουσιάζεται στο παίχτη με ναι και όχι. Το αποτέλεσμα είναι true εάν οι απαντήσεις του παίχτη είναι ναι.

If an expression is true

Αυτή είναι περισσότερο γενική ερώτηση. Μπορείτε να εισαγάγετε μια αυθαίρετη έκφραση. Εάν η έκφραση αξιολογηθεί σε true (δηλαδή ένας αριθμός μεγαλύτερος ή ίσος με 0.5) η επόμενη ενέργεια εκτελείται. Δείτε παρακάτω περισσότερες πληροφορίες για τις εκφράσεις.

If a mouse button is pressed

Γίνετε true εάν το υποδειγμένο κουμπί του ποντικιού πιέζεται. Μια συνηθισμένη χρήση είναι να το τοποθετείτε στο γεγονός βημάτων<step event>. Μπορείτε να ελέγξετε εάν ένα κουμπί του ποντικιού πιέζεται, παραδείγματος χάριν(όταν πιέζετε) να κινηθεί σε αυτό (χρησιμοποιήστε το jump to a given position με τις τιμές mouse_x και mouse_y).

If instance is aligned with grid

Page 21: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

Start of block

Δείχνει την έναρξη ενός block για πολλαπλές ενέργειες.

End of block

Δείχνει το τέλος ενός block για πολλαπλές ενέργειες.

Else

Πίσω από αυτήν την ενέργεια το μέρος με block ακολουθεί, το οποίο εκτελείται όταν το αποτέλεσμα της ερώτησης είναι ψεύτικο<false>.

Repeat next action

Αυτή η ενέργεια χρησιμοποιείται για να επαναλάβει την επόμενη ενέργεια (ή το block των ενεργειών) πολλές φορές. Δείχνετε απλά τον αριθμό.

Exit the current event

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

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

Execute a piece of codeΌταν προσθέσετε αυτήν την ενέργεια, μια φόρμα παρουσιάζεται στην οποία μπορείτε να πληκτρολογήσετε ένα κομμάτι του κώδικα που πρέπει να εκτελεστεί. Αυτό μπορεί να περιέχει απλές ενέργειες ή πιο σύνθετο κώδικα. Χρησιμοποιήστε τη ενέργεια κώδικα(execute a piece of code) καλύτερα μόνο για τα μικρά κομμάτια του κώδικα. Για πιο μεγάλα κομμάτια προτιμότερο να χρησιμοποιήσετε τα χειρόγραφα<scripts> που περιγράφονται σε άλλο κεφάλαιο.

Comment Χρησιμοποιήστε αυτήν την ενέργεια για να προσθέσετε μια γραμμή με σχόλια στον κατάλογο ενέργειας. Η γραμμή παρουσιάζεται σε italic font. Προσθέτοντας σχόλια θυμάστε τι κάνουν τα γεγονότα. Η ενέργεια δεν κάνει τίποτα. Αλλά συνειδητοποιήστε ότι είναι ακόμα μια ενέργεια. Έτσι όταν το τοποθετείτε μετά από μια ερώτηση είναι η ενέργεια που εκτελείται εάν ο όρος είναι true (ακόμα κι αν δεν κάνει τίποτα).

Set the value of a variableΥπάρχουν πολλές ενσωματωμένες μεταβλητές στο παιχνίδι. Με αυτήν την ενέργεια μπορείτε να τις αλλάξετε. Επίσης μπορείτε να δημιουργήσετε τις δικές σας μεταβλητές και να ορίσετε τις τιμές τους. Διευκρινίζετε το όνομα της μεταβλητής και της νέας αξίας. Όταν επιλέξετε το checkbox relative, η αξία προστίθεται στην τρέχουσα αξία

Page 22: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

If a variable has a value

Με αυτήν την ενέργεια μπορείτε να ελέγξετε την αξία μιας ιδιαίτερης μεταβλητής. Εάν η αξία της μεταβλητής είναι ίση με τον αριθμό που ορίσαμε, η ερώτηση γίνετε true. Διαφορετικά επιστρέφει false. Μπορείτε επίσης να δείξετε ότι ο έλεγχος πρέπει να γίνει εάν η αξία είναι μικρότερη από τη δεδομένη αξία ή μεγαλύτερη από τη δεδομένη αξία. Δείτε παρακάτω περισσότερες πληροφορίες για τις μεταβλητές. Μπορείτε να χρησιμοποιήσετε αυτήν την ενέργεια για να συγκρίνετε επίσης δύο εκφράσεις<expressions>.

Draw the value of a variable Με αυτήν την ενέργεια μπορείτε να σχεδιάσετε την αξία μιας μεταβλητής σε μια ιδιαίτερη θέση στην οθόνη. Σημειώστε ότι αυτό μπορεί να χρησιμοποιηθεί μόνο στο draw event ενός αντικειμένου.

  Ενέργειες για το Score

Στα περισσότερα παιχνίδια ο παίκτης θα έχει ένα ορισμένο αποτέλεσμα(score). Επίσης πολλά παιχνίδια δίνουν στον παίκτη διάφορες ζωές. Τέλος, συχνά ο παίχτης έχει μια ορισμένη υγεία(health). Με τις ακόλουθες ενέργειες είναι εύκολο να εξετάσουμε το score, της ζωές, και την health bar του παίχτη.

Set the score

Το Game Maker έχει έναν ενσωματωμένο μηχανισμό score. Το score κανονικά φαίνεται στο παράθυρο του παιχνιδιού. Μπορείτε να χρησιμοποιήσετε αυτήν την ενέργεια για να αλλάξετε το score.Δηλώνετε απλά τη νέα αξία για το score. Συχνά θέλετε να προσθέσετε αξία στο score. Σε αυτήν την περίπτωση μην ξεχάστε να επιλέξετε το checkbox relative.

If score has a value

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

Draw the value of score

Με αυτήν την ενέργεια μπορείτε να σχεδιάσετε την αξία του score σε μια ιδιαίτερη θέση στην οθόνη. Παρέχετε τις θέσεις και τον τίτλο που πρέπει να τοποθετηθούν μπροστά από το score. Το score σχεδιάζετε στην τρέχουσα γραμματοσειρά. Αυτή η ενέργεια μπορεί μόνο να χρησιμοποιηθεί στο γεγονός σχεδίου<draw event> ενός αντικειμένου.

Display the highscore table

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

Clear the highscore table

Page 23: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Αυτή η ενέργεια καθαρίζει το highscore.

Set the number of lives

Το Game Maker έχει επίσης ένα ενσωματωμένο σύστημα ζωών. Με αυτήν την ενέργεια μπορείτε να αλλάξετε τον αριθμό ζωών που απομένουν. Κανονικά βάζετε κάποια αξία όπως 3 στην αρχή του παιχνιδιού και μειώνετε έπειτα ή αυξάνετε τον αριθμό ανάλογα με αυτά που συμβαίνουν. Μην ξεχάστε να επιλέξετε το relative εάν θέλετε να προσθέσετε ή να αφαιρέσετε τον αριθμό ζωών. Όταν ο αριθμός ζωών γίνεται 0 (ή μικρότερος από 0) τότε το"no more lives" γεγονός δημιουργείται.

If lives is a value

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

Draw the number of lives

Με αυτήν την ενέργεια μπορείτε να σχεδιάσετε τον αριθμό ζωών σε μια ιδιαίτερη θέση στην οθόνη. Παρέχετε τις θέσεις και τον τίτλο που πρέπει να τοποθετηθεί μπροστά από τον αριθμό ζωών. Ο αριθμός ζωών σχεδιάζετε στην τρέχουσα γραμματοσειρά. Αυτή η ενέργεια μπορεί να χρησιμοποιηθεί μόνο στο γεγονός σχεδίου ενός αντικειμένου(draw event).

Draw the lives as image

Παρά το σχεδιασμό του αριθμού ζωών, είναι συχνά καλύτερο να χρησιμοποιηθούν διάφορες μικρές εικόνες. Αυτή η ενέργεια το πραγματοποιεί. Διευκρινίζετε τη θέση την εικόνα και την υποδειγμένη θέση και ο αριθμός ζωών σχεδιάσετε με εικόνες. Αυτή η ενέργεια μπορεί να χρησιμοποιηθεί μόνο στο γεγονός σχεδίου ενός αντικειμένου (draw event).

Set the health

Το Game Maker έχει έναν ενσωματωμένο μηχανισμό υγείας (health bar). Μπορείτε να χρησιμοποιήσετε αυτήν την ενέργεια για να αλλάξετε την health bar. Μια αξία 100 θεωρείται πλήρης health και 0 δεν υπάρχει health. Παρέχετε απλά τη νέα αξία για την health. Συχνά θέλετε να αφαιρέσετε κάτι από την health. Σε αυτήν την περίπτωση μην ξεχάστε να επιλέξετε το checkbox relative. Όταν η health γίνεται μικρότερη ή ίση με 0 ένα  out of health event δημιουργείτε.

If health is a value

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

Draw the health bar

Με αυτήν την ενέργεια μπορείτε να σχεδιάσετε την health υπό μορφή health bar. Όταν η health είναι 100 μια πλήρης health bar σχεδιάζετε. Όταν είναι 0 η health bar είναι άδεια. Δείχνετε τη θέση και το μέγεθος της healthbar, το χρώμα και το background.

Set the window caption information

Page 24: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Κανονικά στο παράθυρο το παιχνιδιού το όνομα του δωματίου και το score εμφανίζετε. Με αυτήν την ενέργεια μπορείτε να το αλλάξετε αυτό. Μπορείτε να δείξετε εάν πρέπει να παρουσιαστούν το score, οι ζωές, ή/και  η health και τι τίτλος πρέπει να εμφανίζετε για το καθένα από αυτά.

Ενέργειες για σχεδιασμό

Κανονικά σε κάθε βήμα του παιχνιδιού, για κάθε περίπτωση, το sprite σχεδιάζετε στο δωμάτιο. Μπορείτε να το αλλάξετε αυτό, με την τοποθέτηση  ενεργειών στο draw event. (Σημειώστε ότι αυτό συμβαίνει μόνο όταν η περίπτωση είναι ορατή!) Οι ακόλουθες ενέργειες για σχεδιασμό είναι διαθέσιμες. Αυτές οι ενέργειες έχουν μόνο νόημα στο γεγονός σχεδίου<draw event>. Σε άλλες θέσεις είναι αγνοημένες.

Draw a sprite image

Διευκρινίζετε το sprite, την θέση (είτε απόλυτα είτε σχετικά με την τρέχουσα θέση περίπτωσης) και την υπό-εικόνα του sprite. (Οι υπό-εικόνες είναι αριθμημένες ξεκινώντας η πρώτη από το 0 και ακολουθούν οι άλλες). Εάν θέλετε να σχεδιάσετε όλο το animation χρησιμοποιήστε τον αριθμό -1.

Draw a background image

Δείχνετε την εικόνα background, την θέση (απόλυτα ή σχετικά) και εάν η εικόνα πρέπει να εφαρμόζει σε όλο το δωμάτιο ή όχι.

Draw a text

Διευκρινίζετε το κείμενο και την θέση. Το σύμβολο # στο κείμενο ερμηνεύεται πως πηγαίνετε σε μια νέα γραμμή. (Χρησιμοποιήστε το \ # για να πάρει το κείμενο το σύμβολο #). Έτσι μπορείτε να δημιουργήσετε πολλές γραμμές στα κείμενα. Εάν το κείμενο αρχίζει με εισαγωγικά ή δίπλα εισαγωγικά, ερμηνεύεται ως έκφραση. Παραδείγματος χάριν, μπορείτε να χρησιμοποιήσετε 

‘Χ: ’+ string(X) 

για να δείξει την αξία της Χ-συντεταγμένης της περίπτωσης. (Η μεταβλητή Χ αποθηκεύει την τρέχουσα Χ-συντεταγμένη. Η λειτουργία string()μετατρέπει αυτόν τον αριθμό σε σειρά. Το + συνδυάζει τις δύο σειρές).

Draw a text transformed

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

Draw a rectangle

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

Draw a horizontal gradient

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

Draw a vertical gradient

Page 25: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

Draw an ellipse

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

Draw a gradient ellipse

Πάλι μια έλλειψη σχεδιάζετε αλλά αυτή τη φορά διευκρινίζετε ένα χρώμα για το κέντρο και το όριο. Αυτή η ενέργεια είναι διαθέσιμη μόνο στην δηλωμένη έκδοση.

Draw a line

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

Draw an arrow

Σχεδιάζει ένα βέλος. Διευκρινίζετε τις συντεταγμένες των δύο σημείων του τέλους της γραμμής και του μεγέθους της άκρης του βέλους.

Set the colors

Σας αφήνει να επιλέξετε το χρώμα που θα έχουν οι γραμματοσειρές για το κείμενο. (Δεν επηρεάζει τον τρόπο που σχεδιάζονται τα sprites και τα backgrounds).

Change fullscreen mode

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

Take a snapshot image of the game

Με αυτήν την ενέργεια μπορείτε να πάρετε μια εικόνα του παιχνιδιού και να την αποθηκεύσετε σε ένα αρχείο bmp. Διευκρινίζετε το όνομα του αρχείου για να αποθηκεύσετε την εικόνα. Αυτή η ενέργεια είναι διαθέσιμη μόνο στην δηλωμένη έκδοση.

Create an effect

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

 

 

Page 26: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Χρησιμοποίηση των εκφράσεων και των μεταβλητών(expressions, variables)

Σε πολλές ενέργειες πρέπει να παρέχετε τιμές για τις παραμέτρους. Αντί να πληκτρολογήσετε μόνο έναν αριθμό, μπορείτε επίσης να πληκτρολογήσετε έναν τύπο, π.χ. 32*12. Αλλά μπορείτε να πληκτρολογήσετε και πιο περίπλοκες εκφράσεις. Παραδείγματος χάριν, εάν θέλετε να διπλασιάσετε την οριζόντια ταχύτητα, θα μπορούσατε να την θέσετε σε 2*hspeed. Εδώ είναι μια μεταβλητή που δείχνει την τρέχουσα οριζόντια ταχύτητα της περίπτωσης. Υπάρχει ένας μεγάλος αριθμός άλλων μεταβλητών που μπορείτε να χρησιμοποιήσετε. Μερικές από της σημαντικότερες είναι:

Χ: η Χ-συντεταγμένη της περίπτωσης Υ: η Υ-συντεταγμένη της περίπτωσης hspeed: η οριζόντια ταχύτητα (σε pixel ανά βήμα) vspeed: η κάθετη ταχύτητα (σε pixel ανά βήμα)  direction: η τρέχουσα κατεύθυνση της κίνησης σε μοίρες (0-360) speed: η τρέχουσα ταχύτητα σε αυτήν την κατεύθυνση  visible: εάν το αντικείμενο είναι ορατό (1) ή αόρατο (0)  image_index: αυτή η μεταβλητή προσδιορίζει ποιά υπο-εικόνα στο τρέχον sprite θα παρουσιάζεται. Εάν την θέσετε σε 0 (δείτε παρακάτω) μπορείτε να δείξετε μια σταθερή εικόνα. image_speed: αυτή η μεταβλητή δείχνει την ταχύτητα με την οποία οι υπο-εικόνες παρουσιάζονται. Η προκαθορισμένη αξία είναι 1. Εάν βάλετε αυτήν την αξία μεγαλύτερη από 1 μερικές εικόνες παραλείπονται για να καταστήσει το animation γρηγορότερο. Εάν τη βάλετε μικρότερη από 1το animation γίνεται πιο αργό με την επανάληψη των εικόνων. Score: η τρέχουσα αξία του score lives: ο τρέχων αριθμός ζωώνhealth: η τρέχουσα υγεία (0-100) mouse_x: η Χ-θέση του ποντικιού  mouse_y: η Υ-θέση του ποντικιού

Μπορείτε να αλλάξετε τις περισσότερες από αυτές τις μεταβλητές χρησιμοποιώντας τη ενέργεια:set the value of a variable. Μπορείτε επίσης να καθορίσετε τις δικές σας μεταβλητές βάζοντας τους μια αξία. (Μην χρησιμοποιήστε το relative, επειδή δεν υπάρχουν ακόμα). Κατόπιν μπορείτε να χρησιμοποιήσετε αυτές τις μεταβλητές στις εκφράσεις. Οι μεταβλητές που δημιουργείτε είναι τοπικές στην τρέχουσα περίπτωση. Δηλαδή κάθε αντικείμενο έχει το αντίγραφο της. Για να δημιουργήσετε μια σφαιρική μεταβλητή,(global variable) βάλτε τη λέξη global και μια τελεία ( . ) μπροστά από αυτή. Μπορείτε επίσης να αναφερθείτε στις τιμές των μεταβλητών για άλλα αντικείμενα με την τοποθέτηση του ονόματος του αντικειμένου και μιας τελείας μπροστά από αυτά. Έτσι παραδείγματος χάριν, εάν θέλετε μια σφαίρα να κινηθεί προς τη θέση όπου είναι ένα νόμισμα μπορείτε να θέσετε τη θέση (coin.x, coin.y). Στην περίπτωση ενός γεγονότος σύγκρουσης<collision event> μπορείτε να αναφερθείτε στην Χ-συντεταγμένη του άλλου αντικειμένου σαν other.x. Στις υποθετικές εκφράσεις μπορείτε να χρησιμοποιήσετε τις συγκρίσεις όπως (<) μικρότερος από, (>)μεγαλύτερος από, κ.λπ. 

Στις εκφράσεις σας μπορείτε επίσης να χρησιμοποιήσετε τις λειτουργίες<functions>. Παραδείγματος χάριν, η λειτουργία random(10) δίνει έναν τυχαίο πραγματικό αριθμό κάτω από 10. Έτσι μπορείτε να θέσετε παραδείγματος χάριν την ταχύτητα ή την κατεύθυνση της κίνησης σε μια τυχαία αξία. Υπάρχουν πολλές λειτουργίες. Περιγράφονται σε άλλα κεφάλαια.

 

 

 

 

Page 27: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Δημιουργία των δωματίων

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

Υπάρχει ένας μεγάλος αριθμός δυνατοτήτων κατά τη δημιουργία ενός δωματίου. Εκτός από τον καθορισμό διάφορων ιδιοτήτων και την προσθήκη των περιπτώσεων των αντικειμένων μπορείτε να προσθέσετε backgrounds, να καθορίσετε την άποψη (view) του δωματίου, και να προσθέσετε κεραμίδια (tiles). Οι περισσότερες από αυτές τις επιλογές θα συζητηθούν αργότερα. Σε αυτό το κεφάλαιο θα συζητήσουμε μόνο μερικές βασικές ιδιότητες, την προσθήκη των περιπτώσεων των αντικειμένων,<objects> και τον καθορισμό των background.

Για να δημιουργήσετε ένα δωμάτιο, επιλέξτε Add room από τις επιλογές Add. Η ακόλουθη φόρμα θα εμφανιστεί:

Στην κορυφή της φόρμας υπάρχει μια tool bar<γραμμή εργαλείων>. Εκεί μπορείτε να δείξετε το μέγεθος του πλέγματος που χρησιμοποιείτε για την ευθυγράμμιση των αντικειμένων. Επίσης μπορείτε να δείξετε εάν θέλετε  να παρουσιάζονται η γραμμές του πλέγματος και εάν πρέπει να παρουσιάζονται τα backgrounds, κ.λ.π.... Είναι μερικές φορές χρήσιμο να κρυφτούν προσωρινά ορισμένες πτυχές του δωματίου. Συνειδητοποιήστε ότι  όταν προσθέτετε τις περιπτώσεις των αντικειμένων, αυτές θα παρουσιάζονται πάντα, ανεξαρτήτως από την άποψη που τους έχουμε θέσει. Υπάρχουν επίσης κουμπιά για να καθαρίσουν όλες τις περιπτώσεις από το δωμάτιο και για να μετατοπίσουν όλες τις περιπτώσεις σε διάφορα pixel. Χρησιμοποιήστε αρνητικούς αριθμούς για να της μετατοπίσετε αριστερά ή επάνω. Αυτό είναι χρήσιμο όταν παραδείγματος χάριν αποφασίσατε να διευρύνετε το δωμάτιο. (Μπορείτε επίσης να το χρησιμοποιήσετε αυτό για να τοποθετήσετε τις περιπτώσεις έξω από το δωμάτιο, το οποίο είναι μερικές φορές χρήσιμο). Τέλος υπάρχει το Undo κουμπί για να ξαναφέρει την τελευταία αλλαγή

Page 28: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

στο δωμάτιο και το ΟΚ για να σώσει τις αλλαγές. (Κλίκ στο X πάνω δεξιά για να κλείσει η φόρμα χωρίς σώσιμο των αλλαγών).

Στα αριστερά θα δείτε τρεις καρτέλες (πέντε στη προχωρημένη έκδοση). Η καρτέλα objects είναι όπου προσθέτετε τις περιπτώσεις των αντικειμένων στο δωμάτιο. Στην καρτέλα settings μπορείτε να καθορίσετε διάφορες ιδιότητες για το δωμάτιο. Στην καρτέλα backgrounds μπορείτε να θέσετε τις εικόνες background για το δωμάτιο.

Τοποθετώντας  περιπτώσεις 

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

Για να προσθέσετε τις περιπτώσεις στο δωμάτιο, επιλέξτε αρχικά την καρτέλα objects εάν αυτή δεν είναι ήδη επιλεγμένη.

 Έπειτα επιλέξτε το αντικείμενο που θέλετε να προσθέσετε με αριστερό κλικ στο κουμπί με τo εικονίδιο menu (ή με κλικ στo μέρος της εικόνας στα αριστερά). Η εικόνα του αντικειμένου εμφανίζεται στα αριστερά. (Σημειώστε ότι όταν αλλάξατε το origin του sprite αυτό εμφανίζεται στην εικόνα. Αυτό δείχνει πώς οι περιπτώσεις θα ευθυγραμμιστούν με το πλέγμα). Τώρα κλικ με το αριστερό κουμπί του ποντικιού σας στην περιοχή του δωματίων στα δεξιά. Μια περίπτωση του αντικειμένου εμφανίζεται. Θα ευθυγραμμιστεί αμέσως στο υποδειγμένο πλέγμα. Εάν κρατάτε το< ALT >τοποθετώντας την περίπτωση δεν ευθυγραμμίζεται στο πλέγμα. Εάν κρατάτε το κουμπί του ποντικιού και το κινείτε, κινείτε και την περίπτωση μαζί. Εάν κρατάτε το< shift >ενώ πιέζετε και κινείτε το mouse πολλές περιπτώσεις τοποθετούνται. Με το δεξί κουμπί του ποντικιού μπορείτε να αφαιρέσετε τις περιπτώσεις. Κατ' αυτό τον τρόπο καθορίζετε το περιεχόμενο του δωματίου.

Όπως θα παρατηρήσετε, εάν τοποθετήσετε μια περίπτωση πάνω από μια άλλη, η αρχική περίπτωση εξαφανίζεται. Κανονικά αυτό είναι που θέλετε, αλλά όχι πάντα. Αυτό μπορεί να απενεργοποιηθεί με το checkbox Delete underlying (θα το βρείτε κάτω αριστερά).

Εάν θέλετε να αλλάξετε τη θέση μιας περίπτωσης, κρατήστε το < CTRL > και κλικ με το αριστερό κουμπί του ποντικιού στην περίπτωση και κρατήστε το κουμπί. Μπορείτε τώρα να το σύρετε σε μια νέα θέση. (Πιέστε το < ALT > για τον ακριβή προσδιορισμό της θέσης).

Page 29: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Εάν κρατάτε το< CTRL >  πατώντας με το δεξί κουμπί του ποντικιού σε μια περίπτωση, διάφορες επιλογές εμφανίζονται. Εδώ μπορείτε να διαγράψετε το αντικείμενο, να πληκτρολογήσετε μια ακριβή θέση για την περίπτωση, να πληκτρολογήσετε κώδικα κ.α..

 Ρύθμιση των δωματίων

Κάθε δωμάτιο έχει διάφορες ρυθμίσεις που μπορείτε να αλλάξετε με αριστερό κλικ στην καρτέλα settings.

Κάθε δωμάτιο έχει ένα όνομα. Καλύτερα να του δίνετε ένα περιληπτικό όνομα. Επίσης υπάρχει ένας τίτλος. Αυτός ο τίτλος θα φαίνεται στο παράθυρο όταν τρέχει το παιχνίδι. Μπορείτε να θέσετε το πλάτος και το ύψος του δωματίου (σε pixels). Επίσης μπορείτε να θέσετε την ταχύτητα του παιχνιδιού. Είναι ο αριθμός βημάτων ανά δευτερόλεπτο(steps per second). Όσο υψηλότερη η ταχύτητα, τόσο πιο ομαλή θα είναι η κίνηση. Αλλά θα χρειαστείτε έναν γρηγορότερο υπολογιστή για να το τρέξετε.

Ιδιότητες των background

Στην καρτέλα background μπορείτε να θέσετε την εικόνα background για το δωμάτιο. Μπορείτε να καθορίσετε  πολλά backgrounds. Η καρτέλα έχει ως εξής:

Page 30: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Στην αρχή της καρτέλας θα δείτε το χρώμα του background. Μπορείτε να κάνετε κλικ σε αυτό για να το αλλάξετε. Το χρώμα για background είναι χρήσιμο μόνο εάν δεν χρησιμοποιείτε μια εικόνα background που καλύπτει ολόκληρο το δωμάτιο. Διαφορετικά, καλύτερα να μην τσεκάρετε το Draw background color επειδή αυτό θα είναι ένα χάσιμο χρόνου και θα καθυστερεί το παιχνίδι.

Από κάτω βλέπετε έναν κατάλογο με 8 background. Μπορείτε να τα επιλέξετε όλα αλλά τις περισσότερες φορές θα χρειαστείτε ένα ή δύο. Για να καθορίσετε ένα background, επιλέξτε το αρχικά στον κατάλογο. Μετά κλικ στο checkbox "Visible when room starts"αλλιώς το δωμάτιο δεν θα φαίνεται. Το όνομα του background γίνετε έντονο όταν καθορίζεται. Τώρα καθορίστε ένα background από τις επιλογές. Υπάρχουν διάφορες ρυθμίσεις που μπορείτε να αλλάξετε. Καταρχήν μπορείτε να δείξετε εάν η εικόνα πρέπει να εμφανισθεί σε όλο το δωμάτιο οριζόντια ή/και κάθετα. Μπορείτε επίσης να δείξετε τη θέση του background στο δωμάτιο. Μια διαφορετική επιλογή είναι να τεντωθεί το background. Το background θα "τεντωθεί" έτσι ώστε να γεμίζει ολόκληρο το δωμάτιο. Το παρουσιαστικό της εικόνας δεν θα διατηρηθεί. Τέλος μπορείτε να κάνετε το background να κινηθεί δίνοντας μια οριζόντια ή κάθετη ταχύτητα (pixels per step). Καλύτερα να μην χρησιμοποιήσετε κίνηση σε ένα "τεντωμένο" background. Το αποτέλεσμα δεν θα είναι καλό.

Υπάρχει ένα checkbox Foreground image. Όταν το επιλέξετε, το background θα είναι σε πρώτο πλάνο, το οποίο φαίνεται πάνω από όλα τα άλλα. Σαφώς μια τέτοια εικόνα πρέπει να είναι διαφανής για να είναι χρήσιμη.

Διανομή του παιχνιδιού σας 

Με τις πληροφορίες από προηγούμενα κεφάλαια μπορείτε να δημιουργήσετε δικά σας παιχνίδια. Όταν τελειώσετε το παιχνίδι σας θέλετε προφανώς να το δώσετε σε άλλους για να το παίξουν. Μπορείτε φυσικά να δώσετε το αρχείο gm6 που δημιουργήσατε και να χρησιμοποιήσουν τον Game Maker  για να το παίξουν αλλά κανονικά δεν είναι αυτό που θέλετε. Καταρχήν, δεν θέλετε άλλοι να είναι σε θέση να αλλάξουν το παιχνίδι, και αφετέρου να μπορούν να το παίξουν αυτοί που δεν έχουν το πρόγραμμα. Έτσι θα θέλετε να δημιουργήσετε ένα αυτόνομο εκτελέσιμο αρχείο του παιχνιδιού σας.

Η δημιουργία των αυτόνομων executables είναι πολύ εύκολη στο Game Maker. Στις επιλογές files επιλέγετε το Create executable. Θα ρωτηθείτε για το όνομα του εκτελέσιμου που πρέπει να περιέχει το παιχνίδι. Βάλτε ένα όνομα, και πιέστε ο.κ. και έχετε το αυτόνομο παιχνίδι σας που μπορείτε να δώσετε σε όποιον θέλετε. Μπορείτε να αλλάξετε την εικόνα για το αυτόνομο παιχνίδι στις επιλογές Global Game Settings.

Page 31: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Μόλις δημιουργήσετε ένα αυτόνομο εκτελέσιμο αρχείο με τον τρόπο που περιγράφεται πιο πάνω μπορείτε να το δώσετε αυτό το αρχείο σε άλλους ανθρώπους ή να το τοποθετήσετε στην ιστοσελίδα σας για download. Είστε ελεύθεροι να διανείμετε τα παιχνίδια που δημιουργείτε με το Game Maker από όλες της απόψεις. Μπορείτε ακόμη και να τα πουλήσετε. Αυτό φυσικά προϋποθέτει ότι τα sprites, οι εικόνες, και οι ήχοι που χρησιμοποιείτε μπορούν να διανεμηθούν ή να πωληθούν επίσης. Δείτε την συμφωνία αδειών για περισσότερες πληροφορίες.

Είναι χρήσιμο να συμπιέζετε το παιχνίδι σας, μαζί με κάποιες πληροφορίες readme. Στα Windows XP αυτό μπορεί να γίνει άμεσα, και υπάρχουν πολλά προγράμματα zip διαθέσιμα στο Web. Εναλλακτικά μπορείτε να δημιουργήσετε έναν installer για το παιχνίδι σας. Πάλι, ένας μεγάλος αριθμός ελεύθερων προγραμμάτων δημιουργιών εγκαταστάσεων(install creator) είναι διαθέσιμος στον Ιστό.

 

 

Page 32: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

2.ΠΡΟΧΩΡΗΜΕΝΗ ΧΡΗΣΗ

Προχωρημένος τρόπος

Μέχρι τώρα έχουμε εξετάσει τα απλά χαρακτηριστικά γνωρίσματα του Game Maker. Αλλά υπάρχουν περισσότερες δυνατότητες. Για να είστε σε θέση να τις χρησιμοποιήσετε πρέπει να τρέξετε το Game Maker στον προχωρημένο τρόπο. Αυτό είναι εύκολο. Στις επιλογές files, επιλέγουμε το Advanced mode. (Πρέπει να ξεκινήσετε ξανά το Game Maker ή τουλάχιστον σώστε το παιχνίδι σας και φορτώστε το ξανά).

Όταν αρχίζετε το Game Maker  στον προχωρημένο τρόπο, η ακόλουθη φόρμα παρουσιάζεται:

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

File menu

Στο file menu μπορείτε να βρείτε τις ακόλουθες πρόσθετες εντολές:

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

Preferences. Εδώ μπορείτε να θέσετε διάφορες προτιμήσεις για τo Gamer Maker. Δείτε παρακάτω έναν κατάλογο όλων των δυνατοτήτων.

Page 33: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Preferences

Εδώ μπορείτε να θέσετε διάφορες προτιμήσεις που θα διατηρηθούν στο Game Maker. Οι ακόλουθες προτιμήσεις μπορούν να τεθούν:

Show recently edited games in the file menu. Εάν επιλεχτεί τα οκτώ πρόσφατα παιχνίδια παρουσιάζονται στο πλαίσιο των πρόσφατων αρχείων στην επιλογή (files).

Load last opened file on start-up. Εάν επιλεχτεί όταν θα αρχίζετε το πρόγραμμα το πρόσφατο ανοιγμένο αρχείο θα ξεκινά αυτόματα.

Keep backup copies of files. Εάν επιλεχτεί το πρόγραμμα σώζει ένα εφεδρικό αντίγραφο του παιχνιδιού σας με την επέκταση gb0-gb9. Μπορείτε να ανοίξετε αυτά τα παιχνίδια με το Game Maker. Να χρησιμοποιήσετε τουλάχιστον ένα εφεδρικό αντίγραφο για την εργασία σας!

Maximal number of backups Εδώ μπορείτε να προσδιορίσετε πόσα (1-9) διαφορετικά εφεδρικά αντίγραφα πρέπει να αποθηκευτούν από το πρόγραμμα.

Show progress while loading and saving files. Εάν επιλεχτεί, όταν φορτώνετε ή σώζετε ένα αρχείο μια μπάρα προόδου παρουσιάζεται.

At start-up check for, and remove old temporary files. Το Game Maker και τα παιχνίδια που δημιουργούνται, δημιουργούν προσωρινά αρχεία. Κανονικά αυτά αφαιρούνται αυτόματα αλλά μερικές φορές, παραδείγματος χάριν όταν κάνει crash ένα παιχνίδι, αυτά μένουν. Εάν την επιλέξουμε, το πρόγραμμα ελέγχει εάν υπάρχουν τέτοια αρχεία και τα αφαιρεί στο ξεκίνημα.

Run games in secure mode. Εάν επιλεχτεί, οποιοδήποτε παιχνίδι που δημιουργείται με το Game Maker που τρέχει στη μηχανή σας δεν θα επιτραπεί να εκτελέσει εξωτερικά προγράμματα ή να αλλάξει ή να διαγράψει τα αρχεία σε μια θέση διαφορετική από τη τοποθεσία του παιχνιδιού. (Αυτό είναι μια προστασία ενάντια στους ιούς Trojan αν και η επιτυχία δεν είναι εγγυημένη). Ο έλεγχος αυτός σημαίνει ότι τα παιχνίδια που χρησιμοποιούν εξωτερικά αρχεία κ.λ.π. δεν θα τρέχουν σωστά. Η ρύθμιση λειτουργεί μόνο ενώ το πρόγραμμα τρέχει. Έτσι εάν τρέχετε το παιχνίδι ανεξάρτητα από το Game Maker, παραδείγματος χάριν ως εκτελέσιμο αυτόνομο, δεν τρέχει σε secure mode.

Show the origin and bounding box in the sprite image. Εάν επιλεχτεί, στις ιδιότητες του sprite, στην εικόνα του, το origin και το bounding box είναι ορατά.

In object properties, show hints for actions. Εάν επιλεχτεί, κρατώντας το ποντίκι σας πάνω σε  μια από τις ενέργειες, μια περιγραφή παρουσιάζετε.

When closing, remove instances outside the room Εάν επιλεχτεί, το πρόγραμμα σας προειδοποιεί πότε υπάρχουν περιπτώσεις έξω από ένα δωμάτιο και σας αφήνει να τις αφαιρέσετε.

Remember room settings when closing the form. Εάν επιλεχτεί ,οι διάφορες αλλαγές που κάνετε σε ένα δωμάτιο παραμένουν όταν θα ξανανοίξετε το ίδιο δωμάτιο αργότερα.

Scripts and code and colors. Δείτε το κεφάλαιο σχετικά με τα χειρόγραφα για περισσότερες πληροφορίες για αυτές τις προτιμήσεις.

Image editor Το Game Maker από προεπιλογή χρησιμοποιεί έναν ενσωματωμένο πρόγραμμα σχεδίασης για τις εικόνες. Εάν προτιμάτε ένα διαφορετικό πρόγραμμα σχεδίασης μπορείτε να το διευκρινίσετε εδώ.

External sound editors. Μπορείτε να δείξετε εδώ ποιο πρόγραμμα θέλετε να χρησιμοποιήσετε για την επεξεργασία των ήχων. (Σημειώστε ότι το Game Maker δεν έχει ενσωματωμένο πρόγραμμα επεξεργασίας ήχου έτσι εάν δεν προσδιορίσετε κάποιο πρόγραμμα δεν θα έχετε αυτή την δυνατότητα).

Edit menu

Στo Edit menu μπορείτε να βρείτε τις ακόλουθες πρόσθετες εντολές:

Add group Οι πόροι μπορούν να συγκεντρωθούν σε group. Αυτό είναι πολύ χρήσιμο όταν κάνετε μεγάλα παιχνίδια. Παραδείγματος χάριν, μπορείτε να βάλετε όλους τους ήχους από ένα ορισμένο αντικείμενο σε μια ομάδα, ή μπορείτε να ομαδοποιήσετε όλα τα αντικείμενα που χρησιμοποιούνται σε ένα ιδιαίτερο επίπεδο. Αυτή η εντολή δημιουργεί μια νέα ομάδα στον επιλεγμένο πόρο. Θα ρωτηθείτε για ένα όνομα. Τα group  μπορούν να περιέχουν και άλλα group, κ.λ.π.... Μπορείτε και να σύρετε τους πόρους στα group.

Find Resource. Με αυτήν την εντολή πληκτρολογείτε το όνομα ενός πόρου (object,sprite κ.τ.λ). και ανοίγετε την αντίστοιχη φόρμα του.

Show Object Information Χρησιμοποιώντας αυτήν την εντολή μπορείτε να πάρετε μια επισκόπηση όλων των αντικειμένων στο παιχνίδι.

Page 34: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Add Menu

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

Scripts menu

Στο script menu μπορείτε να βρείτε τις ακόλουθες πρόσθετες εντολές:

Import Scripts. Μπορέστε να εισάγετε χειρόγραφα από αρχεία. Export Scripts Μπορέστε να σώσετε τα χειρόγραφά σας σε ένα αρχείο, που μπορεί να χρησιμοποιηθεί και

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

Show Built-in Variables. Παρουσιάζει σε ταξινομημένο κατάλογο όλες τις ενσωματωμένες μεταβλητές, τοπικές και γενικές.

Show Built-in Functions. Παρουσιάζει ταξινομημένο κατάλογο όλων των ενσωματωμένων λειτουργιών. Show Constants. Παρουσιάζει ταξινομημένο κατάλογο όλων των ενσωματωμένων σταθερών που

καθορίζονται στις επιλογές τον παιχνιδιών. Show Resource Names. Παρουσιάζει ταξινομημένο κατάλογο όλων των ονομάτων των πόρων. Μπορείτε να

επιλέξετε ένα όνομα για να το ανοίξετε. Search in Scripts. Μπορείτε να ψάξετε για μια σειρά σε όλα τα χειρόγραφα. Μπορείτε μετά να επιλέξετε την

σειρά για να δείτε το χειρόγραφο. Check Resource Names. Έλεγχος όλων των ονομάτων στους πόρους. Θα αναφερθούν ονόματα: εάν δεν είναι

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

Check All Scripts. Ελέγχει όλα τα χειρόγραφα για λάθη. Μπορείτε να επιλέξετε την αναφερόμενη θέση για να δείτε το χειρόγραφο.

 

Page 35: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Περισσότερα για τα sprites

Διορθώστε τα sprites σας

Μέχρι τώρα φορτώσαμε τα sprites μας από αρχεία. Είναι επίσης δυνατόν να τα δημιουργήσετε και ειδικότερα να τα τροποποιήσετε μέσα στο Game Maker. Για να το κάνετε αυτό, ανοίξτε το παράθυρο ενός sprite (double-κλικ σε ένα από τα sprites σας ή με τη δημιουργία ενός νέου). Τώρα πιέστε το κουμπί edit sprite. Μια νέα φόρμα θα εμφανιστεί παρουσιάζοντας όλες τις υπο-εικόνες που αποτελούν το sprite.

Η φόρμα έχει ως εξής:

Στα δεξιά βλέπετε τις διαφορετικές εικόνες που αποτελούν το sprite. Σημειώστε ότι στο Game Maker όλες οι υπο-εικόνες ενός sprite πρέπει να έχουν το ίδιο μέγεθος. Στα αριστερά υπάρχει μια προεπισκόπηση του animation. (Εάν δεν το βλέπετε, επιλέξτε το checkbox Show Preview). Κάτω από την προεπισκόπηση μπορείτε να αλλάξετε την ταχύτητα του animation και το χρώμα του background. Κατ' αυτό τον τρόπο μπορείτε να πάρετε μια ιδέα για το πως θα μοιάζει το animation μέσα στο παιχνίδι. (Σημειώστε ότι αυτή η ταχύτητα είναι μόνο για την προεπισκόπηση). Η ταχύτητα του animation κατά τη διάρκεια του παιχνιδιού εξαρτάται από την ταχύτητα του δωματίου.

Η φόρμα επεξεργασίας ενός sprite περιέχει πολλές εντολές για να δημιουργήσει και να αλλάξει ένα sprite. Αυτές δίνονται μέσω των menu (για μερικές υπάρχουν κουμπιά στη μπάρα εργαλείων). Μερικές εντολές λειτουργούν για μεμονωμένες εικόνες. Πρέπει πρώτα να επιλέγετε αρχικά μια υπο-εικόνα με το ποντίκι.

File manu  

Το file menu περιέχει διάφορες εντολές σχετικές με τη φόρτωση και το σώσιμο ενός sprite.

New. Δημιουργεί νέο, κενό sprite. Πρέπει να δείξετε το μέγεθος του sprite. (Θυμηθείτε, όλες οι εικόνες ενός sprite πρέπει να έχουν το ίδιο μέγεθος).

Create from file. Δημιουργεί sprite από ένα αρχείο. Πολλοί τύποι αρχείου μπορούν να χρησιμοποιηθούν. Όλοι δημιουργούν ένα sprite που αποτελείται από μια ενιαία εικόνα, εκτός από τα animatedGIF που είναι χωρισμένα σε υπο-εικόνες. Παρακαλώ σημειώστε, τη διαφάνεια τη δίνει το κάτω αριστερό pixel, όχι το χρώμα της διαφάνειας στο αρχείο GIF. Μπορείτε να επιλέξετε και άλλες εικόνες που έπειτα όλες θα φορτωθούν. Πρέπει εν τούτοις να έχουν το ίδιο μέγεθος.

Add from file. Πρόσθετη μια εικόνα (ή εικόνες) από ένα αρχείο στο τρέχων ¦sprite¦. Εάν οι εικόνες δεν έχουν το ίδιο μέγεθος μπορείτε να επιλέξετε πού να τοποθετηθούν ή να τις τεντώσετε. Μπορείτε να επιλέξετε πολλές εικόνες που έπειτα όλες θα φορτωθούν. Πρέπει εν τούτοις να έχουν το ίδιο μέγεθος.

Save as GIF. Σώζει το ¦sprite¦ ως animated GIF. Save as strip. Σώζει το ¦sprite¦ ως bitmap εικόνας, με όλες τις εικόνες η μια δίπλα στην άλλη. Create from strip.Δημιουργεί ¦sprite¦ από ένα strip. °Δείτε° παρακάτω για περισσότερες πληροφορίες. Add from strip. Χρησιμοποιήστε το για να προσθέσετε εικόνες από ένα strip. Δείτε παρακάτω.

Page 36: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Close saving changes. Κλείνει τη φόρμα και σώζει τις αλλαγές που έγιναν στο ¦sprite¦. Εάν δεν θέλετε να σώσετε τις αλλαγές, κλείστε απλά το παράθυρο.

Edit menu  

Το edit menu περιέχει διάφορες εντολές που εξετάζουν τo επιλεγμένο sprite. Έχει επιλογές cut,paste και clear,για να καθαρίσετε το τρέχον sprite, delete να το διαγράψετε, και να μετακινήσετε το επιλεγμένο sprite αριστερά και δεξιά. Τέλος, υπάρχει μια εντολή για να μεταφερθείτε στο ενσωματωμένο πρόγραμμα ζωγραφικής .

Transform menu  

Στo transform menu μπορείτε να κάνετε διάφορες αλλαγές στις εικόνες.

Mirror horizontal. Αντιστρέφει τις εικόνες οριζόντια. Flip vertical. Αντιστρέφει τις εικόνες κάθετα. Shift. Εδώ μπορείτε να μετατοπίσετε τις εικόνες σε ένα υποδειγμένο ποσό οριζόντια και κάθετα. Rotate. Μπορείτε να περιστρέψετε τις εικόνες 90 μοίρες, 180 μοίρες, ή ένα αυθαίρετο ποσό. Στην

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

Resize Canvas. Εδώ μπορείτε να αλλάξετε το μέγεθος του καμβά. Μπορείτε επίσης να δείξετε πού οι παλαιές εικόνες θα τοποθετηθούν στο νέο καμβά.

Stretch. Εδώ μπορείτε να τεντώσετε τις εικόνες σε ένα νέο μέγεθος. Μπορείτε να δείξετε τον παράγοντα της κλίμακας και την ποιότητα.

Scale. Αλλάζει την κλίμακα στην εικόνα (αλλά όχι το μέγεθος της εικόνας)!. Μπορείτε να δείξετε την ποιότητα.

Images menu   

Στο Images menu  μπορείτε να εκτελέσετε διάφορες λειτουργίες στις εικόνες.

Cycle left. Γυρίζει όλες τις εικόνες μια θέση στα αριστερά. Αυτό τοποθετεί το animation σε ένα διαφορετικό σημείο.

Cycle right. Το ίδιο στα δεξιά.. Black and white. Καθιστά το sprite μαύρο και άσπρο (δεν έχει επιπτώσεις στη διαφάνεια). Colorize. Εδώ μπορείτε να αλλάξετε το χρώμα (χροιά) των εικόνων. Χρησιμοποιήστε τον ρυθμιστή για να

επιλέξετε διάφορα χρώματα. Colorize Partial. Εδώ μπορείτε να αλλάξετε το χρώμα (χροιά) σε ένα μέρος της εικόνας. Μπορείτε να

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

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

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

αυτό το χρώμα. Transparency. Εδώ μπορείτε να δείξετε ένα επίπεδο διαφάνειας. Αυτό επιτυγχάνεται με το να καταστήσει

διάφορα pixel διαφανή. Blur. Με το θάμπωμα των εικόνων τα χρώματα αναμιγνύονται λίγο, καθιστώντας το πιο αμυδρό. Όσο

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

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

Animation menu

Κάτω από την επιλογή Animation menu  μπορείτε να δημιουργήσετε νέα animation  από το τρέχον animation. Υπάρχουν πολλές επιλογές και πρέπει να πειραματιστείτε λίγο με αυτές για να δημιουργήσετε τα αποτελέσματα που θέλετε. Επίσης μην ξεχάστε ότι μπορείτε πάντα να σώσετε ένα animation και να τo προσθέσετε αργότερα στο

Page 37: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

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

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

Reverse. Όπως μπορέσατε να υποθέσετε αυτό αντιστρέφει το animation . Έτσι παίζεται προς τα πίσω. Add Reverse. Αντιστρέφει και  προσθέτει, διπλασιάζοντας τον αριθμό πλαισίων. Αυτό είναι πολύ χρήσιμο για

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

σε κάθε βήμα. Πρέπει να δηλώσετε τον αριθμό πλαισίων και την κίνηση οριζόντια και κάθετα. Rotation sequence. Δημιουργεί ένα animation στο οποίο η εικόνα περιστρέφεται. Μπορείτε είτε να επιλέξετε

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

Colorize. Δημιουργεί ένα animation που μετατρέπει την εικόνα σε ένα ιδιαίτερο χρώμα. Fade to color. Δημιουργεί ένα animation που ξεθωριάζει την εικόνα σε ένα ιδιαίτερο χρώμα. Disappear. Κάνει την εικόνα να εξαφανιστεί. Shrink. Στενεύει την εικόνα στο τίποτα. Μπορείτε να δείξετε την κατεύθυνση. Grow. Αυξάνεται την εικόνα από το τίποτα. Flatten. Ισιώνει την εικόνα στο τίποτα σε μια δεδομένη κατεύθυνση. Raise. Αυξάνει την εικόνα από μια δεδομένη κατεύθυνση  Overlay. Καλύπτει το animation με ένα άλλο animation ή εικόνα από αρχείο. Morph. Μεταμορφώνει το animation σε ένα animation ή σε εικόνα από ένα αρχείο. Σημειώστε ότι λειτουργεί

καλύτερα εάν τα δύο animations καλύπτουν τον ίδιο τομέα της εικόνας. Διαφορετικά, στα μισά του δρόμου ορισμένα pixels εξαφανίζονται και άλλα εμφανίζονται ξαφνικά.

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

  Strips

Όπως είπαμε, τα sprites κανονικά είναι αποθηκευμένα είτε ως animationGIF είτε ως strips.Ένα strip είναι ένα μεγάλο αρχείο εικόνας που αποθηκεύει όλες τις εικόνες τη μια δίπλα στη άλλη. Το μόνο πρόβλημα είναι ότι το μέγεθος των μεμονωμένων υπο-εικόνων δεν αποθηκεύεται στην εικόνα. Επίσης, πολλά αρχεία strip είναι διαθέσιμα στο web έχοντας πολλά sprite σε ένα αρχείο. Παραδείγματος χάριν, στο ακόλουθο κομμάτι  strip το αρχείο περιέχει τέσσερις διαφορετικές εικόνες.

Για να επιλέξετε μεμονωμένα sprites από τέτοια αρχεία, μπορείτε να επιλέξετε Create from Strip  ή Add from Strip  από τις επιλογές File Menu. Αφότου επιλέξουμε το κατάλληλο αρχείο strip, η ακόλουθη φόρμα θα παρουσιαστεί:

Page 38: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Στα δεξιά βλέπετε (μέρος) από το strip που επιλέξατε. Στα αριστερά μπορείτε να διευκρινίσετε διάφορες παραμέτρους που διευκρινίζουν για ποια subimages ενδιαφέρεστε. Σημειώστε ότι ένα ή περισσότερα ορθογώνια στην εικόνα δείχνουν τις εικόνες που επιλέγετε. Οι ακόλουθες παράμετροι μπορούν να διευκρινιστούν:

Number of images Αυτό είναι ο αριθμός εικόνων που θέλετε να πάρετε από το strip. Images per row. Πόσες εικόνες θέλετε να είναι ανά σειρά. Παραδείγματος χάριν, με τη ρύθμιση σε 1 θα

επιλέξετε μια κάθετη ακολουθία εικόνων. Image width. Το πλάτος των επιλεγμένων εικόνων. Image height. Το ύψος των επιλεγμένων εικόνων. Horizontal cell offset. Εάν δεν θέλετε να επιλέξετε τις εικόνες πάνω αριστερά μπορείτε να θέσετε εδώ πόσες

εικόνες πρέπει να παραλείψετε οριζόντια. Vertical cell offset. Εδώ προσδιορίζετε πόσες εικόνες πρέπει να παραλείψετε  κάθετα. Horizontal pixel offset Μερικές φορές υπάρχει κάποιο πρόσθετο κενό. Εδώ δείχνετε αυτό το ποσό

οριζοντίως(σε pixel). Vertical pixel offset. Εδώ δείχνετε αυτό το ποσό καθέτως Horizontal separation. Σε μερικά strips υπάρχουν γραμμές ή κενό διάστημα μεταξύ των εικόνων. Εδώ

μπορείτε να δείξετε το οριζόντιο ποσό για να αφήσετε μεταξύ των εικόνων (σε pixel). Vertical separation. Εδώ μπορείτε να δείξετε το κάθετο ποσό.

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

Tροποποιήστε τις υπο-εικόνες

Μπορείτε επίσης να τροποποιήσετε τις υπο-εικόνες. Για αυτόν τον σκοπό επιλέξτε μια υπο-εικόνα και επιλέξτε edit image  από τις επιλογές edit. Θα ανοίξει το ενσωματωμένο πρόγραμμα ζωγραφικής και απεικόνισης. Παρακαλώ συνειδητοποιήστε ότι αυτό είναι ένα περιορισμένο πρόγραμμα που προορίζεται κυρίως για να κάνει μικρές αλλαγές στις υπάρχουσες εικόνες και δεν μπορεί να σχεδιάσει νέες. Για αυτό, καλύτερα να χρησιμοποιήσετε ένα πρόγραμμα σχεδιασμού και να το προσθέσετε στο Game Maker. Μπορείτε επίσης να ορίσετε το πρόγραμμα σας στις επιλογές (preferences).  

Page 39: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

Στα δεξιά της φόρμας μπορείτε να επιλέξετε τα χρώματα (ένα για το αριστερό κουμπί του ποντικιού και ένα για το δεξί κουμπί). Υπάρχουν τέσσερις τρόποι να αλλαχτεί το χρώμα.   Καταρχήν μπορείτε να επιλέξετε με το κουμπί του ποντικιού (αριστερό ή δεξιό) σε ένα από τα 16 βασικά χρώματα. Σημειώστε ότι υπάρχει ένα ειδικό κομμάτι στην εικόνα που περιέχει το χρώμα του κάτω-αριστερού pixel της εικόνας που χρησιμοποιείται ως χρώμα διαφάνειας εάν το sprite είναι διαφανές. Μπορείτε να χρησιμοποιήσετε αυτό το χρώμα για να καταστήσετε μέρος της εικόνας σας διαφανές. Ο δεύτερος τρόπος είναι να κάνουμε κλικ στην εικόνα με το μεταβαλλόμενο χρώμα. Εδώ επιλέγετε περισσότερα χρώματα. Μπορείτε να συγκρατήσετε το ποντίκι για να δείτε το χρώμα που επιλέγετε. Τρίτον, μπορείτε να κάνετε κλικ με το αριστερό κουμπί στα παράθυρα που δείχνουν το αριστερό και δεξιό χρώμα. Ένας διάλογος χρώματος εμφανίζετε  στον οποίο μπορείτε να επιλέξετε το χρώμα. Τέλος, μπορείτε να επιλέξετε το dropper χρώματος (σταγονόμετρο) το εργαλείο στα αριστερά και να επιλέξετε μια θέση στην εικόνα και να αντιγράψετε το χρώμα από εκεί.  

Στις επιλογές μπορείτε να βρείτε της ίδιες εντολές μεταμορφώσεις και εικόνας που είναι επίσης διαθέσιμες στο sprite edit. Αν και αυτή τη φορά ισχύουν μόνο για την τρέχουσα εικόνα. Μπορείτε επίσης να σώσετε την εικόνα ως αρχείο bitmap. Υπάρχουν δύο πρόσθετες εντολές στo Image menu:  

Clear. Καθαρίστε την εικόνα στο κάτω-αριστερό χρώμα (που έπειτα αυτόματα γίνεται το χρώμα διαφάνειας).   Gradient fill. Με αυτήν την εντολή μπορείτε να γεμίσετε την εικόνα με ένα βαθμιαία μεταβαλλόμενο χρώμα

(όχι πολύ χρήσιμο για sprites, αλλά φαίνεται συμπαθητικό, και μπορεί να χρησιμοποιηθεί για τα backgrounds, τα οποία χρησιμοποιούν το ίδιο πρόγραμμα σχεδιασμού).  

Σημειώστε ότι δεν υπάρχει κανένας μηχανισμός για να επιλέξετε ένα μέρος της εικόνας.  Επίσης μερικές φανταχτερές ρουτίνες σχεδιασμού λείπουν. Για αυτό πρέπει να χρησιμοποιήσετε πιο προηγμένα  προγράμματα σχεδίου (ή απλά το πρόγραμμα των windows). Ο ευκολότερος τρόπος να γίνει αυτό είναι να κάνετε copy την εικόνα από το παιχνίδι,paste στο πρόγραμμα των windows.Κάνετε της διορθώσεις και ξανά paste στο Game Maker

 

 

Page 40: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Προχωρημένες ρυθμίσεις  

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

Καταρχήν υπάρχουν επιλογές σχετικές με τον έλεγχο σύγκρουσης (collision event). Όποτε δύο περιπτώσεις συναντιούνται ένα γεγονός σύγκρουσης παράγεται. Οι συγκρούσεις ελέγχονται με τον ακόλουθο τρόπο. Κάθε sprite έχει ένα κιβώτιο ορίων (bounding box). Αυτό το κιβώτιο περιέχει το μη διαφανές μέρος όλων των υπο-εικόνων. Όταν τα κιβώτια ορίων συναντηθούν, ελέγχεται εάν δύο pixels στις τρέχουσες υπο-εικόνες των δύο sprites ενώνονται. Αυτή η δεύτερη λειτουργία είναι ακριβής και απαιτεί πρόσθετη μνήμη και προεπεξεργασία. Έτσι εάν δεν ενδιαφέρεστε για την ακριβή σύγκρουση μεταξύ δυο sprite, δεν πρέπει να επιλέξετε το checkbox Precise collision checking. Σε αυτήν την περίπτωση ελέγχετε μόνο το κιβώτιο ορίων (bounding box). Μπορείτε επίσης να αλλάξετε το κιβώτιο ορίων. Αυτό πάντα απαιτείται αλλά μερικές φορές θα θελήσετε να καταστήσετε το κιβώτιο ορίων μικρότερο, έτσι ώστε οι συγκρούσεις με μερικά προεκτεινόμενα μέρη του sprite να μην λαμβάνονται υπόψη.

Οι άκρες των sprites μπορούν να φανούν λίγο ογκώδης. Για να το αποφύγετε μπορείτε να επιλέξετε το checkbox Smooth edges. Σε αυτήν την περίπτωση τα pixels στις άκρες του sprite (δηλαδή pixel που είναι γείτονες με διαφανή pixel) σχεδιάζονται λίγο διαφανές. Αυτό μπορεί να τα κάνει να φανούν πολύ καλύτερα. Η επίδραση αυτής της ρύθμισης είναι ορατή μόνο στο παιχνίδι, όχι στη φόρμα.

Κατά τη διάρκεια του gameplay, τα sprites μετατρέπεται σε textures. Τα textures πρέπει να κινηθούν προς την video memory (στην κάρτα γραφικών) προτού να μπορέσουν να χρησιμοποιηθούν. Όταν το checkbox Preload texture επιλεχθεί αυτό συμβαίνει αμέσως όταν το παιχνίδι φορτώνει έτσι ώστε δεν θα υπάρξει καμία καθυστέρηση κατά τη διάρκεια του παιχνιδιού. Εάν όμως έχετε μεγάλα sprites που εν τούτοις δεν χρησιμοποιούνται στην αρχή να μην το επιλέξετε. Το πρόγραμμα θα το φόρτωσει από την video memory όταν χρειαστεί.

Τέλος, μπορείτε να δείξετε την προέλευση (origin) του sprite. Αυτό είναι το σημείο του sprite που αντιστοιχεί με τη θέση του. Όταν θέτετε μια περίπτωση σε μια ιδιαίτερη θέση, η προέλευση του sprite τοποθετείται εκεί. Η προεπιλογή είναι η πάνω αριστερή γωνία του sprite αλλά είναι μερικές φορές καταλληλότερο να χρησιμοποιηθεί το κέντρο ή κάποιο άλλο σημαντικό σημείο. Μπορείτε ακόμη και να επιλέξετε μια προέλευση έξω από το sprite. Μπορείτε επίσης να θέσετε την προέλευση με κλικ στη εικόνα του sprite  (όταν παρουσιάζεται η προέλευση στην εικόνα).

Περισσότερα για τους ήχους και τη μουσική  

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

Page 41: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Εκτός από τα κουμπιά load, save, και play υπάρχουν πολλές ρυθμίσεις που θα δούμε τώρα εδώ.

Καταρχήν μπορείτε να δείξετε το είδος του ήχου. Είναι τέσσερα είδη. Οι κανονικοί ήχοι γενικά χρησιμοποιούνται με αρχεία wave (αν και μπορούν να χρησιμοποιηθούν και με αρχεία  Midi επίσης). Πολλοί wave ήχοι μπορούν να παίξουν συγχρόνως. Μπορείτε ακόμη και να παίξετε πολλά αντίγραφα του ίδιου ήχου ταυτόχρονα. Ο ήχος για background είναι παρόμοιος με τους wave ήχους αλλά μόνο ένας μπορεί να παίξει κάθε στιγμή. Έτσι μόλις αρχίσετε έναν νέο ήχο background, αυτός που παίζει θα σταματήσει. Τα αρχεία  Midi είναι μουσική background από προεπιλογή. Ο τρισδιάστατος ήχος είναι ο ήχος στον οποίο μπορείτε να εφαρμόσετε 3D επιλογές μέσω των ειδικών λειτουργιών. Θα τους χρειαστείτε μόνο για προχωρημένα ηχητικά εφέ.

Τα αρχεία ήχου παίζονται κανονικά μέσω DirectX. Αυτό δίνει πολλές δυνατότητες αλλά περιορίζεται στα αρχεία wave και Midi. Εάν θέλετε να παίξετε άλλα αρχεία, όπως mp3, πρέπει να επιλέξετε την επιλογή για να χρησιμοποιήσετε το Media Player. Αυτοί είναι περιορισμένοι εν τούτοις. Καμία αλλαγή ήχου ή εφέ δεν μπορεί να χρησιμοποιηθεί και μόνο ένα κομμάτι μπορεί να παίξει ταυτόχρονα. Σημειώστε ότι τα αρχεία Midi, όταν παίζονται μέσω του media player μπορεί να ακούγονται διαφορετικά από ότι όταν παίζονται κανονικά. Ο λόγος είναι ότι ο media player χρησιμοποιεί το hardware synthesizer (που είναι διαφορετικό σε κάθε μηχανή) ή αλλιώς μια έκδοση λογισμικού χρησιμοποιείται (που είναι το ίδιο πράγμα σε όλες τις μηχανές). Κατά προτίμηση μην χρησιμοποιήστε mp3 αρχεία στα  παιχνίδια σας. Πρέπει να αποσυμπιεστούν που παίρνει χρόνο επεξεργασίας και  επιβραδύνει το παιχνίδι. Το γεγονός ότι το μέγεθος αρχείων είναι μικρότερο δεν σημαίνει ότι χρησιμοποιούν λιγότερη μνήμη. Επίσης, δεν τα υποστηρίζουν όλες οι μηχανές. Έτσι το παιχνίδι σας μπορεί να μην τρέξει σε όλες τις μηχανές.

Αφετέρου, μπορείτε να επιλέξετε μερικά ηχητικά εφέ, όπως τα chorus ή echo (μόνο στην δηλωμένη έκδοση του Game Maker!) Μπορείτε να επιλέξετε οποιοδήποτε συνδυασμό. Μπορείτε αμέσως να ακούσετε τα αποτελέσματα. (Κατά τη χρησιμοποίηση του κώδικα GML μπορείτε ακόμη και να αλλάξετε τις παραμέτρους αυτών των αποτελεσμάτων). Επίσης μπορείτε να επιλέξετε μια προκαθορισμένη ένταση του ήχου και η να τον ακούτε από το αριστερό ή το δεξί ηχείο.

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

Το Game Maker δεν έχει ενσωματωμένο πρόγραμμα επεξεργασίας ήχου. Αλλά στις προτιμήσεις μπορείτε να δείξετε το πρόγραμμα που θέλετε να χρησιμοποιήσετε για τους ήχους. Εάν το κάνετε, μπορείτε να πιέσετε το κουμπί  Edit Sound  για να επεξεργαστείτε τον τρέχοντα ήχο. (Το παράθυρο του Game Maker θα κρυφτεί ενώ επεξεργάζεστε τον ήχο και θα επιστρέψει όταν κλείνετε τον επεξεργαστή ήχου).

Περισσότερα για το φόντο

Εκτός από τη φόρτωση τους από αρχεία, μπορείτε επίσης να δημιουργήσετε τα δικά σας backgrounds. Για αυτόν τον λόγο, πιέστε το κουμπί Edit Background το ενσωματωμένο πρόγραμμα ζωγραφικής ανοίγει στο οποίο μπορείτε να δημιουργήσετε ή να αλλάξετε το Background σας. Παρακαλώ συνειδητοποιήστε ότι αυτό δεν είναι ένα πραγματικό πρόγραμμα. Για  πιο προχωρημένα αποτελέσματα χρησιμοποιήστε κάποιο άλλο πρόγραμμα. Υπάρχει μια επιλογή που είναι ιδιαίτερα χρήσιμη. Στις επιλογές  Image βρίσκετε  μια εντολή Gradient Fill. Αυτή μπορεί να χρησιμοποιηθεί για να δημιουργήσει μερικά εφέ.

Στον προχωρημένο τρόπο, το παράθυρο του background έχει διάφορες επιλογές.

Οι άκρες των backgrounds, ειδικότερα όταν είναι διαφανή, μπορεί να φανούν λίγο ογκώδης. Για να το αποφύγετε αυτό μπορείτε να επιλέξετε το checkbox Smooth edges. Σε αυτήν την περίπτωση τα pixels στις άκρες του background(δηλαδή pixel που είναι δίπλα σε διαφανή pixel) είναι σχεδιασμένα διαφανές. Αυτό μπορεί να τα κάνει να φανούν καλύτερα. (Μην το χρησιμοποιήσετε όταν πρέπει τα backgrounds να εφαρμόσουν σε μεγαλύτερα δωμάτια επειδή σε εκείνη την περίπτωση μια διαφανής γραμμή θα εμφανιστεί). Η επίδραση αυτής της ρύθμισης είναι μόνο ορατή στο παιχνίδι, όχι εκείνη τη στιγμή!

Κατά τη διάρκεια του gameplay, τα backgrounds μετατρέπονται σε textures. Τα textures πρέπει να κινηθούν προς την  video memory (στην κάρτα γραφικών) προτού να μπορέσουν να χρησιμοποιηθούν. Όταν το checkbox

Page 42: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

Μερικές φορές θέλετε να χρησιμοποιήσετε ένα backgrounds ως σύνολο από tiles, δηλαδή μια συλλογή μικρότερων εικόνων σε μια μεγάλη εικόνα. Όταν δημιουργήσετε δωμάτια μπορείτε έπειτα να προσθέσετε αυτά τα subimages σε διάφορα μέρη στο δωμάτιο. Αυτό είναι πολύ χρήσιμο για φαίνονται ωραία τα επίπεδα. Για να χρησιμοποιήσετε ένα background ως σύνολο tiles, επιλέξτε το checkbox Use as tile set. Η φόρμα αλλάζει τώρα και έχει ως εξής:

Μπορείτε να κάνετε διάφορες ρυθμίσεις για ένα σύνολο από tiles. Ειδικότερα μπορείτε να δείξετε το πλάτος και το ύψος κάθε tile. (Μόνο ένα μέγεθος μπορεί να δοθεί, γι αυτό καλύτερα σιγουρεύεται ότι όλα τα tiles έχουν το ίδιο μέγεθος. Εάν έχετε διαφορετικά μεγέθη, δημιουργήστε δύο ή περισσότερα σύνολα από tiles). Μπορείτε επίσης να δείξετε ένα όφσετ από όπου το πάνω αριστερό tile αρχίζει. Τέλος, ένας χωρισμός μεταξύ των tiles (αυτό είναι κανονικά 0 ή 1) μπορεί να υποδειχθεί. Για περισσότερες πληροφορίες για τη χρησιμοποίηση των tiles, δείτε το κεφάλαιο σχετικά με τη δημιουργία των δωματίων.

Μια  προειδοποίηση απαιτείται εδώ. Όταν βάζετε ένα χώρισμα μεταξύ των sprites και παρεμβάλετε μεταξύ των pixel (δείτε τις  global game settings) αυτό μπορεί να οδηγήσει σε ρωγμές μεταξύ των tiles. Καλύτερα σιγουρευτείτε ότι τα pixel γύρω από τα tiles ταιριάζουν με τα pixel ακριβώς μέσα στα tiles για να το αποφύγετε αυτό.

Περισσότερα για τα αντικείμενα

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

Depth -Βάθος

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

Persistent objects

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

Parents

Page 43: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Κάθε αντικείμενο, μπορεί να έχει ένα άλλο αντικείμενο, γονέα. Όταν ένα αντικείμενο έχει έναν γονέα, κληρονομεί τη συμπεριφορά του γονέα. Για να το θέσουμε διαφορετικά, το αντικείμενο γίνετε περίπτωση του αντικειμένου γονέα. Παραδείγματος χάριν, εάν ονομάζετε 4 διαφορετικές μπάλες, ball1, ball2, ball3 και ball4, η οποίες όλες συμπεριφέρονται το ίδιο αλλά έχουν διαφορετικό sprite, μπορείτε να κάνετε το ball1 γονέα των άλλων τριών. Τώρα πρέπει μόνο να διευκρινίσετε τα γεγονότα για το ball1. Οι άλλοι θα κληρονομήσουν τα γεγονότα και θα συμπεριφερθούν ακριβώς όπως το ball1. Επίσης, όταν εφαρμόζετε ενέργειες στις περιπτώσεις του αντικειμένου γονέα θα εφαρμοστούν επίσης και στα παιδιά. Έτσι, παραδείγματος χάριν, εάν καταστρέψετε όλες τις περιπτώσεις του ball1 οι περιπτώσεις ball2,  ball3, και ball4 θα καταστραφούν επίσης. Αυτό σώζει πολλή εργασία.

Συχνά, τα αντικείμενα πρέπει να συμπεριφερθούν σχεδόν όμοια αλλά θα υπάρξουν μερικές μικρές διαφορές. Παραδείγματος χάριν, ένα τέρας πρέπει να κινηθεί πάνω-κάτω και το άλλο αριστερά δεξιά. Για όλα τ'άλλα έχουν ακριβώς την ίδια συμπεριφορά. Σε αυτήν την περίπτωση σχεδόν όλα τα γεγονότα πρέπει να έχουν τις ίδιες ενέργειες αλλά ένα ή δύο να είναι διαφορετικά. Πάλι μπορούμε να κάνουμε ένα αντικείμενο γονέα του άλλου. Αλλά σε αυτήν την περίπτωση καθορίζουμε επίσης ορισμένα γεγονότα για το αντικείμενο παιδί. Αυτά τα γεγονότα "αγνοούνται" από τα γεγονότα του γονέα. Έτσι όποτε ένα γεγονός για το αντικείμενο παιδί περιέχει ενέργειες, αυτές εκτελούνται αντί τα γεγονότα του γονέα. Εάν θέλετε επίσης να εκτελέσετε το γεγονός γονέα μπορείτε να επιλέξετε το αποκαλούμενο parent "κληρονομημένο" γεγονός χρησιμοποιώντας την κατάλληλη ενέργεια(θα την βρείτε στην καρτέλα control).

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

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

Όπως ειπώθηκε, οπουδήποτε χρησιμοποιείτε ένα αντικείμενο, αυτό προϋποθέτει  και  απογόνους. Αυτό συμβαίνει όταν, σε μια ενέργεια, δείχνετε ότι η ενέργεια πρέπει να εφαρμοστεί στις περιπτώσεις ενός ορισμένου αντικειμένου. Συμβαίνει επίσης όταν χρησιμοποιείτε τη δήλωση   with()στον κώδικα (δείτε παρακάτω). Και λειτουργεί όταν καλείτε τις λειτουργίες όπως το instance_position, instance_number, κ.λπ.... Τέλος, λειτουργεί όταν αναφέρεστε σε μεταβλητές για άλλα αντικείμενα. Στο παράδειγμα πιο πάνω όταν θέσετε ball1.speed σε 10 αυτό ισχύει επίσης και για το ball2, ball3 και ball4.

Μάσκες-Masks 

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

Information

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

 

Page 44: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

 

Περισσότερα για τις ενέργειες

Μερικές πρόσθετες ενέργειες κίνησης είναι διαθέσιμες στον προχωρημένο τρόπο. Οι ενέργειες είναι η εξής :

Set a path for the instance

Με αυτήν την ενέργεια μπορείτε να διευκρινίσετε ότι η περίπτωση πρέπει να ακολουθήσει μια ιδιαίτερη πορεία. Καθορίζετε την πορεία που πρέπει να ακολουθηθεί και την ταχύτητα σε pixel ανά βήμα. Όταν η ταχύτητα είναι θετική η περίπτωση αρχίζει στην αρχή της πορείας. Εάν είναι αρνητική αρχίζει από το τέλος. Έπειτα διευκρινίζετε τη συμπεριφορά του τέλους, δηλαδή τι πρέπει να συμβεί όταν το τέλος της πορείας επιτυγχάνεται. Μπορείτε να επιλέξετε να σταματήσει την κίνηση, καινούριο ξεκίνημα από την αρχή, καινούριο ξεκίνημα από την τρέχουσα θέση (που είναι η ίδια όταν κλείσει η πορεία), ή να αντιστρέψει την κίνηση. Τέλος μπορείτε να δείξετε ότι η πορεία πρέπει να είναι απόλυτη, δηλαδή η θέση θα είναι όπως υποδεικνύεται στην πορεία (αυτό είναι χρήσιμο όταν σχεδιάσετε την πορεία σε μια ιδιαίτερη θέση στο δωμάτιο) ή σχετική, οπότε σ' αυτή την περίπτωση το σημείο έναρξης της πορείας τοποθετείται στην τρέχουσα θέση της περίπτωσης (τελικό σημείο όταν η ταχύτητα είναι αρνητική). Δείτε το κεφάλαιο σχετικά με τις πορείες για περισσότερες πληροφορίες.

End the path for the instance

Χρησιμοποιήστε αυτήν την ενέργεια για να σταματήσει η πορεία για την περίπτωση.

Set the position on the path

Με αυτήν την ενέργεια μπορείτε να αλλάξετε την τρέχουσα θέση της περίπτωσης στην πορεία. Αυτό πρέπει να είναι μια αξία μεταξύ 0 και 1 (0=beginning, 1=end).

Set the speed for the path

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

Perform a step towards a point

Αυτή η ενέργεια πρέπει να τοποθετηθεί στο γεγονός βημάτων(step event) για να αφήσει την περίπτωση να πάρει ένα βήμα προς μια ιδιαίτερη θέση. Όταν η περίπτωση είναι ήδη στη θέση δεν θα κινηθεί περαιτέρω. Διευκρινίζετε τη θέση που θα κινηθεί, την ταχύτητα με την οποία θα κινηθεί, δηλαδή το μέγεθος του βήματος, και εάν η κίνηση πρέπει να σταματήσει κατά την επαφή  με μια στερεά περίπτωση ή κατά την επαφή οποιασδήποτε περίπτωσης.

Step towards a point avoiding objects

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

Πρόσθετες κύριες ενέργειες

Page 45: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Μερικές πρόσθετες κύριες ενέργειες είναι διαθέσιμες στον προχωρημένο τρόπο. Οι  ενέργειες είναι η εξής:

Set a time line

(διαθέσιμή μόνο στον προχωρημένο τρόπο).Με αυτήν την ενέργεια θέτετε την ιδιαίτερη χρονική στιγμή για μια περίπτωση ενός αντικειμένου. Δείχνετε τη χρονική στιγμή και την αρχική θέση μέσα στη χρονική στιγμή (0 είναι η αρχή). Μπορείτε επίσης να χρησιμοποιήσετε αυτήν την ενέργεια για να τελειώσετε μια χρονική στιγμή με την επιλογή No Time Line ως αξία.

Set the time line position

(διαθέσιμη μόνο  στον προχωρημένο τρόπο).Με αυτήν την ενέργεια μπορείτε να αλλάξετε τη θέση στην τρέχουσα χρονική στιγμή (είτε απόλυτα είτε σχετικά). Αυτό μπορεί να χρησιμοποιηθεί για να αγνοήσει ορισμένα μέρη της χρονικής γραμμής ή για να επαναλάβει ορισμένα μέρη. Παραδείγματος χάριν, εάν θέλετε να κάνετε μια επαναλαμβανόμενη χρονική στιγμή, στην τελευταία στιγμή, να προσθέσετε αυτήν την ενέργεια για να θέσετε τη θέση πίσω σε 0, Μπορείτε επίσης να την χρησιμοποιήσετε για να περιμένετε κάτι να συμβεί. προσθέστε ένα ερώτημα και, εάν είναι false, θέστε τη θέση χρονικών γραμμών σε relative -1.

Show a video

Με αυτήν την ενέργεια μπορείτε να παρουσιάσετε αρχείο video. Διευκρινίζετε το όνομα του αρχείου και εάν πρέπει να παρουσιαστεί σε πλήρη οθόνη ή σε ένα παράθυρο. Σιγουρευτείτε ότι το αρχείο υπάρχει. Πρέπει είτε να το διανείμετε με το παιχνίδι είτε να το βάλετε σε ένα data file και να το εξάγετε.

Replace a sprite from a file

Αυτή η ενέργεια μπορεί να χρησιμοποιηθεί για να αντικαταστήσει ένα sprite από το περιεχόμενο ενός αρχείου. Δείχνετε το sprite που θέλετε να αντικαταστήσετε, το όνομα του αρχείου  (.bmp, .jpg, ή .gif) και τον αριθμό subimages του sprite όταν το φορτώνετε από bmp ή jpg αρχείο. Για ένα αρχείο GIF ο αριθμός subimages αποφασίζεται αυτόματα βασισμένος στον αριθμό subimages του αρχείου GIF. Άλλες αλλαγές για το sprite, π.χ. εάν είναι διαφανές ή όχι, δεν αλλάζουν. Μπορείτε να χρησιμοποιήσετε αυτήν την ενέργεια για να αποφύγετε την συσσώρευση sprites στο ίδιο  πρόγραμμα. Παραδείγματος χάριν, στην αρχή ενός επιπέδου μπορείτε να αντικαταστήσετε sprites από τον πραγματικό χαρακτήρα με sprites που εσείς θέλετε να χρησιμοποιήσετε. Μην αλλάξετε το sprite που εκείνη την στιγμή χρησιμοποιείται απο μια περίπτωση στο δωμάτιο. Αυτό θα δώσει  ανεπιθύμητα αποτελέσματα με τις συγκρούσεις. Αυτή η ενέργεια είναι διαθέσιμη μόνο στην δηλωμένη έκδοση.  

Replace a sound from a file

Με αυτήν την ενέργεια μπορείτε να αντικαταστήσετε έναν ήχο από το περιεχόμενο ενός αρχείου (.wav, .mid, ή .mp3). Διευκρινίζετε τον ήχο και το όνομα του αρχείου.Με αυτό αποφεύγετε να αποθηκεύσετε όλους τους ήχους στο ίδιο παιχνίδι. Παραδείγματος χάριν, μπορείτε να χρησιμοποιήσετε  διαφορετικά κομμάτια  μουσικής background και να επιλέξετε αυτήν που θέλετε να παίξετε. Μην αλλάξετε τον ήχο ενώ παίζει. Αυτή η ενέργεια είναι διαθέσιμη μόνο στην δηλωμένη έκδοση.  

Replace a background from a file

Με αυτήν την ενέργεια μπορείτε να αντικαταστήσετε ένα background από το περιεχόμενο ενός αρχείου  (.bmp,ή .jpg). Διευκρινίζετε το background και το όνομα του αρχείου. Με αυτό αποφεύγετε να αποθηκεύσετε όλα τα background στο ίδιο παιχνίδι. Μην αλλάξετε ένα background που είναι ορατό. Αυτή η ενέργεια είναι διαθέσιμη μόνο στην δηλωμένη έκδοση.  

Πρόσθετες ενέργειες ελέγχου

Μερικές πρόσθετες ενέργειες ελέγχου είναι διαθέσιμες στον προχωρημένο τρόπο. Είναι οι ακόλουθες :

Page 46: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Execute a script

Με αυτήν την ενέργεια μπορείτε να εκτελέσετε ένα χειρόγραφο που προσθέσατε στο παιχνίδι. Διευκρινίζετε το χειρόγραφο και 5 επιχειρήματα για το χειρόγραφο.

Call the inherited event

Αυτή η ενέργεια είναι χρήσιμη μόνο όταν έχει το αντικείμενο ένα αντικείμενο γονιών. Καλεί το αντίστοιχο γεγονός στο αντικείμενο γονιών.

Περισσότερες ενέργειες σχεδιασμού

Η Ακόλουθη  ενέργεια είναι διαθέσιμη στον προχωρημένο τρόπο:

Set a font for drawing text

Μπορείτε να θέσετε την γραμματοσειρά που θα χρησιμοποιηθεί  για το κείμενο. Αυτή πρέπει να είναι μια από τους πόρους που πρέπει να έχετε καθορίσει. Εάν δεν επιλέξετε κανένα πόρο η προεπιλογή 12 Arial  χρησιμοποιείται.

ΜόριαΈνα σύνολο από ενέργειες είναι τα Particle systems είναι διαθέσιμες στην καρτέλα extra. Αυτές οι ενέργειες είναι διαθέσιμες μόνο στην δηλωμένη έκδοση.

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

Το Game Maker  περιέχει ένα Particle system που μπορεί να επιτευχθεί μέσω των λειτουργιών. Ένα Particle system μπορεί να δημιουργηθεί μέσω των ενεργειών που περιγράφονται πιο κάτω.

Ένα Particle system αποτελείται από διαφορετικούς τύπους. Αφού δημιουργήσουμε το Particle systems το πρώτο πράγμα που κάνουμε είναι να διευκρινίσουμε το τύπο. Χρησιμοποιώντας τις ενέργειες πιο κάτω μπορούν να δημιουργηθούν μέχρι 16 διαφορετικοί τύποι . Κάθε τύπος έχει μια μορφή, ένα μέγεθος, ένα χρώμα έναρξης και ένα χρώμα τέλους. Το χρώμα αλλάζει αργά από το χρώμα έναρξης στο χρώμα τέλους. Τα Particle systems έχουν έναν περιορισμένο χρόνο ζωής. Στον τύπο διευκρινίζετε τον ελάχιστο και μέγιστο χρόνο ζωής. Τα Particle systems έχουν επίσης μια ταχύτητα και μια κατεύθυνση. Τέλος,  βαρύτητα και τριβή.

Αφότου διευκρινίσετε τους τύπους Particle systems πρέπει να δημιουργήσετε τις θέσεις στο δωμάτιο. Μπορείτε είτε να τα κάνετε να εκραγούν διάφορα Particle systems ενός ιδιαίτερου τύπου από μια θέση, είτε μπορείτε να δημιουργήσετε ένα σταθερό ρεύμα από όπου θα εμφανίζονται τα Particle systems. Τα Particle systems εμφανίζονται στους εκπομπούς. Ενα Particle system μπορεί να έχει μέχρι 8 εκπομπούς που λειτουργούν συγχρόνως. Έτσι αφότου δημιουργείσετε τους τύπους Particle systems πρέπει να δημιουργήσετε τους εκπομπούς και να πείτε σ'αυτούς ή να εκραγούν ή να δημιουργήσουν μια ροή από Particle system.

Page 47: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Εδώ είναι το πλήρες σύνολο ενεργειών. Καλύτερα πειραματιστείτε με αυτές για να πάρετε ένα καλό αποτέλεσμα.

Create the particle system

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

Destroy the particle system

Αυτή η ενέργεια καταστρέφει το Particle system. Μην ξεχάσετε να το καλείτε αυτό (π.χ. όταν κινείστε προς ένα διαφορετικό δωμάτιο) επειδή τα  Particle systems χρησιμοποιούν πολλή μνήμη.

Clear all particles in the system

Αυτή η ενέργεια αφαιρεί όλα τα Particle systems που είναι ορατά. Δεν σταματά τους εκπομπούς και έτσι νέα Particle systems μπορούν να δημιουργηθούν πάλι εάν έχετε εκπομπούς ροής (δείτε πιο κάτω).

Create a type of particle

Με αυτήν την ενέργεια δημιουργείτε έναν τύπο Particle system. Μπορείτε να επιλέξετε ένα από τους 16 διαθέσιμους τύπους . Μπορείτε να διευκρινίσετε το σχήμα, το ελάχιστο και μέγιστο μέγεθός του (όταν εμφανίζεται το Particle system μια τυχαία αξία μεταξύ αυτών των ορίων χρησιμοποιείται), το χρώμα με το οποίο το Particle system αρχίζει και το χρώμα το οποίο αλλάζει κατά την διάρκεια ζωής του. Σημειώστε ότι μόνο ένας τύπος δημιουργείται, όχι ένα πραγματικό Particle system. Για αυτό χρειάζεστε τους εκπομπούς (δείτε πιο κάτω).

  Set the color for a particle type

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

Set the life time for a particle type

Ένα Particle system ζει για έναν περιορισμένο αριθμό βημάτων. Μετά από αυτό εξαφανίζεται. Με αυτήν την ενέργεια θέτετε το χρόνο ζωής για έναν τύπο Particle system. Δίνετε δύο περιοριστικές τιμές και ο πραγματικός χρόνος ζωής επιλέγεται τυχαία μεταξύ τους.

Set the motion for a particle type

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

Set the gravity of a particle type

Page 48: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Με αυτήν την ενέργεια θέτετε το ποσό βαρύτητας και την κατεύθυνση της βαρύτητας για έναν ιδιαίτερο τύπο Particle systems. 270 είναι προς τα κάτω.

Create secondary particles

Αυτό είναι λίγο πιο περίπλοκο. Τα Particle systems μπορούν να δημιουργήσουν άλλα Particle systems κατά τη διάρκεια του χρόνου ζωής τους και όταν πεθαίνουν. Με αυτήν την ενέργεια μπορείτε να το διευκρινίσετε αυτό. Μπορείτε να καθορίσετε τον τύπο και τον αριθμό Particle systems που πρέπει να δημιουργηθούν σε κάθε βήμα κατά τη διάρκεια του χρόνου ζωής και μπορείτε να διευκρινίσετε τον τύπο και τον αριθμό Particle systems που πρέπει να δημιουργηθούν όταν πεθαίνει το Particle system. Να είστε πολύ προσεκτικός εδώ. Μπορείτε εύκολα να δημιουργήσετε  τεράστιους αριθμούς από Particle system κατ' αυτό τον τρόπο, που να επιβραδύνουν το σύστημα αρκετά. Για τους αριθμούς μπορείτε επίσης να χρησιμοποιήσετε μια αρνητική αξία. Μια αρνητική αξία Χ σημαίνει ότι σε κάθε βήμα ένα Particle system δημιουργείται με την πιθανότητα -1/x. Έτσι παραδείγματος χάριν, εάν θέλετε να παραγάγετε ένα δεύτερο Particle system για κάθε 4 βήματα, χρησιμοποιήστε μια αξία -4, Τα δεύτερα Particle systems είναι χρήσιμα για τη δημιουργία ωραίων αποτελεσμάτων όπως ουρές στα Particle system ή ανατίναξη των Particle systems.

Create a particle emitter

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

Destroy an emitter

Αυτή η ενέργεια καταστρέφει τον υποδειγμένο εκπομπό. Σημειώστε ότι τα υπάρχοντα Particle systems που προήλθαν από αυτόν τον εκπομπό δεν αφαιρούνται.

Burst a number of particles from an emitter Ακόμα κι αν καθορίσατε έναν τύπο απο particle system και έναν εκπομπό, δεν υπάρχει ακόμα κανένα particle system. Πρέπει ακόμα να πείτε στον εκπομπό  να παράγει τα particle system. Με αυτήν την ενέργεια λέτε σε έναν ιδιαίτερο εκπομπό  να παράγει έναν δεδομένο αριθμό particle system ενός δεδομένου τύπου. Όλα αυτά τα particle system παράγονται αμέσως. Για τον αριθμό μπορείτε επίσης να χρησιμοποιήσετε μια αρνητική αξία. Μια αρνητική αξία Χ σημαίνει ότι ένα particle system δημιουργείται με την πιθανότητα -1/x. Έτσι παραδείγματος χάριν, εάν θέλετε να παραγάγετε ένα particle systemμε μια πιθανότητα 25 τοις εκατό, χρησιμοποιήστε μια αξία -4.

Stream particles from an emitter

Με αυτήν την ενέργεια λέτε σε έναν ιδιαίτερο εκπομπό να δώσει ροή έναν δεδομένο αριθμό particle system ενός δεδομένου τύπου. Σε κάθε βήμα αυτός ο αριθμός particle system παράγεται, οδηγώντας σε ένα συνεχές ρεύμα των particle system. Ο εκπομπός θα συνεχίσει τα particle system έως ότου τον καταστρέψετε ή θέσετε την ροή σε 0. Για τον αριθμό μπορείτε επίσης να χρησιμοποιήσετε μια αρνητική αξία. Μια αρνητική αξία Χ σημαίνει ότι σε κάθε βήμα ένα particle system δημιουργείται με την πιθανότητα -1/x. Έτσι παραδείγματος χάριν, εάν θέλετε να παραγάγετε ένα particle system για κάθε 4 βήματα, χρησιμοποιήστε μια αξία -4.

Επιπλέον ενέργειες

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

Play a CD

Page 49: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Με αυτήν την ενέργεια μπορείτε να παίξετε το CD απο το Cd-drive προεπιλογής. Διευκρινίζετε το αρχικό κομμάτι και το τελικό κομμάτι.

Stop the CD

Σταματά το τρέχωνCD του παιχνιδιού.

Pause the CD

Παύση στο τρέχωνCD του παιχνιδιού

Resume the CD

Επαναλαμβάνει το σταματημένο CD.

If a CD exists in the drive

Εάν υπάρχει το CD στο drive η επόμενη ενέργεια εκτελείται.

If the CD is playing

Εάν το CD παίζει στο drive η επόμενη ενέργεια εκτελείται.

 

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

Set the mouse cursor

Μπορείτε να χρησιμοποιήσετε αυτήν την ενέργεια για να αντικαταστήσετε τον δείκτη του ποντικιού με ένα sprite. Διευκρινίζετε το sprite και εάν ο δείκτης πρέπει ακόμα να φαίνεται. Το Sprite μπορεί να είναι και animation. Σημειώστε ότι το sprite θα παρουσιαστεί μόνο στο δωμάτιο, όχι στην περιοχή έξω από αυτό.

Open a webpage in a browser

 Μπορείτε να δείξετε μια διεύθυνση στο web με αυτήν την ενέργεια. Η webpage ανοίγει στον explorer. (Η ενέργεια μπορεί επίσης να χρησιμοποιηθεί για να ανοίξει και άλλα έγγραφα). Η ενέργεια δεν λειτουργεί στο secure mode.

Περισσότερα για τα δωμάτια  

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

Page 50: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Θα δείτε, μερικά νέα κουμπιά που έχουν προστεθεί στη μπάρα εργαλείων. Υπάρχουν κουμπιά για να ταξινομήσουν τις περιπτώσεις οριζόντια ή κάθετα. Αυτό είναι χρήσιμο όταν μια περίπτωση είναι πάνω στη άλλη.(Κατά την προσθήκη των tiles αυτά τα κουμπιά λειτουργούν στα tiles και όχι στις περιπτώσεις). Επίσης υπάρχουν κουμπιά για να κλειδώσουν όλες τις περιπτώσεις ή να τις ξεκλειδώσουν. Οι κλειδωμένες περιπτώσεις δεν μπορούν να κινηθούν ή να διαγραφούν. Αυτό σας σώζει από τυχαία αφαίρεση των περιπτώσεων. Χρησιμοποιώντας το δεξί κουμπί του ποντικιού (ή κρατήστε το< CTRL > και δεξί κλίκ σε μια περίπτωση) μπορείτε επίσης να κλειδώσετε ή να ξεκλειδώσετε μεμονωμένες περιπτώσεις.

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

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

Προχωρημένες ρυθμίσεις

Υπάρχουν δύο επιλογές στη καρτέλα settings που δεν έχουμε συζητήσει ακόμα. Καταρχήν, υπάρχει ένα checkbox Persistent. Κανονικά, όταν αφήνετε ένα δωμάτιο και επιστρέφετε στο ίδιο δωμάτιο αργότερα, το δωμάτιο ξανά οργανώνεται στις αρχικές ρυθμίσεις του. Αυτό είναι που θέλετε εάν έχετε διάφορα επίπεδα στο παιχνίδι σας αλλά δεν είναι αυτό που θέλετε παραδείγματος χάριν σε ένα RPG. Εδώ το δωμάτιο πρέπει να είναι όπως το αφήσατε τη τελευταία φορά. Η επιλογή Presistent  κάνει ακριβώς αυτό. Η θέση των δωματίων θα είναι ακριβώς η ίδια όπως την αφήσατε. Μόνο όταν ξαναξεκινάτε το παιχνίδι το δωμάτιο θα ξανά ρυθμιστεί. Υπάρχει μια εξαίρεση σε αυτό. Εάν χαρακτηρίσατε ορισμένα αντικείμενα ως επίμονα(persistent), οι περιπτώσεις αυτού του αντικειμένου δεν θα μείνουν στο δωμάτιο αλλά κινούνται προς το επόμενο δωμάτιο.

Υπάρχει ένα κουμπί  Creation code. Εδώ μπορείτε να πληκτρολογήσετε ένα κομμάτι του κώδικα σε GML (δείτε αργότερα) που εκτελείται όταν δημιουργείται το δωμάτιο. Αυτό είναι χρήσιμο για να συμπληρώσει ορισμένες μεταβλητές για το δωμάτιο, να δημιουργήσει ορισμένες περιπτώσεις, κ.λπ.... Είναι σημαντικό να γίνει κατανοητό τι συμβαίνει ακριβώς όταν κινείστε προς ένα ιδιαίτερο δωμάτιο στο παιχνίδι.

Πρώτα, στο τρέχον δωμάτιο όλες οι περιπτώσεις παίρνουν ένα γεγονός, τέλος δωματίου(room end event). Έπειτα οι non-persistent περιπτώσεις αφαιρούνται (δεν  παράγεται το destroy event).

Έπειτα, για το νέο δωμάτιο και οι persistent (επίμονες) περιπτώσεις από το προηγούμενο δωμάτιο προστίθονται.

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

Page 51: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Όταν αυτό είναι το πρώτο δωμάτιο, για όλες τις περιπτώσεις το γεγονός έναρξης του παιχνιδιού παράγεται(game-start event).

τώρα ο κώδικας του δωματίου εκτελείται. Τέλος, όλες οι περιπτώσεις παίρνουν ένα γεγονός έναρξης του παιχνιδιού(game-start event). Έτσι, παραδείγματος χάριν, τα (game-start event). μπορούν να χρησιμοποιήσουν τις μεταβλητές που θέτονται από τον κώδικα δημιουργιών, creation code, για το δωμάτιο και στον κώδικα δημιουργιών μπορείτε να αναφερθείτε στις περιπτώσεις (και νέες και persistent) του δωματίου.

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

 Προσθέτοντας κεραμίδια

Μπορείτε επίσης να δημιουργήσετε το αποκαλούμενο tiled background. Ο λόγος για αυτό είναι ο ακόλουθος: Σε πολλά παιχνίδια θα θελήσετε να έχετε όμορφα γραφικά. Παραδείγματος χάριν, σε ένα παιχνίδι λαβυρίνθου, οι τοίχοι του λαβύρινθου πρέπει να είναι ωραίοι, στα platform παιχνίδια  επιθυμείτε να δείτε υπέροχα σχεδιασμένες πλατφόρμες, δέντρα, κ.λπ. Μπορείτε να το κάνετε αυτό  με τον καθορισμό πολλών διαφορετικών αντικειμένων και τη σύνθεση των δωματίων σας από αυτά τα αντικείμενα. Το πρόβλημα εν τούτοις είναι ότι αυτό απαιτεί πολλή δουλειά, χρησιμοποιεί μεγάλα ποσά μνήμης, και κάνει τα παιχνίδια να τρέχουν αργά λόγω των πολλών διαφορετικών αντικειμένων. Παραδείγματος χάριν, για να δημιουργήσετε συμπαθητικούς τοίχους σε ένα παιχνίδι λαβυρίνθου πρέπει να τοποθετήσετε 15 διαφορετικά αντικείμενα.

Ο κανόνας, που χρησιμοποιείται σε πολλά παιχνίδια, είναι ότι οι τοίχοι και άλλα στατικά αντικείμενα σχεδιάζονται στο background. Μπορεί να ρωτήσετε, πώς το παιχνίδι ξέρει ότι ένα αντικείμενο χτυπά σε ένα τοίχο ενώ είναι background; Το τέχνασμα είναι το ακόλουθο: Δημιουργείτε μόνο ένα τοίχο  αντικείμενο στο παιχνίδι σας. Πρέπει να έχει το σωστό μέγεθος αλλά να μην είναι ωραία σχεδιασμένο. Κατά τη δημιουργία του δωματίου, τοποθετήστε αυτό το αντικείμενο σε όλες τις θέσεις όπου υπάρχει ένας τοίχος. Και, έρχεται εδώ το τέχνασμα, καθιστάμε αυτό το αντικείμενο αόρατο. Έτσι κατά την διάρκεια του παιχνιδιού  δεν βλέπετε τα αντικείμενα του τοίχου. Βλέπετε το όμορφο background αντί για αυτό. Αλλά τα στερεά αντικείμενα του τοίχου είναι ακόμα εκεί και το αντικείμενο στο παιχνίδι θα αντιδράσει σε αυτά.

Μπορείτε να χρησιμοποιήσετε αυτήν την τεχνική για οποιοδήποτε αντικείμενο που δεν αλλάζει τη μορφή ή τη θέση του. (Δεν μπορείτε να το χρησιμοποιήσετε όταν έχει animation το αντικείμενο). Για παιχνίδια platform, χρειάζεστε πιθανόν μόνο ένα πάτωμα και ένα αντικείμενο για τοίχο, αλλά μπορείτε να κάνετε υπέροχα background όπου θα μοιάζει σαν να περπατάτε στο γρασίδι, σε κλαδιά δέντρων, κ.λπ. 

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

Τώρα, στη φόρμα του δωματίου, επιλέξτε την καρτέλα tiles. Η ακόλουθη φόρμα παρουσιάζεται (προσθέσαμε ήδη μερικά  tiles σε αυτό το δωμάτιο).

Page 52: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Στα αριστερά υπάρχει το τρέχον σύνολο των tiles που χρησιμοποιούμε. Για να επιλέξετε το σύνολο, κλικ στο κουμπί επιλογών κάτω από αυτό και επιλέξτε την κατάλληλη εικόνα background.

Τώρα μπορείτε να προσθέσετε τα tiles με την επιλογή ενός tile που θέλετε, και έπειτα κλίκ στην κατάλληλη θέση στο δωμάτιο δεξιά. Είναι ακριβώς ο ίδιος τρόπος όπως για την προσθήκη των περιπτώσεων. Εάν κάνετε κλίκ πάνω σε ένα tile διαγράφετε εκτός αν δεν επιλέξετε το checkbox Delete underlying. Μπορείτε να χρησιμοποιήσετε το δεξί κουμπί για να διαγράψετε τα tiles. Κρατήστε το < shift > για να προστεθούν πολλά  tiles,κρατήστε το < CTRL > για να κινήσετε τα  tiles προς μια νέα θέση. Με το < ALT > δεν ευθυγραμμίζονται στο πλέγμα. Επίσης υπάρχει πάλι επιλογή όταν κρατάτε το < CTRL > και κάνετε κλίκ σε ένα  tile με το δεξί κουμπί του ποντικιού. Τα κουμπιά στη μπάρα εργαλείων  μπορούν να καθαρίσουν όλα τα  tiles,  να μετατοπίζουν, να ταξινομήσουν ή να κλειδώνουν/ξεκλειδώνουν όλα τα tiles. (Λειτουργούν μόνο στο τρέχον στρώμα δείτε πιο κάτω).

Μερικές φορές  θέλετε να βάλετε ένα μέρος του background στο δωμάτιο που δεν είναι ακριβώς το μέγεθος ενός tile. Αυτό μπορεί να γίνει ως εξής. Στην εικόνα του background πατήστε το αριστερό κουμπί του ποντικιού και κρατώντας το <Alt> τραβήξτε το ποντίκι στο μέγεθος που θέλετε..

Τα  tiles μπορούν να τοποθετηθούν σε στρώματα σε διαφορετικά βάθη.Η προεπιλογή είναι 1000000 που είναι κανονικά πίσω από όλες τις περιπτώσεις. Έτσι οι περιπτώσεις θα κινηθούν μπροστά από τα  tiles. Μπορείτε να χρησιμοποιήσετε το κουμπί Add για να προσθέσετε νέα στρώματα  απο tiles, κάθε ένα με ένα διαφορετικό βάθος. Τα αρνητικά στρώματα μπορούν να χρησιμοποιηθούν για να βάλουν τα  tiles μπροστά από τις περιπτώσεις. Εάν δίνετε επίσης στα αντικείμενα διαφορετικό βάθος μπορείτε να τα βάλετε μεταξύ διαφορετικών στρωμάτων tiles. Εάν πιέσετε το delete διαγράφετε ένα στρώμα από tile μαζί με όλα τα  tiles. (Πρέπει  να υπάρξει τουλάχιστον ένα στρώμα). Εάν πιέσετε τo change μπορείτε να αλλάξετε το βάθος ενός στρώματος. Εάν του δίνετε το ίδιο βάθος με ένα άλλο στρώμα, τα στρώματα συγχωνεύονται.

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

Απόψεις

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

Page 53: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

είναι στα παιχνίδια τα οποία μέρος του δωματίου πρέπει να κινηθεί (π.χ. μαζί με τον κύριο χαρακτήρα). Αυτά όλα μπορούν να επιτευχθούν εύκολα.

Όταν επιλέξετε την καρτέλα views οι ακόλουθες πληροφορίες θα παρουσιάσουν:

Στην κορυφή υπάρχει ένα checkbox Enable the use of Views. Πρέπει να το επιλέξετε για να χρησιμοποιήσετε τα οπτικά πεδία. Απο κάτω  βλέπετε τον κατάλογο οκτώ απόψεων που μπορείτε να καθορίσετε. Κάτω από τον κατάλογο μπορείτε να δώσετε πληροφορίες για τις απόψεις. Καταρχήν πρέπει να δείξετε εάν η άποψη πρέπει να είναι ορατή όταν αρχίζει το δωμάτιο. Σιγουρευτείτε ότι τουλάχιστον μια άποψη είναι ορατή. Οι ορατές απόψεις παρουσιάζονται με έντονη γραμματοσειρά.

Μια άποψη(view)καθορίζεται από μια ορθογώνια περιοχή στο δωμάτιο. Αυτή είναι η περιοχή που θα παρουσιάσει το οπτικό πεδίο. Διευκρινίζετε τη θέση της πάνω-αριστερής γωνίας και το πλάτος και το ύψος αυτής της περιοχής. Αφετέρου, πρέπει να διευκρινίσετε που αυτή η περιοχή θα παρουσιάζεται σε παράθυρο στην οθόνη. Αυτό λέγετε view port. Πάλι διευκρινίζετε τη θέση της πάνω-αριστερής γωνίας και του μεγέθους. Εάν θέλετε μια απλή άποψη η θέση είναι χαρακτηριστικά (0.0). Σημειώστε ότι το μέγεθος της πύλης μπορεί να είναι διαφορετικό από το μέγεθος της άποψης. Σε αυτήν την περίπτωση η άποψη θα ταιριάξει στη πύλη. (Στον κώδικα είναι επίσης δυνατό να περιστραφεί μια άποψη). Οι πύλες μπορούν να επικαλυφθούν. Σε αυτήν την περίπτωση σχεδιάζονται κατά σειρά δημιουργίας τη μια πάνω από την άλλη.

Όπως αναφέραμε, θέλετε συχνά η άποψη να ακολουθήσει ένα ορισμένο αντικείμενο. Αυτό το αντικείμενο μπορείτε να το επιλέξετε στο object following. Εάν υπάρχουν πολλές περιπτώσεις αυτού του αντικειμένου, μόνο η πρώτη θα ακολουθείται από την άποψη. (Στον κώδικα μπορείτε επίσης να δείξετε ότι μια ιδιαίτερη περίπτωση πρέπει να ακολουθηθεί). Κανονικά ο χαρακτήρας πρέπει να περπατά μέσα στο πεδίο χωρίς να κινηθεί η άποψη. Μόνο όταν ο χαρακτήρας πηγαίνει κοντά στο όριο της άποψης, θα έπρεπε η άποψη να κινείτε. Μπορείτε να διευκρινίσετε το μέγεθος των συνόρων που πρέπει να παραμείνουν ορατά γύρω από το αντικείμενο. Τέλος, μπορείτε να περιορίσετε την ταχύτητα με την οποία η άποψη κινείτε. Αυτό θα σημάνει ότι ο χαρακτήρας μπορεί να περπατήσει έξω από την οθόνη, αλλά δίνει ένα ομαλότερο gameplay. Θέστε την σε -1 εάν θέλετε η άποψη να κινείτε αμέσως.

Γραμματοσειρές

Όταν θέλετε να σχεδιάσετε το κείμενο στο παιχνίδι σας αυτό το κείμενο σχεδιάζετε σε μια γραμματοσειρά Arial 12. Για να βάλετε περισσότερη φαντασία στα κείμενα θέλετε πιθανώς να χρησιμοποιήσετε διαφορετικές γραμματοσειρές. Για να χρησιμοποιήσετε  διαφορετικές γραμματοσειρές πρέπει να δημιουργήσετε πόρους γραμματοσειρών. Σε κάθε πόρο γραμματοσειρών διευκρινίζετε έναν ιδιαίτερο τύπο γραμματοσειράς που μπορεί έπειτα να χρησιμοποιηθεί στο παιχνίδι σας χρησιμοποιώντας τη ενέργεια για να τεθεί μια γραμματοσειρά(set the font).

Page 54: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Για να προσθέσετε ένα πόρο γραμματοσειράς στο παιχνίδι σας, χρησιμοποιήστε το στοιχείο  Add Font στις επιλογές Add ή χρησιμοποιείστε το αντίστοιχο κουμπί στη μπάρα εργαλείων. Η ακόλουθη φόρμα θα εμφανιστεί.

Όπως πάντα πρέπει να δώσετε στον πόρο σας ένα όνομα. Έπειτα μπορείτε να επιλέξετε το όνομα της γραμματοσειράς. Επίσης μπορείτε να δείξετε το μέγεθός της και εάν πρέπει να είναι bold ή/και italic. Συνειδητοποιήστε ότι οι μεγάλες γραμματοσειρές παίρνουν πολλή μνήμη. Έτσι προτείνεται να μην χρησιμοποιήσετε γραμματοσειρές με ένα μέγεθος μεγαλύτερο από 32. (Είναι δυνατό να αλλάξουν οι γραμματοσειρές κατά την διάρκεια του παιχνιδιού). Ένα παράδειγμα για το πως θα φαίνεται η γραμματοσειρά παρουσιάζεται στο κάτω σημείο.

Μια γραμματοσειρά αποτελείται χαρακτηριστικά από 256 χαρακτήρες, που αριθμούνται από το 0 έως 255. Αλλά γενικά θα χρησιμοποιείτε πιο λίγες. Έτσι η προεπιλογή σε μια γραμματοσειρά είναι  από 32 μέχρι 127 χαρακτήρες. περισσότεροι χαρακτήρες  στην γραμματοσειρά περισσότερη μνήμη θα χρησιμοποιηθεί. 

Έχετε έναν μεγάλο αριθμό διαφορετικών γραμματοσειρών στον υπολογιστή σας και υπάρχουν ιστοσελίδες όπου μπορείτε να φορτώσετε εκατοντάδες περισσότερες. Το πρόβλημα είναι ότι εάν τις χρησιμοποιείτε στο παιχνίδι σας και δίνετε έπειτα το παιχνίδι σας σε κάποιον άλλο υπάρχει μια μεγάλη πιθανότητα ότι το άλλο πρόσωπο δεν έχει εγκαταστήσει τις ίδιες γραμματοσειρές στον υπολογιστή του/της. Για να το αποφύγει αυτό, το Game Maker  ενσωματώνει όλες τις γραμματοσειρές που θέλετε να χρησιμοποιήσετε στο αρχείο του παιχνιδιού, αλλά μόνο στα αυτόνομα παιχνίδια. Έτσι εάν δίνετε ένα αυτόνομο παιχνίδι σε κάποιο άλλο δεν χρειάζεται να του δώσετε τα αρχεία με της γραμματοσειρές. Αλλά εάν δίνετε σε κάποιο τη editable έκδοση του παιχνιδιού σας και χρησιμοποιείτε καινούριες γραμματοσειρές, καλύτερα να δώσετε στο πρόσωπο αυτό τα σωστά αρχεία με τις γραμματοσειρές σας

Πορείες

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

Προσδιορίζοντας τις πορείες

Για να προσθέσετε μια πορεία στο παιχνίδι σας, επιλέξτε Add Path από τις επιλογές Add. Η ακόλουθη φόρμα θα εμφανιστεί(στο παράδειγμα προσθέσαμε ήδη μια μικρή πορεία).  

Page 55: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

Για να προσθέσετε ένα σημείο πιέστε Αdd.Ένα αντίγραφο δημιουργήθηκε από το επιλεγμένο σημείο. Τώρα μπορείτε να αλλάξετε την θέση και την ταχύτητα με την αλλαγή των τιμών στο παράθυρο. Επιλέγοντας ένα σημείο στον κατάλογο, μπορείτε επίσης να αλλάξετε τις τιμές του. Πατήστε Insert για να δημιουργηθεί ένα νέο σημείο πριν από το τρέχον, και delete για να διαγράψει το τρέχον σημείο.  

Στα δεξιά της φόρμας θα δείτε την πραγματική πορεία. Το κόκκινο σημείο δείχνει το επιλεγμένο σημείο ελέγχου. Τα μπλε σημεία είναι τα άλλα σημεία ελέγχου. Το πράσινο τετράγωνο δείχνει τη θέση όπου η πορεία αρχίζει. Μπορείτε επίσης να αλλάξετε την πορεία χρησιμοποιώντας το ποντίκι. Πατήστε οπουδήποτε στην εικόνα για να προσθέσετε ένα σημείο. Πατήστε σε ένα υπάρχον σημείο και μετακινήστε το για να αλλάξετε τη θέση του. Όταν πιέζετε το <shift > ενώ πατάτε το κουμπί του mouse σε ένα σημείο, δημιουργείτε ένα σημείο πάνω στο άλλο. Τέλος, μπορείτε να χρησιμοποιήσετε το δεξί κουμπί του ποντικιού για να αφαιρέσετε σημεία. (Σημειώστε ότι δεν μπορείτε να αλλάξετε την ταχύτητα με αυτό το τρόπο). Κανονικά τα σημεία θα ευθυγραμμιστούν με το πλέγμα. Μπορείτε να αλλάξετε τις ρυθμίσεις του πλέγματος στη μπάρα εργαλείων. Εδώ μπορείτε επίσης να δείξετε εάν το πλέγμα πρέπει να είναι ορατό ή όχι. Εάν θέλετε να τοποθετήσετε ακριβώς ένα σημείο, κρατήστε το< ALT >  κινώντας το ποντίκι.

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

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

Το ακόλουθο σύνολο κουμπιών σας επιτρέπει να καθαρίσετε την πορεία, να αντιστρέψετε την πορεία, να μετακινήσετε την πορεία, να την αντιστρέψετε οριζόντια, να την αντιστρέψετε κάθετα, και να της αλλάζετε σχήμα. Έπειτα υπάρχουν κουμπιά για να μετατοπίσει την άποψη (όχι την πορεία την περιοχή της άποψης) η οποία φαίνεται στο κέντρο και να την κεντράρετε.  

Page 56: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

Assigning paths to objects

Για να αναθέσετε μια πορεία σε μια περίπτωση ενός αντικειμένου, μπορείτε να τοποθετήσετε τη ενέργεια πορείας(set the path for the instance) σε κάποιο γεγονός, παραδείγματος χάριν στο γεγονός δημιουργίας(create event). Σε αυτήν την ενέργεια πρέπει να διευκρινίσετε την πορεία από τις επιλογές. Υπάρχουν μερικές περαιτέρω τιμές που μπορείτε να παρέχετε.  

Πρέπει να δείξετε την πορεία που πρέπει να ακολουθηθεί και την ταχύτητα σε pixel ανά βήμα(pixel per step). Όταν η ταχύτητα είναι θετική η περίπτωση αρχίζει στην αρχή της πορείας. Εάν είναι αρνητική αρχίζει από το τέλος. Θυμηθείτε ότι όταν καθορίζετε την πορεία διευκρινίζετε την πραγματική ταχύτητα σχετικά με αυτήν την υποδειγμένη ταχύτητα. Υπάρχει επίσης μια ενέργεια για να αλλαχτεί η ταχύτητα με την οποία η πορεία εκτελείται. Θα μπορούσατε, παραδείγματος χάριν, να το χρησιμοποιήσετε για να χαμηλώσει ταχύτητα  η περίπτωση ή να αυξήσει την ταχύτητα κατά μήκος της πορείας της. Σημειώστε ότι η κανονική ταχύτητα της περίπτωσης αγνοείται κατά το εκτέλεση μιας πορείας. Επίσης τα πράγματα όπως η βαρύτητα και η τριβή δεν επηρεάζουν την κίνηση κατά μήκος μιας πορείας.  

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

Τέλος μπορείτε να δείξετε εάν η πορεία πρέπει να είναι απόλυτη ή σχετική. Μια απόλυτη πορεία εκτελείται από την θέση από όπου καθορίστηκε. Η περίπτωση τοποθετείται στη θέση έναρξης και κινείται από εκεί (τελειώνει η πορεία όταν η ταχύτητα είναι αρνητική). Αυτό είναι, παραδείγματος χάριν χρήσιμο όταν έχετε αυτοκίνητα στα οποία έχετε καθορίσει την πορεία. Όταν επιλέγετε τη σχετική οι περιπτώσεις αρχίζουν την πορεία από την τρέχουσα θέση τους. Αυτό είναι χρήσιμο όταν πρέπει να κάνει μια περίπτωση μια τοπική κίνηση. Παραδείγματος χάριν, τα σκάφη σε ένα διαστημικό παιχνίδι μπορούν να κάνουν μια ιδιαίτερη στροφή από την τρέχουσα θέση τους. Όταν θέλετε να τοποθετήσετε την περίπτωση σε ένα διαφορετικό σημείο κατά μήκος της πορείας της μπορείτε να χρησιμοποιήσετε τη ενέργεια για να θέσετε τη θέση. Μια θέση βρίσκεται πάντα μεταξύ 0 και 1 .Το 0 δείχνει τη θέση έναρξης και το 1 τη θέση τέλους στην πορεία. Σημειώστε ότι σε κάθε βήμα η μεταβλητή κατεύθυνσης είναι αυτόματα ρυθμισμένη στη σωστή κατεύθυνση κατά μήκος της πορείας. Μπορείτε να χρησιμοποιήσετε αυτήν την μεταβλητή για να επιλέξετε το σωστό προσανατολισμό για το sprite.

Με την χρησιμοποίηση των χειρογράφων ή του κώδικα έχετε περισσότερο έλεγχο στον τρόπου που η πορεία εκτελείται. Υπάρχει μια λειτουργία για να αρχίσει μια πορεία για μια περίπτωση. Η  μεταβλητή path_position δείχνει την τρέχουσα θέση στην πορεία (μεταξύ 0 και 1 όπως ειπώθηκε). Η μεταβλητή    path_speed δείχνει την ταχύτητα κατά μήκος της πορείας. Η μεταβλητή path_scale μπορεί να χρησιμοποιηθεί για να μεγαλώσει την πορεία. Μια αξία 1 είναι το αρχικό μέγεθος. Μια μεγαλύτερη αξία δείχνει ότι η πορεία γίνεται μεγαλύτερη μια μικρότερη αξία την καθιστά μικρότερη. Η μεταβλητή path_orientation  δείχνει τον προσανατολισμό στον οποίο η πορεία εκτελείται (σε μοίρες αντίθετα προς τη φορά των δεικτών του ρολογιού). Αυτό σας επιτρέπει να εκτελέσετε την πορεία σε έναν διαφορετικό προσανατολισμό (π.χ. κινούμενη πάνω-κάτω αντί αριστερά δεξιά). Υπάρχει επίσης μια μεταβλητή για να ελέγξει τη συμπεριφορά του τέλους μιας πορείας. Τέλος υπάρχουν λειτουργίες(functions) που ρωτούν για τις ιδιότητες της πορείας (π.χ. η συντεταγμένη Χ και Υ σε ορισμένες θέσεις) και υπάρχουν λειτουργίες για να δημιουργήσουν πορείες. Υπάρχουν ακόμη και λειτουργίες που δημιουργούν πορείες σύγκρουσης για μια περίπτωση για να επιτύχουν έναν ορισμένο στόχο.   Δείτε την γλώσσα GML για περισσότερες λεπτομέρειες. Θα αναρωτιέστε τι συμβαίνει όταν η περίπτωση συγκρούεται με μια άλλη περίπτωση ενώ ακολουθεί μια πορεία. Βασικά το ίδιο πράγμα συμβαίνει όπως όταν η περίπτωση κινείται με μια ταχύτητα. Όταν υπάρχει μια στερεά περίπτωση, η περίπτωση τοποθετείται πίσω στην προηγούμενη θέση της. Όταν και οι δύο περιπτώσεις δεν είναι

Page 57: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

The path event

Όπως είπαμε παραπάνω, μπορείτε να προσδιορίσετε τι πρέπει να συμβεί όταν η περίπτωση φθάνει στο τέλος της πορείας. Εκείνη τη στιγμή  ένα  γεγονότος εμφανίζεται(End of Path). Μπορείτε να το βρείτε στα Other events. Εδώ μπορείτε να τοποθετήσετε ενέργειες. Παραδείγματος χάριν, να θελήσετε να καταστρέψετε την περίπτωση, ή να την αφήσετε να αρχίσει μια νέα (διαφορετική) πορεία.

Χρονικές στιγμές

Σε πολλά παιχνίδια ορισμένα πράγματα πρέπει να συμβούν σε ορισμένες στιγμές εγκαίρως. Μπορείτε να προσπαθήσετε να το επιτύχετε αυτό με τη χρησιμοποίηση των γεγονότων ρολογιού(alarm event) αλλά όταν τα πράγματα γίνονται περίπλοκα αυτό δεν θα λειτουργήσει άλλο. Οι time lines είναι για αυτό. Σε μια time line διευκρινίζετε ποιες ενέργειες πρέπει να συμβούν σε ορισμένες στιγμές εγκαίρως. Μπορείτε να χρησιμοποιήσετε όλες τις ενέργειες που είναι διαθέσιμες για τα γεγονότα. Μόλις δημιουργήσετε μια time line μπορείτε να την ορίσετε σε μια περίπτωση ενός αντικειμένου. Αυτή η περίπτωση θα εκτελέσει έπειτα τις ενέργειες στις υποδειγμένες στιγμές του χρόνου. Ας το εξηγήσουμε αυτό με ένα παράδειγμα. Υποθέστε ότι θέλετε να κάνετε ένα φρουρό. Αυτός ο φρουρός πρέπει να κινηθεί 20 βήματα προς τα αριστερά, κατόπιν 10 προς τα πάνω, 20 προς τα δεξιά, 10 προς τα κάτω και έπειτα να σταματήσει. Για να το πετύχετε αυτό κάνετε μια χρονική στιγμή(time line).Αρχίζετε με τον καθορισμό της κίνησης στα αριστερά. Στη στιγμή 20 θέτετε την κίνηση πάνω, τη στιγμή 30 μια κίνηση στα δεξιά, στη στιγμή 50 μια κίνηση προς τα κάτω και στη στιγμή 60  σταματά την κίνηση. Τώρα μπορείτε να ορίσετε αυτή τη time line στο φρουρό και ο φρουρός θα κάνει ακριβώς ότι προγραμματίσατε. Μπορείτε επίσης να χρησιμοποιήσετε μια χρονική στιγμή για να ελέγξετε το παιχνίδι σας πιό σφαιρικά. Δημιουργήστε ένα αόρατο αντικείμενο ελεγκτή, δημιουργήστε μια χρονική στιγμή που σε ορισμένες στιγμές δημιουργεί τους εχθρούς, και ορίστε τη στο αντικείμενο ελεγκτή. Εάν αρχίσετε να εργάζεστε με της time line θα ανακαλύψετε ότι είναι μια πολύ ισχυρή έννοια.

Για να δημιουργήσετε μια time line, επιλέξτε Add Time Line   από τις επιλογές Add. Η ακόλουθη φόρμα θα εμφανιστεί.

Page 58: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

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

Τέλος υπάρχουν δύο ειδικά κουμπιά. Με το κουμπί  Merge μπορείτε να συγχωνεύσετε όλες τις στιγμές σε ένα χρονικό διάστημα. Με το κουμπί shift μπορείτε να μετατοπίσετε όλες τις στιγμές σε ένα χρονικό διάστημα προς τα εμπρός ή προς τα πίσω μέχρι ένα δεδομένο χρονικό διάστημα. Σιγουρευτείτε ότι δεν δημιουργείτε αρνητικές time line. Δεν θα εκτελεσθούν ποτέ.

Υπάρχουν δύο ενέργειες σχετικές με τις time line.

Set a time line

Με αυτήν την ενέργεια θέτετε την time line για μια περίπτωση ενός αντικειμένου. Δείχνετε τη time line και την αρχική θέση μέσα στη χρονική στιγμή (0 είναι η αρχή). Μπορείτε επίσης να χρησιμοποιήσετε αυτήν την ενέργεια για να τελειώσετε μια χρονική στιγμή με την επιλογή καμίας χρονικής γραμμής ως αξία.

Set the time line position

Με αυτήν την ενέργεια μπορείτε να αλλάξετε τη θέση στην τρέχουσα time line (είτε απόλυτος είτε σχετικός). Αυτό μπορεί να χρησιμοποιηθεί για να πηδήξει ορισμένα μέρη της χρονικής γραμμής ή για να επαναλάβει ορισμένα μέρη. Παραδείγματος χάριν, εάν θέλετε να κάνετε μια επαναλαμβανόμενη χρονική στιγμή, π.χ.την τελευταία στιγμή, να προσθέσετε αυτήν την ενέργεια για να θέσετε τη θέση πίσω σε 0, Μπορείτε επίσης να τη χρησιμοποιήσετε για να περιμένετε κάτι να συμβεί.

 

 

Χειρόγραφα (Scripts)

To Game Maker έχει μια ενσωματωμένη γλώσσα προγραμματισμού. Μόλις εξοικειωθείτε με το Game Maker  και θελήσετε να το χρησιμοποιήσετε σε πιο πολύπλοκα παιχνίδια, είναι προτιμότερο να αρχίσετε να χρησιμοποιείτε αυτήν την γλώσσα. Υπάρχουν δύο τρόποι να χρησιμοποιηθεί η γλώσσα. Καταρχήν μπορείτε να δημιουργήσετε χειρόγραφα. Αυτά είναι κομμάτια του κώδικα στα οποία δίνετε ένα όνομα. Παρουσιάζονται στους πόρους και μπορούν να σωθούν σε ένα αρχείο και να φορτωθούν από ένα αρχείο. Μπορούν να χρησιμοποιηθούν για να διαμορφώσουν μια βιβλιοθήκη που επεκτείνει τις δυνατότητες του GameMAker. Εναλλακτικά, μπορείτε να προσθέσετε μια ενέργεια κώδικα σε κάποιο γεγονός και να πληκτρολογήσετε ένα κομμάτι του κώδικα εκεί. Η προσθήκη του κώδικα λειτουργεί με τον ίδιο τρόπο όπως προσθέτοντας χειρόγραφα εκτός από δύο διαφορές. Οι ενέργειες κώδικα δεν έχουν ένα όνομα και δεν μπορούν να χρησιμοποιήσουν τα επιχειρήματα <arguments>. Επίσης έχουν τον τομέα που δείχνει σε ποια αντικείμενα η ενέργεια πρέπει να ισχύσει. Για τα άλλα πληκτρολογείτε τον κώδικα με τον ίδιο τρόπο όπως στα χειρόγραφα. Έτσι επικεντρωνόμαστε περαιτέρω στα χειρόγραφα σε αυτό το κεφάλαιο.

Όπως ειπώθηκε πριν, ένα χειρόγραφο γράφεται με τον κώδικα σε GML (η ενσωματωμένη γλώσσα προγραμματισμού) και προορίζεται να εκτελέσει έναν ιδιαίτερο στόχο. Τα χειρόγραφα μπορούν να παίρνουν εισαγόμενες-μεταβλητές που αποκαλούνται επιχειρήματα <arguments>  (μερικές φορές αποκαλούμενα παραμέτρους). Για να εκτελέσετε ένα χειρόγραφο από οποιοδήποτε γεγονός, μπορείτε να το χρησιμοποιήσετε είτε με την ενέργεια χειρογράφων είτε  μπορείτε να χρησιμοποιήσετε τον κώδικα. Στη χειρόγραφη-ενέργεια διευκρινίζετε το χειρόγραφο που θέλετε να εκτελέσετε, μαζί με τα μέχρι πέντε επιχειρήματα. Εάν χρησιμοποιείτε ένα χειρόγραφο από μέσα από ένα κομμάτι του κώδικα θα είναι σαν να καλείτε μια λειτουργεία. Σε εκείνη την περίπτωση μπορείτε να χρησιμοποιήσετε μέχρι 16 επιχειρήματα. Τα χειρόγραφα μπορούν να επιστρέψουν μια

Page 59: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

Για να προσθέσετε ένα χειρόγραφο στο παιχνίδι σας, επιλέξτε Add Script από τις επιλογές Add. Η ακόλουθη φόρμα θα εμφανιστεί (στο παράδειγμα προσθέσαμε ήδη ένα μικρό χειρόγραφο που υπολογίζει το αποτέλεσμα δύο επιχειρημάτων).

(Αυτό είναι το ενσωματωμένο πρόγραμμα χειρογράφων. Στις προτιμήσεις μπορείτε επίσης να δείξετε ότι θέλετε να χρησιμοποιήσετε ένα δικό σας πρόγραμμα). Πάνω δεξιά μπορείτε να υποβάλετε το όνομα του χειρογράφου. Σημειώστε ότι στο κάτω μέρος υπάρχει ένας κατάλογος  όλων των λειτουργιών, των ενσωματωμένων μεταβλητών, και των σταθερών. Αυτό σας βοηθά να βρείτε αυτό που χρειάζεστε. Μπορείτε να κάνετε διπλό κλίκ για να  το προσθέσετε (ή < Ctrl>P). Η παρουσίαση αυτού του καταλόγου μπορεί να σβηστεί στις προτιμήσεις. Ο συντάκτης έχει διάφορες χρήσιμες ιδιότητες, πολλές διαθέσιμες μέσω των κουμπιών (πιέστε το δεξί κουμπί του ποντικιού  για μερικές πρόσθετες εντολές):

Πολλαπλό Undo ή redo είτε ανά πλήκτρο είτε κατά ομάδες (μπορεί να αλλαχτεί στις προτιμήσεις)   Αυτόματη  ευθυγραμμίσει με την προηγούμενη γραμμή (μπορεί να επιλεχτεί στις προτιμήσεις) Αυτόματο tabbing που φτάνει μέχρι το πρώτο κενό στην επόμενη γραμμή(μπορεί να επιλεχτεί στις

προτιμήσεις)    Χρησιμοποιήστε  < Ctrl>I να χωρίσετε της επιλεγμένες γραμμές και < Shift> < Ctrl>I για να κολλήσετε της

επιλεγμένες γραμμές   cut-και-paste   Αναζήτηση και επανατοποθέτηση   Χρησημοποιήστε  <  CTRL > + up, down, page-up, ή page-down για κύλιση περιεχομένων  χωρίς αλλαγή της

θέσης του δρομέα F4 για να ανοίξετε ένα χειρόγραφο ή διπλό κλίκ στους πόρους στα αριστερά της οθόνης. Σώσιμο και φόρτωση του χειρόγραφου ως αρχείο κειμένων   Επίσης υπάρχει ένα κουμπί με το οποίο μπορείτε να εξετάσετε εάν το χειρόγραφο είναι σωστό. Δεν μπορούν όλες η πτυχές  να εξεταστούν σε αυτή τη φάση αλλά η σύνταξη του χειρογράφου σας θα εξεταστεί, μαζί με την ύπαρξη χρησιμοποιούμενων λειτουργιών. Όπως θα έχετε παρατηρήσει, τα μέρη του κειμένου είναι χρωματισμένα. Ο συντάκτης ξέρει για τα υπάρχοντα αντικείμενα, τις ενσωματωμένες μεταβλητές και τις λειτουργίες,  κ.λ.π. Η χρωματισμένη κωδικοποίηση βοηθά πολλή στην αποφυγή λαθών, βλέπετε αμέσως εάν γράψατε λανθασμένα κάποιο όνομα ή χρησιμοποιείτε μια λέξη κλειδί ως μεταβλητή. Η χρωματισμένη-κωδικοποίηση είναι εν τούτοις λίγο αργή. Στις προτιμήσεις μπορείτε να κλείσετε τη χρωματισμένη κωδικοποίηση. Εδώ μπορείτε επίσης να αλλάξετε το χρώμα για τα διάφορα στοιχεία των προγραμμάτων. (Εάν κάτι πηγαίνει στραβά με την χρωματισμένη κωδικοποίηση , πιέστε F12 δύο φορές, για να την κλείσετε). Επίσης μπορείτε να αλλάξετε την γραμματοσειρά που χρησιμοποιείται στα χειρόγραφα και τον κώδικα.

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

Page 60: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Export scripts. Οι βιβλιοθήκες χειρογράφων είναι απλά αρχεία κειμένων (αν και έχουν την επέκταση .gml). Μερικές βιβλιοθήκες με χρήσιμα χειρόγραφα συμπεριλαμβάνονται. (Για  αποφυγή  περιττής εργασίας κατά το φόρτωση του παιχνιδιού, αφού έχετε εισάγει μια βιβλιοθήκη, καλύτερα διαγράφτε εκείνα τα χειρόγραφα που δεν χρησιμοποιείτε).

Κατά τη δημιουργία των χειρογράφων μπορείτε εύκολα να κάνετε λάθη. Πάντα να εξετάζετε τα χειρόγραφα με τη χρησιμοποίηση του κατάλληλου κουμπιού. Όταν ένα λάθος εμφανίζεται κατά τη διάρκεια της εκτέλεσης ενός χειρογράφου αυτό αναφέρεται, με την ένδειξη του λάθους και της θέσης. Σπάνια θα δείτε έναν παράθυρο με το κείμενο "απροσδόκητο λάθος εμφανίστηκε κατά τη διάρκεια του παιχνιδιού" που αυτό το μήνυμα λάθους δείχνει ότι κάποιο πρόβλημα εμφανίστηκε στα windows ή στο υλικό. Συχνά ο λόγος για αυτό είναι, έλλειψη μνήμης ή ανεπαρκούς υλικού, οδηγοί ή λογισμικού. Γενικά, αυτά τα λάθη δεν είναι του Game Maker. Εάν πρέπει να ελέγξετε τα πράγματα προσεκτικότερα, μπορείτε να τρέξετε το παιχνίδι σε debug mode. Εμφανίζεται η παρακάτω φόρμα και τώρα μπορείτε να δείτε περισσότερες πληροφορίες για το παιχνίδι

Κάτω από τις επιλογές Run μπορείτε να σταματήσετε το παιχνίδι, να το τρέξετε βαθμιαία και να το ξαναξεκινήσετε. Κάτω από τις επιλογές watch μπορείτε να προσέξετε την αξία ορισμένων εκφράσεων. Πιέστε Add για να πληκτρολογήσετε κάποια έκφραση της οποίας η αξία παρουσιάζεται σε κάθε βήμα του παιχνιδιού. Κατ' αυτό τον τρόπο μπορείτε να δείτε εάν το παιχνίδι σας τρέχει όπως θέλετε. Μπορείτε να δείτε πολλές εκφράσεις. Μπορείτε να τις σώσετε για μετέπειτα χρήση (π.χ. αφότου κάνατε μια διόρθωση στο παιχνίδι). Κάτω από τις επιλογές Tools βρίσκονται στοιχεία για να δείτε ακόμη περισσότερες πληροφορίες. Μπορείτε να δείτε έναν κατάλογο όλων των περιπτώσεων στο παιχνίδι, μπορείτε να προσέξετε όλες τις σφαιρικές μεταβλητές (καλά,τις σημαντικότερες) και τις τοπικές μεταβλητές μιας περίπτωσης (είτε χρησιμοποιήστε το όνομα αντικειμένου είτε την ταυτότητα της περίπτωσης). Μπορείτε επίσης να δείτε μηνύματα τα οποία μπορείτε να στείλετε από τον κώδικά σας χρησιμοποιώντας τη λειτουργία  show_debug_message (str). Τέλος μπορείτε να δώσετε εντολές για να αλλάξετε την ταχύτητα του παιχνιδιού. Εάν κάνετε περίπλοκα παιχνίδια πρέπει  να μάθετε πώς να χρησιμοποιήσετε τις επιλογές.

3.ΟΛΟΚΛΗΡΩΝΟΝΤΑΣ ΤΟ ΠΑΙΧΝΙΔΙ

Πληροφορίες για το παιχνίδι

Ένα καλό παιχνίδι παρέχει στον παίκτη πληροφορίες για το πώς να παίξει το παιχνίδι. Αυτές οι πληροφορίες επιδεικνύονται όταν πιέζει ο παίκτης < F1 > κατά τη διάρκεια του παιχνιδιού . Για να δημιουργήσετε πληροφορίες σε ένα παιχνίδι, διπλό κλικ στο Game Information στους πόρους στ' αριστερά της οθόνης Στη φόρμα που ανοίγει

Page 61: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

μπορείτε να δώσετε τις πληροφορίες για το παιχνίδι. Μπορείτε να χρησιμοποιήσετε  διαφορετικές γραμματοσειρές, διαφορετικά χρώματα, και σχήματα. Επίσης μπορείτε να θέσετε το χρώμα του background

Στις επιλογές File μπορείτε επίσης να θέσετε διάφορες επιλογές. Εδώ μπορείτε να δείξετε τον τίτλο. Επίσης μπορείτε να δείξετε τη θέση (χρήση -1 για το κέντρο της οθόνης) το μέγεθος του παραθύρου εάν πρέπει να έχει σύνορα και εάν πρέπει να αλλάζει το μέγεθος ο παίκτης. Μπορείτε να θέσετε το παράθυρο να μείνει πάνω από τo παιχνίδι  και μπορείτε να δείξετε εάν το παιχνίδι πρέπει να συνεχίσει ενώ οι πληροφορίες παρουσιάζονται.

Μια ενδιαφέρουσα επιλογή είναι η μίμηση του κύριου παραθύρου. Όταν επιλέγετε αυτήν την εντολή το παράθυρο βοήθειας επιδεικνύεται ακριβώς στη θέση και στο μέγεθος του παραθύρου του παιχνιδιού. Κατά συνέπεια μοιάζει σαν το κείμενο να εμφανίστηκε στο παιχνίδι. (Να δείξετε στο τέλος του αρχείου βοήθειας ότι ο χρήστης πρέπει να πιέσει τo <esc> για να συνεχίσει).

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

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

Γενικές ρυθμίσεις

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

Η ρυθμίσεις μπορούν να αλλάξουν με διπλό κλίκ στην επιλογή Global Game Settings  στ' αριστερά της οθόνης. Υποδιαιρούνται σε διάφορες καρτέλες. (Μερικές επιλογές είναι διαθέσιμες μόνο στον προχωρημένο τρόπο).

Graphics options

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

Start in fullscreen mode

Όταν επιλεχτεί το παιχνίδι τρέχει σε πλήρη οθόνη διαφορετικά τρέχει σε ένα παράθυρο.

ScalingΕδώ μπορείτε να προσδιορίσετε τι συμβαίνει όταν το παράθυρο είναι μεγαλύτερο από το δωμάτιο ή όταν το παιχνίδι τρέχει σε πλήρη οθόνη. Υπάρχουν τρεις επιλογές. Μπορείτε να δείξετε μια προσδιορισμένη κλίμακα. Το δωμάτιο σχεδιάζει μια κλίμακα με το δεδομένο ποσό στο κέντρο του παραθύρου ή στο κέντρο της οθόνης. 100 δεν υπάρχει αλλαγή. Χρησιμοποιείστε χαρακτηριστικά μια προσδιορισμένη κλίμακα όταν τα sprites και τα δωμάτιά σας είναι πολύ μικρά. Η δεύτερη επιλογή είναι να σχεδιάσει το δωμάτιο έτσι ώστε να γεμίζει το παράθυρο ή την οθόνη αλλά να κρατά την ανάλογη διάσταση (αναλογία μεταξύ του πλάτους και του ύψους) την ίδια Η τρίτη επιλογή είναι γεμάτη κλίμακα τέτοια που το παράθυρο ή η οθόνη να γεμίζουν εντελώς. Αυτό μπορεί να οδηγήσει σε διαστρεβλώσεις της εικόνας (ειδικότερα όταν ο χρήστης αλλάζει της διαστάσεις του παραθύρου).

Interpolate colors between pixels

Όταν επιλεχτεί, τα χρώματα των pixel στα sprites, τα backgrounds, και των tiles που δεν είναι ευθυγραμμισμένα με τα pixel στην οθόνη θα παρεμβληθούν. Αυτό συμβαίνει όταν είναι σε κλίμακα, περιστρέφονται, ή τοποθετούνται

Page 62: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

Color outside the room region

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

Allow the player to resize the game window

Όταν επιλεχτεί ο παίχτης μπορεί να αλλάξει το μέγεθος του παραθύρου 

Let the game window always stay on top

Όταν επιλεχτεί  το παράθυρο του παιχνιδιού μένει πάντα πάνω από άλλα παράθυρα.

Don't draw a border in windowed mode

Όταν επιλεχτεί το παράθυρο του παιχνιδιού δεν θα έχει σύνορα ή  τίτλο.

Don't show the buttons in the window caption

Όταν επιλεχτεί το παράθυρο δεν θα παρουσιάσει τα κουμπιά για να το κλείσετε ή για να το ελαχιστοποιήσετε ή να το μεγιστοποιήσετε.

Display the cursor

Δείχνει εάν θέλετε ο δείκτης του ποντικιού  να είναι ορατός. (Μπορείτε εύκολα να δημιουργήσετε ένα δικό σας δείκτη στο Game Maker).

Freeze the game when the form looses focus

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

Resolution

Σε αυτήν την καρτέλα μπορείτε να ρυθμίσετε την ανάλυση της οθόνης στην οποία το παιχνίδι σας πρέπει να τρέξει. Εξ ορισμού η ανάλυση δεν αλλάζει. Αλλά μερικές φορές θέλετε να τρέξετε το παιχνίδι σε χαμηλότερη ανάλυση ή θέλετε να θέσετε τη συχνότητα του monitor για να συγχρονίσετε το timing του παιχνιδιού . Εάν θέλετε να αλλάξετε την ανάλυση πρέπει πρώτα να επιλέξετε το checkbox Set the resolution of the screen.

Υπάρχουν τρία πράγματα που μπορείτε να αλλάξετε. Καταρχήν υπάρχει το βάθος χρώματος. Αυτό δείχνει τον αριθμό τον bits που χρησιμοποιούνται για να αντιπροσωπεύσουν το χρώμα για ένα pixel. Οι περισσότερες μηχανές τώρα επιτρέπουν δεκαεξάμπιτο (υψηλό χρώμα) ή τριανταδυάμπιτο (πλήρες χρώμα) αλλά οι παλαιότερες μηχανές επιτρέπουν επίσης το οκτάμπιτο και μερικές φορές 24-bit. Το Game Maker εργάζεται σωστά μόνο στο δεκαεξάμπιτο και τριανταδυάμπιτο χρώμα. το τριανταδυάμπιτο χρώμα δίνει καλύτερη εικόνα αλλά θα πάρει περισσότερο χρόνο μνήμης και επεξεργασίας. Εάν θέλετε το παιχνίδι σας να τρέχει σε περισσότερα και παλαιότερα pc να θέσετε το βάθος χρώματος σε δεκαεξάμπιτο. Διαφορετικά χρησιμοποιήστε τριανταδυάμπιτο ή μην το αλλάξετε. 

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

Page 63: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

Επίσης υπάρχει μια ρύθμιση  Use synchronization to avoid tearing. Αυτό απαιτεί κάποια εξήγηση. Μια παρουσίαση ξανασχεδιάζετε πολλές φορές ανά δευτερόλεπτο, ανάλογα με τη συχνότητα. Εάν ένα δωμάτιο σχεδιάστηκε εκείνη την ώρα μισό , στο άλλο μισό θα δείχνει ακόμα την παλιά εικόνα. Αυτό καλείται tearing. Για να το αποφύγετε αυτό μπορείτε να επιλέξετε αυτήν την επιλογή. Σε αυτήν την περίπτωση η νέα εικόνα του δωματίου αντιγράφεται μόνο όταν η οθόνη ανανεώνετε πλήρως. Έτσι συγχρονίζουμε το σχέδιο με την ανανέωση. Το μειονέκτημα είναι ότι πρέπει να περιμένουμε μέχρις ότου η ανανέωση τελείωση. Επίσης μπορεί να υπάρξει μια εσωτερική σύγκρουση μεταξύ του  συγχρονισμού του παιχνιδιού και του συγχρονισμού της οθόνης. Εάν θέλετε να το κάνετε αυτό καλύτερα θέστε τη συχνότητα σε έναν σταθερό αριθμό (π.χ. 60) και να θέσετε την ταχύτητα δωματίων σε 9999, Τώρα το παιχνίδι θα τρέξει με ακριβώς 60 frames ανά δευτερόλεπτο χωρίς tearing. (Στις επίπεδες οθόνες μπορεί ακόμα να υπάρξει λίγο tearing που είναι αναπόφευκτο).

Various other options

Εδώ μπορείτε να ορίσετε διάφορες πρόσθετες επιλογές. Καταρχήν μπορείτε να ορίσετε μερικά πλήκτρα προεπιλογής:

Let <Esc> end the gameΌταν επιλεχτεί, πιέζοντας το πλήκτρο Esc θα τελειώσει το παιχνίδι. Σε προχωριμένα παιχνίδια δεν θέλετε αυτό να συμβεί επειδή θα θελήσετε να κάνει κάποια άλλη επεξεργασία (π.χ. σώσιμο του παιχνιδιού) πριν τελειώσει το παιχνίδι. Σε αυτήν την περίπτωση, αφαιρέστε αυτή την επιλογή και προσθέστε τις δικές σας ενέργειές για το πλήκτρο Esc. (Και το κλίκ στο Χ του παραθύρου είναι μια επιλογή για Escape).

Let <F1> show the game informationΌταν επιλεχτεί πιέζοντας το πλήκτρο F1 θα εμφανιστούν η πληροφορίες του παιχνιδιού.

Let <F4> switch between screen modesΌταν επιλεχτεί το πλήκτρο F4 θα μετατρέπει την πλήρη οθόνη σε παράθυρο.

Let <F5> and <F6> load and save the gameΌταν επιλεχτεί ο παίκτης μπορεί να χρησιμοποιήσει το< F5 > για να αποθηκεύσει την τρέχουσα κατάσταση του παιχνιδιού και < F6 > για να φορτώσει το τελευταίο σωζόμενο παιχνίδι.

Επίσης μπορείτε να θέσετε την προτεραιότητα του παιχνιδιού. Αυτή η προτεραιότητα προσδιορίζει πόσο επεξεργαστική ισχύ διανέμεται στο παιχνίδι. Στον κανονικό

τρόπο<normal> το λειτουργικό σύστημα προσπαθεί να δώσει  χρόνο στον επεξεργαστή για κάθε διαδικασία που τον χρειάζεται με κάποιο λογικό τρόπο. Βάζοντάς ψηλότερα την προτεραιότητα καθιστά το παιχνίδι πιο ομαλό και γρηγορότερο. Αλλά άλλες διαδικασίες παίρνουν λιγότερη ισχύ (επίσης και τα Windows, τόσο που ακόμη και το ποντίκι να μην μπορεί να κινηθεί). Χρησιμοποιήστε το με προσοχή.

Loading options

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

Page 64: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Είναι δυνατό να υποδειχθεί ότι η εικόνα φόρτωσης πρέπει να είναι διαφανής. Σε αυτήν την περίπτωση το κάτω αριστερό pixel της εικόνας background χρησιμοποιείται ως διαφανές χρώμα. Επίσης η διαφάνεια μπορεί να υποδειχθεί. Μια αξία 0 σημαίνει πλήρως διαφανή. Μια αξία 255 πλήρης αδιαφάνεια.

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

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

Constants

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

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

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

Περιλαμβάνοντας αρχεία στα αυτόνομα παιχνίδια

Όπως έχει ειπωθεί μπορείτε να δημιουργήσετε εκτελέσιμα αρχεία του παιχνιδιού σας. Μερικές φορές το παιχνίδι σας θα χρησιμοποιήσει πρόσθετα αρχεία. Παραδείγματος χάριν θα θελήσετε να περιλάβετε  video files ή text files που χρησιμοποιούνται στο παιχνίδι. Σε μερικές περιπτώσεις θέλετε να προσθέσετε DLLs ή τις εικόνες και τους ήχους που φορτώνονται κατά τη διάρκεια του τρεξίματος του παιχνιδιού. Μπορείτε να τα παρέχετε αυτά μαζί με το αυτόνομο εκτελέσιμο αλλά είναι μερικές φορές καλύτερο να τα περιλάβετε σε αρχείο. Κατ' αυτό τον τρόπο μόνο ένα αρχείο πρέπει να διανεμηθεί.

Εδώ μπορείτε να δείξετε τα αρχεία που θέλετε να περιλάβετε στο εκτελέσιμο . Στην κορυφή της φόρμας είναι η λίστα για να περιλάβει τα αρχεία . Επιλέξτε Add για να προσθέσετε αρχεία στον κατάλογο (μπορείτε να επιλέξετε και περισσότερα αρχεία). Χρησιμοποιήστε Delete ή Clear  για να αφαιρέσετε τα αρχεία από τον κατάλογο. (Συνειδητοποιήστε ότι τα αρχεία δεν συμπεριλαμβάνονται στο αρχείο .gm6, μόνο τα ονόματά τους. Έτσι όταν στέλνετε σε κάποιο άλλο το editable αρχείο .gm6 πρέπει επίσης να περιλάβετε τα αρχεία).

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

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

Page 65: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

temp_directory. Μην ξεχάστε να προσθέσετε την ανάποδη κάθετο σε αυτήν την περίπτωση. Έτσι π.χ. για να παίξετε ένα video file πρέπει να πληκτρολογήσετε το ακόλουθο κομμάτι του κώδικα:

 {  show_video(temp_directory+'\movie.avi',true,true);

   }

 

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

Εάν ένα αρχείο που ανοίγεται υπάρχει ήδη κανονικά δεν γράφεται. Μπορείτε να αλλάξετε αυτήν την συμπεριφορά με την επιλογή Overwrite existing files. Επίσης, όταν τελειώνει το παιχνίδι τα αρχεία κανονικά δεν αφαιρούνται (εκτός αν είναι στον προσωρινό φάκελο που αφαιρείται εντελώς). Μπορείτε να το αλλάξετε αυτό με την επιλογή Remove at game end.

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

Error options

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

Display error messagesΌταν επιλεχτεί τα μηνύματα λάθους παρουσιάζονται στο παίχτη. Στην τελική έκδοση του παιχνιδιού θα θελήσετε να αφαιρέσετε αυτήν την επιλογή.

Write error messages to file game_errors.log Όταν επιλεχτεί όλα τα μηνύματα λάθους γράφονται σε ένα αρχείο αποκαλούμενο game_errors.log στο φάκελο παιχνιδιών.

Abort on all error messagesΚανονικά, ορισμένα λάθη είναι μοιραία ενώ άλλα μπορούν να αγνοηθούν. Με την επιλογή αυτή όλα τη λάθη θεωρούνται μοιραία και οδηγούν στο τέλος του παιχνιδιού. Στην τελική έκδοση του παιχνιδιού θα πρέπει να συμπεριλάβετε αυτήν την επιλογή.

Treat uninitialized variables as 0Ένα κοινό λάθος είναι να χρησιμοποιηθεί μια μεταβλητή προτού να οριστεί μια αξία σε αυτήν. Μερικές φορές αυτό είναι δύσκολο να αποφευχθεί. Κατά τον έλεγχο αυτής της επιλογής τέτοιες μεταβλητές αντιμετωπίζονται ότι έχουν μια αξία 0, 

Information about the game

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

 

Page 66: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

 

Εξετάζοντας την ταχύτητα

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

Καταρχήν, εξετάστε προσεκτικά τα sprites και τα backgrounds που χρησιμοποιείτε. Τα Animated sprites παίρνουν πολλή μνήμη και ο σχεδιασμός των sprites παίρνει πολύ χρόνο. Έτσι καταστήστε τα sprites σας όσο το δυνατόν μικρότερα. Αφαιρέστε οποιαδήποτε αόρατη περιοχή γύρω από αυτό (η εντολή crop στο sprite editor το κάνει αυτόματα). Το ίδιο πράγμα ισχύει για τις εικόνες background. Εάν έχετε ένα  background , σιγουρευτείτε ότι σβήνετε τη χρήση ενός χρώματος για background .

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

Επίσης να είστε προσεκτικός με τη χρήση πολλών απόψεων<views>. Για κάθε άποψη το δωμάτιο ξανασχεδιάζετε.

Εκτός από τη γραφική παράσταση, υπάρχουν και άλλες πτυχές που επηρεάζουν την ταχύτητα. Σιγουρευτείτε ότι έχετε όσο το δυνατόν λιγότερες περιπτώσεις. Ειδικότερα, καταστρέψτε τις περιπτώσεις που δεν χρησιμοποιούνται πλέον (π.χ. όταν αφήνουν το δωμάτιο). Αποφύγετε πολλές  εργασίες στο γεγονός βημάτων<step event> ή στο γεγονός σχεδιασμού<draw event> των περιπτώσεων. Συχνά τα πράγματα δεν πρέπει να ελεγχθούν σε κάθε βήμα. Η χρησιμοποίηση του κώδικα είναι εύλογα πιο γρήγορη. Επίσης, μερικές λειτουργίες και ενέργειες παίρνουν πολύ χρόνο ειδικότερα εκείνες που πρέπει να ελέγξουν όλες τις περιπτώσεις (όπως παραδείγματος χάριν τη ενέργεια αναπήδησης).

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

Να είστε προσεκτικός με τη χρησιμοποίηση των μεγάλων sound files. Παίρνουν πολλή μνήμη και επίσης συμπιέζονται άσχημα. .

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

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

Σε αυτό το κεφάλαιο θα περιγράψουμε τη βασική δομή των προγραμμάτων σε GML. Όταν θέλετε να χρησιμοποιήσετε προγράμματα σε GML, υπάρχουν μερικά πράγματα που πρέπει να είστε προσεκτικοί . Καταρχήν, για όλους τους πόρους σας (sprites, αντικείμενα, ήχοι, κ.λπ.)... πρέπει να χρησιμοποιήσετε ονόματα που αρχίζουν με γράμμα και αποτελούνται μόνο από γράμματα, ψηφία και το σύμβολο  "_". Διαφορετικά δεν μπορείτε να αναφερθείτε σε αυτά από μέσα από το πρόγραμμα. Σιγουρευτείτε ότι όλοι οι πόροι έχουν διαφορετικά ονόματα. Επίσης να είστε προσεκτικός να μην ονομάζετε τους πόρους με τις λέξεις:self, other, global, ή all επειδή αυτές έχουν ειδική έννοια στη γλώσσα. Επίσης δεν πρέπει να χρησιμοποιήσετε καμία από τις λέξεις κλειδιά, που υποδεικνύονται πιο κάτω.

Page 67: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Τα κεφάλαια που θα εξετάσουμε είναι τα εξής :

A program

Ένα πρόγραμμα αποτελείται από ένα σύνολο οδηγιών, αποκαλούμενο δηλώσεις. Ένα πρόγραμμα πρέπει να αρχίσει με το σύμβολο ' { ' και να τελειώνει με το σύμβολο ' } '. Μεταξύ αυτών των συμβόλων υπάρχουν οι δηλώσεις. Οι δηλώσεις πρέπει να χωριστούν με το σύμβολο' ; '. Έτσι η σφαιρική δομή κάθε προγράμματος είναι:

 {  < δήλωση >;   < δήλωση >;   ... }

Υπάρχουν διάφοροι τύποι δηλώσεων, οι οποίοι θα συζητηθούν παρακάτω.

 

 

Variables

Όπως κάθε γλώσσα προγραμματισμού η GML περιέχει μεταβλητές. Οι μεταβλητές είναι τοποθεσίες στη μνήμη που αποθηκεύουν πληροφορίες. Έχουν ένα όνομα έτσι ώστε να μπορείτε να αναφερθείτε σε αυτές. Μια μεταβλητή σε GML μπορεί να αποθηκεύσει είτε έναν πραγματικό αριθμό είτε μια σειρά. Οι μεταβλητές δεν πρέπει να δηλωθούν όπως σε πολλές άλλες γλώσσες. Υπάρχει ένας μεγάλος αριθμός ενσωματωμένων μεταβλητών. Μερικές είναι γενικές, όπως η mouse_x    και mouse_y    που δείχνουν την τρέχουσα θέση του mouse, ενώ όλες οι άλλες είναι τοπικές στην περίπτωση του αντικειμένου για την οποία εκτελούμε το πρόγραμμα, όπως η Χ και η Υ που δείχνουν την τρέχουσα θέση της περίπτωσης. Μια μεταβλητή έχει ένα όνομα που πρέπει να αρχίσει με ένα γράμμα και μπορεί να περιέχει μόνο γράμματα, αριθμούς, και το σύμβολο  "_" (το μέγιστο μήκος είναι 64 σύμβολα).. Όταν χρησιμοποιείτε μια νέα μεταβλητή είναι τοπική στην τρέχουσα περίπτωση και δεν την χρησιμοποιεί το πρόγραμμα για τις άλλες περιπτώσεις (ακόμη και του ίδιου του αντικειμένου). Μπορείτε εν τούτοις να αναφερθείτε για μεταβλητές σε άλλες περιπτώσεις δείτε παρακάτω.

 

Assignments

Μια ανάθεση<assignment> αποθηκεύει μια αξία σε μια μεταβλητή. Μια ανάθεση έχει τη μορφή:

< μεταβλητή > = < έκφραση >;

Μια έκφραση μπορεί να είναι μια απλή αξία αλλά μπορεί επίσης να είναι πιό περίπλοκη. Παρά την ανάθεση μιας αξίας σε μια μεταβλητή, κάποια μπορεί επίσης να προσθέσει την αξία στην τρέχουσα αξία της μεταβλητής χρησιμοποιώντας + =. Παρόμοιος, μπορείτε να την αφαιρέσετε χρησιμοποιώντας - =, να την πολλαπλασιάσετε χρησιμοποιώντας * =, να την διαιρέσετε χρησιμοποιώντας /= ,η  χρησιμοποιώντας δυαδικά πρόσημα |=, &\, ή ^=.

 

 

Page 68: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Expressions

Οι εκφράσεις μπορούν να είναι πραγματικοί αριθμοί (π.χ. 3.4), προτάσεις μεταξύ μονών ή διπλών αποσιωπητικών (π.χ. 'hello' ή "hello") ή πιό περίπλοκες εκφράσεις. Για τις εκφράσεις, οι ακόλουθοι δυαδικοί χαρακτήρες υπάρχουν (κατά σειρά προτεραιότητας):

       && || ^^: συνδυάζει τις κατά Μπουλ τιμές (&& = και, || = ή, ^^ = xor)

       < <= ==! = > > =: συγκρίσεις, για αποτέλεσμα σε true (1) ή false (0)        | & ^: δυαδικά πρόσημα ( | = δυαδικό ή,  & = δυαδικό και,  ^ = δυαδικό xor )

       << >>: δυαδικά πρόσημα ( << =shift left,     > > = shift right )         + -: πρόσθεση, αφαίρεση

       *, /, div,mod: πολλαπλασιασμός, διαίρεση, integer division, modulo

Επίσης,:

  !: δεν, αντιστρέφει το true σε false και το false σε true   -: αρνείται την επόμενη αξία

  ~: αρνείται την επόμενη δυαδική αξία Σαν τιμές μπορείτε να χρησιμοποιήσετε αριθμούς, μεταβλητές, ή λειτουργίες που επιστρέφουν μια αξία. Οι υπο-εκφράσεις μπορούν να τοποθετηθούν σε αγκύλες. Όλοι οι χειρισμοί δουλεύουν για πραγματικές τιμές. Οι συγκρίσεις λειτουργούν επίσης για τις σειρές και το + συνδέει τις σειρές. (Παρακαλώ σημειώστε ότι, αντίθετα απο ορισμένες γλώσσες, και τα δύο επιχειρήματα σε μια λειτουργία Μπουλ υπολογίζονται πάντα, ακόμα και όταν καθορίζει ήδη το πρώτο επιχείρημα την έκβαση).

Παράδειγμα   

Εδώ είναι ένα παράδειγμα με μερικές αναθέσεις.

  {  x = 23;  str = 'hello world';  y += 5;  x *= y;  x = y << 2;  x = 23*((2+4) / sin(y));  str = 'hello' + " world";  b = (x < 5) && !(x==2 || x==4);

   }

 

 

Extra variables

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

Για να δημιουργηθούν σφαιρικές μεταβλητές, που είναι ορατές σε όλες τις περιπτώσεις , πρέπει να προηγείται η λέξη globalκαι μια τελεία. Έτσι παραδείγματος χάριν μπορείτε να γράψετε:

Page 69: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

 {  if (global.doit)  {    // do something    global.doit = false;  }

    }

 

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

VAR    < varname1>, <varname2>, <varname3 >...

Παραδείγματος χάριν, μπορείτε να γράψετε:

{  var xx,yy;  xx = x+10;  yy = y+10;  instance_create(xx,yy,ball);

  }

 

 

Προσθέτοντας μεταβλητές σε άλλες περιπτώσεις

Όπως περιγράφεται νωρίτερα, μπορείτε να θέσετε μεταβλητές στην τρέχουσα περίπτωση χρησιμοποιώντας δηλώσεις όπως

Χ = 3;

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

ball.speed = 0;

Αυτό θα αλλάξει την ταχύτητα σε όλες της μπάλες.

Υπάρχουν διάφορες " ειδικές " μεταβλητές .

self: Η τρέχουσα περίπτωση για την οποία εκτελούμε τη ενέργεια. 

other: Η άλλη περίπτωση που περιλαμβάνεται σε ένα γεγονός σύγκρουσης. 

all: Όλες οι περιπτώσεις.

Page 70: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

noone: Καμία περίπτωση (πιθανώς οι ήχοι να ακουστούν παράξενα αλλά μπορούμε να το διορθώσουμε όπως θα δούμε παρακάτω).

global: Καμία περίπτωση ,αλλά ένα πακέτο που αποθηκεύει τις σφαιρικές μεταβλητές. 

Έτσι, παραδείγματος χάριν, μπορείτε να χρησιμοποιήσετε το ακόλουθο είδος δηλώσεων: other.sprite_index = sprite5; all.speed = 0; global.message = "Χαίρετε"; global.x = ball.x;

Θα αναρωτιέστε τι κάνει η τελευταία ανάθεση όταν υπάρχουν πολλές μπάλες.Η πρώτη την λαμβάνεται και η αξία Χ της ορίζεται σαν συνολική αξία.

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

(100032).speed = 0;

Όταν δημιουργείτε μια περίπτωση στο πρόγραμμα, η κλήση επιστρέφει στην ταυτότητα. Έτσι ένα έγκυρο κομμάτι του προγράμματος είναι

 {  nnn = instance_create(100,100,ball);  nnn.speed = 8;

  }

 

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

   {  obj[0] = ball;  obj[1] = flag;  obj[0].alarm[4] = 12;  obj[1].id.x = 12;

    }

 

Η τελευταία δήλωση πρέπει να διαβαστεί ως εξής. Παίρνουμε την ταυτότητα της πρώτης σημαίας. Για την περίπτωση με εκείνη την ταυτότητα θέτουμε τη συντεταγμένη Χ σε 12, 

Page 71: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

 

 

Arrays

Μπορείτε να χρησιμοποιήσετε 1 και 2 σειρές σε GML. Απλά βάλτε το δείκτη σε αγκύλες για μια 1 σειρά, και τους δύο δείκτες με ένα κόμμα μεταξύ τους για τις 2 σειρές. Προς το παρόν χρησιμοποιείτε έναν δείκτη oπου η σειρά παράγεται. Κάθε σειρά τρέχει από το δείκτη 0, Έτσι να είστε προσεκτικοί με τη χρησιμοποίηση μεγάλων δεικτών επειδή η μνήμη για μια μεγάλη σειρά θα διατηρηθεί. Μην χρησιμοποιήσετε ποτέ αρνητικούς δείκτες. Το σύστημα βάζει ένα όριο 32000 σε κάθε δείκτη και 1000000 στο συνολικό μέγεθος. Έτσι παραδείγματος χάριν μπορείτε να γράψετε τα εξής:

 {  a[0] = 1;  i = 1;  while (i < 10) { a[i] = 2*a[i-1]; i += 1;}  b[4,6] = 32;}

 

If statement

Η δήλωση if έχει τη μορφή 

if (<expression>) <statement>ή

   if (<expression>) <statement> else <statement>

 

Η δήλωση μπορεί επίσης να είναι και ένα block. Η έκφραση θα αξιολογηθεί. Εάν η (στρογγυλεμένη) αξία είναι < = 0 (false) η επόμενη δήλωση εκτελείται, διαφορετικά (true) η άλλη δήλωση εκτελείται. Είναι μια καλή συνήθεια να βάζετε πάντα αγκύλες γύρω από τις δηλώσεις if. Έτσι καλύτερα γράψτε

if (<expression>){  <statement>}else{  <statement>

  }

 

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

 {

Page 72: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

  if (x<200) {x += 4} else {x -= 4};

   }

 

Repeat statement

Η δήλωση repeat έχει τη μορφή 

repeat (<expression>) <statement>

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

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

 {  repeat (5) instance_create(random(400),random(400),ball); }

 

While statement

Η δήλωση while έχει τη μορφή

while (<expression>) <statement>

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

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

{  while (!place_free(x,y))  {    x = random(room_width);    y = random(room_height);  }

  }

 

Do statement

Η δήλωση do έχει τη μορφή  

   do <statement> until(<expression>)

Η δήλωση (που μπορεί επίσης να είναι ένα block) εκτελείται έως ότου η έκφραση να είναι αληθινή. Η δήλωση εκτελείται τουλάχιστον μιά φορά. Να είστε προσεκτικοί με τις επαναλαμβανόμενες δηλώσης. Μπορείτε εύκολα να τις κάνετε να επαναλαμβάνονται για πάντα, οπότε σ'αυτή την περίπτωση το παιχνίδι σας θα κρεμάσει και δεν θα αντιδράει στο χειρισμό.  

Page 73: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

 {  do  {    x = random(room_width);    y = random(room_height);  }  until (place_free(x,y))

    }

 

 

For statement

H δήλωση for έχει τη μορφή  

for (<statement1> ; <expression> ;<statement2>) <statement3>

Αυτό δουλεύει ως εξής. Η πρώτη statement1 εκτελείται. Κατόπιν η έκφραση αξιολογείται. Εάν είναι αληθινή, η δήλωση 3 εκτελείται κατόπιν η δήλωση 2 και έπειτα η έκφραση αξιολογείται πάλι. Αυτό συνεχίζεται έως ότου η έκφραση να γίνει ψεύτικη.

Αυτό μπορεί να ακούγεται περίπλοκο. Πρέπει να το ερμηνεύσετε ως εξής. Η πρώτη δήλωση μονογράφει την for-δήλωση. Η έκφραση εξετάζει εάν η επαναλαμβανόμενη δήλωση πρέπει να τελειώσει. Η Statement2 είναι η δήλωση που πηγαίνει στην επόμενη δήλωση για αξιολόγηση.

Η πιό κοινή χρήση είναι να έχουμε έναν μετρητή μέσω κάποιας σειράς.

Παράδειγμα Το ακόλουθο πρόγραμμα μονογράφει μια σειρά μήκους 10 με τις τιμές 1-10.

{  for (i=0; i<=9; i+=1) list[i] = i+1;

  }

 

Switch statement

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

switch (<expression>){  case <expression1>: <statement1>; ... ; break;  case <expression2>: <statement2>; ... ; break;  ...  default: <statement>; ...

  }

Page 74: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

Παράδειγμα Το ακόλουθο πρόγραμμα λαμβάνει μέτρα βασισμένο σε ένα πλήκτρο που πιέζεται.

switch (keyboard_key)

 {

  case vk_left:

  case vk_numpad4:

    x -= 4; break;

  case vk_right:

  case vk_numpad6:

    x += 4; break;

 }

 

Break statement

Η δήλωση break έχει τη μορφή  

break

Εάν χρησιμοποιείται μέσα σε μια επαναλαμβανόμενη for- δήλωση, while- δήλωση, repeat- δήλωση, η μια εντολή SWITCH, τελειώνει αυτήν την επανάληψη ή την δήλωση. Εάν χρησιμοποιείται έξω από μια τέτοια δήλωση τελειώνει το πρόγραμμα (όχι το παιχνίδι).

 

 

Continue statement

Η δήλωση continue έχει τη μορφή

 continue

Εάν χρησιμοποιείται μέσα σε μια επαναλαμβανόμενη for- δήλωση, while- δήλωση, repeat- δήλωση, ή μια εντολή SWITCH,συνεχίζεται με την επόμενη αξία για τη δήλωση ή με τη δήλωση.

 

 

Page 75: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Exit statement

Η δήλωση exitέχει τη μορφή 

exit

Τελειώνει απλά την εκτέλεση αυτού του χειρογράφου ή το κομμάτι του κώδικα. (Δεν τελειώνει την εκτέλεση του παιχνιδιού Για αυτό χρειάζεστε τη λειτουργία game_end ()   δείτε πιο κάτω).

 

 

Functions

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

< function>(<arg1>, <arg2 >,..). 

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

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

Σημειώστε ότι είναι αδύνατο να χρησιμοποιηθεί μια λειτουργία ως αριστερή πλευρά μιας ανάθεσης. Παραδείγματος χάριν, δεν μπορείτε να γράψετε instance_nearest(x,y,obj).speed = 0 Αντί γι'αυτο πρέπει να γράψετε (instance_nearest(x,y,obj)).speed = 0.

 

 

Scripts

Όταν δημιουργείτε ένα χειρόγραφο, θέλετε να έχετε πρόσβαση στα επιχειρήματα που περνούν σε αυτό (είτε κατά τη χρησιμοποίηση του στη ενέργεια χειρογράφων, είτε κατά την κλήση του χειρογράφου ως λειτουργία από ένα πρόγραμμα (ή από άλλο, ή ακόμα και απο το ίδιο το χειρόγραφο). Αυτά τα επιχειρήματα αποθηκεύονται στις μεταβλητές argument0, argument1..., argument15. Έτσι μπορούν να υπάρξουν το πολύ 16 επιχειρήματα. (Σημειώστε ότι κατά την κλήση του χειρογράφου από μια ενέργεια, μόνο τα πρώτα 5 επιχειρήματα μπορούν να διευκρινιστούν). Μπορείτε επίσης να χρησιμοποιήσετε argument[0] κ.λπ. 

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

return <expression>

Η εκτέλεση των χειρογράφων τελειώνει στη δήλωση return !

Παράδειγμα Εδώ είναι ο καθορισμός για ένα μικρό χειρόγραφο που υπολογίζει το τετράγωνο του επιχειρήματος:

 {  return (argument0*argument0);

Page 76: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

   }

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

 

 

 

With constructions

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

ball.y = ball.y + 8;

Αλλά αυτό δεν είναι σωστό. Η δεξιά πλευρά της ανάθεσης παίρνει την αξία της Υ-συντεταγμένης της πρώτης μπάλας και προσθέτει 8 σε αυτην. Έπειτα αυτή η νέα αξία τίθεται ως Υ-συντεταγμένη σε όλες της μπάλες. Έτσι το αποτέλεσμα είναι ότι όλες οι μπάλες παίρνουν την ίδια Υ-συντεταγμένη. Η δήλωση  

ball.y + = 8;

θα έχει ακριβώς την ίδια επίδραση επειδή είναι απλά μια σύντμηση της πρώτης δήλωσης. Λοιπόν πώς το πετυχαίνουμε αυτό; Για αυτόν το λόγο υπάρχει η with δήλωση. Η σφαιρική μορφή της είναι

with (<expression>) <statement>

η expression  δείχνει μια ή περισσότερες περιπτώσεις. Για αυτό μπορείτε να χρησιμοποιήσετε την ταυτότητα της περίπτωσης, το όνομα ενός αντικειμένου (για να δείξει όλες τις περιπτώσεις αυτού του αντικειμένου) ή μια από της ειδικές μεταβλητές (all, self, other, noone). < η δήλωση > εκτελείται τώρα για κάθε μια από τις υποδειγμένες περιπτώσεις, σαν εκείνη η περίπτωση να είναι η μόνη(self) τρέχουσα  περίπτωση. Έτσι, για να κινήσετε όλες τις μπάλες 8 pixel κάτω, μπορείτε να πληκτρολογήσετε.

with (ball) y += 8;

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

with (ball){  x = random(room_width);  y = random(room_height);

  }

 

Σημειώστε ότι, μέσα στη δήλωση(εις), η υποδειγμένη περίπτωση έχει γίνει η self περίπτωση. Μέσα στις δηλώσεις η αρχική self περίπτωση έχει γίνει η άλλη (other)περίπτωση. Έτσι παραδείγματος χάριν, για να κινήσετε όλες τις μπάλες προς τη θέση της τρέχουσας περίπτωσης, μπορείτε να πληκτρολογήσετε

       with (ball)

Page 77: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

{  x = other.x;  y = other.y;

  }

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

with (ball) instance_destroy();

Εάν μια βόμβα εκρήγνυται και θέλετε να καταστρέψετε όλες τις περιπτώσεις γύρο από αυτή μπορείτε να χρησιμοποιήσετε  

with (all){  if (distance_to_object(other) < 50) instance_destroy();

  }

 

 

Comment

Μπορείτε να προσθέσετε σχόλια στα προγράμματά σας. Όλα μετά από της δύο κάθετες // δεν διαβάζονται. Μπορείτε επίσης να γράψετε πολλές γραμμές με την τοποθέτηση κειμένων μεταξύ /* και */. (Το χρώμα μπορεί να μην λειτουργήσει σωστά ! Πιέστε F12 για να ξανά χρωματίσετε το κείμενο εάν ένα λάθος εμφανίζεται).

 

Λειτουργίες και μεταβλητές σε GML

Η γλώσσα GML περιέχει έναν μεγάλο αριθμό ενσωματωμένων λειτουργιών και μεταβλητών. Με αυτές,μπορείτε να ελέγξετε οποιοδήποτε μέρος του παιχνιδιού. Για όλες τις ενέργειες υπάρχουν αντίστοιχες λειτουργίες έτσι δεν είναι αναγκαίο να χρησιμοποιήσετε ενέργειες εάν προτιμάτε τη χρησιμοποίηση του κώδικα. Αλλά υπάρχουν πολλή περισσότερες λειτουργίες και μεταβλητές που ελέγχουν τις πτυχές του παιχνιδιού που  με τις ενέργειες μόνο δεν θα ήταν δυνατό. Έτσι εάν θέλετε να κάνετε προηγμένα παιχνίδια σας συμβουλεύω ιδιαιτέρως να διαβάσετε τα ακόλουθα κεφαλαία για να πάρετε μια γεύση απο όλες της δυνατότητες του Game Maker. Παρακαλώ σημειώστε ότι αυτές οι μεταβλητές και οι λειτουργίες μπορούν επίσης να χρησιμοποιηθούν στην παροχή τιμών για τις ενέργειες. Έτσι ακόμα κι αν δεν προγραμματίζετε να χρησιμοποιήσετε των κώδικα ή το γράψιμο χειρογράφων, θα ωφεληθείτε από αυτές τις πληροφορίες .Τα ονόματα των μεταβλητών που μαρκάρονται με * είναι μόνο ανάγνωσης, δηλαδή την αξία τους ,δεν μπορούν να την αλλάξουν. Τα ονόματα των μεταβλητών με [ 0..n ] μετά από αυτές είναι σειρές.Δείτε παρακάτω  

 

 

 

 

Page 78: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Υπολογίζοντας πράγματα

Το Game Maker   περιέχει έναν μεγάλο αριθμό λειτουργιών για να υπολογίσει ορισμένα πράγματα. Εδώ είναι ένας πλήρης κατάλογος.

 

 

Constants

Οι ακόλουθες μαθηματικές σταθερές υπάρχουν:

true Ίσον με 1.false Ίσον με 0.   pi ίσον με 3.1415...

 

 

Real-valued functions

Οι ακόλουθες λειτουργίες εξετάζουν τους πραγματικούς αριθμούς.

random(x)επιστρέφει έναν τυχαίο πραγματικό αριθμό μεταξύ 0 και του Χ. Ο αριθμός είναι πάντα μικρότερος από το Χ. abs(x) επιστρέφει την απόλυτη αξία του Χ. sign(x) επιστρέφει το σημάδι του Χ (-1, 0 ή 1).round(x) επιστρέφει το Χ που στρογγυλεύεται στον κοντινότερο ακέραιο αριθμό. floor(x) επιστρέφει το floor του Χ, δηλαδή Χ που στρογγυλεύεται σε έναν ακέραιο αριθμό. ceil(X)επιστρέφει το ανώτατο όριο του Χ, δηλαδή Χ που στρογγυλεύεται μέχρι έναν ακέραιο αριθμό. frac(X) επιστρέφει το κλασματικό μέρος του Χ, δηλαδή το μέρος πίσω από το δεκαδικό σημείο. sqrt(X)  επιστρέφει την τετραγωνική ρίζα του Χ. Χ δεν πρέπει να είναι  αρνητικό. sqr(X)επιστρέφει x*x. power(x,n)επιστρέφει Χ στη δύναμη n. exp(X) επιστρέφει e στη δύναμη Χ. ln(X) επιστρέφει το φυσικό λογάριθμο του Χ. log2(X) επιστρέφει λογάριθμο με βάση 2 απο Χ.log10(X) επιστρέφει λογάριθμο με βάση 10 απο Χ logn(n,Χ) επιστρέφει λογάριθμο με βάση n απο Χsin(x) επιστρέφει το ημίτονο του Χ (Χ σε ακτίνια). cos(x)επιστρέφει το συνημίτονο του Χ (Χ σε ακτίνια). tan(x) επιστρέφει την εφαπτομένη του Χ (Χ σε ακτίνια). arcsin(x) επιστρέφει το αντίστροφο ημίτονο του Χ. arccos(X) επιστρέφουν το αντίστροφο συνημίτονο του Χ. arctan(X)επιστρέφει την αντίστροφη εφαπτομένη του Χ. arctan2(Υ,Χ)υπολογίζει εφαπτομένη (Y/X), και επιστρέφει μια γωνία στο σωστό τεταρτημόριο. degtorad(X) μετατρέπει τους βαθμούς σε ακτίνια.radtodeg(X)μετατρέπει τα ακτίνια σε βαθμούς. min(val1, val2, val3…)επιστρέφει το ελάχιστο των τιμών. Η λειτουργία μπορεί να έχει μέχρι 16 επιχειρήματα. Πρέπει είτε να είναι όλες πραγματικές είτε όλες σειρές. max(val1, val2, val3…) επιστρέφει το μέγιστο των τιμών. Η λειτουργία μπορεί να έχει μέχρι 16 επιχειρήματα. Πρέπει είτε να είναι όλες πραγματικές είτε όλες σειρές. mean(val1, val2, val3…)επιστρέφει το μέσο όρο των τιμών. Η λειτουργία μπορεί να έχει μέχρι 16 επιχειρήματα. Πρέπει όλες να είναι πραγματικές τιμές.

Page 79: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

point_distance(x1, y1, x2, y2)επιστρέφει την απόσταση μεταξύ του σημείου (x1, y1) και του σημείου (x2, y2). point_direction(x1, y1, x2, y2)επιστρέφει την κατεύθυνση από το σημείο (x1, y1) προς το σημείο (x2, y2) σε βαθμούς. lengthdir_x(len, dir)επιστρέφει την οριζόντιο Χ-συνιστώσα του διανύσματος που καθορίζεται από το υποδειγμένο μήκος και την κατεύθυνση. lengthdir_y(len, dir) επιστρέφει την κάθετο Υ- συνιστώσα του διανύσματος που καθορίζεται από το υποδειγμένο μήκος και την κατεύθυνση. is_real(X) επιστρέφει εάν το Χ είναι μια πραγματική αξία (σε αντιδιαστολή με μια σειρά).is_string(x) επιστρέφει εάν το Χ είναι μια σειρά (σε αντιδιαστολή με μια πραγματική αξία).

 

 

 String handling functions

Οι ακόλουθες λειτουργίες εξετάζουν τους χαρακτήρες και τη σειρά.

chr(val) επιστρέφει μια σειρά που περιέχει το χαρακτήρα με τον κώδικα asci val. ord(str)επιστρέφει τον κώδικα asci του πρώτου χαρακτήρα στο str. real(str)επιστρεφη το str σε έναν πραγματικό αριθμό.str μπορεί να περιέχει το μείον , ένα δεκαδικό σημείο και ακόμη και ένα εκθετικό μέρος. string(val)  μετατρέπει την πραγματική αξία σε σειρά χρησιμοποιώντας ένα τυποποιημένο σχήμα (καμία δεκαδική θέση όταν είναι ένας ακέραιος αριθμός, αλλιώς δύο δεκαδικές θέσεις). string_format(val,tot,dec)μετατρέπει val σε σειρά χρησιμοποιώντας το δικό σας format. tot δείχνει το συνολικό αριθμό θέσεων και  dec δείχνει τον αριθμό δεκαδικών θέσεων. string_length(str) επιστρέφει τον αριθμό χαρακτήρων στη σειρά. string_pos(substr,str)  επιστρέφει τη θέση του substr στο str.string_copy(str,index,count)   επιστρέφει ένα substring  του str αρχίζοντας απο τη θέση index, και της αρίθμησης μήκους. string_char_at(str,index)  επιστρέφει το χαρακτήρα στο str στη θέση index. string_delete(str,index,count)επιστρέφει ένα αντίγραφο του str με το κομμάτι αφαιρούμενο που αρχίζει στο δείκτη θέσης και έχει την αρίθμηση μήκους. string_insert(substr,str,index)επιστρέφει ένα αντίγραφο του str με το substr που προστίθεται στο δείκτη θέσης. string_replace(str,substr,newstr)επιστρέφει ένα αντίγραφο του str με το πρώτο περιστατικό του substr που αντικαθίσταται από newstr. string_replace_all(str,substr,newstr)επιστρέφει ένα αντίγραφο του str με όλα τα περιστατικά του substr που αντικαθίστανται από το newstr. string_count(substr,str)   επιστρέφει τον αριθμό περιστατικών του substr στο str . string_lower(str)επιστρέφει ένα πεζό αντίγραφο του str . string_upper(str)επιστρέφει ένα κεφαλαίο αντίγραφο του str . string_repeat(str,count)επιστρέφει μια σειρά που αποτελείται από τα αντίγραφα αρίθμησης του str . string_letters(str)επιστρέφουν μια σειρά που περιέχει μόνο γράμματα στο str . string_digits(str) επιστρέφει μια σειρά που περιέχει μόνο ψηφία στο str . string_lettersdigits(str)    επιστρέφει μια σειρά που περιέχει γράμματα και  ψηφία στο str .

Οι ακόλουθες λειτουργίες εξετάζουν την περιοχή clipboard (περιοχή της μνήμης για προσωρινή αποθήκευση) για την αποθήκευση του κειμένου.

clipboard_has_text()επιστρέφει εάν υπάρχει οποιοδήποτε κείμενο στην περιοχή clipboard. clipboard_get_text()επιστρέφει το τρέχον κείμενο στην περιοχή clipboard. clipboard_set_text(str)θέτει το str σειράς στην περιοχή clipboard.

 

Page 80: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

 

Dealing with dates and time

Στο Game Maker υπάρχουν διάφορες λειτουργίες για να χειριστούν ημερομηνίες και χρόνο. Ένας date-time συνδυασμός αποθηκεύεται σε έναν πραγματικό αριθμό. Το αναπόσπαστο τμήμα μιας date-time αξίας είναι ο αριθμός ημερών που έχουν περάσει από το 12/30/1899. Το κλασματικό μέρος της date-time αξίας είναι μέρος μιας 24 ώρης μέρας  που έχει τελιώσει. Είναι οι ακόλουθες λειτουργίες :

date_current_datetime()επιστρέφει τη date-time αξία που αντιστοιχεί στην τρέχουσα στιγμή. date_current_date()επιστρέφει τη date-time αξία που αντιστοιχεί μόνο στην  τρέχουσα ημερομηνία (αγνοώντας το χρόνο). date_current_time() επιστρέφει τη date-time αξία που αντιστοιχεί μόνο στον τρέχοντα χρόνο (αγνοώντας την ημερομηνία). date_create_datetime(year,month,day,hour,minute,second) δημιουργεί μια date-time αξία που αντιστοιχεί στην υποδειγμένη ημερομηνία και το χρόνο. date_create_date(year,month,day) δημιουργεί μια date-time αξία που αντιστοιχεί στην υποδειγμένη ημερομηνία. date_create_time(hour,minute,second) δημιουργεί μια date-time αξία που αντιστοιχεί στον υποδειγμένο χρόνο. date_valid_datetime(year,month,day,hour,minute,second)   επιστρέφει εάν η υποδειγμένοι ημερομηνία και ο χρόνος ισχύουν. date_valid_date(year,month,day)επιστρέφει εάν η υποδειγμένη ημερομηνία ισχύει. date_valid_time(hour,minute,second)  επιστρέφει εάν ο υποδειγμένος χρόνος ισχύει. date_inc_year(date,amount) επιστρέφει μια νέα ημερομηνία που είναι έτη μετά από το υποδειγμένο ποσό ημερομηνίας πρέπει να είναι ένας αριθμός ακέραιων αριθμών. date_inc_month(date,amount) επιστρέφει μια νέα ημερομηνία που είναι μήνες μετά από το υποδειγμένο ποσό ημερομηνίας πρέπει να είναι ένας ακέραιος αριθμός . date_inc_week(date,amount) επιστρέφει μια νέα ημερομηνία που είναι εβδομάδες μετά απο το υποδειγμένο ποσό ημερομηνίας πρέπει να είναι ένας ακέραιος αριθμός date_inc_day(date,amount)  επιστρέφει μια νέα ημερομηνία που είναι μέρες μετά απο το υποδειγμένο ποσό ημερομηνίας πρέπει να είναι ένας ακέραιος αριθμός date_inc_hour(date,amount)επιστρέφει μια νέα ημερομηνία που είναι ώρες μετά απο το υποδειγμένο ποσό ημερομηνίας πρέπει να είναι ένας ακέραιος αριθμός date_inc_minute(date,amount)επιστρέφει μια νέα ημερομηνία που είναι λεπτά μετά απο το υποδειγμένο ποσό ημερομηνίας πρέπει να είναι ένας ακέραιος αριθμός  date_inc_second(date,amount) επιστρέφει μια νέα ημερομηνία που είναι δευτερόλεπτα μετά απο το υποδειγμένο ποσό ημερομηνίας πρέπει να είναι ένας ακέραιος αριθμός  date_get_year(date)επιστρέφει το έτος που αντιστοιχεί στην ημερομηνία. date_get_month(date)επιστρέφει το μήνα που αντιστοιχεί στην ημερομηνία. date_get_week(date)επιστρέφει την εβδομάδα του έτους που αντιστοιχεί στην ημερομηνία. date_get_day(date)επιστροφές η ημέρα του μήνα που αντιστοιχεί στην ημερομηνία. date_get_hour(date)επιστρέφει την ώρα που αντιστοιχεί στην ημερομηνία. date_get_minute(date) επιστρέφει το λεπτό που αντιστοιχεί στην ημερομηνία. date_get_second(date)επιστρέφει τη δεύτερη αντιστοιχία στην ημερομηνία. date_get_weekday(date)επιστρέφει την ημέρα της εβδομάδας που αντιστοιχεί στην ημερομηνία. date_get_day_of_year(date)επιστρέφει την ημέρα του έτους που αντιστοιχεί στην ημερομηνία. date_get_hour_of_year(date)επιστρέφει την ώρα του έτους που αντιστοιχεί στην ημερομηνία. date_get_minute_of_year(date)επιστρέφει το λεπτό του έτους που αντιστοιχεί στην ημερομηνία. date_get_second_of_year(date)επιστρέφει το δευτερόλεπτο του έτους που αντιστοιχεί στην ημερομηνία. date_year_span(date1,date2)επιστρέφει τον αριθμό ετών μεταξύ των δύο ημερομηνιών. Αναφέρονται τα ελλιπή έτη . date_month_span(date1,date2)    επιστρέφει ο αριθμός μηνών μεταξύ των δύο ημερομηνιών. Αναφέρονται η ελλιπή μήνες. date_week_span(date1,date2) επιστρέφει ο αριθμός εβδομάδων μεταξύ των δύο ημερομηνιών.

Page 81: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Αναφέρονται η ελλιπή εβδομάδες. date_day_span(date1,date2) επιστρέφει ο αριθμός ημερών μεταξύ των δύο ημερομηνιών .Αναφέρονται η ελλιπή μέρες date_hour_span(date1,date2)επιστρέφει ο αριθμός ωρών μεταξύ των δύο ημερομηνιών.Αναφέρονται η ελλιπή ώρες. date_minute_span(date1,date2) επιστρέφει ο χρόνος μεταξύ των δύο ημερομηνιών .Αναφεροντε η ελλιπή λεπτά. date_second_span(date1,date2)επιστρέφει ο αριθμός δευτερολέπτων μεταξύ των δύο ημερομηνιών.Αναφέρονται η ελλιπή δευτερόλεπτα date_compare_datetime(date1,date2) συγκρίνει δύο date-time τιμές. Επιστρέφει -1, 0, ή 1 ανάλογα με εάν ο πρώτος είναι μικρότερος, ίσος, ή μεγαλύτερος από τη δεύτερη αξία. date_compare_date(date1,date2)συγκρίνει τις δύο date-time τιμές που λαμβάνουν μόνο το μέρος ημερομηνίας υπόψη. Επιστρέφει -1, 0, ή 1 ανάλογα με εάν ο πρώτος είναι μικρότερος, ίσος, ή μεγαλύτερος από τη δεύτερη αξία. date_compare_time(date1,date2)συγκρίνει τις δύο date-time τιμές που λαμβάνουν μόνο το χρονικό μέρος υπόψη. Επιστρέφει -1, 0, ή 1 ανάλογα με εάν ο πρώτος είναι μικρότερος, ίσος, ή μεγαλύτερος από τη δεύτερη αξία. date_date_of(date)επιστρέφει το μέρος ημερομηνίας της υποδειγμένης date-time αξίας, που θέτει το χρονικό μέρος σε 0. date_time_of(date) επιστρέφει το χρονικό μέρος της υποδειγμένης date-time αξίας, που θέτει το μέρος ημερομηνίας σε 0. date_datetime_string(date) επιστρέφει μια σειρά που δείχνει τη δεδομένους ημερομηνία και το χρόνο με το σχήμα προεπιλογής για το σύστημα. date_date_string(date) επιστρέφει μια σειρά που δείχνει τη δεδομένη ημερομηνία με το σχήμα προεπιλογής για το σύστημα. date_time_string(date)επιστρέφει μια σειρά που δείχνει το δεδομένο χρόνο με το σχήμα προεπιλογής για το σύστημα. date_days_in_month(date)επιστρέφει τον αριθμό ημερών στο μήνα που υποδεικνύεται από τη date-time αξία. date_days_in_year (date)επιστρέφει ο αριθμός ημερών στο έτος που υποδεικνύεται από τη date-time αξία. date_leap_year(date)επιστρέφει εάν το έτος που υποδεικνύεται από τη date-time αξία είναι ένα αυξημένο έτος . date_is_today(date)επιστρέφει εάν η υποδειγμένη date-time αξία είναι σε σήμερα.

 

Game play

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

 

Moving around

Προφανώς, μια σημαντική πτυχή των παιχνιδιών είναι η κίνηση των περιπτώσεων του αντικειμένου. Κάθε περίπτωση έχει δύο ενσωματωμένες μεταβλητές Χ και Υ που δείχνουν τη θέση της περίπτωσης. (Για να είμαι ακριβείς, δείχνουν τη θέση όπου το origin του sprite τοποθετείται. Η θέση (0,0) είναι η πάνω-αριστερή γωνία του δωματίου. Μπορείτε να αλλάξετε τη θέση της περίπτωσης με την αλλαγή των μεταβλητών  του Χ και Υ. Εάν θέλετε το αντικείμενο να κάνει περίπλοκες κινήσεις αυτός είναι ο τρόπος. Βάζετε χαρακτηριστικά αυτόν τον κώδικα στο γεγονός βημάτων για το αντικείμενο.

Εάν το αντικείμενο κινείται με σταθερή ταχύτητα και κατεύθυνση, υπάρχει ένας ευκολότερος τρόπος να γίνει αυτό. Κάθε περίπτωση αντικειμένου έχει μια οριζόντια ταχύτητα (hspeed) και μια κάθετη ταχύτητα (vspeed). Και οι δύο υποδεικνύονται σε pixel per step. Μια θετική οριζόντια ταχύτητα σημαίνει μια κίνηση στα δεξιά, μια

Page 82: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

Υπάρχει ένας διαφορετικός τρόπος να προσδιορίσουμε την κίνηση, χρησιμοποιώντας μια κατεύθυνση (σε μοίρες 0-359), και μια ταχύτητα (δεν πρέπει να είναι αρνητικός αριθμός). Μπορείτε να θέσετε και να διαβάσετε αυτές τις μεταβλητές για να διευκρινίσετε μια αυθαίρετη κίνηση. (Εσωτερικά αυτό αλλάζει τις τιμές για τις hspeed και vspeed). Επίσης υπάρχει η τριβή και η βαρύτητα και η κατεύθυνση βαρύτητας. Τέλος, υπάρχει η λειτουργία motion_add(dir,speed) για να προσθέσει μια κίνηση στην τρέχουσα.

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

Χ  η Χ-θέση της. Υ η Υ-θέση της. xprevious η προηγούμενη Χ-θέση της. yprevious  η προηγούμενη Υ-θέση της. xstart η αρχική Χ-θέση της στο δωμάτιο. ystart η αρχική Υ-θέση της στο δωμάτιο. hspeed  η οριζόντια ταχύτητα. vspeed η κάθετη  ταχύτητα. direction  η τρέχουσα κατεύθυνσή της (0-360, αντίθετη προς τη φορά των δεικτών του ρολογιού, 0 = στα δεξιά). speed  η τρέχουσα ταχύτητά της (ένα pixel ανά βήμα). friction  η τρέχουσα  τριβή (pixel ανά βήμα). gravity  το τρέχον ποσό βαρύτητας (pixel ανά βήμα). gravity_direction κατεύθυνση της βαρύτητας (270 είναι προς τα κάτω). motion_set(dir,speed) θέτει την κίνηση με τη δεδομένη ταχύτητα στην κατεύθυνση dir. motion_add(dir,speed)προσθέτει την κίνηση στην τρέχουσα κίνηση (ως διανυσματική προσθήκη).

Υπάρχει ένας μεγάλος αριθμός λειτουργιών διαθέσιμων που σας βοηθούν στον καθορισμό των κινήσεών σας:

place_free(x,y) επιστρέφει εάν η περίπτωση που τοποθετείται στη θέση (Χ, Υ) είναι ελεύθερη. Αυτό χρησιμοποιείται χαρακτηριστικά ως έλεγχος πριν το αντικείμενο να κινηθεί προς τη νέα θέση. place_empty(x,y)επιστρέφει εάν η περίπτωση τοποθετείται στη θέση (x,y) και δεν συναντά τίποτα. Έτσι αυτή η λειτουργία λαμβάνει υπόψη και τις μη-στερεές περιπτώσεις. place_meeting(x,y,obj)επιστρέφει εάν η περίπτωση που τοποθετείται στη θέση (x,y) συναντά αντικείμενο(object). Μπορεί επίσης να είναι μια ταυτότητα της περίπτωσης, η ειδική λέξη all που σημαίνει μια περίπτωση οποιουδήποτε αντικειμένου, ή η ειδική λέξη other. place_snapped(hsnap,vsnap) επιστρέφει εάν η περίπτωση ευθυγραμμίζεται με τις τιμές του πλέγματος. move_random(hsnap,vsnap)κινεί την περίπτωση προς μια τυχαία ελεύθερη θέση, όπως την αντίστοιχη ενέργεια. move_snap(hsnap,vsnap)ευθυγραμμίζει την περίπτωση, όπως την αντίστοιχη ενέργεια. move_wrap(hor,vert,margin) Καλύπτει την περίπτωση όταν αφήσει το δωμάτι. hor δείχνει εάν το καλύπτει οριζόντια και vert δείχνει εάν το καλύπτει κάθετα. Το margin  δείχνει πόσο μακριά το origin της περίπτωσης, πρέπει να είναι έξω από το δωμάτιο προτού να συμβεί το περικάλυμμα. Έτσι είναι ένα περιθώριο γύρω από το δωμάτιο. Χρησιμοποιείτε χαρακτηριστικά αυτήν την λειτουργία στο Outside event. move_towards_point(x,y,sp)κινεί τις περιπτώσεις με την ταχύτητα SP προς τη θέση (x,y). move_bounce_solid(adv) αναπηδά πάνω στις στερεές περιπτώσεις, όπως την αντίστοιχη ενέργεια το adv δείχνει εάν η αναπήδηση παίρνει επίσης και επικλινείς τοίχους . move_bounce_all(adv) αναπηδά πάνω σε όλες τις περιπτώσεις, οχι μόνο των στερεών. move_contact_solid(dir,maxdist)κινεί την περίπτωση στην κατεύθυνση έως ότου επιτυγχάνεται μια επαφή με ένα στερεό αντικείμενο. Εάν δεν υπάρχει καμία σύγκρουση στην τρέχουσα θέση, η περίπτωση τοποθετείται αμέσως προτού να εμφανιστεί μια σύγκρουση. Εάν ήδη υπάρχει μια σύγκρουση η περίπτωση δεν κινείται. Μπορείτε να διευκρινίσετε τη μέγιστη απόσταση που κινείται (χρησιμοποιήστε έναν αρνητικό αριθμό για μια αυθαίρετη απόσταση). move_contact_all(dir,maxdist)όπως την προηγούμενη λειτουργία αλλά αυτή τη φορά σταματά σε μια

Page 83: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

επαφή με οποιοδήποτε αντικείμενο, όχι μόνο σε στερεά αντικείμενα. move_outside_solid(dir,maxdist)κινεί την περίπτωση στην κατεύθυνση έως ότου δεν βρίσκεται πλέον μέσα σε ένα στερεό αντικείμενο. Εάν δεν υπάρχει καμία σύγκρουση στην τρέχουσα θέση η περίπτωση δεν κινείται. Μπορείτε να διευκρινίσετε τη μέγιστη απόσταση κίνησης (χρησιμοποιήστε έναν αρνητικό αριθμό για μια αυθαίρετη απόσταση). move_outside_all(dir,maxdist)όπως την προηγούμενη λειτουργία αλλά αυτή τη φορά από οποιοδήποτε αντικείμενο, όχι μόνο στερεά αντικείμενα. distance_to_point(Χ,Υ)επιστρέφει την απόσταση του bounding box της τρέχουσας περίπτωσης (x,y).

distance_to_object(obj)επιστρέφει την απόσταση της περίπτωσης στην κοντινότερη περίπτωση αντικειμένου obj. position_empty(Χ,Υ)επιστρέφει εάν δεν υπάρχει τίποτα στη θέση (x,y). position_meeting(x,y,obj) επιστρέφει εάν στη θέση (x,y) υπάρχει μια περίπτωση obj. obj μπορεί να είναι ένα αντικείμενο, μια ταυτότητα της περίπτωσης, ή οι λέξεις κλειδιά self, other, ή all.

 

 

Πορείες

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

path_start(path,speed,endaction,absolute) αρχίζει μια πορεία για την τρέχουσα περίπτωση. Το path είναι το όνομα της πορείας που θέλετε να αρχίσετε. Το speed   είναι η ταχύτητα με την οποία η πορεία πρέπει να ακολουθηθεί. Μια αρνητική ταχύτητα σημαίνει ότι η περίπτωση κινείται προς τα πίσω κατά μήκος της πορείας. Το endaction προσδιορίζει τι πρέπει να συμβεί όταν το τέλος της πορείας επιτυγχάνεται. Οι ακόλουθες τιμές μπορούν να χρησιμοποιηθούν:

0: σταματήστε την πορεία 1: συνεχιστείτε από τη θέση έναρξης (εάν η πορεία δεν είναι κλειστή πηδά στη θέση έναρξης 2:  συνεχιστείτε από την τρέχουσα θέση 3:  αντιστρέψτε την πορεία  

Το επιχείρημα absolute  πρέπει να είναι true ή false. Όταν είναι true οι απόλυτες συντεταγμένες της πορείας χρησιμοποιούνται. Όταν είναι false η πορεία είναι σχετική με την τρέχουσα θέση της περίπτωσης. Για να είμαι ακριβείς, εάν η ταχύτητα είναι θετική, το σημείο έναρξης της πορείας θα τοποθετηθεί στην τρέχουσα θέση και η πορεία προκύπτει από εκεί. Όταν η ταχύτητα είναι αρνητική το τελικό σημείο της πορείας θα τοποθετηθεί στην τρέχουσα θέση και η πορεία γίνετε αντίθετη. path_end()τελειώνει μια πορεία για την τρέχουσα περίπτωση. path_index* δείκτης της τρέχουσας πορείας που η περίπτωση ακολουθεί. Δεν μπορείτε να το αλλάξετε αυτό άμεσα αλλά πρέπει να χρησιμοποιήσετε τη λειτουργία πιο πάνω. path_position η θέση στην τρέχουσα πορεία. 0 είναι η αρχή της πορείας. 1 είναι το τέλος της πορείας. Η αξία πρέπει να βρεθεί μεταξύ 0 και 1. path_positionprevious Η προηγούμενη θέση στην τρέχουσα πορεία. Αυτό μπορεί να χρησιμοποιηθεί π.χ. σε γεγονότα σύγκρουσης για να θέσει τη θέση στην πορεία πίσω στην προηγούμενη θέση. path_speed η ταχύτητα (σε pixels per step) με την οποία η πορεία πρέπει να ακολουθηθεί. Χρησιμοποιήστε μια αρνητική ταχύτητα για κίνηση προς τα πίσω. path_orientation προσανατολισμός  (αντίθετος προς τη φορά των δεικτών του ρολογιού) στον οποίο η πορεία εκτελείται. 0 είναι ο κανονικός προσανατολισμός της πορείας. path_scale η κλίμακα της πορείας. Αυξήστε τη για να καταστήσει την πορεία μεγαλύτερη. 1 είναι η προκαθορισμένη αξία. path_endaction η ενέργεια που πρέπει να εκτελεσθεί στο τέλος της πορείας. Μπορείτε να χρησιμοποιήσετε τις τιμές που υποδεικνύονται ανωτέρω.

Page 84: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

 

Υπολογίζοντας τη κίνηση

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

Διάφορες φόρμες προγραμματισμού κινήσεων παρέχονται από τo Game Maker. Η απλούστερη φόρμα αφήνει μια περίπτωση να πάρει ένα βήμα προς μια ιδιαίτερη θέση,στόχο, προσπαθεί να πάει κατ' ευθείαν (όσο το δυνατών) αλλά παίρνει μια διαφορετική κατεύθυνση αν είναι απαραίτητο. Αυτές οι λειτουργίες πρέπει να χρησιμοποιηθούν στο γεγονός βημάτων μιας περίπτωσης. Αντιστοιχούν στις ενέργειες κινήσεων που είναι επίσης διαθέσιμες:

mp_linear_step(x,y,stepsize,checkall) Αυτή η λειτουργία αφήνει την περίπτωση να πάρει ένα βήμα κατ' ευθείαν προς την υποδειγμένη θέση (x,y). Το μέγεθος του βήματος υποδεικνύεται από το stepsize. Εάν η περίπτωση είναι ήδη στη θέση δεν θα κινηθεί περαιτέρω. Εάν το checkall είναι true η περίπτωση θα σταματήσει όταν χτυπήσει μια περίπτωση οποιουδήποτε αντικειμένου. Εάν είναι false σταματά μόνο κατά τη σύγκρουση μιας στερεάς περίπτωσης. Σημειώστε ότι αυτή η λειτουργία δεν προσπαθεί να αποφύγει (εάν συναντά) ένα εμπόδιο. Αποτυγχάνει απλά σε αυτή την περίπτωση. Η λειτουργία επιστρέφει εάν η θέση στόχου επιτεύχθηκε ή όχι. mp_potential_step(x,y,stepsize,checkall)Όπως στην προηγούμενη λειτουργία, αυτή η λειτουργία αφήνει την περίπτωση να πάρει ένα βήμα προς μια ιδιαίτερη θέση. Αλλά σε αυτήν την περίπτωση προσπαθεί να αποφύγει τα εμπόδια. Όταν η περίπτωση θα συναντήσει μια στερεά περίπτωση (ή οποιαδήποτε περίπτωση όταν το checkall είναι true) θα αλλάξει την κατεύθυνση της κίνησης για να προσπαθήσει να αποφύγει την περίπτωση και να κινηθεί γύρω από αυτήν. Η προσέγγιση δεν είναι εγγυημένη αλλά τις περισσότερες φορές θα κινήσει αποτελεσματικά την περίπτωση προς το στόχο. Η λειτουργία επιστρέφει εάν ο στόχος επιτεύχθηκε ή όχι. mp_potential_settings(maxrot,rotstep,ahead,onspot)Η προηγούμενη λειτουργία κάνει την εργασία της χρησιμοποιώντας διάφορες παραμέτρους που μπορούν να αλλάξουν χρησιμοποιώντας αυτήν την λειτουργία. Συνολικά η μέθοδος λειτουργεί ως εξής. Αρχικά προσπαθεί να κινηθεί κατ' ευθείαν προς το στόχο. Κοιτά μετρημένα βήματα μπροστά που μπορούν να τεθούν με την παράμετρο ahead (η προεπιλογή είναι 3). Μειώνοντας αυτήν την αξία σημαίνει ότι η περίπτωση θα αρχίσει την κατεύθυνση αργότερα. Αυξάνοντας τη σημαίνει ότι θα αρχίσει την κατεύθυνση νωρίτερα. Εάν αυτός ο έλεγχος οδηγεί σε μια σύγκρουση κοιτάει τις κατευθύνσεις στα αριστερά και δεξιά της καλύτερης κατεύθυνσης. Το κάνει αυτό σε βήματα μεγέθους rotstep  (η προεπιλογή είναι 10) μειώνοντας το αυτό δίνει στην περίπτωση περισσότερες δυνατότητες μετακίνησης αλλά θα είναι πιό αργή. Η παράμετρος maxrot  είναι λίγο δυσκολότερο να εξηγηθεί. Η περίπτωση έχει μια τρέχουσα κατεύθυνση   maxrot    (η προεπιλογή είναι 30) προσδιορίζει πόσο επιτρέπεται να αλλάξει την τρέχουσα κατεύθυνσή της ανά βήμα. Έτσι ακόμα κι αν μπορεί να κινηθεί π.χ. κατ' ευθείαν προς το στόχο θα το κάνει μόνο εάν δεν παραβιάζει αυτήν την μέγιστη αλλαγή της κατεύθυνσης. Εάν δώσετε μεγάλη τιμή στο maxrot η περίπτωση μπορεί να αλλάξει την τρέχουσα κατεύθυνσή της πολύ σε κάθε βήμα. Αυτό θα το καταστήσει ευκολότερο να βρει μια κοντή πορεία αλλά η πορεία δεν θα είναι καλή. Εάν δώσετε μικρότερη αξία η πορεία θα είναι ομαλότερη αλλά θα κάνει  πιό μακροχρόνιες παρακάμψεις (και μερικές φορές ακόμη και να αποτύχει να βρει το στόχο). Όταν κανένα βήμα δεν μπορεί να γίνει η συμπεριφορά εξαρτάται από την αξία της παραμέτρου onspot. Εάν το onspot είναι true (η προκαθορισμένη αξία), η περίπτωση θα περιστρέφετε στο σημείο από το ποσό που υποδεικνύεται με το maxrot. Εάν είναι false δεν θα κινηθεί καθόλου. Η ρύθμιση του σε false είναι χρήσιμη για π.χ. αυτοκίνητα αλλά μειώνει την πιθανότητα να βρει μια πορεία.

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

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

Page 85: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

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

mp_linear_path(path,xg,yg,stepsize,checkall)Αυτή η λειτουργία υπολογίζει μια straight-line πορεία για την περίπτωση από την τρέχουσα θέση της στη θέση (xg, yg) χρησιμοποιώντας το υποδειγμένο μέγεθος βημάτων. Χρησιμοποιεί τα βήματα όπως στη λειτουργία mp_linear_step(). Η υποδειγμένη πορεία πρέπει ήδη να υπάρξει και θα επικαλυφθεί από τη νέα πορεία. (Δείτε ένα επόμενο κεφάλαιο σχετικά με το πώς να δημιουργήσει και να καταστρέψει τις πορείες).Η λειτουργία θα επιστρέψει εάν μια πορεία βρέθηκε. Η λειτουργία θα σταματήσει και θα αναφέρει την αποτυχία εάν καμία ευθεία πορεία δεν υπάρχει μεταξύ της έναρξης και του στόχου. Εάν αποτυγχάνει μια πορεία εξακολουθεί να δημιουργείται που τρέχει μέχρι τη θέση όπου η περίπτωση εμποδίστηκε. mp_potential_path(path,xg,yg,stepsize,checkall,factor) Αυτή η λειτουργία υπολογίζει μια πορεία για την περίπτωση από την τρέχον θέση και τον προσανατολισμό της στη θέση (xg, yg) χρησιμοποιώντας το υποδειγμένο μέγεθος βημάτων προσπαθώντας να αποφύγει τη σύγκρουση με τα εμπόδια.   Χρησιμοποιεί τα πιθανά βήματα τομέων, όπως στη λειτουργία mp_potential_step()και επίσης τις παραμέτρους που μπορούν να τεθούν με το mp_potential_settings(). Η υποδειγμένη πορεία πρέπει ήδη να υπάρξει και θα επικαλυφθεί από τη νέα πορεία. (Δείτε ένα επόμενο κεφάλαιο σχετικά με το πώς να δημιουργήσετε και να καταστρέψετε πορείες). Η λειτουργία θα επιστρέψει εάν μια πορεία βρέθηκε. Για να αποφύγετε η λειτουργία να υπολογίζει για πάντα πρέπει να παρέχετε έναν παράγοντα μήκους μεγαλύτερο από 1. Η λειτουργία θα σταματήσει και θα αναφέρει αποτυχία εάν δεν μπορέσει να βρει μια πορεία κοντύτερη από τους χρόνους αυτού του παράγοντα την απόσταση μεταξύ της έναρξης και του στόχου. Ένας παράγοντας 4 είναι κανονικά αρκετά καλός αλλά εάν αναμένετε μακροχρόνιες παρακάμψεις να τον αυξήσετε. Εάν αποτύχει μια πορεία εξακολουθεί να δημιουργείται και τρέχει στην κατεύθυνση του στόχου αλλά δεν θα φθάσει σε αυτόν.

Οι άλλες λειτουργίες χρησιμοποιούν έναν πιο σύνθετο μηχανισμό χρησιμοποιώντας μια προσέγγιση πλέγματος(μερικές φορές αποκαλούμενη αλγόριθμο Α *). Θα είναι επιτυχέστερο στην εύρεση των πορειών (αν και ακόμα κι αυτό μπορεί να αποτύχει) και θα βρει τις κοντύτερες πορείες αλλά απαιτείται περισσότερη εργασία από την πλευρά σας.   Η σφαιρική ιδέα είναι η ακόλουθη. Καταρχήν βάζουμε ένα πλέγμα (το σχετικό ) στο δωμάτιο. Μπορείτε να επιλέξετε να χρησιμοποιήσετε ένα λεπτό πλέγμα (που θα είναι πιό αργό) ή ένα χονδροειδές πλέγμα. Έπειτα, για όλα τα σχετικά αντικείμενα καθορίζουμε τα pixel πλέγματος που αποτελούνται (είτε χρησιμοποιώντας το bounding box είτε το precise checking) και χαρακτηρίζουμε αυτά τα pixel  απαγορευμένα. Έτσι ένα pixel θα χαρακτηριστεί συνολικά απαγορευμένο, ακόμα κι αν μόνο μερικώς επικαλύπτει με ένα εμπόδιο. Τελος διευκρινίζουμε μια έναρξη και ένα στόχο,θέση,(που πρέπει βρίσκετε σε ελεύθερο pixel) και  η λειτουργία υπολογίζει την πιο σύντομη πορεία (κοντά στη σύντομη ) μεταξύ τους . Η πορεία θα τρέξει μεταξύ των κέντρων των ελεύθερων pixel. Έτσι εάν τα pixel είναι αρκετά μεγάλα έτσι ώστε η περίπτωση που τοποθετείται στο κέντρο της θα βρεθεί εντελώς μέσα σε αυτό θα είναι επιτυχές. Αυτή την πορεία μπορείτε τώρα να τη δώσετε σε μια περίπτωση που ακολουθεί.

Η προσέγγιση πλέγματος είναι πολύ ισχυρή (και χρησιμοποιείται σε πολλά επαγγελματικά παιχνίδια) αλλά αυτό απαιτεί να κάνετε προσεκτική δουλειά. Πρέπει να καθορίσετε ποια περιοχή και μέγεθος pixel είναι αρκετά καλά για την επίλυση του παιχνιδιού. Επίσης πρέπει να καθορίσετε ποια αντικείμενα πρέπει να αποφευχθούν και εάν ο ακριβής έλεγχος-precise checking- είναι σημαντικός. Όλες αυτές οι παράμετροι επηρεάζουν έντονα την αποδοτικότητα της προσέγγισης.

Ειδικότερα το μέγεθος των pixel είναι κρίσιμο. Θυμηθείτε ότι τα pixel πρέπει να είναι αρκετά μεγάλα έτσι ώστε το κινούμενο αντικείμενο που τοποθετείται με την προέλευσή του στο κέντρο ενός pixel πρέπει να βρεθεί εντελώς μέσα στο pixel. (Να είστε προσεκτικός για τη θέση origin του αντικειμένου. Επίσης συνειδητοποιήστε ότι μπορείτε να μετατοπίσετε την πορεία εάν το origin του αντικειμένου δεν είναι στο κέντρο της)   Αφ' ετέρου, όσο μικρότερα είναι τα pixel τόσο πιό πιθανές πορείες θα υπάρχουν.

Οι λειτουργίες για την προσέγγιση πλέγματος είναι οι ακόλουθες:

Page 86: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

mp_grid_create(left,top,hcells,vcells,cellwidth,cellheight)Αυτή η λειτουργία δημιουργεί το πλέγμα. Επιστρέφει έναν δείκτη που πρέπει να χρησιμοποιηθεί σε όλες τις άλλες κλήσεις. Μπορείτε να δημιουργήσετε και να διατηρήσετε πολλές δομές πλέγματος την ίδια στιγμή.left και top δείχνει τη θέση της πάνω αριστερής γωνίας του πλέγματος.hcells και vcells δείχνει τον αριθμό οριζόντιων και κάθετων pixel. Τέλος το cellwidth και cellheight δείχνει το μέγεθος των pixel. mp_grid_destroy(id)καταστρέφει την υποδειγμένη δομή πλέγματος και ελευθερώνει τη μνήμη του. Μην ξεχάστε να το καλέσετε αυτό εάν δεν χρειάζεστε τη δομή άλλο. mp_grid_clear_all(id)σημαδεύει όλα τα pixel στο πλέγμα για να είναι ελεύθερα. mp_grid_clear_cell(id,h,v) καθαρίζει το υποδειγμένο pixel. Το pixel0.0  είναι το πάνω αριστερό pixel. mp_grid_clear_rectangle(id,left,top,right,bottom)καθαρίζει όλα τα pixel που κόβουν το υποδειγμένο ορθογώνιο (στις συντεταγμένες δωματίων). mp_grid_add_cell(id,h,v) χαρακτηρίζει το υποδειγμένο pixel απαγορευμένο. Το pixel0.0 είναι το πάνω αριστερό pixel. mp_grid_add_rectangle(id,left,top,right,bottom) χαρακτηρίζει όλα τα pixel που κόβουν το υποδειγμένο ορθογώνιο απαγορευμένα. mp_grid_add_instances(id,obj,prec) χαρακτηρίζει όλα τα pixel που κόβουν μια περίπτωση του υποδειγμένου αντικειμένου απαγορευμένο. Μπορείτε επίσης να χρησιμοποιήσετε μια μεμονωμένη περίπτωση κάνοντας obj την ταυτότητα της περίπτωσης. Επίσης μπορείτε να χρησιμοποιήσετε τη λέξη κλειδί all για να δείξετε όλες τις περιπτώσεις όλων των αντικειμένων .Το prec δείχνει εάν ο ακριβής έλεγχος σύγκρουσης πρέπει να χρησιμοποιηθεί (θα δουλέψει μόνο εάν ο ακριβής έλεγχος επιτρέπεται για το sprite που χρησιμοποιείται από την περίπτωση). mp_grid_path(id,path,xstart,ystart,xgoal,ygoal,allowdiag) υπολογίζει μια πορεία μέσω του πλέγματος .Η πορεία πρέπει να δείξει μια υπάρχουσα πορεία που θα αντικατασταθεί από την υπολογισμένη πορεία. xstart και ystart δείχνει την έναρξη της πορείας και xgoal και ygoal το στόχο Το allowdiag δείχνει εάν οι διαγώνιες κινήσεις επιτρέπονται αντί μόνο οριζόντιες ή κάθετες. Η λειτουργία επιστρέφει εάν πέτυχε στην εύρεση μιας πορείας. (Σημειώστε ότι η πορεία είναι ανεξάρτητη από την τρέχουσα περίπτωση είναι μια πορεία μέσω του πλέγματος , όχι μια πορεία για μια συγκεκριμένη περίπτωση). mp_grid_draw(id)αυτή η λειτουργία σχεδιάζει το πλέγμα με πράσινα pixel που είναι ελεύθερα και κόκκινα κύτταρα που είναι απαγορευμένα. Αυτή η λειτουργία είναι αργή και παρέχετε μόνο ως διορθωτικό εργαλείο.

 

Έλεγχος συγκρούσεων

Κατά την προγραμματισμό των κινήσεων ή απόφαση σχετικά με ορισμένες ενέργειες, είναι συχνά σημαντικό να δούμε  εάν υπάρχουν συγκρούσεις με άλλα αντικείμενα σε ορισμένες θέσεις. Οι ακόλουθες ρουτίνες μπορούν να χρησιμοποιηθούν για αυτό. Όλες έχουν τρία επιχειρήματα από κοινού: Το επιχείρημα obj μπορεί να είναι ένα αντικείμενο, η λέξη κλειδί all, ή η ταυτότητα μιας περίπτωσης( id ). Το επιχείρημα prec δείχνει εάν ο έλεγχος πρέπει να είναι ακριβής ή βασισμένος μόνο στο bounding box της περίπτωσης. Ο ακριβής έλεγχος γίνεται μόνο όταν έχει το sprite για την περίπτωση την ακριβή σύγκρουση ενεργοποιημένη. Το επιχείρημα notme μπορεί να τεθεί σε true για να δείξει ότι καλώντας την περίπτωση δεν πρέπει να ελεγχθεί. Όλες αυτές οι λειτουργίες επιστρέφουν είτε στην ταυτότητα μια από τις περιπτώσεις που συγκρούονται, ή επιστρέφουν μια αρνητική αξία όταν δεν υπάρχει καμία σύγκρουση.

collision_point(Χ,Υ,obj,prec,notme)Αυτή η λειτουργία ελέγχει  εάν στο σημείο (x,y) υπάρχει μια σύγκρουση με υπάρξεις του αντικειμένου obj. collision_rectangle(x1,y1,x2,y2,obj,prec,notme)Αυτή η λειτουργία ελέγχει εάν υπάρχει μια σύγκρουση μεταξύ του (γεμισμένου) ορθογωνίου με την υποδειγμένη απέναντι γωνία από αυτό και των υπάρξεων του αντικειμένου obj. Παραδείγματος χάριν, μπορείτε να το χρησιμοποιήσετε για να εξετάζει εάν μια περιοχή είναι χωρίς εμπόδια. collision_circle(xc,yc,radius,obj,prec,notme)Αυτή η λειτουργία ελέγχει εάν υπάρχει μια σύγκρουση μεταξύ του (γεμισμένου) κύκλου στη θέση (xc, yc) με της δεδομένες ακτίνες και τις υπάρξεις του αντικειμένου obj. Παραδείγματος χάριν, μπορείτε να το χρησιμοποιήσετε για να εξετάζει εάν υπάρχει ένα αντικείμενο κοντά σε μια ιδιαίτερη θέση. collision_ellipse(x1,y1,x2,y2,obj,prec,notme)Αυτή η λειτουργία ελέγχει εάν υπάρχει

Page 87: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

μια σύγκρουση μεταξύ της (γεμισμένης) έλλειψης με υποδειγμένη απέναντι γωνία από αυτό και των υπάρξεων του αντικειμένου obj. collision_line(x1,y1,x2,y2,obj,prec,notme)Αυτή η λειτουργία ελέγχει εάν υπάρχει μια σύγκρουση μεταξύ του τμήματος γραμμών από (x1, y1) (x2, y2) και των υπάρξεων του αντικειμένου obj. Αυτή είναι μια ισχυρή λειτουργία. Μπορείτε π.χ. να το χρησιμοποιήσετε για να εξετάσετε εάν μια περίπτωση μπορεί να δει μια άλλη περίπτωση ελέγχοντας εάν το τμήμα γραμμών μεταξύ τους κόβει έναν τοίχο.

Περιπτώσεις

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

object_index* ο δείκτης του αντικειμένου που δείχνει οτι αυτό είναι μια περίπτωση. Αυτή η μεταβλητή δεν μπορεί να αλλαχτεί. id* το μοναδικό προσδιοριστικό για την περίπτωση (> = 100000). (σημειώστε ότι κατά τον καθορισμό των δωματίων η ταυτότητα της περίπτωσης  είναι πάντα υποδειγμένη). mask_index δείκτης του sprite που χρησιμοποιείται ως μάσκα για τις συγκρούσεις. Δώστε σε αυτό μια αξία -1 για να την κάνετε όπως το sprite_index. solid εάν η περίπτωση είναι στερεά. Αυτό μπορεί να αλλαχτεί κατά τη διάρκεια του παιχνιδιού. persistent εάν η περίπτωση είναι επίμονη και θα επανεμφανιστεί κατά την κίνηση προς ένα άλλο δωμάτιο. Θέλετε συχνά να κλείσετε το persistent σε ορισμένες στιγμές. (Παραδείγματος χάριν εάν επιστρέφετε στο πρώτο δωμάτιο).

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

instance_count*αριθμός περιπτώσεων που υπάρχουν αυτήν την στιγμή στο δωμάτιο. instance_id[0..n-1]*η ταυτότητα της ιδιαίτερης περίπτωσης. Εδώ το n είναι ο αριθμός της περίπτωσης.

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

{  maxid = -1;  maxpower = 0;  for (i=0; i<instance_count; i+=1)  {    iii = instance_id[i];    if (iii.object_index == unit)    {      if (iii.power > maxpower)        {maxid = iii; maxpower = iii.power;}    }  }

   }

Page 88: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Μετά από το loop maxid περιέχει την ταυτότητα της μονάδας με τη μεγαλύτερη δύναμη. (Μην καταστρέψτε τις περιπτώσεις κατά τη διάρκεια ενός τέτοιου loop επειδή θα αφαιρεθούν αυτόματα από τη σειρά και κατά συνέπεια θα αρχίσει να παραβλέπει περιπτώσεις).

instance_find(obj,n)επιστρέφει την ταυτότητα ( n+1)περίπτωση τύπου obj. obj μπορεί να είναι ένα αντικείμενο ή η λέξη κλειδί all. Εάν δεν υπάρχει, το ειδικό αντικείμενο επιστρέφει noone . Σημειώστε ότι η ανάθεση των περιπτώσεων στις περίπτωσης ταυτότητας αλλάζει κάθε βήμα έτσι δεν μπορείτε να χρησιμοποιήσετε τιμές από τα προηγούμενα βήματα. instance_exists(obj)επιστρέφει εάν μια περίπτωση τύπου obj υπάρχει. obj μπορεί να είναι ένα αντικείμενο, μια ταυτότητα περίπτωσης, ή η λέξη κλειδί all. instance_number(obj)επιστρέφει τον αριθμό περιπτώσεων τύπου obj. obj μπορεί να είναι ένα αντικείμενο ή η λέξη κλειδί all. instance_position(x,y,obj)επιστρέφει την ταυτότητα της περίπτωσης τύπου obj στη θέση (x,y). Όταν πολλές περιπτώσεις είναι σε εκείνη την θέση η πρώτη επιστρέφεται. obj μπορεί να είναι ένα αντικείμενο ή η λέξη κλειδί all. Εάν δεν υπάρχει, το ειδικό αντικείμενο επιστρέφεται noone . instance_nearest(x,y,obj)επιστρέφει τη ταυτότητα της περίπτωσης τύπου obj πλησιέστερα στο (x,y). obj μπορεί να είναι ένα αντικείμενο ή η λέξη κλειδί all. instance_furthest(x,y,obj)επιστρέφει η ταυτότητα της περίπτωσης τύπου obj όσο το δυνατόν πιο μακριά από (x,y). obj μπορεί να είναι ένα αντικείμενο ή η λέξη κλειδί all. instance_place(Χ,Υ,obj)επιστρέφει την ταυτότητα της περίπτωσης τύπου obj συναντιέται όταν τοποθετείται η τρέχουσα περίπτωση στη θέση (x,y). obj μπορεί να είναι ένα αντικείμενο ή η λέξη κλειδί all. Εάν δεν υπάρχει, το ειδικό αντικείμενο noone επιστρέφεται.

Οι ακόλουθες λειτουργίες μπορούν να χρησιμοποιηθούν για τη δημιουργία και την καταστροφή των περιπτώσεων. instance_create(Χ,Υ,obj)δημιουργεί μια περίπτωση obj στη θέση (x,y). Η λειτουργία επιστρέφει την ταυτότητα της νέας περίπτωσης. instance_copy(performevent)δημιουργεί ένα αντίγραφο της τρέχουσας περίπτωσης. Το επιχείρημα δείχνει εάν το γεγονός δημιουργιών πρέπει να εκτελεσθεί για το αντίγραφο. Η λειτουργία επιστρέφει την ταυτότητα του νέου αντιγράφου. instance_destroy()καταστρέφει την τρέχουσα περίπτωση. instance_change(obj,perf)αλλάζει την περίπτωση obj. perf δείχνει εάν θα εκτελεστούν τα destroy και creation events. position_destroy(Χ,Υ)καταστρέφει όλες τις περιπτώσεις των οποίων το sprite περιέχει τη θέση (x,y). position_change(Χ,Υ,obj,perf)αλλάζει όλες τις περιπτώσεις στη θεση (x,y) σε obj. perf δείχνει εάν θα εκτελεστούν τα  destroy και creation events.

 

 

Απενεργοποιώντας περιπτώσεις

Όταν δημιουργείτε μεγάλο δωμάτιο, παραδείγματος χάριν σε παιχνίδια platform , με ένα μικρό οπτικό πεδίο, πολλές περιπτώσεις βρίσκονται έξω από την οθόνη. Τέτοιες περιπτώσεις είναι εν τούτοις ακόμα ενεργές και θα εκτελέσουν τα γεγονότα τους. Επίσης κατά τον έλεγχο  της σύγκρουσης οι περιπτώσεις αυτές λαμβάνονται υπόψη. Αυτό μπορεί να κοστίσει πολύ χρόνο, το οποίο δεν είναι συχνά απαραίτητο. (Παραδείγματος χάριν, συχνά δεν είναι σημαντικό οι περιπτώσεις έξω από το οπτικό πεδίο να κινούνται). Για να λύσει αυτό το πρόβλημα το Game Maker περιέχει μερικές λειτουργίες για να απενεργοποιήσει και να ενεργοποιήσει τις περιπτώσεις. Πριν τις χρησιμοποιείτε πρέπει  να καταλάβετε πώς λειτουργούν.

Όταν απενεργοποιείτε τις περιπτώσεις υπό κάποια έννοια αφαιρούνται από το παιχνίδι. Δεν είναι ορατές και ούτε γεγονότα εκτελούνται για αυτές. Έτσι για όλες τις ενέργειες και τις λειτουργίες απλά δεν υπάρχουν. Αυτό σώζει πολύ χρόνο αλλά πρέπει να είστε προσεκτικοί. Παραδείγματος χάριν, όταν διαγράφετε όλες τις περιπτώσεις ενός ιδιαίτερου τύπου, οι απενεργοποιημένες περιπτώσεις δεν διαγράφονται (επειδή δεν υπάρχουν). Έτσι μην σκεφτείτε ότι ένα π.χ. κλειδί που ένας παίχτης παίρνει μπορεί να ξεκλειδώσει μια απενεργοποιημένη πόρτα.

Page 89: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

Εδώ είναι οι διαθέσιμες ρουτίνες:

instance_deactivate_all(notme)απενεργοποιεί όλες τις περιπτώσεις στο δωμάτιο. Εάν το notme είναι true η ζητούμενη περίπτωση δεν απενεργοποιείται (που κανονικά είναι αυτό που θέλετε). instance_deactivate_object(obj)απενεργοποιεί όλες τις περιπτώσεις στο δωμάτιο του δεδομένου αντικειμένου. Μπορείτε επίσης να χρησιμοποιήσετε all για να δείξετε ότι όλες οι περιπτώσεις πρέπει να απενεργοποιηθούν ή η ταυτότητα μιας περίπτωσης για να απενεργοποιήσετε μια μεμονωμένη περίπτωση. instance_deactivate_region(left,top,width,height,inside,notme)απενεργοποιεί όλες τις περιπτώσεις στην υποδειγμένη περιοχή (δηλαδή εκείνων των οποίων το bounding box βρίσκετε μερικώς μέσα στην περιοχή). Εάν μέσα είναι false οι περιπτώσεις έξω από την περιοχή απενεργοποιούνται. Εάν το notme είναι true η ζητούμενη περίπτωση δεν απενεργοποιείται (που κανονικά είναι αυτό που θέλετε). instance_activate_all()ενεργοποιεί όλες τις περιπτώσεις στο δωμάτιο. instance_activate_object(obj)ενεργοποιεί όλες τις περιπτώσεις στο δωμάτιο του δεδομένου αντικειμένου. Μπορείτε επίσης να χρησιμοποιήσετε all για να δείξετε ότι όλες οι περιπτώσεις πρέπει να ενεργοποιηθούν ή η ταυτότητα μιας περίπτωσης για να ενεργοποιηθεί μια μεμονωμένη περίπτωση. instance_activate_region(left,top,width,height,inside) ενεργοποιεί όλες τις περιπτώσεις στην υποδειγμένη περιοχή. Εάν μέσα είναι false οι περιπτώσεις έξω από την περιοχή ενεργοποιούνται.

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

{  instance_activate_all();  instance_deactivate_region(view_xview[0],view_yview[0],                        view_wview[0],view_hview[0],false,true);

   }

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

 

Συγχρονισμός

Τα καλά παιχνίδια απαιτούν τον προσεκτικό συγχρονισμό για να συμβούν καταστάσεις. Ευτυχώς το Game Maker κάνει τον μεγαλύτερο μέρος του συγχρονισμού για σας. Σιγουρεύει ότι τα πράγματα θα συμβαίνουν σε ένα σταθερό ρυθμό. Αυτός ο ρυθμός καθορίζεται κατά των καθορισμό των δωματίων. Αλλά μπορείτε να τον αλλάξετε χρησιμοποιώντας τη σφαιρική μεταβλητή room_speed. Ετσι παραδείγματος χάριν, μπορείτε αργά να αυξήσετε την ταχύτητα του παιχνιδιού, κάνοντας το δυσκολότερο, με την προσθήκη ενός πολύ μικρού ρυθμού (όπως 0.001) σε κάθε βήμα. Εάν η μηχανή σας είναι αργή η ταχύτητα μπορεί να μην επιτευχθεί. Αυτό μπορεί να ελεγχθεί χρησιμοποιώντας τη μεταβλητή fps που ελέγχει συνεχώς τον πραγματικό αριθμό πλαισίων ανά δευτερόλεπτο. Τέλος, για κάποιο προχωρημένο συγχρονισμό μπορείτε να χρησιμοποιήσετε τη μεταβλητή current_time που δίνει τον αριθμό χιλιοστών του δευτερολέπτου αφότου ο υπολογιστής άρχισε. Εδώ είναι όλοι η συλλογή των διαθέσιμων μεταβλητών (μόνο η πρώτη μπορεί να αλλαχτεί):

room_speed η ταχύτητα του παιχνιδιού στο τρέχον δωμάτιο (σε βήματα ανά δευτερόλεπτο-steps per second). fps* αριθμός πλαισίων που σχεδιάζονται πραγματικά ανά το δεύτερο. current_time* ο αριθμός χιλιοστών του δευτερολέπτου που έχουν περάσει από τότε που το σύστημα άρχισε. current_year* το τρέχον έτος.

Page 90: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

current_month* ο τρέχων μήνας. current_day* η τρέχουσα ημέρα. current_weekday* η τρέχουσα ημέρα της εβδομάδας (1=Κυριακή…, 7=Σαββατο). current_hour* η τρέχουσα ώρα. current_minute* το τρέχων λεπτό. current_second* τρέχων δευτερόλεπτο.

Μερικές φορές θα θελήσετε να σταματήσετε το παιχνίδι για λίγο. Για αυτό, χρησιμοποιήστε τη λειτουργία sleep.

sleep(numb)σταματά το παιχνίδι στα δεδομένα χιλιοστά του δευτερολέπτου.

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

alarm[0..7 ] αξία του υποδειγμένουυ ρολογιού . (Σημειώστε ότι τα ρολόγια ξανά λειτουργούν όταν το γεγονός ρολογιών για το αντικείμενο περιέχει ενέργειες!)

Έχουμε δει ότι για σύνθετο συγχρονισμό μπορείτε να χρησιμοποιήσετε τις time lines. Οι ακόλουθες μεταβλητές ασχολούνται με αυτό:

timeline_index δείκτης της χρονικής γραμμής που συνδέεται με την περίπτωση. Μπορείτε να το θέσετε σε μια ιδιαίτερη χρονική στιγμή για να χρησιμοποιηθεί μια φόρα. Θέστε το σε -1 για να σταματήσει μια χρονική στιγμή για την περίπτωση. timeline_position η τρέχουσα θέση μέσα στη χρονική στιγμή. Μπορείτε να το αλλάξετε αυτό για να πηδήσετε ορισμένα μέρη ή για να επαναλάβετε γραμμές. timeline_speed κανονικά, σε κάθε βήμα η θέση στη χρονική στιγμή αυξάνεται κατά 1. Μπορείτε να το αλλάξετε αυτό το ρυθμό με τον καθορισμό αυτής της μεταβλητής σε μια διαφορετική αξία. Μπορείτε να χρησιμοποιήσετε πραγματικούς αριθμούς όπως 0,5. Εάν η αξία είναι μεγαλύτερη από το ένα, αρκετές στιγμές μπορούν να συμβούν μέσα στο ίδιο χρονικό βήμα. Όλες θα εκτελεσθούν στη σωστή σειρά, έτσι καμία ενέργεια δεν θα παραληφθεί.

 

 

Δωμάτια

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

 {  if (room != room_last)  {    room_goto_next();  }  else  {    game_end();  }

    }

 

Οι ακόλουθες μεταβλητές και οι λειτουργίες υπάρχουν και εξετάζουν τα δωμάτια.

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

Page 91: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

room_first* δείκτης του πρώτου δωματίου στο παιχνίδι. room_last* δείκτης του τελευταίου δωματίου στο παιχνίδι. room_goto(numb) Πηγαίνει στο δωμάτιο που έχουμε υποδείξει. room_goto_previous() πηγαίνει στο προηγούμενο δωμάτιο. room_goto_next() πηγαίνει στο επόμενο δωμάτιο. room_restart()καινούριο ξεκίνημα του τρέχον δωματίου. room_previous(numb)επιστροφή στο προηγούμενο δωμάτιο (-1 = κανένα). room_next(numb) επιστροφή στο επόμενο δωμάτιο (-1 = κανένα). game_end() τέλος του παιχνιδιού. (Για να είμαι ακριβείς, το παιχνίδι τελειώνει αφότου το χειρόγραφο εκτελεστει, όχι κατά τη διάρκεια του). game_restart επανεκκίνηση του παιχνιδιού. (Για να είμαι ακριβείς, το παιχνίδι ξεκινά αφότου το χειρόγραφο εκτελεστεί, όχι κατά τη διάρκεια του).

Τα δωμάτια έχουν διάφορες πρόσθετες ιδιότητες:

room_width* πλάτος του δωματίου σε pixels . room_height* ύψος του δωματίου σε pixels . room_caption o τίτλος για το δωμάτιο που επιδεικνύεται στον τίτλο του παραθύρου. room_persistent εάν το τρέχον δωμάτιο θα είναι επίμονο.

Πολλά παιχνίδια προσφέρουν στον παίκτη τη δυνατότητα να σώνουν και να φορτώνουν ένα σωζόμενο παιχνίδι. Στο Game Maker αυτό συμβαίνει αυτόματα όταν ο παίχτης πατήσει < F5 > για την αποθήκευση και < F6 > για τη φόρτωση. Μπορείτε επίσης να σώσετε και να φορτώσετε παιχνίδια από μέσα από ένα κομμάτι του κώδικα (σημειώστε ότι η φόρτωση πραγματοποιείται μόνο στο τέλος του τρέχοντος βήματος).

game_save(string) σώζει το παιχνίδι στο αρχείο με τη σειρά ονόματος. game_load(string) φορτώνει το παιχνίδι από το αρχείο με τη σειρά ονόματος.

Παρακαλώ συνειδητοποιήστε ότι μόνο το βασικό στοιχείο παιχνιδιών σώζεται. Εάν παραδείγματος χάριν παίζετε ένα ιδιαίτερο κομμάτι της μουσικής, η ακριβής θέση στη μουσική δεν σώζεται. Επίσης οι αλλαγμένοι πόροι δεν σώζονται. Άλλα πράγματα που δεν σώζονται είναι το περιεχόμενο των δεδομένων, particles, και multiplayer game.

 

 

 

Score

Aλλες σημαντικές πτυχές πολλών παιχνιδιών είναι το αποτέλεσμα, η υγεία, και ο αριθμός ζωών. Το Game Maker παρακολουθεί το αποτέλεσμα σε μια σφαιρική μεταβλητή score και τον αριθμό ζωών στη σφαιρική μεταβλητή lives. Μπορείτε να αλλάξετε το αποτέλεσμα απλά αλλάζοντας την αξία αυτής της μεταβλητής. Το ίδιο πράγμα ισχύει για την υγεία και τις ζωές. Εάν οι ζωές είναι μεγαλύτερες από 0 και γίνονται μικρότερες από ή  ίσες σε 0 το γεγονός no-more-lives εκτελείται για όλες τις περιπτώσεις. Εάν δεν θέλετε να παρουσιάσετε το αποτέλεσμα και της ζωές στον τίτλο του παραθύρου, θέστε τη μεταβλητή show_score, κ.λ.π., σε false. Επίσης μπορείτε να αλλάξετε τον τίτλο. Για πιό περίπλοκα  παιχνίδια παρουσιάστε το αποτέλεσμα εσείς οι ίδιοι.

score  το τρέχον αποτέλεσμα. lives αριθμός ζωών. health η τρέχουσα υγεία (0-100). show_score εάν θέλετε να παρουσιάζετε το αποτέλεσμα στον τίτλο των παραθύρων. show_lives εάν θέλετε να παρουσιάζονται η ζωές στον τίτλο των παραθύρων show_health εάν θέλετε να παρουσιάζετε η υγεία στον τίτλο των παραθύρων. caption_score ο τίτλος που χρησιμοποιείται για το αποτέλεσμα. caption_lives ο τίτλος που χρησιμοποιείται για τον αριθμό ζωών. caption_health ο τίτλος που χρησιμοποιείται για την υγεία.

 

Page 92: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Δημιουργώντας γεγονότα

Όπως ξέρετε, το Game Maker είναι ένα απόλυτο πρόγραμμα γεγονότων. Όλες οι ενέργειες συμβαίνουν ως αποτέλεσμα των γεγονότων. Υπάρχουν πολλά διαφορετικά γεγονότα. Η δημιουργία και η καταστροφή των γεγονότων συμβαίνει όταν μια περίπτωση δημιουργείται ή καταστρέφεται. Σε κάθε βήμα, το σύστημα χειρίζεται αρχικά τα γεγονότα ρολογιού. Έπειτα χειρίζεται τα γεγονότα πληκτρολογίου και ποντικιού και έπειτα το γεγονός βημάτων. Μετά από αυτό οι περιπτώσεις τίθενται στις νέες θέσεις τους και μετά το γεγονός σύγκρουσης εκτελείτε. Τέλος το γεγονός σχεδιασμού χρησιμοποιείται για να σχεδιάσει τις περιπτώσεις (σημειώστε ότι όταν υπάρχουν πολλές απόψεις το γεγονός σχεδιασμού εκτελείτε πολλές φορές σε κάθε βήμα). Μπορείτε επίσης να εφαρμόσετε ένα γεγονός στην τρέχουσα περίπτωση από μέσα από ένα κομμάτι του κώδικα. Οι ακόλουθες λειτουργίες υπάρχουν:

event_perform(type,numb) εκτελεί το γεγονός του υποδειγμένου τύπου στην τρέχουσα περίπτωση. Οι ακόλουθοι τύποι γεγονότος μπορούν να υποδειχθούν:

 

ev_createev_destroyev_stepev_alarmev_keyboardev_mouseev_collisionev_otherev_drawev_keypressev_keyrelease

 

Όταν υπάρχουν πολλά γεγονότα του δεδομένου τύπου, το numb μπορεί να χρησιμοποιηθεί για να διευκρινίσει το ακριβές γεγονός. Για τα ρολόγια το γεγονός numb μπορεί να κυμανθεί από 0 έως 7. Για το γεγονός πληκτρολογίου πρέπει να χρησιμοποιήσετε το keycode για το πλήκτρο. Για τα γεγονότα ποντικιού μπορείτε να χρησιμοποιήσετε τις ακόλουθες σταθερές:

ev_left_buttonev_right_buttonev_middle_buttonev_no_buttonev_left_pressev_right_pressev_middle_pressev_left_releaseev_right_releaseev_middle_releaseev_mouse_enterev_mouse_leaveev_global_pressev_global_releaseev_joystick1_leftev_joystick1_rightev_joystick1_upev_joystick1_downev_joystick1_button1ev_joystick1_button2ev_joystick1_button3ev_joystick1_button4ev_joystick1_button5ev_joystick1_button6

Page 93: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

ev_joystick1_button7ev_joystick1_button8ev_joystick2_leftev_joystick2_rightev_joystick2_upev_joystick2_downev_joystick2_button1ev_joystick2_button2ev_joystick2_button3ev_joystick2_button4ev_joystick2_button5ev_joystick2_button6ev_joystick2_button7ev_joystick2_button8

 

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

ev_outsideev_boundaryev_game_startev_game_endev_room_startev_room_endev_no_more_livesev_no_more_healthev_animation_endev_end_of_pathev_user0ev_user1ev_user2ev_user3ev_user4ev_user5ev_user6ev_user7

 

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

ev_step_normalev_step_beginev_step_end

 

event_perform_object(obj,type,numb)Αυτή η λειτουργία δουλεύει όπως η λειτουργία πιο πάνω εκτός από το ότι αυτή τη φορά μπορείτε να διευκρινίσετε τα γεγονότα σε ένα άλλο αντικείμενο. Σημειώστε ότι οι ενέργειες σε αυτά τα γεγονότα εφαρμόζονται στην τρέχουσα περίπτωση, όχι στις περιπτώσεις του δεδομένου αντικειμένου. event_user(numb)Στα άλλα γεγονότα(other events) μπορείτε επίσης να καθορίσετε 8 γεγονότα χρηστών. Αυτοί εκτελούνται μόνο εάν καλείτε αυτήν την λειτουργία.το numb πρέπει να βρεθεί στη σειρά 0 έως 7. event_inherited()εκτελεί το κληρονομημένο γεγονός. Αυτό λειτουργεί μόνο εάν η περίπτωση έχει ένα αντικείμενο γονέα.

Page 94: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

event_type* ο τύπος του τρέχοντος γεγονότος  event_number* ο αριθμός του τρέχοντος γεγονότος  event_object* ο δείκτης αντικειμένου για τον οποίο το τρέχον γεγονός εκτελείται. event_action* ο δείκτης της ενέργειας που εκτελείται αυτήν την περίοδο (0 είναι το πρώτο στο γεγονός, κ.λπ)..

 

Διάφορες μεταβλητές και λειτουργείες

Εδώ είναι μερικές μεταβλητές και λειτουργίες που εξετάζουν τα λάθη.

error_occurred δείχνει εάν ένα λάθος έχει εμφανιστεί.  error_last  ένδειξη του τελευταίου μηνύματος λάθους.  show_debug_message(str)παρουσιάζει τη σειρά σε  debug mode.

Οι ακόλουθες λειτουργίες υπάρχουν και επιτρέπουν σε σας να ελέγξετε εάν ορισμένες μεταβλητές υπάρχουν με τις οποίες μπορείτε να θέσετε τις μεταβλητές και να πάρετε τις τιμές τους. Σε όλες αυτές τις λειτουργίες το μεταβλητό όνομα το παίρνει ως string!

variable_global_exists(name)επιστρέφει εάν μια σφαιρική μεταβλητή με το δεδομένο όνομα (string) υπάρχει. τα variable_local_exists(name)επιστρέφει εάν μια τοπική μεταβλητή με το δεδομένο όνομα (string) υπάρχει για την τρέχουσα περίπτωση. variable_global_get(name)επιστρέφει την αξία της σφαιρικής μεταβλητής με το δεδομένο όνομα (string). variable_global_array_get(name,IND)επιστρέφει την αξία του δείκτη IND της σφαιρικής μεταβλητής σειράς με το δεδομένο όνομα (string). variable_global_array2_get(name,ind1,ind2)επιστρέφει την αξία του δείκτη ind1, ind2 της σφαιρικής 2-διαστατικής μεταβλητής σειράς με το δεδομένο όνομα (string). variable_local_get(name)επιστρέφει την αξία της τοπικής μεταβλητής με το δεδομένο όνομα (string). variable_local_array_get(name,IND)επιστρέφει την αξία του δείκτη IND της τοπικής μεταβλητής σειράς με το δεδομένο όνομα (string). variable_local_array2_get(name,ind1,ind2)επιστρέφει την αξία του δείκτη ind1, ind2 της τοπικής 2-διαστατικής μεταβλητής σειράς με το δεδομένο όνομα (string). variable_global_set(name,value)θέτει τη σφαιρική μεταβλητή με το δεδομένο όνομα (string) στη δεδομένη αξία. variable_global_array_set(name,IND,value)θέτει το δείκτη IND στη σφαιρική μεταβλητή σειράς με το δεδομένο όνομα (string) στη δεδομένη αξία. variable_global_array2_set(name,ind1,ind2,value)θέτει το δείκτη ind1, ind2 στη σφαιρική 2-διαστατική μεταβλητή σειράς με το δεδομένο όνομα (string) στη δεδομένη αξία. variable_local_set(name,value)θέτει την τοπική μεταβλητή με το δεδομένο όνομα (string) στη δεδομένη αξία. variable_local_array_set(name,IND,value)θέτει το δείκτη IND στην τοπική μεταβλητή σειράς με το δεδομένο όνομα (string) στη δεδομένη αξία. variable_local_array2_set(name,ind1,ind2,value)θέτει το δείκτη ind1, ind2 στην τοπική 2-διαστατική μεταβλητή σειράς με το δεδομένο όνομα (string) στη δεδομένη αξία.

Παραδείγματος χάριν, μπορείτε να γράψετε:  {  if variable_global_exists('ammunition')    global.ammunition += 1  else    global.ammunition = 0

Page 95: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

    }

 

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

Μπορείτε να αλλάξετε την προτεραιότητα του προγράμματος χρησιμοποιώντας την ακόλουθη λειτουργία:

set_program_priority(priority)θέτει την προτεραιότητα για το πρόγραμμα. Μπορείτε να δείξετε μια αξία μεταξύ -3 και + 3. Μια αξία -3 σημαίνει ότι το πρόγραμμα θα τρέξει μόνο εάν καμία άλλη διαδικασία στον υπολογιστή δεν θα απαιτήσει το χρόνο επεξεργασίας,. Οι τιμές -2 και -1 είναι κάτω από κανονικό, έτσι άλλες διαδικασίες θα πάρουν την προτεραιότητα. 0 είναι η κανονική αξία. + 1 και + 2 δίνει πιό υψηλή προτεραιότητα, ενδεχομένως και υψηλότερη ταχύτητα και την ομαλότερη ροή παιχνιδιών. Αλλά άλλες διαδικασίες θα πάρουν λιγότερο χρόνο επεξεργασίας. + 3 δείχνει το πραγματικό χρόνο. Σε πραγματικό χρόνο βασικά όλος ο χρόνος διανέμεται στο παιχνίδι. Αυτό μπορεί να οδηγήσει σε σοβαρά προβλήματα με άλλες εφαρμογές που τρέχουν στον υπολογιστή. Επίσης το λειτουργικό μπορεί να μην ανταποκρίνεται, έτσι χρησιμοποιήστε το μόνο εάν θέλετε όλο το χρόνο του επεξεργαστή..

Αλληλεπίδραση του χρήστη

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

 

 

Το πληκτρολόγιο

Για την αλληλεπίδραση πληκτρολογίου, οι ακόλουθες μεταβλητές και λειτουργίες υπάρχουν:

keyboard_lastkey Keycode του τελευταίου πλήκτρου που πιέζεται. Δείτε πιο κάτω για τις σταθερές keycode. Μπορείτε να το αλλάξετε, π.χ. θέστε το  σε 0 εάν το χειριστήκατε. keyboard_key Keycode του τρέχοντος πλήκτρου που πιέζεται (βλ. πιο κάτω 0 κανένα). keyboard_lastchar τελευταίος χαρακτήρας που πιέζεται (ως σειρά). keyboard_string σειρά που περιέχει τους τελευταίους το πολύ-πολύ 1024 χαρακτήρες που πληκτρολογούνται. Αυτή η σειρά περιέχει μόνο τους εκτυπώσιμους χαρακτήρες που πληκτρολογούνται. Επίσης το σωστό είναι να πιεστεί το πλήκτρο backspace για το σβήσιμο του τελευταίου χαρακτήρα.

Μερικές φορές είναι χρήσιμο να χαρτογραφηθεί ένα κλειδί σε άλλο. Παραδείγματος χάριν θα θελήσετε να επιτρέψετε στο παίχτη να χρησιμοποιήσει και τα βέλη και το numpad. Παρά την αναπαραγωγή των ενεργειών μπορείτε να χαρτογραφήσετε τα κλειδιά numpad στα βέλη. Επίσης θα θελήσετε να εφαρμόσετε έναν μηχανισμό στον οποίο ο παίχτης να μπορεί να θέσει τα κλειδιά στο παιχνίδι . Για αυτό οι ακόλουθες λειτουργίες είναι διαθέσιμες:

keyboard_set_map(key1,key2)χαρτογραφεί το πλήκτρο με το keycode key1 key2. keyboard_get_map(key)επιστρέφει την τρέχουσα χαρτογράφηση για το πλήκτρο. keyboard_unset_map()επαναρίθμησε όλα τα πλήκτρα.

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

keyboard_check(key)επιστρέφει εάν το πλήκτρο με το ιδιαίτερο keycode είναι αυτήν την περίοδο πιεσμένο. keyboard_check_pressed(key)επιστρέφει εάν το πλήκτρο με το ιδιαίτερο keycode πιέστηκε από

Page 96: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

το τελευταίο βήμα. keyboard_check_released(key)επιστρέφει εάν το πλήκτρο με το ιδιαίτερο keycode απελευθερώθηκε από το τελευταίο βήμα. keyboard_check_direct(key)επιστρέφει εάν το πλήκτρο με το ιδιαίτερο keycode πιέζεται με το να ελέγξει το υλικό άμεσα. Το αποτέλεσμα είναι ανεξάρτητο ποιας εφαρμογής έχει την εστίαση. Ειδικότερα μπορείτε να χρησιμοποιήσετε keycodes vk_lshift, vk_lcontrol, vk_lalt, vk_rshift, vk_rcontrol και vk_ralt για να ελέγξετε εάν  το αριστερό ή δεξιό shift, ή το πλήκτρο ALT πιέζονται.

Οι ακόλουθες ρουτίνες μπορούν να χρησιμοποιηθούν για να χειριστούν το  πληκτρολόγιο: keyboard_get_numlock()επιστρέφει εάν το numlock πιέζετε. keyboard_set_numlock(on)θέτει (true) ή (false) το numlock. keyboard_key_press(key)μιμείται έναν τύπο του κλειδιού με keycode. keyboard_key_release(key)μιμείται μια απελευθέρωση του κλειδιού με δειγμένη keycode.

Οι ακόλουθες σταθερές για τα εικονικά keycodes υπάρχουν:

vk_nokey keycode που αντιπροσωπεύει ότι κανένα πλήκτρο δεν πιέζεται  vk_anykey keycode που αντιπροσωπεύει ότι οποιοδήποτε πλήκτρο πιέζεται  vk_left keycode για το αριστερό βέλος  vk_right keycode για το δεξιό βέλος  vk_up keycode για το επάνω βέλος  vk_down keycode για το κάτω βέλος vk_enter για το enter vk_escape για το esc vk_space για το space vk_shift για το shiftvk_control για το control  vk_alt για το ALT vk_backspace για το backspace vk_tab για το tab vk_home για το home vk_end για το end vk_delete για το deletevk_insert για το insertvk_pageup  για το pageup  vk_pagedown για το pagedown  vk_pause για το pause vk_printscreen για το printscreenvk_f1... vk_f12 keycodes για τα πλήκτρα λειτουργίας F1 για F12 vk_numpad0...vk_numpad9 πλήκτρα αριθμού στο αριθμητικό πληκτρολόγιο  vk_multiply πολλαπλασιασμός στο αριθμητικό πληκτρολόγιο vk_divide διαίρεση στο αριθμητικό πληκτρολόγιο vk_add πρόσθεση στο αριθμητικό πληκτρολόγιο vk_subtract αφαίρεση  στο αριθμητικό πληκτρολόγιο vk_decimal δεκαδικά πλήκτρα στο αριθμητικό πληκτρολόγιο

Για τα γράμματα χρησιμοποιήστε παραδείγματος χάριν ord('A'). (Για κεφαλαία γράμματα). Για τα ψηφία χρησιμοποιήστε παραδείγματος χάριν ord('5’) για να πάρει το < 5 > . Οι ακόλουθες σταθερές μπορούν μόνο να χρησιμοποιηθούν στο keyboard_check_direct:

vk_lshift αριστερό shift vk_lcontrol αριστερό control vk_lalt αριστερό  ALT  vk_rshift δεξί shift  vk_rcontrol δεξί controlvk_ralt δεξί alt

Page 97: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

{  if (keyboard_check(vk_left))  x -= 4;  if (keyboard_check(vk_right)) x += 4;  if (keyboard_check(vk_up))    y -= 4;  if (keyboard_check(vk_down))  y += 4;

  }

 

Φυσικά είναι πολύ ευκολότερο να τεθεί αυτό  απλά στα γεγονότα πληκτρολογίων.

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

keyboard_clear(key)καθαρίζει την κατάσταση του πλήκτρου. Αυτό σημαίνει ότι δεν θα παράγει πλέον τα γεγονότα πληκτρολογίου έως ότου ξαναρχίζει. io_clear()καθαρίζει όλο το πληκτρολόγιο. io_handle() ενημερώνει  το πληκτρολόγιο. keyboard_wait()περιμένει μέχρι ο χρήστης να πατήσει ένα πλήκτρο.

 

Το ποντίκι

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

mouse_x * Χ-συντεταγμένη του ποντικιού στο δωμάτιο. Δεν μπορείτε να την αλλάξετε. mouse_y * Υ-συντεταγμένη του ποντικιού στο δωμάτιο. Δεν μπορείτε να την αλλάξετε. mouse_button η περίοδο με πιεσμένο το κουμπί του ποντικιού. Σαν αξία χρησιμοποιήστε mb_none , mb_any, mb_left, mb_middle, ή mb_right. mouse_lastbutton τελευταία φορά που πιέστηκε το κουμπί του ποντικιού.

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

mouse_check_button(numb)επιστρέφει εάν το κουμπί του ποντικιού είναι αυτήν την περίοδο πιεσμένο (Σαν αξία χρήσημοποιήστε  mb_none , mb_left, mb_middle, ή mb_right). mouse_check_button_pressed(numb)επιστρέφει εάν το κουμπί του ποντικιού πιέστηκε από το τελευταίο βήμα. mouse_check_button_released(numb)επιστρέφει εάν το κουμπί του ποντικιού απελευθερώθηκε από το τελευταίο βήμα.

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

mouse_clear(button)καθαρίζει την κατάσταση του κουμπιού του ποντικιού. Αυτό σημαίνει ότι δεν θα παραγάγει πλέον τα γεγονότα ποντικιών έως ότου το απελευθερώνει ο χρήστης και το πιέζει πάλι. io_clear ()καθαρίζει όλο το πληκτρολόγιο. io_handle ()ενημερώνει  το πληκτρολόγιο.  mouse_wait ()περιμένει μέχρι ο χρήστης να πατήσει ένα πλήκτρο.

 

Το joystick 

Υπάρχουν μερικά γεγονότα που συνδέονται με τα joystick. Αλλά για να έχει τον πλήρη έλεγχο των joysticks υπάρχει ένα σύνολο λειτουργιών για να εξετάσει τα joysticks. Το Game Maker υποστηρίζει μέχρι δύο joysticks. Έτσι όλες αυτές οι λειτουργίες παίρνουν μια ταυτότητα joystick ως επιχείρημα.

Page 98: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

joystick_exists(id)επιστρέφει η ταυτότητα joystic (1 ή 2). joystick_name(id)επιστρέφει το όνομα του joystick joystick_axes(id)επιστρέφει τον αριθμό αξόνων του joystick. joystick_buttons(id)επιστρέφει τον αριθμό κουμπιών του joystick. joystick_has_pov(id)επιστρέφει εάν το joystick έχει τις ικανότητες point-of-view. joystick_direction(id)επιστρέφει το keycode (vk_numpad1 σε vk_numpad9) που αντιστοιχεί στην κατεύθυνση της ταυτότητας joystick (1 ή 2). joystick_check_button(id,numb)επιστρέφει εάν το κουμπί joystick πιέζεται (numb 1-32). joystick_xpos(id) επιστρέφουν τη θέση (-1 έως 1) του Χ-άξονα της ταυτότητας joystick. joystick_ypos(id) επιστρέφει την Υ-θέση joystick. joystick_zpos(id) επιστρέφει τη z-θέση joystick (εάν έχει έναν z-άξονα). joystick_rpos(id) επιστρέφει τη θέση joystick (ή τον τέταρτο άξονα). joystick_upos(id) επιστρέφει την u-θέση joystick (ή τον πέμπτο άξονα). joystick_vpos(id) επιστρέφει τη v-θέση joystick (ή τον έκτο άξονα). joystick_pov (id) επιστρέφει τα joystick  point-of view. Αυτό είναι μια γωνία μεταξύ 0 και 360 μοιρών. 0 είναι προς τα εμπρός, 90 στα δεξιά, 180 προς τα πίσω και 270 στα αριστερά. Όταν καμία κατεύθυνση δεν πιέζεται από το χρήστη -1 επιστρέφεται.

 

Γραφικά

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

Οι πληροφορίες για τη γραφική παράσταση παιχνιδιών είναι οι παρακάτω

 

Sprites και εικόνες

Κάθε αντικείμενο έχει ένα sprite(εικόνα) συνδεδεμένο με αυτό. Αυτό είναι είτε μια ενιαία εικόνα είτε αυτό αποτελείται από πολλές εικόνες. Για κάθε περίπτωση του αντικειμένου το πρόγραμμα σχεδιάζει την αντίστοιχη εικόνα στην οθόνη, με την προέλευσή του (origin )(όπως καθορίζεται στις ιδιότητες ενός sprite ) στη θέση (x,y) της περίπτωσης. Όταν υπάρχουν πολλές εικόνες, εμφανίζονται επαναλαμβανόμενα για να πάρουμε ένα animation. Υπάρχουν διάφορες μεταβλητές που έχουν επιπτώσεις στον τρόπο που η εικόνα σχεδιάζετε. Αυτές μπορούν να χρησιμοποιηθούν για να αλλάξουν τα αποτελέσματα. Κάθε περίπτωση έχει τις ακόλουθες μεταβλητές:

visible εάν είναι ορατή είναι true (1) η εικόνα σχεδιάζετε, διαφορετικά δεν σχεδιάζετε(0). Οι αόρατες περιπτώσεις είναι ακόμα ενεργές και δημιουργούν γεγονότα σύγκρουσης μόνο που δεν τις βλέπετε. Ο καθορισμός της διαφάνειας σε false είναι χρήσιμος π.χ.για  τα αντικείμενα ελεγκτών (τα κάνετε μη-στερεά για να αποφύγετε τα γεγονότα σύγκρουσης) ή τους κρυμμένους διακόπτες. sprite_index αυτό είναι ο δείκτης του τρέχον sprite για την περίπτωση. Μπορείτε να το αλλάξετε για να δώσετε στην περίπτωση διαφορετικό sprite. Σαν αξία μπορείτε να χρησιμοποιήσετε τα ονόματα διαφορετικών sprites που καθορίσατε. sprite_width* δείχνει το πλάτος ενός sprite. Αυτήν την αξία δεν μπορείτε να την αλλάξετε αλλά θα θελήσετε να την χρησιμοποιήσετε. sprite_height* δείχνει το ύψος ενός sprite. Αυτήν την αξία δεν μπορείτε να την αλλάξετε αλλά θα θελήσετε να την χρησιμοποιήσετε sprite_xoffset* δείχνει το οριζόντιο όφσετ ενός sprite όπως καθορίζεται στις ιδιότητες του sprite . Αυτήν την αξία δεν μπορείτε να την αλλάξετε αλλά θα θελήσετε να την χρησιμοποιήσετε. sprite_yoffset* δείχνει το κάθετο όφσετ ενός sprite όπως καθορίζεται στις ιδιότητες του sprite . Αυτήν την αξία δεν μπορείτε να την αλλάξετε αλλά θα θελήσετε να την χρησιμοποιήσετε. image_number* ο αριθμός υπο-εικόνων για το τρέχον sprite για την περίπτωση (δεν μπορεί να

Page 99: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

αλλαχτεί). image_index όταν η εικόνα έχει πολλές υπο-εικόνες το πρόγραμμα τις επαναλαμβάνει. Αυτή η μεταβλητή δείχνει την τρέχουσα υπο-εικόνα (είναι αριθμημένη αρχίζοντας από το 0). Μπορείτε να αλλάξετε την τρέχουσα εικόνα με την αλλαγή αυτής της μεταβλητής. Το πρόγραμμα θα συνεχίσει το animation, αρχίζοντας από την νέα αξία. (Η αξία μπορεί να έχει ένα κλασματικό μέρος. Σε αυτήν την περίπτωση στρογγυλεύεται πάντα προς τα κάτω για να λάβει την εικόνα που σχεδιάζετε). image_speed η ταχύτητα με την οποία επαναλαμβάνονται οι υπο-εικόνες. Μια αξία 1 δείχνει ότι σε κάθε βήμα παίρνουμε την επόμενη εικόνα. Οι μικρότερες τιμές θα αλλάζουν τις υπο-εικόνες πιο αργά, σχεδιάζοντας σε μεγαλύτερους χρόνους Οι μεγαλύτερες τιμές θα πηδήσουν τις υπo-εικόνες για να καταστήσουν την κίνηση γρηγορότερη. Μερικές φορές θέλετε μια ιδιαίτερη υπο-εικόνα να είναι ορατή και δεν θέλετε όλο το animation. Αυτό μπορεί να επιτευχθεί με τον καθορισμό της ταχύτητας σε 0 και την επιλογή του σωστού subimage. Παραδείγματος χάριν, υποθέστε ότι έχετε ένα αντικείμενο που μπορεί να περιστραφεί και δημιουργείτε sprite που έχει τις υπο-εικόνες για διάφορους προσανατολισμούς (αντίθετα προς τη φορά των δεικτών του ρολογιού). Έτσι, στο γεγονός βημάτων του αντικειμένου μπορείτε να θέσετε 

{  image_index = direction * image_number/360;  image_speed = 0;

      }

depth κανονικά οι εικόνες σχεδιάζονται με την σειρά στην οποία οι περιπτώσεις δημιουργούνται. Μπορείτε να το αλλάξετε αυτό με τον καθορισμό του βάθους εικόνας. Η προκαθορισμένη αξία είναι 0, εκτός αν την θέσετε σε μια διαφορετική αξία στις ιδιότητες αντικειμένου. (Μπορείτε επίσης να χρησιμοποιήσετε αρνητικές τιμές). Οι περιπτώσεις με το υψηλότερο βάθος θα βρεθούν πίσω από τις περιπτώσεις με ένα χαμηλότερο βάθος. Ο καθορισμός του βάθους θα εγγυηθεί ότι οι περιπτώσεις σχεδιάζονται στη σειρά που θέλετε (π.χ. το αεροπλάνο μπροστά από το σύννεφο). Οι περιπτώσεις background(Background ) πρέπει να έχουν ένα υψηλό (θετικό) βάθος, και οι περιπτώσεις πρώτου πλάνου πρέπει να έχουν ένα χαμηλό (αρνητικό) βάθος. image_xscale Ο παράγοντας κλίμακας  κάνει μεγαλύτερες ή μικρότερες εικόνες. Μια αξία 1 δείχνει το κανονικό μέγεθος. Πρέπει χωριστά να θέσετε το οριζόντιο xscale και το κάθετο yscale. Η αλλαγή της κλίμακας αλλάζει επίσης τις τιμές για το πλάτος και το ύψος της εικόνας και επηρεάζει τα γεγονότα σύγκρουσης. Η αλλαγή της κλίμακας μπορεί να χρησιμοποιηθεί για να πάρει μια τρισδιάστατη επίδραση. Μπορείτε να χρησιμοποιήσετε μια αξία -1 για να γυρίσετε το sprite οριζόντια. image_yscale Το κάθετο yscale. 1 δεν έχει κλίμακα. Μπορείτε να χρησιμοποιήσετε μια αξία -1 για να γυρίσετε το νsprite κάθετα. image_angle η γωνία με την οποία το sprite περιστρέφεται. Διευκρινίζετε αυτό στους βαθμούς, αντίθετα προς τη φορά των δεικτών του ρολογιού. Μια αξία 0 δεν δείχνει καμία περιστροφή. Αυτή η μεταβλητή μπορεί μόνο να τεθεί στην δηλωμένη έκδοση! image_alpha Η διαφάνεια  κατά το σχεδιασμό της εικόνας. Μια αξία 1 είναι η κανονική αδιαφανής  μια αξία 0 είναι απολύτως διαφανής. image_blend το χρώμα συνδυασμού κατά το σχεδιασμό του sprite. Μια αξία c_white είναι η προεπιλογή. Όταν διευκρινίζετε μια διαφορετική αξία η εικόνα συνδυάζεται με αυτό το χρώμα. Αυτό μπορεί να χρησιμοποιηθεί για το χρωματισμό του sprite . Αυτή η μεταβλητή μπορεί μόνο να τεθεί στην δηλωμένη έκδοση! bbox_left* αριστερή πλευρά του bounding box που χρησιμοποιεί η εικόνα της περίπτωσης (λαμβάνετε και η κλίμακα υπόψη). bbox_right* δεξιά πλευρά του bounding box που χρησιμοποιεί η εικόνα της περίπτωσηςbbox_top* η πάνω πλευρά του bounding box που χρησιμοποιεί η εικόνα της περίπτωσηςbbox_bottom* η κάτω πλευρά του bounding box που χρησιμοποιεί η εικόνα της περίπτωσης 

Φόντο

Κάθε δωμάτιο μπορεί να έχει μέχρι 8 background. Επίσης έχει ένα χρώμα background. Όλες τις πτυχές αυτών των background μπορείτε να τις αλλάξετε απο ένα κομμάτι του κώδικα χρησιμοποιώντας τις ακόλουθες μεταβλητές (σημειώστε ότι μερικές είναι σειρές που κυμαίνονται από 0 έως 7, δείχνοντας διαφορετικά background):

background_color χρώμα background για το δωμάτιο. background_showcolor Πότε να καθαρίσει το παράθυρο στο χρώμα background.

Page 100: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

background_visible[0..7 ] εάν η ιδιαίτερη εικόνα background είναι ορατή. background_foreground[0..7 ] εάν το background είναι πραγματικά ένα πρώτο πλάνο. background_index[0..7 ] δείκτης εικόνας background για το background. background_x[0..7 ] θέση Χ της εικόνας background. background_y[0... 7 ]θέση Υ της εικόνας background. background_width[0...7 ]* πλάτος της εικόνας background. background_height[0... 7 ]* ύψος της εικόνας background. background_htiled[0..7 ]  οριζόντιο tiled. background_vtiled[0..7 ] κάθετο tiled. background_xscale[0..7 ] οριζόντιος παράγοντας κλίμακας για το background. (Αυτή πρέπει να είναι θετική δεν μπορείτε να χρησιμοποιήσετε μια αρνητική αξία για να αντιστρέψετε το background). background_yscale[0..7 ] κάθετος παράγοντας κλίμακας για το background. (Αυτή πρέπει να είναι θετική δεν μπορείτε να χρησιμοποιήσετε μια αρνητική αξία για να γυρίσετε το background). background_hspeed[0..7 ] οριζόντιο scrolling  του background (ταχύτητα σε εικονοκύτταρα ανά βήμα). background_vspeed[0..7 ] κάθετο scrolling  του background (ταχύτητα σε εικονοκύτταρα ανά βήμα).background_blend[0..7 ] χρώμα συνδυασμού στη χρήση κατά τη σχεδιασμό του background. Μια αξία του c_white είναι η προεπιλογή.   διαθέσιμο μόνο στην δηλωμένη έκδοση! background_alpha[0..7 ] Διαφάνεια (στη χρήση κατά το σχεδιασμό του background). Μια αξία 1 είναι η κανονική ρύθμιση μια αξία 0 είναι απολύτως διαφανής.

Σχεδιασμός sprites και backgrounds

Τα αντικείμενα κανονικά συνδέονται με το sprite και σε οτι σχεδιάζει αυτό. Αλλά μπορείτε να χρησιμοποιήσετε το draw event για να σχεδιάζετε άλλα πράγματα. Αυτό το τμήμα και το επόμενο σας δίνουν τις πληροφορίες για αυτό.Καταρχήν, υπάρχουν λειτουργίες που σχεδιάζουν sprites και backgrounds με διαφορετικούς τρόπους. Αυτές σας δίνουν περισσότερο έλεγχο στην εμφάνιση ενός sprite. Επίσης μπορείτε να σχεδιάσετε (μέρη) απο backgrounds .

draw_sprite(sprite,subimg,Χ,Υ)σχεδιάζει της υπο-εικόνες (-1 = η τρέχων) του sprite  με το origin  του στη θέση (x,y). (Χωρίς το συνδυασμό χρώματος και καμία διαφάνεια).draw_sprite_stretched (sprite,subimg,Χ,Υ,W,h) σχεδιάζει το sprite που τεντώθηκε έτσι ώστε να γεμίζει την περιοχή με την πάνω-αριστερή γωνία (x,y) και το πλάτος w και το ύψος h draw_sprite_tiled(sprite,subimg,x,y) σχεδιάζει το sprite που τεντώνεται έτσι ώστε να γεμίζει ολόκληρο το δωμάτιο (x,y) είναι η θέση όπου ένα από τα sprites σχεδιάζετε. draw_sprite_part(sprite,subimg,left,top,right,bottom,x,y)σχεδιάζει το υποδειγμένο μέρος του subimage subimg (-1 = το τρεχων) sprite με το origin του στη θέση (x,y). draw_background(back,Χ,Υ) σχεδιάζει το background στη θέση (x,y). (Χωρίς το συνδυασμό χρώματος και καμία διαφάνεια). draw_background_stretched(back,x,y,w,h)σχεδιάζει το background που τεντώθηκε στην υποδειγμένη περιοχή. draw_background_tiled(back,x,y)σχεδιάζει το background  που τεντώθηκε έτσι ώστε να γεμίζει ολόκληρο το δωμάτιο. draw_background_part(back,left,top,right,bottom,x,y)σχεδιάζει το υποδειγμένο μέρος του background με το origin του στη θέση (x,y).

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

draw_sprite_ext(sprite,subimg,x,y,xscale,yscale,rot,color,alpha) σχεδιάζει το sprite που άλλαξε η κλίμακα με τους παράγοντες xscale και yscale και αντίθετα προς τη φορά των δεικτών του ρολογιού με μοίρες, το χρώμα είναι συνδυασμός (χρήση c_white για κανέναν συνδυασμό) και άλφα δείχνει τον παράγοντα διαφάνειας με τον οποίο οι εικόνες συγχωνεύονται με το υπόβαθρό της.Μια αξία 0 καθιστά το sprite απολύτως διαφανές. Μια αξία 1 το καθιστά απολύτως στερεό. Αυτή η λειτουργία μπορεί να δημιουργήσει μεγάλη επίδραση (παραδείγματος χάριν μερικώς διαφανείς εκρήξεις). draw_sprite_stretched_ext(sprite,subimg,x,y,w,h,color,alpha) σχεδιάζει το sprite που τεντώνεται έτσι ώστε να γεμίζει την περιοχή με την  γωνία (x,y) και το πλάτος w και το χρώμα ύψους h είναι το

Page 101: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

χρώμα συνδυασμού. Άλφα δείχνει τη ρύθμιση διαφάνειας. draw_sprite_tiled_ext(sprite,subimg,x,y,xscale,

yscale,color,alpha) σχεδιάζει το sprite που τεντώνεται έτσι ώστε να γεμίζει ολόκληρο το δωμάτιο αλλά τώρα με τους παράγοντες κλίμακας και μια ρύθμιση χρώματος και διαφάνειας. draw_sprite_part_ext(sprite,subimg,left,top,

right,bottom,x,y,xscale,yscale,color,alpha) σχεδιάζει το υποδειγμένο μέρος του subimage subimg (-1 = το τρεχων) sprite με το origin του στη θέση (x,y) αλλά τώρα με τους παράγοντες κλίμακας και μια ρύθμιση χρώματος και διαφάνειας. draw_sprite_general(sprite,subimg,left,top,

right,bottom,x,y,xscale,yscale,rot,c1,c2,c3,c4

,alpha) Η γενικότερη λειτουργία σχεδίων. Σχεδιάζει το υποδειγμένο μέρος του subimage subimg (-1 = το τρέχων) sprite με το origin του στη θέση (x,y) αλλά τώρα με τους παράγοντες κλίμακας, μια γωνία περιστροφής, ένα χρώμα για κάθε μια από τις τέσσερις γωνίες (top-left, top-right, bottom-right, and bottom-left), και μια αξία άλφα διαφάνειας.

draw_background_ext(back,x,y,xscale,yscale,rot,color

,alpha) σχεδιάζει το background με την κλίμακα και περιστρέφεται με το χρώμα συνδυασμού (χρήση c_white για κανέναν συνδυασμό) και τη διαφάνεια άλφα (0-1). draw_background_stretched_ext(back,x,y,w,h,color,alpha) σχεδιάζει το background που τεντώνεται στο υποδειγμένο χρώμα περιοχών είναι το χρώμα συνδυασμού και άλφα δείχνει τη ρύθμιση διαφάνειας. draw_background_tiled_ext(back,x,y,xscale,yscale,

color,alpha) σχεδιάζει το background που τεντώνεται έτσι ώστε γεμίζει ολόκληρο το δωμάτιο αλλά τώρα με τους παράγοντες κλίμακας και μια ρύθμιση χρώματος και διαφάνειας. draw_background_part_ext(back,left,top,right,bottom,

x,y,xscale,yscale,color,alpha) σχεδιάζει το υποδειγμένο μέρος του background με την προέλευσή του στη θέση (x,y) αλλά τώρα με τους παράγοντες κλίμακας και μια ρύθμιση χρώματος και διαφάνειας. draw_background_general(back,left,top,right

,bottom,x,y,xscale,yscale,rot,c1,c2,c3,c4,alpha) Η γενικότερη λειτουργία σχεδίων.   Σχεδιάζει το υποδειγμένο μέρος του background με την προέλευσή του στη θέση (x,y) αλλά τώρα με τους παράγοντες κλίμακας, μια γωνία περιστροφής, ένα χρώμα για κάθε μια από τις τέσσερις γωνιες (top-left, top-right, bottom-right, and bottom-left), και μια αξία άλφα διαφάνειας.  

Σχεδιάζοντας Σχήματα

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

draw_clear(col) καθαρίζει ολόκληρο το δωμάτιο στο δεδομένο χρώμα (κανένας άλφα συνδυασμός). draw_point(Χ,Υ) σχεδιάζει ένα σημείο (x,y) στο τρέχον χρώμα. draw_line(x1,y1,x2,y2) σχεδιάζει μια γραμμή από (x1, y1) (x2, y2). draw_rectangle(x1,y1,x2,y2,outline) σχεδιάζει ένα ορθογώνιο.   Το outline δείχνει εάν μόνο το περίγραμμα πρέπει να σχεδιαστεί (true) ή πρέπει να την γεμίσουν (false).

Page 102: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

draw_roundrect(x1,y1,x2,y2,outline) σχεδιάζει ένα στρογγυλεμένο ορθογώνιο. outline δείχνει εάν μόνο το περίγραμμα πρέπει να σχεδιαστεί (true) ή πρέπει να την γεμίσουν (false). draw_triangle(x1,y1,x2,y2,x3,y3,outline) σχεδιάζει ένα τρίγωνο. outline δείχνει εάν μόνο  το περίγραμμα πρέπει να σχεδιαστεί (true) ή πρέπει να την  γεμίσουν (false). draw_circle(Χ,Υ,r,outline) σχεδιάζει έναν κύκλο (x,y) με την ακτίνα r. outline δείχνει εάν μόνο το περίγραμμα πρέπει να σχεδιαστεί (true) ή πρέπει να την γεμίσουν (false). draw_ellipse(x1,y1,x2,y2,outline) σχεδιάζει μια έλλειψη. outline δείχνει εάν μόνο  το περίγραμμα πρέπει να σχεδιαστεί (true) ή πρέπει να την γεμίσουν (false). draw_arrow(x1,y1,x2,y2,size) σχεδιάζει ένα βέλος από (x1, y1) (x2, y2). το μέγεθος δείχνει το μέγεθος του βέλους σε pixels. draw_button(x1,y1,x2,y2,up) σχεδιάζει ένα κουμπί, up δείχνει εάν θα ναι επάνω (1) ή κάτω (0). draw_path(path,x,y,absolute) Με αυτήν την λειτουργία μπορείτε να σχεδιάσετε την υποδειγμένη πορεία στο δωμάτιο με την έναρξή της στη θέση (x,y). Εάν είναι το absolute true η πορεία σχεδιάζετε στη θέση όπου καθορίστηκε και οι τιμές του Χ και του Υ αγνοούνται. draw_healthbar(x1,y1,x2,y2,amount,backcol,mincol,maxcol,direction,showback,showborder) Με αυτήν την λειτουργία μπορείτε να σχεδιάσετε έναν healthbar (ή οποιαδήποτε μπάρα που δείχνει κάποια αξία, όπως π.χ. τη ζημία). Τα επιχειρήματα x1, y1, x2 και y2 δείχνουν τη συνολική περιοχή για τη μπάρα, amount δείχνει το ποσοστό της μπάρας που πρέπει να γεμίσει (πρέπει να βρεθεί μεταξύ 0 και το 100). backcol είναι το χρώμα του background για τη μπάρα mincol και το maxcol δείχνει το χρώμα όταν το ποσό είναι 0 και 100 αντίστοιχα. Για ένα ποσό μεταξύ του χρώματος παρεμβάλλεται. Έτσι μπορείτε εύκολα να κάνετε μια μπάρα που πηγαίνει π.χ. από πράσινο σε κόκκινο. Η κατεύθυνση είναι η κατεύθυνση στην οποία η μπάρα σχεδιάζετε. 0 δείχνει ότι η μπάρα δένεται στα αριστερά, 1 στα δεξιά, 2 στην κορυφή και 3 στο κάτω σημείο. Τελος το showback δείχνει εάν ένα κιβώτιο background πρέπει να παρουσιαστεί και το showborder δείχνει  εάν το κιβώτιο και η μπάρα πρέπει να έχουν μια μαύρη γραμμή.

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

draw_set_color(col) θέτει το χρώμα που χρησιμοποιείται από τώρα και στο εξής για τα πρώτα σχέδία. draw_set_alpha(alpha) θέτει τη διαφάνεια που χρησιμοποιείται από τώρα και στο εξής για τα πρώτα σχέδία. Πρέπει να βρεθείτε στη σειρά 0-1, 0 είναι πλήρως διαφανής, 1 είναι πλήρως αδιαφανές. draw_get_color() επιστρέφει το χρώμα σχεδίων που χρησιμοποιείται για τα πρώτα σχέδία. draw_get_alpha() επιστρέφει την άλφα αξία που χρησιμοποιείται για τα πρώτα σχέδία.

Όλη η σειρά των προκαθορισμένων χρωμάτων είναι διαθέσιμη:

c_aquac_blackc_bluec_dkgrayc_fuchsiac_grayc_greenc_limec_ltgrayc_maroonc_navyc_olivec_purplec_redc_silverc_tealc_whitec_yellow

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

Page 103: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

make_color_rgb(red,green,blue) επιστρέφει ένα χρώμα με τα υποδειγμένα κόκκινα, πράσινα, και μπλε συστατικά, όπου το κόκκινο, πράσινο και μπλε πρέπει να είναι τιμές μεταξύ 0 και 255. make_color_hsv(hue,saturation,value) επιστρέφει ένα χρώμα με τα υποδειγμένα τμήματα χρώματος, κορεσμού και αξίας (κάθε ένα μεταξύ 0 και 255).  color_get_red(col) επιστρέφει το κόκκινο συστατικό του χρώματος. color_get_green(col) επιστρέφει το πράσινο συστατικό του χρώματος. color_get_blue(col) επιστρέφει το μπλε συστατικό του χρώματος. color_get_hue(col) επιστρέφει τη χροιά του χρώματος. color_get_saturation(col) επιστρέφει το τμήμα κορεσμού του χρώματος. color_get_value(col) επιστρέφει το τμήμα αξίας του χρώματος. merge_color(col1,col2,amount) επιστρέφει ένα συγχωνευμένο χρώμα col1 και col2. Η συγχώνευση καθορίζεται από το ποσό. Μια αξία 0 αντιστοιχεί col1, μια αξία 1 col2, και τις τιμές ενδιάμεσα στις συγχωνευμένες τιμές.

Οι ακόλουθες διάφορες λειτουργίες υπάρχουν. draw_getpixel(Χ,Υ) επιστρέφει το χρώμα του pixel που αντιστοιχεί στη θέση (x,y) στο δωμάτιο. Αυτό δεν είναι πολύ γρήγορο, έτσι χρησιμοποιήστε το με προσοχή. screen_save(fname) σώζει μια bmp εικόνα της οθόνης στο δεδομένο όνομα αρχείου. Χρήσιμο για screenshots. screen_save_part (fname,Χ,Υ,W,h) σώζει μέρος της οθόνης στο δεδομένο όνομα αρχείου.

Γραμματοσειρά και κείμενο

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

Για το σχεδιασμο κείμενου οι ακόλουθες λειτουργίες υπάρχουν:

draw_set_font(font) θέτει την γραμματοσειρά που θα χρησιμοποιηθεί κατά το σχεδιασμό του κειμένου. Χρήση -1 για να θέσει την γραμματοσειρά προεπιλογής (Arial 12). draw_set_halign(halign) θέτει την οριζόντια ευθυγράμμιση χρησιμοποιούμενη κατά το σχεδιασμό του κειμένου. Επιλέξτε μιας από τις ακόλουθες σταθερές ως τιμές:

fa_left fa_center  fa_right 

draw_set_valign(valign) θέτει την κάθετη ευθυγράμμιση χρησιμοποιούμενη κατά το σχεδιασμό του κειμένου. Επιλέξτε μιας από τις ακόλουθες σταθερές ως τιμές:

fa_top  fa_middle  fa_bottom 

draw_text(Χ,Υ,string) σχεδιάζει τη σειρά στη θέση (x,y), χρησιμοποιώντας το χρώμα σχεδίων και άλφα. Το σύμβολο  #  ερμηνεύεται ως χαρακτήρας αλλαγών γραμμής. Κατ' αυτό τον τρόπο μπορείτε να σχεδιάσετε πολλές γραμμές κείμενων. (Χρησιμοποιήστε  \# για να πάρει το σύμβολο # ). draw_text_ext(x,y,string,sep,w) παρόμοιος με την προηγούμενη ρουτίνα αλλά μπορείτε να διευκρινίσετε δύο περισσότερα πράγματα. Καταρχήν, το SEP δείχνει την απόσταση χωρισμού μεταξύ των γραμμών κειμένου σε πολλές γραμμές κείμενου. Χρήση -1 για να πάρει την απόσταση προεπιλογής. Χρήση W για να δείξει το πλάτος του κειμένου σε pixel. Οι γραμμές που είναι πιό μεγάλες από αυτό το πλάτος είναι χωρισμένες. Χρησιμοποιήστε -1 για να μη χωρίσετε τις γραμμές. string_width(string) πλάτος της σειράς στην τρέχουσα γραμματοσειρά δεδομένου ότι θα σχεδιαζόταν χρησιμοποιώντας τη λειτουργία draw_text(). Μπορεί να χρησιμοποιηθεί για τη ακριβή γραφική παράσταση . string_height(string) ύψος της σειράς στην τρέχουσα γραμματοσειρά δεδομένου ότι θα σχεδιαζόταν χρησιμοποιώντας τη λειτουργία draw_text(). string_width_ext(string,sep,w) πλάτος της σειράς στην τρέχουσα γραμματοσειρά δεδομένου

Page 104: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

ότι θα σχεδιαζόταν χρησιμοποιώντας τη λειτουργία draw_text_ext(). Μπορεί να χρησιμοποιηθεί για τη ακριβή γραφική παράσταση. string_height_ext(string,sep,w) ύψος της σειράς στην τρέχουσα γραμματοσειρά δεδομένου ότι θα σχεδιαζοταν χρησιμοποιώντας τη λειτουργία draw_text_ext().

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

draw_text_transformed(x,y,string,xscale,yscale,angle) σχεδιάζει τη σειρά στη θέση (x,y) με τον ίδιο τρόπο όπως πιο πάνω, αλλά την κλιμακώνετε οριζόντια και κάθετα με τους υποδειγμένουςυς παράγοντες και την περιστρέφετε αντίθετα προς τη φορά των δεικτών του ρολογιού με μοίρες. draw_text_ext_transformed(x,y,string,sep,w,xscale,yscale,angle) συνδυάζει τη λειτουργία draw_text_ext και draw_text_transformed.. Το καθιστά πιθανό να σχεδιάσει πολλές γραμμές στο κείμενο που περιστρέφεται και που κλιμακώνετε. draw_text_color(x,y,string,c1,c2,c3,c4,alpha) σχεδιάζει τη σειρά στη θέση (x,y) όπως πιο πάνω. Τα τέσσερα χρώματα διευκρινίζουν τα χρώματα του top-left, top-right, bottom-right, and bottom-left γωνίας του κειμένου.   alpha είναι η άλφα διαφάνεια που χρησιμοποιείται (0-1). draw_text_ext_color(x,y,string,sep,w,c1,c2,c3,c4,alpha) παρόμοιο με το draw_text_ext() αλλά με χρωματισμένη κορυφή. draw_text_transformed_color(x,y,string,xscale,yscale,angle,c1,c2,c3,c4,alpha) παρόμοιο με το draw_text_transformed() αλλά με χρωματισμένη κορυφή. . draw_text_ext_transformed_color(x,y,string,sep,w,xscale,yscale,angle,c1,c2,c3,c4,alpha) παρόμοιο με το draw_text_ext_transformed()αλλά με χρωματισμένη κορυφή. 

 

Προχωρημένες λειτουργίες σχεδιασμού

Αυτή η λειτουργία είναι διαθέσιμη μόνο στην δηλωμένη έκδοση του Game Maker.

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

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

draw_point_color(Χ,Υ,col1) σχεδιάζει ένα σημείο (x,y) στο δεδομένο χρώμα. draw_line_color(x1,y1,x2,y2,col1,col2) σχεδιάζει μια γραμμή από (x1, y1) (x2, y2), παρεμβάλλοντας το χρώμα μεταξύ col1 και col2. draw_rectangle_color(x1,y1,x2,y2,col1,col2,col3,col4,outline) σχεδιάζει ένα ορθογώνιο. Τα τέσσερα χρώματα δείχνουν τα χρώματα στη top-left, top-right,bottom-right, and bottom-left γωνια . outline δείχνει εάν μόνο η outline πρέπει να σχεδιαστή (true) ή πρέπει να την γεμίσουν (false). draw_roundrect_color(x1,y1,x2,y2,col1,col2,outline) σχεδιάζει ένα στρογγυλεμένο ορθογώνιο col1 είναι το χρώμα στη μέση και col2 το χρώμα στο όριο. outline δείχνει εάν μόνο η outline πρέπει να σχεδιαστεί (true) ή πρέπει να την γεμίσει (false). draw_triangle_color(x1,y1,x2,y2,x3,y3,col1,col2,col3,outline) σχεδιάζει ένα τρίγωνο. Τα τρία χρώματα είναι τα χρώματα των τριών κορυφών που παρεμβάλλονται πάνω από το τριγώνο. outline δείχνει εάν μόνο η outline πρέπει να σχεδιαστεί (true) ή πρέπει να τη γεμίσει (false). draw_circle_color(Χ,Υ,r,col1,col2,outline) σχεδιάζει έναν κύκλο (x,y) με την ακτίνα r. col1 είναι το χρώμα στη μέση και col2 το χρώμα του ορίου. outline δείχνει εάν μόνο η outline

Page 105: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

πρέπει να σχεδιαστεί (true) ή πρέπει να την γεμίσει (false). draw_ellipse_color(x1,y1,x2,y2,col1,col2,outline) σχεδιάζει μια έλλειψη col1 είναι το χρώμα στη μέση και col2 το χρώμα του ορίου outline δείχνει εάν μόνο η outline πρέπει να σχεδιαστεί (true) ή πρέπει να την γεμίσει (false).

Tiles

Ξέρετε ότι μπορείτε να προσθέσετε tiles στα δωμάτια. Ένα tile είναι ένα μέρος ενός πόρου background. Τα tiles είναι μόνο ορατές εικόνες. Δεν αντιδρούν στα γεγονότα και δεν παράγουν συγκρούσεις. Κατά συνέπεια, τα tiles αντιμετωπίζονται πολύ γρηγορότερα από τα αντικείμενα. Οτιδήποτε που δεν χρειάζεται γεγονότα ή συγκρούσεις μπορεί καλύτερα να γίνει μέσω των tiles. Επίσης, συχνά, καλύτερα είναι να χρησιμοποιήσετε ένα tile για καλύτερη γραφική παράσταση ενώ ένα πιο απλό αντικείμενο να χρησιμοποιηθεί για να παράγει τα γεγονότα σύγκρουσης.

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

       background. Ο πόρος background από τον οποίο το tile λαμβάνεται.

       left,top,width,height Το μέρος του background που χρησιμοποιείται.

       x,y. Η θέση της πάνω αριστερής γωνίας του tile στο δωμάτιο.

       depth. Το βάθος του tile. Μπορείτε να επιλέξετε οποιοδήποτε βάθος θέλετε, κατασκευάζοντας τα tiles έτσι ώστε να εμφανιστούν μεταξύ των περιπτώσεων αντικειμένου.

       visible. Εάν το tile είναι ορατό.

       xscale,yscale. Κάθε tile μπορεί να εχει κλίμακα (η προεπιλογή είναι 1).

       blend. Ένα χρώμα συνδυασμού κατά το σχεδιασμό του tile.

       alpha. Μια άλφα αξία που δείχνει τη διαφάνεια των tiles. 1 = μη διαφανής, 0 = πλήρως διαφανής.

Για να αλλάζετε τις ιδιότητες ενός ιδιαίτερου tile πρέπει να ξέρετε την ταυτότητά του. Όταν προσθέτετε τα tiles δημιουργώντας τα δωμάτια η ταυτότητα παρουσιάζεται στη μπάρα πληροφοριών στο κάτω σημείο. Υπάρχει επίσης μια λειτουργία για να βρεί την ταυτότητα ενός tile σε μια ιδιαίτερη θέση. Οι ακόλουθες λειτουργίες υπάρχουν και εξετάζουν τα tiles:

tile_add(background,left,top,width,height,x,y,depth) προσθέτει ένα νέο tile στο δωμάτιο με τις υποδειγμένες τιμές (βλ. πιο πάνω για την έννοιά τους). Η λειτουργία επιστρέφει την ταυτότητα του tile που μπορεί να χρησιμοποιηθεί πιο μετά. tile_delete(id)διαγράφει το tile με τη δεδομένη ταυτότητα. tile_exists(id)επιστρέφει εάν ένα tile με τη δεδομένη ταυτότητα υπάρχει. tile_get_x(id)επιστρέφει την Χ-θέση του tile με τη δεδομένη ταυτότητα. tile_get_y(id)επιστρέφει την Υ-θέση του tile με τη δεδομένη ταυτότητα. tile_get_left(id)επιστρέφει την αριστερή αξία του tile με τη δεδομένη ταυτότητα. tile_get_top(id)επιστρέφει την πάνω αξία του tile με τη δεδομένη ταυτότητα. tile_get_width(id)επιστρέφει το πλάτος του tile με τη δεδομένη ταυτότητα. tile_get_height(id)επιστρέφει το ύψος του tile με τη δεδομένη ταυτότητα. tile_get_depth(id)επιστρέφει το βάθος του tile με τη δεδομένη ταυτότητα. tile_get_visible(id)επιστρέφει εάν το tile με τη δεδομένη ταυτότητα είναι ορατό. tile_get_xscale(id)επιστρέφει τη x-κλίμακα του tile με τη δεδομένη ταυτότητα. tile_get_yscale(id)επιστρέφει τη y-κλίμακα του tile με τη δεδομένη ταυτότητα. tile_get_background(id)επιστρέφει το background του tile με τη δεδομένη ταυτότητα. tile_get_blend(id)επιστρέφει το χρώμα συνδυασμού του tile με τη δεδομένη ταυτότητα.

Page 106: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

tile_get_alpha(id)επιστρέφει την άλφα αξία του tile με τη δεδομένη ταυτότητα. tile_set_position(id,Χ,Υ)θέτει τη θέση του tile με τη δεδομένη ταυτότητα. tile_set_region(id,left,right,width,height) θέτει την περιοχή του tile με τη δεδομένη ταυτότητα στο υπόβαθρό του. tile_set_background(id,background)θέτει το background για το tile με τη δεδομένη ταυτότητα. tile_set_visible(id,visible θετει εάν το tile με τη δεδομένη ταυτότητα είναι ορατό. tile_set_depth(id,depth)θέτει το βάθος του tile με τη δεδομένη ταυτότητα. tile_set_scale(id,xscale,yscale)θέτει τη κλιμακα του tile με τη δεδομένη ταυτότητα. tile_set_blend(id,color)θέτει το χρώμα συνδυασμού του tile με τη δεδομένη ταυτότητα.   διαθέσιμο μόνο στην δηλωμένη έκδοση! tile_set_alpha(id,alpha)θέτει την άλφα αξία του tile με τη δεδομένη ταυτότητα.

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

tile_layer_hide(depth)κρύβει όλα τα tiles στο υποδειγμένο στρώμα βάθους. tile_layer_show(depth)παρουσιάζει όλα τα tiles στο υποδειγμένο στρώμα βάθους. tile_layer_delete(depth)διαγράφει όλα τα tiles στο υποδειγμένο στρώμα βάθους. tile_layer_shift(depth,Χ,Υ)μετατοπίζει όλα τα tiles στο υποδειγμένο στρώμα βάθους πάνω από το διάνυσμα x,y. Μπορεί να χρησιμοποιηθεί για να δημιουργήσει scrolling στα στρώματα των tiles. tile_layer_find(depth,Χ,Υ)επιστρέφει την ταυτότητα του tile με το δεδομένο βάθος στη θέση (x,y). Όταν κανένα tile δεν υπάρχει στη θέση -1 επιστρέφεται. Όταν πολλά tiles με το δεδομένο βάθος υπάρχουν στη θέση το πρώτο επιστρέφεται. tile_layer_delete_at(depth,Χ,Υ)διαγράφει το tile με το δεδομένο βάθος στη θέση (x,y). Όταν πολλαπλάσια tiles με το δεδομένο βάθος υπάρχουν στη θέση όλα διαγράφονται. tile_layer_depth(depth,newdepth)αλλάζει το βάθος όλων των tiles απ το υποδειγμένο βάθος στο νέο βάθος. Με αυτήν την λειτουργία μπορείτε να κινήσετε ολόκληρα τα στρώματα tiles προς ένα νέο βάθος.

 Απεικόνιση

Η απεικόνιση αντιπροσωπεύει ολόκληρη την περιοχή στο monitor. Έχει ένα μέγεθος (χαρακτηριστικά 1024x768, ή 1280x1024), ένα βάθος χρώματος, δηλαδή ο αριθμός bits που χρησιμοποιούνται για να αντιπροσωπεύσουν ένα ενιαίο εικονοκύτταρο <pixel> (χαρακτηριστικά 16 = υψηλό χρώμα ή 32 = πλήρες χρώμα) και τη ανανέωση συχνότητας, δηλαδή ο αριθμός χρόνων ανά δευτερόλεπτο που η απεικόνιση ανανεώνετε (χαρακτηριστικά μεταξύ 60 και 120). Αυτές οι ρυθμίσεις μπορούν κανονικά να αλλάξουν . Για τα παιχνίδια εν τούτοις, ειδικότερα όταν τρέχουν σε πλήρη οθόνη, είναι σημαντικό να είναι σε θέση να αλλάξουν αυτές τις ρυθμίσεις. Όλες αυτές οι ρυθμίσεις μπορούν να αλλαχτούν για το παιχνίδι στο  Game Settings. Για να τις χρησιμοποιήσετε κατά τη διάρκεια του παιχνιδιού οι ακόλουθες λειτουργίες υπάρχουν. Σημειώστε οτι αν  αλλάξετε τις ρυθμίσεις κατά τη διάρκεια του παιχνιδιού θα υπάρχει μια χρονική καθυστέρηση .διαθέσιμες μόνο στην δηλωμένη έκδοση.

display_get_width()επιστρέφει το πλάτος της απεικόνισης σε εικονοκύτταρα. display_get_height()επιστρέφει το ύψος της απεικόνισης σε εικονοκύτταρα. display_get_colordepth()επιστρέφει το βάθος χρώματος σε bits. display_get_frequency()επιστρέφει τη συχνότητα ανανέωσης της απεικόνισης . display_set_size(w,h)θέτει το πλάτος και το ύψος της απεικόνισης σε εικονοκύτταρα. Επιστρέφει εάν αυτό ήταν επιτυχές. (Συνειδητοποιήστε ότι μόνο ορισμένοι συνδυασμοί επιτρέπονται). display_set_colordepth(coldepth)θέτει το βάθος χρώματος. Γενικά μόνο 16 και 32 επιτρέπονται στις τιμές. Επιστρέφει εάν είναι επιτυχής. display_set_frequency(frequency)θέτει τη συχνότητα ανανέωσης για την απεικόνιση . Μόνο λίγες συχνότητες επιτρέπονται. Χαρακτηριστικά θα μπορούσατε να θέσετε σε 60 με μια ίδια ταχύτητα των δωματίων για να πάρετε ομαλά 60 πλαίσια ανά δευτερόλεπτο. Επιστρέφει εάν είναι επιτυχής. display_set_all(w,h,frequency,coldepth)όλα σε ένα. Η χρήση -1 δεν πρέπει να αλλάξει. Επιστρέφει εάν είναι επιτυχής. display_test_all(w,h,frequency,coldepth) εξετάζει εάν οι υποδειγμένες ρυθμίσεις επιτρέπονται. Δεν αλλάζει τις ρυθμίσεις. Η χρήση -1 δεν πρέπει να αλλάξει Επιστρέφει εάν οι ρυθμίσεις επιτρέπονται. display_reset()επαναριθμείστε τις ρυθμίσεις απεικόνισης όπως ήταν όταν άρχισε το πρόγραμμα.

Page 107: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Μερικές φορές είναι χρήσιμο να αποκτηθούν οι πληροφορίες για τη θέση του ποντικιού στην απεικόνιση ή να αλλαχτεί αυτή η θέση. Για αυτό οι ακόλουθες λειτουργίες υπάρχουν:

display_mouse_get_x()επιστρέφει την Χ-συντεταγμένη του ποντικιού στην απεικόνιση . display_mouse_get_y()επιστρέφει την Υ-συντεταγμένη του ποντικιού στην απεικόνιση . display_mouse_set(Χ,Υ)θέτει τη θέση του ποντικιού στην απεικόνιση στις υποδειγμένες τιμές.

Τα παράθυρα

Το παιχνίδι τρέχει σε ένα παράθυρο. Αυτό το παράθυρο έχει διάφορες ιδιότητες, όπως, εάν έχει σύνορα, εάν είναι πλήρης οθόνη, κ.λ.π. Κανονικά αυτό ρυθμίζεται στο Game Settings. Αλλά μπορείτε να το αλλάξετε κατά τη διάρκεια του παιχνιδιού. Οι ακόλουθες λειτουργίες υπάρχουν για αυτό:

window_set_visible(visible) θέτει εάν το παράθυρο του παιχνιδιού είναι ορατό. Σαφώς θέλετε κανονικά το παράθυρο να παραμείνη ορατό κατά τη διάρκεια ολόκληρου του παιχνιδιού. Το πρόγραμμα δεν θα λάβει τα γεγονότα πληκτρολογίων όταν το παράθυρο είναι αόρατο. window_get_visible() επιστρέφει εάν το παράθυρο του παιχνιδιού είναι ορατό. window_set_fullscreen(full) θέτει εάν το παράθυρο θα παρουσιάζεται στον πλήρη τρόπο προβολής. window_get_fullscreen()επιστρέφει εάν το παράθυρο παρουσιάζεται στον πλήρη τρόπο προβολής. window_set_showborder(show) θέτει εάν τα σύνορα γύρω από το παράθυρο θα παρουσιάζονται. (Στη πλήρη οθόνη δεν παρουσιάζεται ποτέ). window_get_showborder() επιστρέφει εάν τα σύνορα γύρω από το παράθυρο παρουσιάζονται window_set_showicons(show) θέτει εάν τα εικονίδια παρουσιάζονται. (Στη πλήρη οθόνη αυτά δεν παρουσιάζονται ποτέ). window_get_showicons() επιστρέφει εάν τα εικονίδια παρουσιάζονται.window_set_stayontop(stay) θέτει εάν το παράθυρο πρέπει πάντα να μείνει πάνω από άλλα παράθυρα. window_get_stayontop() επιστρέφει εάν το παράθυρο μένει πάντα πάνω από άλλα παράθυρα. window_set_sizeable(sizeable) θέτει εάν το παράθυρο μπορεί να αλλάξει μέγεθος από τον παίχτη. (Ο παίχτης μπορεί μόνο να το ταξινομήσει όταν παρουσιάζονται τα σύνορα και το παράθυρο δεν είναι σε πλήρη οθόνη). window_get_sizeable() επιστρέφει εάν το παράθυρο μπορεί να αλλάξει μέγεθος από τον παίχτη window_set_caption(caption) θέτει τον τίτλο για το παράθυρο. Κανονικά αυτό διευκρινίζετε κατά την καθορισμό του δωματίου και μπορεί να αλλάξει χρησιμοποιώντας τη μεταβλητή room_caption. Έτσι αυτή η λειτουργία δεν είναι κανονικά χρήσιμη, εκτός αν σχεδιάσετε το δωμάτιο οι ίδιοι παρά να αφήσετε το Game Maker να το κάνει. Ο τίτλος είναι ορατός μόνο όταν έχει το παράθυρο σύνορα και όταν δεν είναι σε πλήρη οθόνη. window_get_caption() επιστρέφει τον τίτλο του παραθύρου. window_set_cursor(curs) θέτει χρησιμοποιήσιμο το ποντίκι στο παράθυρο. Μπορείτε να χρησιμοποιήσετε την ακόλουθη σταθερά:

cr_default cr_none  cr_arrow  cr_cross cr_beam  cr_size_nesw  cr_size_ns  cr_size_nwse  cr_size_we  cr_uparrow cr_hourglass  cr_drag cr_nodrop cr_hsplit  cr_vsplit cr_multidrag 

Page 108: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

cr_sqlwait cr_no cr_appstart cr_help cr_handpoint cr_size_all

Ειδικότερα, για να κρύψετε το δρομέα χρησιμοποιείστε, cr_none ως αξία. window_get_cursor() επιστρέφει το δρομέα που χρησιμοποιείται στο παράθυρο. window_set_color(color) θέτει το χρώμα του μέρους του παραθύρου που δεν χρησιμοποιείται για την επίδειξη του δωματίου. window_get_color() επιστρέφει το χρώμα των παραθύρων. window_set_region_scale(scale,adaptwindow)Εάν το παράθυρο είναι μεγαλύτερο από το πραγματικό δωμάτιο κανονικά το δωμάτιο επιδεικνύεται σε μια περιοχή που κεντράρει στο παράθυρο. Είναι πιθανό να δείξει ότι πρέπει να αλλάξει κλίμακα για να γεμίσει το σύνολο ή το μέρος του παραθύρου. Μια αξία 1 δεν αλλάζει κλίμακα. Εάν χρησιμοποιήσετε μια αξία 0 η περιοχή θα γεμίσει ολόκληρο το παράθυρο. Εάν το θέσετε σε μια αρνητική αξία η κλίμακα του θα είναι στο μέγιστο μέγεθος μέσα στο παράθυρο διατηρώντας την άποψη διάστασης (αυτό είναι που συχνά θέλετε).   adaptwindow δείχνει εάν το μέγεθος παραθύρων πρέπει να προσαρμοστεί εάν η κλίμακα του δωματίου δεν ταιριάζει. Η προσαρμογή του παραθύρου είναι μόνο αποτελεσματική όταν ο παράγοντας κλίμακα είναι θετικός. window_get_region_scale()επιστρέφει τον παράγοντα κλίμακας για την περιοχή σχεδίων.

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

window_set_position(Χ,Υ) θέτει τη θέση του  παραθύρου στην υποδειγμένη θέση. window_set_size(w,h) θέτει το μέγεθος του  παραθύρου στο υποδειγμένο μέγεθος. window_set_rectangle(x,y,w,h)θέτει τη θέση και το μέγεθος του ορθογωνίου των παραθύρων. (Κάνει και τις δύο προηγούμενες ρουτίνες σε ένα βήμα). window_center() κεντράρει το παράθυρο στην οθόνη. window_default() δίνει στο παράθυρο το μέγεθος και τη θέση προεπιλογής (που κεντράρει) στην οθόνη. window_get_x() επιστρέφει την τρέχουσα Χ-συντεταγμένη του παραθύρου. window_get_y() επιστρέφει την τρέχουσα Υ-συντεταγμένη του παραθύρου. window_get_width() επιστρέφει το τρέχον πλάτος του παραθύρου. window_get_height() επιστρέφει το τρέχον ύψος του παραθύρου. 

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

window_mouse_get_x() επιστρέφει την Χ-συντεταγμένη του ποντικιού στο παράθυρο. window_mouse_get_y() επιστρέφει την Υ-συντεταγμένη του ποντικιού στο παράθυρο. window_mouse_set(Χ,Υ) θέτει τη θέση του ποντικιού στο παράθυρο στις υποδειγμένες τιμές.

 

 

Απόψεις 

Όπως πρέπει να ξέρετε ότι μπορείτε να καθορίσετε μέχρι οκτώ διαφορετικές απόψεις κατά το σχεδιασμό των δωματίων. Μια άποψη καθορίζεται από την περιοχή άποψής της στο δωμάτιο και της viewport στην οθόνη (ή για να είμαι ακριβής στην περιοχή σχεδίων μέσα στο παράθυρο). Χρησιμοποιώντας τις απόψεις μπορείτε να παρουσιάσετε διαφορετικά μέρη του δωματίου σε διάφορα μέρη στην οθόνη. Επίσης, μπορείτε να σιγουρευτείτε ότι ένα ιδιαίτερο αντικείμενο μένει πάντα ορατό.

Page 109: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

 {  view_object[0 ] = object_index }

Οι ακόλουθες μεταβλητές υπάρχουν για να επηρεάσουν την άποψη. Όλες, εκτός από της πρώτες δύο είναι σειρές που κυμαίνονται από 0 (η πρώτη άποψη) ως 7 (η τελευταία άποψη).

view_enabled εάν οι απόψεις επιτρέπονται ή όχι. view_current* αυτήν την περίοδο η σχεδιασμένη άποψη (0-7). Χρησιμοποιήστε το αυτό μόνο στο γεγονός σχεδίων. Μπορείτε παραδείγματος χάριν να ελέγξετε αυτήν την μεταβλητή για να σχεδιάσετε ορισμένα πράγματα κατά μόνο μια άποψη, η μεταβλητή δεν μπορεί να αλλάξει. view_visible[0..7] εάν η ιδιαίτερη άποψη είναι ορατή στην οθόνη. view_xview[0..7] θέση Χ της άποψης στο δωμάτιο. view_yview[0..7] θέση Υ της άποψης στο δωμάτιο. view_wview[0..7] πλάτος της άποψης στο δωμάτιο. view_hview[0..7] ύψος της άποψης στο δωμάτιο. view_xport[0..7] Χ-θέση viewport στην περιοχή σχεδίων. view_yport[0..7] Υ-θέση viewport στην περιοχή σχεδίων. view_wport[0..7] πλάτος viewport στην περιοχή σχεδίων. view_hport[0..7] ύψος viewport στην περιοχή σχεδίων. view_angle[0..7] γωνία περιστροφής που χρησιμοποιείται για την άποψη στο δωμάτιο (αντίθετα προς τη φορά των δεικτών του ρολογιού σε μοίρες). view_hborder[0..7] μέγεθος των οριζόντιων συνόρων γύρω από το ορατό αντικείμενο (σε pixel). view_vborder[0..7] μέγεθος των κάθετων συνόρων γύρω από το ορατό αντικείμενο (σε pixel). view_hspeed[0..7] μέγιστη οριζόντια ταχύτητα της άποψης. view_vspeed[0..7] μέγιστη κάθετη ταχύτητα της άποψης. view_object[0..7] αντικείμενο  του οποίου η περίπτωση πρέπει να παραμείνει ορατή κατά την άποψη. Εάν υπάρχουν πολλές περιπτώσεις αυτού του αντικειμένου μόνο το πρώτο ακολουθείται. Μπορείτε επίσης να ορίσετε μια ταυτότητα περίπτωσης σε αυτήν την μεταβλητή. Σε εκείνη την περίπτωση η ιδιαίτερη περίπτωση ακολουθείται.

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

window_set_region_size(w,h,adaptwindow) θέτει το πλάτος και το ύψος της περιοχής σχεδίων στο παράθυρο.   adaptwindow δείχνει εάν το μέγεθος των παραθύρων πρέπει να προσαρμοστεί εάν η περιοχή δεν ταιριάζει. Το μέγεθος των παραθύρων θα προσαρμοστεί πάντα εάν χρησιμοποιήσετε σταθερή κλίμακα. (Βλ. τη λειτουργία window_set_region_scale()). window_get_region_width() επιστρέφει το τρέχον πλάτος της περιοχής σχεδίων. window_get_region_height() επιστρέφει το τρέχον ύψος της περιοχής σχεδίων.

Σε ένα παιχνίδι χρειάζεστε συχνά τη θέση του δρομέα του ποντικιού. Κανονικά χρησιμοποιείτε για αυτό τις μεταβλητές mouse_x και mouse_y. Όταν υπάρχουν πολλές απόψεις, αυτές οι μεταβλητές δίνουν τη θέση ποντικιού όσον αφορά την άποψη που το ποντίκι είναι. Μερικές φορές εν τούτοις, θα χρειαστείτε τη θέση του ποντικιού όσον αφορά μια ιδιαίτερη άποψη, επίσης και όταν είναι έξω απο την άποψη. Για αυτό οι ακόλουθες λειτουργίες υπάρχουν.

Page 110: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

window_view_mouse_get_x(id) επιστρέφει την Χ-συντεταγμένη του ποντικιού όσον αφορά την άποψη με την ταυτότητα δεικτών. window_view_mouse_get_y(id) επιστρέφει την Υ-συντεταγμένη του ποντικιού όσον αφορά την άποψη με την ταυτότητα δεικτών. window_view_mouse_set(id,Χ,Υ) θέτει τη θέση του ποντικιού όσον αφορά την άποψη με την ταυτότητα δεικτών. window_views_mouse_get_x() επιστρέφει την Χ-συντεταγμένη του ποντικιού όσον αφορά την άποψη που είναι (ίδιο όπως mouse_x). window_views_mouse_get_y() επιστρέφει την Χ-συντεταγμένη του ποντικιού όσον αφορά την άποψη που είναι (ίδιο όπως mouse_y). window_views_mouse_set(Χ,Υ) θέτει τη θέση του ποντικιού όσον αφορά την πρώτη άποψη που είναι ορατή.

 

Μεταβάσεις

Όπως ξέρετε, όταν κινείστε από ένα δωμάτιο προς άλλο μπορείτε να επιλέξετε μια μετάβαση. Μπορείτε επίσης να θέσετε τη μετάβαση για το επόμενο πλαίσιο χωρίς κίνηση σε ένα άλλο δωμάτιο χρησιμοποιώντας τη μεταβλητή transition_kind. Εάν ορίζετε μια αξία μεταξύ 1 και 13 σε αυτή η αντίστοιχη μετάβαση χρησιμοποιείται (αυτές είναι οι ίδιες μεταβάσεις που μπορείτε να επιλέξετε για τα δωμάτια). Μια αξία 0 δεν δείχνει καμία μετάβαση. Έχει επιπτώσεις μόνο στην επόμενη φορά που ένα πλαίσιο σχεδιάζετε.

transition_kind δείχνει την επόμενη μετάβαση πλαισίων. Μπορείτε να χρησιμοποιήσετε τις ακόλουθες τιμές 

0 = καμία επίδραση 1 = δημιουργείτε από τα αριστερά 2 = δημιουργείτε από τα δεξιά 3 = δημιουργείτε από την κορυφή 4 = δημιουργείτε από κάτω5 = δημιουργείτε από το κέντρο 6 = μετατόπιση από τα αριστερά 7 = μετατόπιση από τα δεξιά 8 = μετατόπιση από την κορυφή 9 = μετατόπιση από κάτω 10 = πλέγμα από τα αριστερά 11 = πλέγμα από τα δεξιά 12 = πλέγμα από την κορυφή 13 = πλέγμα από κάτω

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

Ξαναβάφοντας την οθόνη 

Κανονικά στο τέλος κάθε βήματος το δωμάτιο ξαναβάφεται στην οθόνη. Αλλά σε σπάνιες περιστάσεις πρέπει να ξαναβάψετε το δωμάτιο σε άλλες στιγμές. Αυτό συμβαίνει όταν το πρόγραμμά σας αναλαμβάνει τον έλεγχο. Παραδείγματος χάριν, πρίν το<sleep for a while> πρέπει να σχεδιαστή. Επίσης, όταν επιδεικνύει ο κώδικάς σας ένα μήνυμα και πρέπει να περιμένει τον χρηστή να πιέσει ένα πλήκτρο, χρειάζεστε να το ξαναβάψετε ενδιάμεσα. Υπάρχουν δύο διαφορετικές ρουτίνες για να γίνει αυτό.

screen_redraw() ξανασχεδιάζει το δωμάτιο με όλα τα γεγονότα σχεδίών. screen_refresh() ανανεώνει την οθόνη χρησιμοποιώντας την τρέχουσα εικόνα δωματίου ( δεν εκτελεί τα γεγονότα σχεδίων).

Page 111: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Για να καταλάβετε τη δεύτερη λειτουργία, θα πρέπει να καταλάβετε πώς το σχέδιο λειτουργεί εσωτερικά. Υπάρχει εσωτερικά μια εικόνα στην οποία όλο το σχέδιο συμβαίνει. Αυτή η εικόνα δεν είναι ορατή στην οθόνη. Μόνο στο τέλος ενός βήματος, αφότου έχει πραγματοποιηθεί όλο το σχέδιο, είναι η εικόνα οθόνης που αντικαθίσταται από αυτήν την εσωτερική εικόνα. (Αυτό λέγετε διπλή αποθήκευση). Η πρώτη λειτουργία αποσύρει την εσωτερική εικόνα και ανανεώνει έπειτα την εικόνα οθόνης. Η δεύτερη λειτουργία ανανεώνει μόνο την εικόνα στην οθόνη. Τώρα πρέπει επίσης να συνειδητοποιήσετε γιατί δεν μπορείτε να χρησιμοποιήσετε τις ενέργειες ή τις λειτουργίες σχεδίων σε άλλα γεγονότα από τα γεγονότα σχεδίων. Θα σχεδιάσουν τα πράγματα στην εσωτερική εικόνα αλλά αυτά δεν θα είναι ορατά στην οθόνη. Και όταν τα γεγονότα σχεδίων εκτελούνται, πρώτα το background του δωματίου σχεδιάζετε, σβήνοντας τα όλα αυτά που σχεδιάσατε  στην εσωτερική εικόνα. Αλλά όταν χρησιμοποιείτε screen_refresh() μετά από το σχέδιό σας, η ενημερωμένη εικόνα θα γίνει ορατή στην οθόνη. Έτσι, παραδείγματος χάριν, ένα χειρόγραφο μπορεί να σχεδιάσει κάποιο κείμενο στην οθόνη, να καλέσει τη λειτουργία ανανέωσης και να περιμένει έπειτα το χρήστη να πιέσει ένα πλήκτρο, όπως στο ακόλουθο κομμάτι του κώδικα.

 {  draw_text(screen_width/2,100,'πιέστε οποιοδήποτε πλήκτρο για συνέχεια.")   screen_refresh ()   keyboard_wait () }

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

Όταν εσείς σχεδιάζετε το δωμάτιο μπορεί να είναι χρήσιμο να μην σχεδιαστή αυτόματα. Παραδείγματος χάριν, θα θελήσετε να σχεδιάσετε το δωμάτιο μόνο κάθε 5 βήματα. Μπορείτε να χρησιμοποιήσετε τις ακόλουθες λειτουργίες για αυτό:

set_automatic_draw(value) δείχνει εάν θα ξανασχεδιάσει αυτόματα το δωμάτιο (true, προεπιλογή) ή όχι (false).

Τέλος υπάρχει μια λειτουργία με την οποία μπορείτε να  συγχρονίσετε το σχέδιο με την ανανέωση συχνότητας του monitor:

     set_synchronization(value) δείχνει εάν θα  συγχρονίσετε το σχέδιο με την ανανέωση συχνότητας του monitor

Ήχος και μουσική 

Ο ήχος διαδραματίζει έναν κρίσιμο ρόλο στα παιχνίδια . Σιγουρευτείτε ότι τα ονόματα που χρησιμοποιείτε είναι έγκυρα μεταβλητά ονόματα. Όπως θα έχετε δει μπορείτε να καθορίσετε τέσσερις διαφορετικούς τύπους ήχων: κανονικοί ήχοι, μουσική background, τρισδιάστατοι ήχοι, και ήχοι που πρέπει να παιχτούν μέσω του media player.

Οι κανονικοί ήχοι χρησιμοποιούνται για τα ηχητικά εφέ. Γενικά τα αρχεία wave να χρησιμοποιούνται για αυτό. Πολλά από αυτά μπορούν να παίξουν στην ίδια στιγμή (ακόμη και πολλές περιπτώσεις του ίδιου ήχου).

Η μουσική background αποτελείται χαρακτηριστικά από αρχεία Midi αλλά μερικές φορές επίσης αρχεία wave χρησιμοποιούνται. Τα Sound effects μπορούν να εφαρμοστούν σε αυτό. Η μόνη διαφορά με τους κανονικούς ήχους είναι ότι μόνο μια μουσική background μπορεί να παίξει σε κάθε στιγμή. Εάν αρχίσετε ένα ο τρέχων ήχος σταματά.

Οι τρισδιάστατοι ήχοι επιτρέπουν τα τρισδιάστατα Sound effects που περιγράφεται πιο κάτω. Είναι μονοφωνικοί ήχοι (wave ή Midi).

Τέλος, εάν θέλετε να χρησιμοποιήσετε έναν άλλο τύπο, ειδικότερα mp3, αυτοί δεν μπορούν να παιχτούν μέσω DirectX. Κατά συνέπεια ο media player πρέπει να χρησιμοποιηθεί για αυτό. Αυτό είναι περιορισμένο. Μόνο ένας ήχος μπορεί να παίξει συγχρόνως. Κανένα effe δεν μπορεί να εφαρμοστεί (ούτε ακόμη και η αλλαγές έντασης) και ο συγχρονισμός π.χ. για τους looping sounds είναι φτωχός. Μπορούν επίσης να υπάρξουν καθυστερήσεις στο

Page 112: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

παιχνίδι εξαιτίας αυτών των ήχων. Καλύτερα να μην τους χρησιμοποιήσετε. (Μερικοί υπολογιστές επίσης ίσως να μην τους υποστηρίξουν). 

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

 

Βασικές λειτουργίες των ήχων

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

sound_play(index) παίζει τον υποδειγμένο ήχο μιά φορά. Εάν ο ήχος είναι μουσική background η τρέχουσα μουσική background σταματά. sound_loop(index) παίζει τον υποδειγμένο ήχο, συνεχώς. Εάν ο ήχος είναι μουσική background η τρέχουσα μουσική background σταματά. sound_stop(index) σταματά τον υποδειγμένο ήχο. Εάν υπάρχουν πολλοί ήχοι με αυτό το δείκτη , όλοι θα σταματήσουν. sound_stop_all(index)σταματά όλους τους ήχους. sound_isplaying(index) επιστρέφει εάν (ένα αντίγραφο) απο τον  υποδειγμένο ήχο παίζει.

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

sound_volume(index,value) αλλάζει την ένταση για τον υποδειγμένο ήχο (0 = χαμηλός, 1 = υψηλός). sound_global_volume (value) αλλάζει τη σφαιρική ένταση για όλους τους ήχους (0 = χαμηλός, 1 = υψηλός). sound_fade(index,value,time) αλλάζει την ένταση για τον υποδειγμένο ήχο σε νέα τιμή(0 = χαμηλός, 1 = υψηλός) κατά τη διάρκεια του υποδειγμένου χρόνου (σε χιλιοστά του δευτερολέπτου). Αυτό μπορεί να χρησιμοποιηθεί για να αυξομειώσει τη μουσική. sound_pan(index,value)  αλλάζει το pan για τον υποδειγμένο ήχο (-1 =στο αριστερό ηχείο, 0 = κέντρο, 1 = δεξί). sound_background_tempo(factor) αλλάζει το ρυθμό της μουσικής background (εάν είναι ένα αρχείο Midi).   factor  δείχνει τον παράγοντα με τον οποίο θα πολλαπλασιάσει το ρυθμό. Έτσι μια αξία 1 αντιστοιχεί στον κανονικό ρυθμό. Οι μεγαλύτερες τιμές αντιστοιχούν σε έναν γρηγορότερο ρυθμό, μικρότερες τιμές σε έναν πιό αργό ρυθμό. Πρέπει να βρεθείτε μεταξύ 0,01 και 100.

Εκτός από τα αρχεία Midi και wave (και mp3 ) υπάρχει πραγματικά ένας τέταρτος τύπος αρχείου που μπορεί να παιχτεί: άμεσα αρχεία μουσικής. Αυτά έχουν την επέκταση sgt. Για να βρίσκει αυτά τα αρχεία, το σύστημα πρέπει να ξέρει που βρίσκονται. Για αυτόν τον σκοπό μπορείτε να χρησιμοποιήσετε τις ακόλουθες λειτουργίες για να θέσετε τον κατάλογο αναζήτησης για τα αρχεία. Σημειώστε οτι πρέπει να προσθέσετε τα αρχεία οι ίδιοι. Το Game Maker δεν περιλαμβάνει αυτόματα τέτοια πρόσθετα αρχεία.

sound_set_search_directory(dir) θετει τον κατάλογο στον οποίο τα άμεσα αρχεία μουσικής πρόκειται να βρεθούν. Μην πληκτρολογήσετε την τελευταία κάθετο.

 

Sound effects

Αυτή η λειτουργία είναι διαθέσιμη μόνο στην δηλωμένη έκδοση του Game Maker.

Τα Sound effects μπορούν να χρησιμοποιηθούν για να αλλάξουν τους ήχους του παιχνιδιού και τους ήχους background. Συνειδητοποιήστε ότι τα Sound effects ισχύουν μόνο για τα αρχεία wave και τα αρχεία Midi, όχι για mp3 αρχεία. Αυτό το τμήμα περιγράφει τις λειτουργίες που υπάρχουν για τη χρησιμοποίηση και την αλλαγή των

Page 113: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Sound effects. Συνειδητοποιήστε ότι για να χρησιμοποιήσετε αυτές τις λειτουργίες πρέπει να έχετε μια καλή κατανόηση για το πώς ο ήχος και οι synthesizers λειτουργούν. Καμία εξήγηση διαφορετικών παραμέτρων δεν δίνεται εδώ. Ψάξτε στο Web ή σε βιβλία για περαιτέρω πληροφορίες.

Για να εφαρμόσετε Sound effects σε έναν ιδιαίτερο ήχο μπορείτε είτε να το δείξετε αυτό κατά την καθορισμό του πόρου ή μπορείτε να χρησιμοποιήσετε την ακόλουθη λειτουργία 

sound_effect_set(snd,effect) θέτει ένα (συνδυασμό) απο sound effect(s) για τον υποδειγμένο ήχο. effect  μπορεί να είναι οποιαδήποτε από τις ακόλουθες τιμές:

se_none se_chorus  se_echo  se_flanger  se_gargle  se_reverb  se_compressor  se_equalizer 

Μπορείτε να θέσετε έναν συνδυασμό effects με το να προσθέσετε τις τιμές. Έτσι π.χ. μπορείτε να χρησιμοποιήσετε  sound_effect_set(snd,se_echo+se_reverb) για να πάρετε έναν συνδυασμό  echo και reverb effect.

3D sound

Αυτή η λειτουργία είναι διαθέσιμη μόνο στην δηλωμένη έκδοση του Game Maker.

Ο τρισδιάστατος ήχος αναφέρεται στον ήχο που έχει μια θέση (και ταχύτητα) όσον αφορά τον ακροατή. Αν και η πιο συνηθισμένη χρήση του είναι σε τρισδιάστατα παιχνίδια μπορείτε επίσης αποτελεσματικά να των χρησιμοποιήσετε σε 2D παιχνίδια. Η ιδέα είναι ότι ένας ήχος έχει μια θέση στο κενό. Σε όλες τις λειτουργίες ο ακροατής υποτίθεται ότι ήταν στη θέση (0.0.0). Το σύστημα υπολογίζει πώς ο ακροατής θα άκουγε τον ήχο και θα τον προσάρμοζε αναλόγως. Η επίδραση είναι ιδιαίτερα καλή όταν έχετε ένα καλό ηχητικό σύστημα.

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

Το Game Maker υποστηρίζει 3D ήχο μέσω των λειτουργιών πιο κάτω. Λειτουργούν μόνο για τους πόρους που ήταν υποδειγμένοι για να είναι τρισδιάστατοι. (Το μειονέκτημα είναι ότι οι τρισδιάστατοι ήχοι θα είναι μονοφωνικοί).

sound_3d_set_sound_position(snd,x,y,z) θέτει τη θέση του υποδειγμένου ήχου όσον αφορά τον ακροατή στην υποδειγμένη θέση στο κενό. Οι τιμές στον Χ-άξονα αυξάνονται από τα αριστερά στα δεξιά, στον Υ-άξονα από κάτω προς τα πάνω, και στο z-άξονα από κοντά μακριά. Οι τιμές μετριούνται σε μέτρα. Η ένταση με την οποία ο ήχος ακούγεται εξαρτάται από αυτό το μέτρο με τον ίδιο τρόπο όπως στον πραγματικό κόσμο. sound_3d_set_sound_velocity(snd,x,y,z) θέτει την ταχύτητα του υποδειγμένου ήχου στο υποδειγμένο διάνυσμα στο κενό. Παρακαλώ σημειώστε ότι ο καθορισμός της ταχύτητας δεν σημαίνει ότι η θέση αλλάζει. Η ταχύτητα χρησιμοποιείται μόνο για τον υπολογισμό των αποτελεσμάτων Doppler. Έτσι εάν θέλετε να κινήσετε τον ήχο πρέπει οι ίδιοι να αλλάξετε τη θέση του ήχου. sound_3d_set_sound_distance(snd,mindist,maxdist) θέτει την ελάχιστη απόσταση στην οποία ο ήχος δεν αυξάνεται πλέον και τη μέγιστη απόσταση στις οποίες ο ήχος δεν μπορεί πλέον να ακουστεί. Έτσι όταν η απόσταση βρίσκεται μεταξύ 0 και στην ελάχιστη απόσταση ο ήχος είναι στο μέγιστο εύρος. Όταν μεταξύ της ελάχιστης απόστασης και της μέγιστης απόστασης το εύρος μειώνεται αργά ή η μέγιστη απόσταση επιτυγχάνεται ή ο ήχος δεν είναι οπωσδήποτε πλέον ευδιάκριτος.Η προκαθορισμένη ελάχιστη απόσταση είναι 1 μέτρο και η μέγιστη απόσταση είναι 1 δισεκατομμύριο μέτρα.

sound_3d_set_sound_cone(snd,x,y,z,anglein,angleout,voloutside) Κανονικά ο ήχος έχει το ίδιο εύρος σε μια δεδομένη απόσταση σε όλες τις κατευθύνσεις. Μπορείτε να θέσετε τον κώνο για να το αλλάξετε αυτό και να το κάνετε κατευθυντικό. x,y,z

Page 114: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

διευκρινίζει την κατεύθυνση του κώνου.   anglein διευκρινίζει την εσωτερική γωνία. Εάν ο ακροατής είναι μέσα σε αυτήν την γωνία ακούει τον ήχο στην κανονική ένταση.   angleout διευκρινίζει την εξωτερική γωνία. Όταν ο ακροατής είναι έξω από αυτό η ένταση είναι υποδειγμένος με το voloutside. Για να είμαι ακριβείς, το voloutside είναι ένας αρνητικός αριθμός που δείχνει τον αριθμό εκατοντάδων decibel που πρέπει να αφαιρεθούν από την εσωτερική ένταση. Μεταξύ της εσωτερικής και εξωτερικής γωνίας η ένταση μειώνεται βαθμιαία.

 

 

CD music

Αυτή η λειτουργία είναι διαθέσιμη μόνο στην δηλωμένη έκδοση του Game Maker.

Υπάρχουν επίσης διάφορες λειτουργίες που εξετάζουν την μουσική από το CD.

cd_init() πρέπει να κληθεί πριν χρησιμοποιηθούν άλλες λειτουργίες. Πρέπει επίσης να κληθεί όταν αλλάζει το CD (ή απλά κατά διαστήματα). cd_present() επιστρέφει εάν το CD είναι μέσα στο drive. cd_number() επιστρέφει τον αριθμό κομματιών στο CD. cd_playing() επιστρέφει εάν το CD παίζει. cd_paused() επιστρέφει εάν το CD σταματήσει. cd_track() επιστρέφει τον αριθμό του τρέχον κομματιού (1=το πρώτο). cd_length() επιστρέφει το μήκος του συνολικού CD σε χιλιοστά του δευτερολέπτου. cd_track_length(n) επιστρέφει το μήκος των κομματιών n του CD σε χιλιοστά του δευτερολέπτου.

cd_position() επιστρέφει την τρέχουσα θέση στο CD σε χιλιοστά του δευτερολέπτου. cd_track_position() επιστρέφει την τρέχουσα θέση του κομματιού που παίζεται σε χιλιοστά του δευτερολέπτου. cd_play(first,last) λέει στο CD να παίξει τα κομμάτια απο το πρώτο μέχρι το τελευταίο. Εάν θέλετε να παίξετε το πλήρες CD δώστε 1 και 1000 ως επιχειρήματα. cd_stop() σταματά. cd_pause() παύση. cd_resume() επαναλαμβάνει το CD. cd_set_position(pos) θέτει τη θέση στο CD σε χιλιοστά του δευτερολέπτου. cd_set_track_position(pos)θέτει τη θέση στο τρέχον κομμάτι σε χιλιοστά του δευτερολέπτου.

   cd_open_door() ανοίγει την πόρτα του CD.      cd_close_door() κλείνει την πόρτα του CD.

Υπάρχει μια πολύ γενική λειτουργία για να έχετε πρόσβαση στη λειτουργία πολυμέσων των windows. MCI_command(str) Αυτή η λειτουργία στέλνει την εντολή στο σύστημα πολυμέσων χρησιμοποιώντας τη διεπαφή ελέγχου MEDIA (MCI). Μπορείτε να το χρησιμοποιήσετε αυτό για να ελέγξετε όλα τα είδη των συσκευών πολυμέσων. Δείτε στις οδηγίες των windows  για πληροφορίες στο πώς να χρησιμοποιήσετε αυτήν την εντολή. Παραδείγματος χάριν MCI_command('play cdaudio from 1') παίζει ένα Cd (αφότου το έχετε μονογράψει σωστά χρησιμοποιώντας άλλες εντολές). Αυτή η λειτουργία είναι μόνο για προηγμένη χρήση!

 

Splash screens, highscores, and other pop-ups

Splash screens

Page 115: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Πολλά παιχνίδια έχουν τις αποκαλούμενες splash screens(εικόνες τίτλων). Αυτές οι οθόνες παρουσιάζουν ένα βίντεο, μια εικόνα, ή κάποιο κείμενο. Συχνά χρησιμοποιούνται στην αρχή του παιχνιδιού (ως intro), της αρχής ενός επιπέδου, ή στο τέλος του παιχνιδιού (παραδείγματος χάριν σαν credits). Στον Game Maker τέτοιες splash screens με το κείμενο, τις εικόνες ή το βίντεο μπορούν να παρουσιαστούν κάθε στιγμή κατά τη διάρκεια του παιχνιδιού. Το παιχνίδι σταματιέται προσωρινά ενώ η splash screen παρουσιάζεται. Αυτές είναι οι λειτουργίες που χρησιμοποιούνται

 

show_text(fname,full,backcol,delay) παρουσιάζει ενα κείμενο. fname είναι το όνομα του αρχείου κειμένων (.txt or .rtf). Πρέπει να βάλετε αυτό το αρχείο στο φάκελο του παιχνιδιού οι ίδιοι. Επίσης όταν δημιουργείτε μια αυτόνομη έκδοση του παιχνιδιού σας, δεν πρέπει να ξεχάσετε να το προσθέσετε εκεί. full δείχνει εάν θα το παρουσιάσει σε πλήρη οθόνη το backcol είναι το χρώμα background, και  delay είναι η καθυστέρηση σε δευτερόλεπτα πρίν επιστρέψει στο παιχνίδι. (Ο παίκτης μπορεί πάντα να κλικάρει με το ποντίκι στην οθόνη για να επιστρέψει στο παιχνίδι). show_image(fname,full,delay) παρουσιάζει  μια  εικόνα. fname είναι το όνομα του αρχείου εικόνας (μονο .bmp, .jpg και .wmf αρχεια). Πρέπει να βάλετε αυτό το αρχείο στο φάκελο του παιχνιδιού οι ίδιοι full δείχνει εάν θα παρουσιαστεί σε πλήρη οθόνη  delay είναι η καθυστέρηση στα δευτερόλεπτα πρίν επιστρέψει στο παιχνίδι. show_video(fname,full,loop) παρουσιάζει ενα video fname είναι το όνομα του αρχείου (.avi,.mpg). Πρέπει να βάλετε αυτό το αρχείο στο φάκελο του παιχνιδιού οι ίδιοι full δείχνετε εάν θα παρουσιαστεί σε πλήρη οθόνη  loop δείχνει εάν επαναληφθεί το βίντεο. show_info() επιδεικνύει τη φόρμα πληροφοριών των παιχνιδιών. load_info(fname) φορτώνει τις πληροφορίες των παιχνιδιών από το αρχείο που ονομάζεται fname. Αυτό πρέπει να είναι ένα αρχείο rtf . Αυτό το καθιστά πιθανό να παρουσιάσει διαφορετικά αρχεία βοήθειας σε διαφορετικές στιγμές.

 

Pop-up messages and questions

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

show_message(str) επιδεικνύει ένα πλαίσιο διαλόγου με τη σειρά ως μήνυμα. show_message_ext(str,but1,but2,but3) επιδεικνύει ένα πλαίσιο διαλόγου με τη σειρά ως μήνυμα και μέχρι τρία κουμπιά. But1, but2 και but3 περιέχουν το κείμενο κουμπιών. Μια κενή σειρά σημαίνει ότι το κουμπί δεν παρουσιάζεται. Στα κείμενα μπορείτε να χρησιμοποιήσετε το & σύμβολο για να δείξετε ότι ο επόμενος χαρακτήρας πρέπει να χρησιμοποιηθεί ως shortcut. Η λειτουργία επιστρέφει τον αριθμό του κουμπιού που πιέζεται (0 εάν ο χρήστης πιέζει το πλήκτρο Esc). show_question(str) επιδεικνύει μια ερώτηση επιστρέφει true όταν επιλέγει ναι ο χρήστης και false στο οχι. get_integer(str,def) ρωτά τον χρήστη για έναν αριθμό σε ένα πλαίσιο διαλόγου  str είναι το μήνυμα def είναι ο αριθμός προεπιλογής που παρουσιάζεται. get_string(str,def) ρωτά τον χρήστη σε ένα πλαίσιο διαλόγου για μια σειρά str είναι το μήνυμα def είναι η προκαθορισμένη αξία που παρουσιάζεται. message_background(back) θέτει την εικόνα background γιατί τα πλαίσια διαλόγου. back πρέπει να είναι ένα από τα backgrounds που καθορίζονται στο παιχνίδι. Εάν το background είναι μερικώς διαφανής έτσι θα είναι η εικόνα των μηνυμάτων (μόνο για τα windows 2000 και πριν). message_alpha(alpha) θέτει άλφα διαφάνεια γιατί το πλαίσιο  το άλφα πρέπει να βρεθεί μεταξύ 0 (απολύτως διαφανής) και 1 (μη διαφανής) (μόνο για τα  windows 2000 και πριν) message_button(spr) θέτει sprite για τα κουμπιά spr πρέπει να είναι sprite που αποτελείται από τρεις εικόνες, η πρώτη δείχνει το κουμπί όταν δεν πιέζεται και το ποντίκι είναι μακριά, η δεύτερη δείχνει το κουμπί όταν είναι το ποντίκι επάνω από αυτό αλλά οχι πιεσμένο και η τρίτη είναι το κουμπί όταν πιέζεται. message_text_font(name,size,color,style) θέτει την γραμματοσειρά για το κείμενο. το style δείχνει το style της γραμματοσειρας (0=normal, 1=bold, 2=italic, και 3=bold-italic).

Page 116: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

message_button_font(name,size,color,style) θέτει την γραμματοσειρά για τα κουμπιά  style δείχνει το style της γραμματοσειράς (0=normal, 1=bold, 2=italic, and 3=bold-italic). message_input_font(name,size,color,style) θέτει την γραμματοσειρά για τον τομέα εισαγωγής  style δείχνει το style της γραμματοσειρας (0=normal, 1=bold, 2=italic, and 3=bold-italic). message_mouse_color(col) θέτει το χρώμα της γραμματοσειράς για τα κουμπιά στο παράθυρο όταν είναι το ποντίκι επάνω από αυτο. message_input_color(col) θέτει το χρώμα για το background της εισαγωγής που αρχειοθετείται στο παράθυρο. message_caption(show,str) θέτει τον τίτλο για το κιβώτιο show δείχνει εάν σύνορα πρέπει να παρουσιάζονται (1) ή (0) και str δείχνει τον τίτλο όταν παρουσιάζετε τα σύνορα. message_position(Χ,Υ) θέτει τη θέση του κιβωτίου στην οθόνη. message_size(w,h) κανονίζει το μέγεθος του κιβωτίου στην οθόνη. Εάν επιλέξετε 0 για το πλάτος το πλάτος της εικόνας χρησιμοποιείται. Εάν επιλέξετε 0 για το ύψος το ύψος υπολογίζεται βασισμένο στον αριθμό γραμμών στο μήνυμα. show_menu(str,def)παρουσιάζει ένα μενού επιλογών str δείχνει το κείμενο των επιλογών. Αυτό αποτελείται από  διαφορετικά στοιχεία επιλογών με μια κάθετη μεταξύ τους. Παραδείγματος χάριν, str = 'menu0|menu1|menu2'. Όταν το πρώτο στοιχείο επιλέγεται τα 0 επιστρέφονται, κ.λπ.... Όταν ο χρήστης δεν επιλέγει κανένα στοιχείο, η προκαθορισμένη αξία def επιστρέφεται. show_menu_pos(x,y,str,def) παρουσιάζει ένα μενού επιλογών όπως στην προηγούμενη λειτουργία αλλά στη θέση x,y στην οθόνη. get_color(defcol) ρωτά τον παίχτη για ενα χρώμα defcol είναι το χρώμα προεπιλογής. Εάν ο χρήστης το ακυρώσει η αξία -1 επιστρέφεται. get_open_filename(filter,fname) ζητά από το χρήστη για ένα όνομα αρχείου για να ανοίξει με το δεδομένο φίλτρο. Το φίλτρο έχει το τύπο "name1|mask1|name2|mask2|…". Μια μάσκα περιέχει διαφορετικές επιλογές με μια άνω τελεία μεταξύ τους. * σημαίνει οποιαδήποτε σειρά. Παραδείγματος χάριν: "bitmaps|*.bmp;*.wmf". get_save_filename(filter,fname)  ζητά ένα όνομα αρχείου για να σώσει με το δεδομένο φίλτρο. get_directory(dname) ζητά έναν κατάλογο dname είναι το όνομα προεπιλογής.get_directory_alt(capt,root)Ένας εναλλακτικός τρόπος να ζητήσει κατάλογο capt είναι ο τίτλος  επίδειξης root είναι η ρίζα του δέντρου καταλόγου που παρουσιάζεται. Χρησιμοποιήστε την κενή σειρά για να παρουσιάσετε ολόκληρο δέντρο.show_error(str,abort)επιδεικνύει ένα μήνυμα τυποποιημένου λάθους (ή/και το γράφει στο αρχείο ημερολογίου). abort δείχνει εάν το παιχνίδι πρέπει να εγκαταλειφθεί.

 

 

Κατάλογος Highscore

Ένας κατάλογος highscore διατηρείται για κάθε παιχνίδι. Οι ακόλουθες λειτουργίες υπάρχουν:

highscore_show(numb) παρουσιάζει τον πίνακα highscore numb είναι το νέο αποτέλεσμα. Εάν αυτό το αποτέλεσμα είναι αρκετά καλό θα προστεθεί στον κατάλογο, ο χρήστης μπορεί να εισάγει ένα όνομα. Χρησιμοποιήστε -1 απλά για να επίδειξη τον τρέχων κατάλογο. highscore_set_background(back) θέτει την εικόνα background.   back  πρέπει να είναι  ένας από τους πόρους background. highscore_set_border(show) θέτει εάν η φόρμα highscore πρέπει να έχει σύνορα ή όχι. highscore_set_font(name,size,style)θέτει την γραμματοσειρά που χρησιμοποιείται για το κείμενο στον πίνακα. (Αυτό είναι μια κανονική γραμματοσειρά των windows, όχι μια των πόρων). Διευκρινίζετε το όνομα, το μέγεθος και το style (0=normal, 1= bold, 2=italic, 3=bold-italic). highscore_set_colors(back,new,other) θέτει τα χρώματα που χρησιμοποιούνται για το background, τη νέα είσοδο στον πίνακα, και τις άλλες καταχωρήσεις. highscore_set_strings(caption,nobody,escape) αλλάζουν τις διαφορετικές σειρές προεπιλογής χρησιμοποιούμενες κατά την παρουσίαση του πίνακα highscore.   caption  είναι ο τίτλος της μορφής.   nobody είναι η σειρά χρησιμοποιούμενη όταν δεν υπάρχει κανένας στην λίστα.   escape

Page 117: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

είναι η σειρά στο κάτω σημείο που δείχνει το πλήκτρο escape . Μπορείτε να το χρησιμοποιήσετε αυτό όταν πρέπει να χρησιμοποιήσει το παιχνίδι σας μια διαφορετική γλώσσα. highscore_show_ext(numb,back,border,col1,col2,name,size) παρουσιάζει τον πίνακα highscore με διάφορες επιλογές (μπορεί επίσης να επιτευχθεί με τη χρησιμοποίηση διάφορων προηγούμενων λειτουργιών). numb είναι το νέο score. Εάν αυτό το score είναι αρκετά καλό θα προστεθεί στον κατάλογο, ο χρήστης μπορεί να εισαγάγει ένα όνομα. χρησιμοποιήστε -1 για την τρέχουσα λίστα back είναι η εικόνα background που χρησιμοποιεί,  border δείχνει εαν πρέπει να παρουσιαστούν σύνορα  col1 είναι το χρώμα για τη νέα καταχώριση, col2 το χρώμα για της  άλλες καταχωρήσεις name είναι το όνομα της γραμματοσειράς που χρησιμοποιεί, και το size είναι το μέγεθος γραμματοσειράς . highscore_clear() καθαρίζει τον κατάλογο highscore. highscore_add(str,numb) προσθέτει έναν παίχτη με το ονόμα str και το αποτέλεσμα numb στον κατάλογο. highscore_add_current() προσθέτει το τρέχον αποτέλεσμα στον κατάλογο highscore. Ο παίχτης καλείται να παρέχει ένα όνομα. highscore_value(place) επιστρέφει το αποτέλεσμα του παίχτη στη δεδομένη θέση (1-10). Αυτό μπορεί να χρησιμοποιηθεί για να σχεδιάσει τον κατάλογο highscore σας. highscore_name(place) επιστρέφει το όνομα του παίχτη στη δεδομένη θέση (1-10). draw_highscore(x1,y1,x2,y2) σχεδιάζει τον πίνακα highscore στο δωμάτιο στο υποδειγμένο κιβώτιο, χρησιμοποιώντας την τρέχουσα γραμματοσειρά.

 

Πόροι

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

 

 

Sprites

Οι ακόλουθες λειτουργίες θα σας δώσουν πληροφορίες για τα sprite:

sprite_exists(IND) επιστρέφει εάν ένα sprite με το δεδομένο δείκτη υπάρχει. sprite_get_name(IND) επιστρέφει το όνομα του sprite με το δεδομένο δείκτη. sprite_get_number(IND) επιστρέφει τον αριθμό subimages του sprite με το δεδομένο δείκτη.sprite_get_width(IND) επιστρέφει το πλάτος του sprite με το δεδομένο δείκτη. sprite_get_height(IND) επιστρέφει το ύψος του sprite με το δεδομένο δείκτη. sprite_get_transparent(IND)επιστρέφει εάν ένα sprite με το δεδομένο δείκτη είναι διαφανές. sprite_get_smooth(IND)επιστρέφει εάν ένα sprite με το δεδομένο δείκτη έχει λειάνει τις άκρες.sprite_get_preload(IND) επιστρέφει εάν ένα sprite με το δεδομένο δείκτη πρέπει να φορτωθεί εκ των προτέρων. sprite_get_xoffset(IND) επιστρέφει το Χ-όφσετ του sprite με το δεδομένο δείκτη. sprite_get_yoffset(IND) επιστρέφει το Υ-όφσετ του sprite με το δεδομένο δείκτη. sprite_get_bbox_left(IND) επιστρέφει την αριστερή πλευρά του bounding box sprite με το δεδομένο δείκτη. sprite_get_bbox_right(IND) επιστρέφει τη δεξιά πλευρά του bounding box του sprite με το δεδομένο δείκτη. sprite_get_bbox_top(IND) επιστρέφει την κορυφαία πλευρά του bounding box του sprite με το δεδομένο δείκτη. sprite_get_bbox_bottom(IND) επιστρέφει την κατώ πλευρά του bounding box του sprite με το δεδομένο δείκτη. sprite_get_bbox_mode(IND) επιστρέφει το bounding box (0=automatic, 1=full εικόνα, 2=manual) του sprite με το δεδομένο δείκτη.

Page 118: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

sprite_get_precise(ind) επιστρέφει εάν το sprite με το δεδομένο δείκτη χρησιμοποιεί τον ακριβή έλεγχο σύγκρουσης.

 

Ήχοι 

Οι ακόλουθες λειτουργίες θα σας δώσουν  πληροφορίες για έναν ήχο:

sound_exists(IND) επιστρέφει εάν ένας ήχος με το δεδομένο δείκτη υπάρχει. sound_get_name(IND) επιστρέφει το όνομα του ήχου με το δεδομένο δείκτη. sound_get_kind(IND) επιστρέφει το είδος του ήχου με το δεδομένο δείκτη (0=normal, 1=background, 2=3d, 3=mmplayer). sound_get_preload(IND) επιστρέφει εάν ο ήχος με το δεδομένο δείκτη πρέπει να είναι preload

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

sound_discard(index) ελευθερώνει την ακουστική μνήμη που χρησιμοποιείται για τον υποδειγμένο ήχο. sound_restore(index) αποκαθιστά τον υποδειγμένο ήχο στην ακουστική μνήμη για άμεση χρήση.

 

 

Background

Οι ακόλουθες λειτουργίες θα σας δώσουν πληροφορίες για ένα background:

background_exists(IND) επιστρέφει εάν ένα background με το δεδομένο δείκτη υπάρχει. background_get_name(IND) επιστρέφει το όνομα του background με το δεδομένο δείκτη. background_get_width(IND) επιστρέφει το πλάτος του background με το δεδομένο δείκτη. background_get_height(IND) επιστρέφει το ύψος του background με το δεδομένο δείκτη. background_get_transparent(IND) επιστρέφει εάν το background με το δεδομένο δείκτη είναι διαφανές. background_get_smooth(IND) επιστρέφει εάν το background με το δεδομένο δείκτη έχει λειάνει τις άκρες. background_get_preload(IND) επιστρέφει εάν το background με το δεδομένο δείκτη πρέπει να φορτωθεί εκ των προτέρων.

 

Γραμματοσειρές

Οι ακόλουθες λειτουργίες θα σας δώσουν πληροφορίες για μια γραμματοσειρά:

font_exists(IND) επιστρέφει εάν μια γραμματοσειρά με το δεδομένο δείκτη υπάρχει. font_get_name(IND) επιστρέφει το όνομα της γραμματοσειράς με το δεδομένο δείκτη. font_get_fontname(IND) επιστρέφει το fontname της γραμματοσειράς με το δεδομένο δείκτη. font_get_bold(IND) επιστρέφει εάν η γραμματοσειρά με το δεδομένο δείκτη είναι bold. font_get_italic(IND) επιστρέφει εάν η γραμματοσειρά με το δεδομένο δείκτη είναι italic.font_get_first(IND) επιστρέφει το δείκτη του πρώτου χαρακτήρα στην γραμματοσειρά με το

Page 119: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

δεδομένο δείκτη. font_get_last(IND) επιστρέφει το δείκτη του τελευταίου χαρακτήρα στην γραμματοσειρά με το δεδομένο δείκτη.

 

Πορείες 

Οι ακόλουθες λειτουργίες θα σας δώσουν πληροφορίες για μια πορεία:

path_exists(IND) επιστρέφει εάν μια πορεία με το δεδομένο δείκτη υπάρχει. path_get_name(IND) επιστρέφει το όνομα της πορείας με το δεδομένο δείκτη. path_get_length(IND) επιστρέφει το μήκος της πορείας με το δεδομένο δείκτη. path_get_kind(IND) επιστρέφει το είδος συνδέσεων της πορείας με το δεδομένο δείκτη (0=straight, 1=smooth). path_get_closed(ind) επιστρέφει εάν η πορεία είναι κλειστή ή όχι. path_get_precision(IND) επιστρέφει την ακρίβεια που χρησιμοποιείται για τη δημιουργία των ομαλών πορειών. path_get_number(IND) επιστρέφει τον αριθμό καθορισμού των σημείων για την πορεία. path_get_point_x(IND,n) επιστρέφει την Χ-συντεταγμένη του n καθορίζοντας το σημείο για την πορεία. 0 είναι το πρώτο σημείο. path_get_point_y(IND,n) επιστρέφει η Υ-συντεταγμένη του n που καθορίζει το σημείο για την πορεία. 0 είναι το πρώτο σημείο. path_get_point_speed(ind,n) επιστρέφει ο παράγοντας ταχύτητας στο n καθορίζοντας το σημείο για την πορεία. 0 είναι το πρώτο σημείο. path_get_x(IND,pos) επιστρέφει την Χ-συντεταγμένη στη θέση pos για την πορεία το pos πρέπει να βρεθεί μεταξύ 0 και 1. path_get_y(IND, pos) επιστρέφει που η Υ-συντεταγμένη στη θέση pos για την πορεία το pos πρέπει να βρεθεί μεταξύ 0 και 1. path_get_speed(ind,pos) επιστρέφει ο παράγοντας ταχύτητας στη θέση pos για την πορεία το pos πρέπει να βρεθεί μεταξύ 0 και 1.

 

Χειρόγραφα 

Οι ακόλουθες λειτουργίες θα σας δώσουν πληροφορίες για ένα χειρόγραφο:

script_exists(IND) επιστρέφει εάν ένα χειρόγραφο με το δεδομένο δείκτη υπάρχει. script_get_name(IND) επιστρέφει το όνομα του χειρογράφου με το δεδομένο δείκτη. script_get_text(IND) επιστρέφει τη σειρά κειμένων του χειρογράφου με το δεδομένο δείκτη.

 

 

Time lines

Οι ακόλουθες λειτουργίες θα σας δώσουν πληροφορίες για μια υπόδειξη ως προς τις χρονικές στιγμές:

timeline_exists(IND) επιστρέφει εάν μια timeline με το δεδομένο δείκτη υπάρχει. timeline_get_name(IND) επιστρέφει το όνομα της timeline με το δεδομένο δείκτη.

 

Page 120: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Αντικείμενα

Οι ακόλουθες λειτουργίες θα σας δώσουν πληροφορίες για ένα αντικείμενο:

object_exists(IND) επιστρέφει εάν ένα αντικείμενο με το δεδομένο δείκτη υπάρχει. object_get_name(IND) επιστρέφει το όνομα του αντικειμένου με το δεδομένο δείκτη. object_get_sprite(IND) επιστρέφει το δείκτη sprite προεπιλογής του αντικειμένου με το δεδομένο δείκτη. object_get_solid(IND) επιστρέφει εάν το αντικείμενο με το δεδομένο δείκτη είναι στερεό απο προεπιλογή. object_get_visible(IND) επιστρέφει εάν το αντικείμενο με το δεδομένο δείκτη είναι απο προεπιλογή ορατή. object_get_depth(IND) επιστρέφει το βάθος του αντικειμένου με το δεδομένο δείκτη. object_get_persistent(IND) επιστρέφει εάν το αντικείμενο με το δεδομένο δείκτη είναι επίμονο. object_get_mask(IND) επιστρέφει το δείκτη της μάσκας του αντικειμένου με το δεδομένο δείκτη (-1 εάν δεν έχει καμία ειδική μάσκα). object_get_parent (IND)επιστρέφει το δείκτη των γονέων του αντικειμένου IND (-1 εάν δεν έχει κανέναν γονέα). object_is_ancestor(ind1,ind2)επιστρέφει εάν το αντικείμενο ind2 είναι πρόγονος του αντικειμένου ind1.

 

Δωμάτια 

Οι ακόλουθες λειτουργίες θα σας δώσουν πληροφορίες για ένα δωμάτιο:

room_exists(IND) επιστρέφει εάν ένα δωμάτιο με το δεδομένο δείκτη υπάρχει. room_get_name(IND) επιστρέφει το όνομα του δωματίου με το δεδομένο δείκτη.

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

 

 

Αλλάζοντας πόρους

Αυτές οι λειτουργίες είναι διαθέσιμες μόνο στην δηλωμένη έκδοση του Game Maker.  

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

       μην αλλάξτε τους πόρους που χρησιμοποιούνται. Αυτό θα οδηγήσει σε λάθη! Παραδείγματος χάριν, μην αλλάξτε sprite που χρησιμοποιείται από μια περίπτωση.

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

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

Page 121: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

       ο χειρισμός των πόρων μπορεί να είναι αργός. Παραδείγματος χάριν, τα μεταβαλλόμενα sprites ή τα backgrounds είναι σχετικά αργά. Έτσι μην το χρησιμοποιήστε κατά τη διάρκεια του παιχνιδιού.

       η δημιουργία των πόρων κατά τη διάρκεια του παιχνιδιού (και ιδιαίτερα στα sprites και το background) χρησιμοποιεί τεράστιο ποσό μνήμης. Έτσι να είστε εξαιρετικά προσεκτικοί με αυτό. Παραδείγματος χάριν, εάν έχοντας ένα 32 frame 128x128 animated sprite αποφασίζετε να δημιουργήσετε 36 αντίγραφα από αυτο θα καταναλώσετε 36x32x128x128x4 = 36 ΜΒ της μνήμης!

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

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

Sprites

Οι ακόλουθες ρουτίνες είναι διαθέσιμες για τις μεταβαλλόμενες ιδιότητες του sprite :

sprite_set_offset(IND,xoff,yoff)θέτει το όφσετ για το sprite με το δεδομένο δείκτη. sprite_set_bbox_mode(ind,mode) θέτει το bounding box για το sprite(0=automatic, 1=full image, 2=manual). sprite_set_bbox(ind,left,top,right,bottom) θέτει το  bounding box του sprite με το δεδομένο δείκτη. Δουλεύει μόνο όταν  το bounding box είναι manual. sprite_set_precise(ind,mode) θέτει εάν το sprite με το δεδομένο δείκτη χρησιμοποιεί τον ακριβή έλεγχο σύγκρουσης (true ή false).

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

sprite_duplicate(IND)δημιουργεί ένα αντίγραφο sprite με το δεδομένο δείκτη. Επιστρέφει το δείκτη του νέου sprite. Όταν ένα λάθος εμφανίζεται -1 επιστρέφεται. sprite_assign(IND,spr)ορίζει το υποδειγμένο sprite του sprite IND. Έτσι αυτό κάνει ένα αντίγραφο του sprite. Κατ' αυτό τον τρόπο μπορείτε εύκολα να θέσετε το υπάρχον sprite διαφορετικό, π.χ. νέο sprite. sprite_merge(ind1,ind2) συγχωνεύει τις εικόνες από sprite ind2 σε sprite ind1, προσθέτονταστες στο τέλος. Εάν τα μεγέθη δεν θα ταιριάξουν με τα sprites τεντώνονται για να τα διορθώσουν. Sprite ind2 δεν διαγράφεται sprite_add(fname,imgnumb,precise,transparent,smooth,preload,xorig,yorig)προσθέτει την εικόνα που αποθηκεύεται στο αρχείο fname στο σύνολο sprite πόρων. Μόνο bmp, jpg και οι εικόνες GIF μπορούν να εξεταστούν. Όταν η εικόνα είναι bmp ή jpg η εικόνα αυτή μπορεί να είναι ένα strip που περιέχει διάφορα subimages για sprite το ένα δίπλα στο άλλο. imgnumb θα δείξει τον αριθμό τους (1 για μια ενιαία εικόνα). Για (animated) εικόνες GIF, αυτό το επιχείρημα δεν χρησιμοποιείται, ο αριθμός εικόνων στο αρχείο GIF είναι χρησιμοποιημένος. precise δείχνει εάν ο ακριβής έλεγχος σύγκρουσης πρέπει να χρησιμοποιηθεί.   transparent δείχνει εάν η εικόνα είναι μερικώς διαφανής.   smooth δείχνει εάν θα ομαλύνει τις άκρες.   preload    δείχνει εάν θα φορτώσει εκ των προτέρων την εικόνα στη μνήμη .   xorig    και yorig    δείχνει τη θέση προέλευσης του sprite. Η λειτουργία επιστρέφει το δείκτη του νέου sprite που μπορείτε έπειτα να χρησιμοποιήσετε για να τον σχεδιάσετε ή για να το ορίσετε στο μεταβλητό sprite_index μιας περίπτωσης. Όταν ένα λάθος εμφανίζεται -1 επιστρέφεται. sprite_replace(ind,fname,imgnumb,precise,transparent,smooth,preload,xorig,yorig)όπως πιο πάνω αλλά σε αυτήν την περίπτωση το sprite με το δείκτη IND αντικαθίσταται. Η λειτουργία επιστρέφει εάν είναι επιτυχής. sprite_create_from_screen(x,y,w,h,precise,transparent,smooth,preload,xorig,yorig)δημιουργεί sprite με την αντιγραφή της δεδομένης περιοχής από την οθόνη. Αυτό το καθιστά πιθανό να δημιουργήσει οποιοδήποτε sprite θέλετε. Σχεδιάστε την εικόνα στην οθόνη χρησιμοποιώντας τις λειτουργίες σχεδίων και δημιουργήστε έπειτα sprite από αυτήν. (Εάν δεν το κάνετε αυτό στο γεγονός σχεδίων μπορείτε ακόμη να το κάνετε κατά τέτοιο τρόπο ώστε να μην είναι ορατό στην οθόνη με την μη ανανέωση της οθόνης). Οι άλλες παράμετροι είναι όπως πιο πάνω. Η λειτουργία επιστρέφει το δείκτη του νέου sprite. sprite_add_from_screen(ind,x,y,w,h)   προσθέτει μια περιοχή της οθόνης ως επόμενο

Page 122: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

subimage sprite με το δείκτη IND. sprite_delete(IND)διαγράφει sprite από τη μνήμη, ελευθερώνει τη χρησιμοποιούμενη μνήμη .

Η ακόλουθη ρουτίνα υπάρχει για να αλλάξει την εμφάνιση του sprite.

sprite_set_alpha_from_sprite(IND,spr)αλλάζει τις άλφα τιμές (transparancy) του sprite με το δείκτη INDχρησιμοποιώντας τις τιμές χρώματος sprite spr. Αυτό δεν είναι αναστρέψιμο.

 

Ήχοι 

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

sound_add(fname,kind,preload) προσθέτει ένα πόρο στο παιχνίδι fname είναι το όνομα του ήχου kind δείχνει το είδος ήχου (0=normal, 1=background, 2=3D, 3=mmplayer) preload  δείχνει εάν ο ήχος πρέπει αμέσως να αποθηκευτεί στην ακουστική μνήμη (true ή false). Η λειτουργία επιστρέφει το δείκτη του νέου ήχου, ο οποίος μπορεί να χρησιμοποιηθεί για να παίξει τον ήχο. (-1 εάν ένα λάθος εμφανίστηκε, π.χ. το αρχείο δεν υπάρχει). sound_replace(index,fname,kind,loadonuse)  όπως την προηγούμενη λειτουργία αλλά αυτή τη φορά ο νέος ήχος δεν δημιουργείται αλλά ο υπάρχων ήχος αντικαθίσταται, ελευθερώνοντας τον παλαιό ήχο. Επιστρέφει εάν είναι σωστό. sound_delete(index) διαγράφει τον υποδειγμένο ήχο, ελευθερώνει όλη τη μνήμη που συνδέεται με αυτόν. Δεν μπορεί πλέον να αποκατασταθεί.

Backgrounds

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

background_duplicate(IND) δημιουργεί ένα αντίγραφο του background με το δεδομένο δείκτη. Επιστρέφει το δείκτη του νέου background. Όταν ένα λάθος εμφανίζεται -1 επιστρέφεται. background_assign(IND,back) ορίζει το υποδειγμένο background στο background IND. Έτσι αυτό κάνει ένα αντίγραφο του background. background_add(fname,transparent,smooth,preload) προσθέτει την εικόνα που αποθηκεύεται στο αρχείο fname στο σύνολο πόρων background. Μόνο bmp και jpg εικόνες μπορούν να εξεταστούν.   transparent δείχνει εάν η εικόνα είναι μερικώς διαφανής.   smooth δείχνει εάν θα λειάνει τις άκρες.   preload δείχνει εάν θα φορτώσει εκ των προτέρων την εικόνα στη μνήμη . Η λειτουργία επιστρέφει το δείκτη του νέου background που μπορείτε έπειτα να χρησιμοποιήσετε για να το σχεδιάσετε ή για να το ορίσετε στη μεταβλητή background_index[0 ] για να το καταστήσετε ορατό στο τρέχον δωμάτιο. Όταν ένα λάθος εμφανίζεται -1 επιστρέφεται. background_replace(ind,fname,transparent,smooth,preload)  όπως πιο πάνω αλλά σε αυτήν την περίπτωση το background με το δείκτη IND αντικαθίσταται. Η λειτουργία επιστρέφει εάν είναι επιτυχής. Όταν το background είναι αυτήν την περίοδο ορατό στο δωμάτιο αυτό θα αντικατασταθεί επίσης. background_create_color(w,h,col,preload)) δημιουργεί ένα background του δεδομένου μεγέθους και με το δεδομένο χρώμα. Επιστρέφει το δείκτη του νέου background. Όταν ένα λάθος εμφανίζεται -1 επιστρέφεται. background_create_gradient(w,h,col1,col2,kind,preload) δημιουργεί ένα background με κλίση του δεδομένου μεγέθους col1 και col2 δείχνει ότι το είδος δύο χρωμάτων είναι ένας αριθμός μεταξύ 0 και 5 δείχνοντας το είδος κλίσης: 0=horizontal 1=vertical, 2 = ορθογώνιο, 3=ellipse, 4=double οριζόντιο, 5=double κατακόρυφος . Επιστρέφει το δείκτη του νέου background. Όταν ένα λάθος εμφανίζεται -1 επιστρέφεται. background_create_from_screen(x,y,w,h,transparent,smooth,preload)  δημιουργεί ένα background με την αντιγραφή της δεδομένης περιοχής από την οθόνη. Αυτό το καθιστά πιθανό να δημιουργήσει οποιοδήποτε background θέλετε. Σχεδιάστε την εικόνα στην οθόνη χρησιμοποιώντας τις λειτουργίες σχεδίων και δημιουργήστε έπειτα ένα background από αυτήν. (Εάν δεν το κάνετε αυτό στο γεγονός σχεδίων μπορείτε ακόμη να το κάνετε κατά

Page 123: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

τέτοιο τρόπο ώστε να μην είναι ορατό στην οθόνη με την μη ανανέωση της οθόνης).  Οι άλλες παράμετροι είναι όπως πιο πάνω. Η λειτουργία επιστρέφει το δείκτη του νέου background. background_delete(IND) διαγράφει το background από τη μνήμη, ελευθερώνει τη χρησιμοποιούμενη μνήμη .

Η ακόλουθη ρουτίνα υπάρχει για να αλλάξει την εμφάνιση ενός background.

background_set_alpha_from_background(IND,back) αλλάζει τις άλφα τιμές (transparancy) στο background με το δείκτη IND χρησιμοποιώντας τις τιμές χρώματος background. Αυτό δεν είναι αναστρέψιμο.

 

Γραμματοσειρές

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

font_add(name,size,bold,italic,first,last) προσθέτει μια νέα γραμματοσειρά και επιστρέφει το δείκτη της, υποβάλλοντας το όνομα, το μέγεθος, εάν είναι bold η italic και τον πρώτο και τελευταίο χαρακτήρα που πρέπει να δημιουργηθεί. font_add_sprite(spr,first,prop,sep)προσθέτει μια νέα γραμματοσειρά και επιστρέφει το δείκτη της. Η γραμματοσειρά δημιουργείται από sprite.Το Sprite πρέπει να περιέχει ένα subimage για κάθε χαρακτήρα.   first δείχνει το δείκτη του πρώτου χαρακτήρα του sprite. Παραδείγματος χάριν, χρησιμοποιήστε ord(‘0’) εάν το sprite σας περιέχει μόνο ψηφία.   prop     δείχνει εάν η γραμματοσειρά είναι αναλογική γραμματοσειρά . Σε μια αναλογική γραμματοσειρά , για κάθε χαρακτήρα το πλάτος του bounding box  χρησιμοποιείται ως πλάτος χαρακτήρα. Τέλος, το SEP    δείχνει το ποσό άσπρου διαστήματος που πρέπει να χωρίσει τους χαρακτήρες οριζόντια. Μια χαρακτηριστική αξία θα βρισκόταν μεταξύ 2 και 8 ανάλογα με το μέγεθος γραμματοσειράς . font_replace(ind,name,size,bold,italic,first,last)   αντικαθιστά την γραμματοσειρά IND με μια νέα γραμματοσειρά , υποβάλλοντας το όνομα, το μέγεθος, εάν είναι bold η italic, και τον πρώτο και τελευταίο χαρακτήρα που πρέπει να δημιουργήσουν. font_replace_sprite(ind,spr,first,prop,sep)αντικαθιστά την γραμματοσειρά IND με μια νέα sprite-based γραμματοσειρά . font_delete(IND) διαγράφει την γραμματοσειρά με το δεδομένο δείκτη, ελευθερώνοντας τη μνήμη που χρησιμοποιεί.

Πορείες 

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

path_set_kind(ind,val) θέτει το είδος συνδέσεων της πορείας με το δεδομένο δείκτη (0=straight, 1=smooth). path_set_closed(ind,closed) θέτει εάν η πορεία πρέπει να κλείσει (true) ή να ανοίξει (false). path_set_precision(ind,prec)  θέτει την ακρίβεια με την οποία η ομαλή πορεία υπολογίζεται (πρέπει να βρεθεί μεταξύ 1 και 8). path_add() προσθέτει νέες κενές πορείες. Ο δείκτης της πορείας επιστρέφεται. path_delete(IND)διαγράφει την πορεία με το δεδομένο δείκτη. path_duplicate (IND)δημιουργεί ένα διπλό αντίγραφο της πορείας με το δεδομένο δείκτη. Επιστρέφει το δείκτη του αντιγράφου. path_assign(ind,path)ορίζει την υποδειγμένη πορεία στην πορεία IND. Έτσι αυτό κάνει ένα αντίγραφο της πορείας. Κατ' αυτό τον τρόπο μπορείτε εύκολα να θέσετε μια υπάρχουσα πορεία σε μια διαφορετική, π.χ. νέα πορεία. path_add_point(ind,x,y,speed) προσθέτει ένα σημείο στην πορεία με το δεδομένο δείκτη, στη θέση (x,y) και με το δεδομένο παράγοντα ταχύτητας. Θυμηθείτε ότι ένας παράγοντας 100 αντιστοιχεί στην πραγματική ταχύτητα. Οι χαμηλότερες τιμές σημαίνουν και υψηλότερη μέση ταχύτητα.

Page 124: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

path_insert_point(ind,n,x,y,speed)παρεμβάλλει ένα σημείο στην πορεία με το δεδομένο δείκτη πριν από το σημείο n, στη θέση (x,y) και με το δεδομένο παράγοντα ταχύτητας. path_change_point(ind,n,x,y,speed)  αλλάζει το σημείο n στην πορεία με το δεδομένο δείκτη στη θέση (x,y) και το δεδομένο παράγοντα ταχύτητας. path_delete_point(ind,n) διαγράφει το σημείο n στην πορεία με το δεδομένο δείκτη. path_clear_points(IND)καθαρίζει όλα τα σημεία στην πορεία, που το μετατρέπουν σε κενή πορεία. path_reverse(IND) αντιστρέφει την πορεία. path_mirror(IND)  αντανακλά την πορεία οριζόντια (όσον αφορά το κέντρο της). path_flip(IND)γυρνά την πορεία κάθετα (όσον αφορά το κέντρο της). path_rotate(ind,angle)περιστρέφει τη πορεία δεξιόστροφα σε μοίρες (γύρω από το κέντρο της). path_scale(IND,xscale,yscale)θέτει την κλίμακα για τη πορεία με τους δεδομένους παράγοντες (από το κέντρο της). path_shift(IND, xshift, yshift) μετατοπίζει την πορεία πέρα από το δεδομένο ποσό.

Scripts

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

execute_string(str) εκτελεί το κομμάτι του κώδικα στη σειρά.str execute_file(fname) εκτελέστε το κομμάτι του κώδικα στο αρχείο.

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

script_execute(scr,arg0,arg1.)..εκτελέστε το χειρόγραφο με το δείκτη SCR με το δεδομένο argument.

 

Time lines

Οι ακόλουθες ρουτίνες είναι διαθέσιμες για τη δημιουργία και την αλλαγή των χρονικών γραμμών. Μην αλλάξτε τις χρονικές στιγμές που είναι σε χρήση!

timeline_add()προσθέτει μια νέα χρονική στιγμή. Επιστρέφει το δείκτη της χρονικής γραμμής. timeline_delete(IND) διαγράφει τη χρονική στιγμή με το δεδομένο δείκτη. σιγουρευτείτε οτι καμία περίπτωση δεν χρησιμοποιεί τη χρονική στιγμή σε οποιοδήποτε δωμάτιο. timeline_moment_add(ind,step,codestr)προσθέτει μια ενέργεια κώδικα στη χρονική στιγμή στο βήμα στιγμής codestr περιέχει τον κώδικα για τις ενέργειες. Εάν το βήμα δεν υπάρχει δημιουργείται. Έτσι μπορείτε να προσθέσετε πολλές ενέργειες κώδικα για την ίδια στιγμή. timeline_moment_clear(ind,step)Μπορείτε να χρησιμοποιήσετε αυτήν την λειτουργία για να καθαρίσετε όλες τις ενέργειες για μια ιδιαίτερη στιγμή.

 

Objects

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

object_set_sprite(IND,spr) θέτει το sprite του αντικειμένου με το δεδομένο δείκτη. Χρήση -1 θα αφαιρέσει το τρέχον sprite από το αντικείμενο.

Page 125: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

object_set_solid(ind,solid)θέτει εάν οι περιπτώσεις που δημιουργούνται του αντικειμένου πρέπει να προκαθορίσουν εάν είναι στερεές (true ή false). object_set_visible(ind,vis)  θέτει εάν οι περιπτώσεις που δημιουργούνται του αντικειμένου πρέπει να προκαθορίσουν εάν είναι ορατά (true ή false). object_set_depth(IND,depth) θέτει το βάθος προεπιλογής των περιπτώσεων που δημιουργούνται του αντικειμένου. object_set_persistent(IND,pers)θέτει εάν οι περιπτώσεις που δημιουργούνται του αντικειμένου πρέπει να προκαθορίσουν εάν είναι επίμονα (true ή false). object_set_mask(IND,spr)θέτει τη sprite μάσκα του αντικειμένου με το δεδομένο δείκτη. Χρήση -1 για να θέσει τη μάσκα για να είναι sprite του αντικειμένου.object_set_parent(IND,obj)θέτει τον γονέα του αντικειμένου. Χρήση -1 για να μην έχει έναν γονέα. Η αλλαγή του γονέα αλλάζει τη συμπεριφορά των περιπτώσεων του αντικειμένου.

Οι ακόλουθες ρουτίνες είναι χρήσιμες για τα αντικείμενα on the fly. Όπως με όλους τους πόρους σε μεταβαλλόμενες ρουτίνες, πρέπει να είστε πολύ προσεκτικοί στο ότι δεν θα δημιουργείτε νέα αντικείμενα όλη την ώρα.

object_add() προσθέτει ένα νέο αντικείμενο. Επιστρέφει το δείκτη του αντικειμένου. Μπορείτε τώρα να χρησιμοποιήσετε αυτόν τον δείκτη στις ρουτίνες για να θέσετε ανωτέρω ορισμένες ιδιότητες του αντικειμένου και έπειτα μπορείτε να χρησιμοποιήσετε το δείκτη για να δημιουργήσετε τις περιπτώσεις του αντικειμένου. object_delete(IND) διαγράφει το αντικείμενο με το δεδομένο δείκτη. Σιγουρευτείτε ότι καμία περίπτωση του αντικειμένου δεν υπάρχει σε οποιαδήποτε από τα δωμάτια. object_event_add(IND,evtype,evnumb,codestr)Για να δώσουμε στο αντικείμενο μια συμπεριφορά πρέπει να καθορίσουμε τα γεγονότα για το αντικείμενο. Μπορείτε μόνο να προσθέσετε τις ενέργειες κώδικα στα γεγονότα. Πρέπει να διευκρινίσετε το αντικείμενο, το τύπο γεγονότος, τον αριθμό γεγονότος (χρησιμοποιήστε τις σταθερές που έχουν διευκρινιστεί πριν για τη λειτουργία event_perform ()). Τελικά παρέχετε τη σειρά κώδικα που πρέπει να εκτελεσθεί. Μπορείτε να προσθέσετε πολλές ενέργειες κώδικα σε κάθε γεγονός. object_event_clear(IND,evtype,evnumb)Μπορείτε να χρησιμοποιήσετε αυτήν την λειτουργία για να καθαρίσετε όλες τις ενέργειες για ένα ιδιαίτερο γεγονός.

Η δημιουργία των αντικειμένων είναι ειδικά χρήσιμη όταν σχεδιάζετε τα χειρόγραφα ή τις βιβλιοθήκες ενέργειας. Παραδείγματος χάριν, ένα χειρόγραφο έναρξης μπορεί να δημιουργήσει ένα αντικείμενο για να επιδείξει ένα κείμενο και ένα άλλο χειρόγραφο μπορεί να προσθέσει ένα τέτοιο αντικείμενο με ένα ιδιαίτερο κείμενο. Κατ' αυτό τον τρόπο έχετε έναν απλό μηχανισμό για να επιδείξετε τα κείμενα χωρίς την ανάγκη να δημιουργηθούν τα αντικείμενα που χρησιμοποιούν την τυποποιημένη διασύνδεση. Δωμάτια

Ο χειρισμός των δωματίων on the fly(εκείνη τη στιγμή) είναι ένα επικίνδυνο πράγμα. Πρέπει να συνειδητοποιήσετε ότι υπάρχουν αλλαγές στα δωμάτια όλη την ώρα λόγω αυτόν που συμβαίνουν στο παιχνίδι. Αυτό κανονικά περιλαμβάνει μόνο το τρέχων ενεργό δωμάτιο και υπάρχουν πολλές ρουτίνες που περιγράφονται στα προηγούμενα τμήματα για να χειριστούν τις περιπτώσεις, τα backgrounds, και τα tiles στο ενεργό δωμάτιο. Αλλά οι αλλαγές στο ενεργό δωμάτιο θα διαρκέσουν εάν το δωμάτιο είναι επίμονο. Ως εκ τούτου, δεν πρέπει ποτέ να χειριστείτε τις πτυχές του τρέχων ενεργού δωματίου ή οποιουδήποτε δωματίου που είναι επίμονο και που έχετε επισκεφτεί ήδη πριν. Τέτοιες αλλαγές γενικά δεν θα παρατηρηθούν αλλά μερικές φορές μπορούν και να οδηγήσουν σε απροσδόκητα λάθη. Εξαιτίας του γεγονότος ότι τα δωμάτια συνδέονται με έναν περίπλοκο τρόπο δεν υπάρχει επίσης καμία ρουτίνα για να διαγράψει ένα δωμάτιο.

Οι ακόλουθες ρουτίνες είναι διαθέσιμες 

room_set_width(IND,W)θέτει το πλάτος για το δωμάτιο με τον υποδειγμένο δείκτη. room_set_height(IND,χ)θέτει το ύψος για το δωμάτιο με τον υποδειγμένο δείκτη. room_set_caption(ind,str) θέτει τον τίτλο για το δωμάτιο με τον υποδειγμένο δείκτη. room_set_persistent(IND,val)θέτει εάν το δωμάτιο με τον υποδειγμένο δείκτη είναι επίμονο ή όχι. room_set_code(IND,str)θέτει τη σειρά κώδικα έναρξης για το δωμάτιο με τον υποδειγμένο δείκτη.

room_set_background_color(ind,col,show) θέτει τις ιδιότητες χρώματος για το δωμάτιο με

Page 126: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

τον υποδειγμένο δείκτη εάν δεν έχει εικόνα το background col δείχνει το χρώμα και show δείχνει εάν το χρώμα πρέπει να παρουσιαστεί ή όχι. room_set_background(ind,bind,vis,fore,back,x,y,htiled,vtiled,hspeed,vspeed,alpha)   θέτει το background με το δείκτη (07) για το δωμάτιο με τον υποδειγμένο δείκτη. vis δείχνει εάν το background είναι ορατό και fore εάν είναι πραγματικά μια πρώτου πλάνου εικόνα. back είναι ο δείκτης της εικόνας background x,y δείχνει τη θέση της εικόνας και  htiled και vtiled δείχνει εάν η εικόνα πρέπει να τεντωθεί.hspeed και vspeed δείχνει την ταχύτητα με την οποία κινείται το background και alpha δείχνει μια άλφα διαφάνεια (1 = στερεό και  γρηγορότερο). room_set_view(ind,vind,vis,xview,yview,wview,hview,xport,yport,wport,hport,hborder,vborder,hspeed,vspeed,obj)    θέτει την άποψη με το δείκτη (07) για το δωμάτιο με τον υποδειγμένο δείκτη vis δείχνει εάν η άποψη είναι ορατή. xview, yview, wview, και hview δείχνει τη θέση της άποψης στην αίθουσα xport, yport, wport, και hport δείχνει τη θέση στην οθόνη. Όταν η άποψη πρέπει να ακολουθήσει ένα αντικείμενο το hborder και vborder δείχνει τα ελάχιστα ορατά σύνορα που πρέπει να κρατηθούν γύρω από το αντικείμενο. hspeed και vspeed δείχνουν η μέγιστη ταχύτητα με την οποία η άποψη μπορεί να κινηθεί. obj είναι ο δείκτης του αντικειμένου ή ο δείκτης της περίπτωσης. room_set_view_enabled(ind,val)   θέτει εάν οι απόψεις πρέπει να επιτραπούν για το δωμάτιο με τον υποδειγμένο δείκτη. room_add() προσθέτει ένα νέο δωμάτιο. Επιστρέφει το δείκτη του δωματίου. Σημειώστε ότι το δωμάτιο δεν θα είναι μέρος της σειράς δωματίων. Έτσι το νέο δωμάτιο δεν έχει ένα προηγούμενο ή επόμενο δωμάτιο. Εάν θέλετε να κινηθείτε προς ένα προστιθέμενο δωμάτιο πρέπει να παρέχετε το δείκτη του δωματίου. room_duplicate(IND)προσθέτει ένα αντίγραφο του δωματίου με το δεδομένο δείκτη. Επιστρέφει το δείκτη του δωματίου. room_assign(IND,room) ορίζει το υποδειγμένο δωμάτιο στην αίθουσα IND. Έτσι αυτό κάνει ένα αντίγραφο του δωματίου. room_instance_add(IND,Χ,Υ,obj) προσθέτει μια νέα περίπτωση αντικειμένου obj στο δωμάτιο, τοποθετώντας την στη υποδειγμένη θέσει . Επιστρέφει το δείκτη της περίπτωσης. room_instance_clear(IND) αφαιρεί όλες τις περιπτώσεις από το υποδειγμένο δωμάτιο. room_tile_add(ind,back,left,top,width,height,x,y,depth)   προσθέτει ένα νέο tile στο δωμάτιο στην υποδειγμένη θέση. Επιστρέφει το δείκτη tile. back είναι το background από το οποίο το tile λαμβάνεται. left, top, δείχνουν το πλάτος και το ύψος ότι το μέρος του background που διαμορφώνει το tile x,y είναι η θέση του tile στο δωμάτιο και το depth είναι το βάθος του tile . room_tile_add_ext(ind,back,left,top,width,height,x,y,depth,xscale,yscale,alpha)   όπως την προηγούμενη ρουτίνα αλλά αυτή τη φορά μπορεί επίσης να διευκρινίσει έναν παράγοντα κλίμακας στην κατεύθυνση Χ και Υ και μια άλφα διαφάνεια για το tile . room_tile_clear(IND)αφαιρεί όλα τα tile από το υποδειγμένο δωμάτιο.

 

Files, registry, and executing programs

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

Οι πληροφορίες μπορούν να βρεθούν παρακάτω

Αρχεία 

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

Page 127: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

file_text_open_read(fname) ανοίγει το αρχείο με το όνομα για την ανάγνωση. Η λειτουργία επιστρέφει την ταυτότητα του αρχείου που πρέπει να χρησιμοποιηθεί στις άλλες λειτουργίες. Μπορείτε να ανοίξετε πολλά αρχεία συγχρόνως (32 το ανώτερο). Μην ξεχάστε να τα κλείσετε μόλις τελειώσετε. file_text_open_write(fname) ανοίγει το υποδειγμένο αρχείο για το γράψιμο, δημιουργώντας το εάν δεν υπάρχει. Η λειτουργία επιστρέφει την ταυτότητα του αρχείου που πρέπει να χρησιμοποιηθεί στις άλλες λειτουργίες. file_text_open_append(fname) ανοίγει το υποδειγμένο αρχείο για να επισυνάψει τα στοιχεία στο τέλος, που δημιουργούνται εάν δεν υπάρχουν. Η λειτουργία επιστρέφει την ταυτότητα του αρχείου που πρέπει να χρησιμοποιηθεί στις άλλες λειτουργίες. file_text_close(fileid) κλείνει το αρχείο με τη δεδομένη ταυτότητα αρχείων. file_text_write_string(fileid,str) γράφει τη σειρά στο αρχείο με τη δεδομένη ταυτότητα αρχείων. file_text_write_real(fileid, Χ) γράφει την πραγματική αξία στο αρχείο με τη δεδομένη ταυτότητα αρχείων. file_text_writeln(fileid) γράφει έναν χαρακτήρα αλλαγών γραμμής στο αρχείο. file_text_read_string(fileid) διαβάζει μια σειρά από το αρχείο με τη δεδομένη ταυτότητα αρχείων και επιστρέφει αυτήν την σειρά. Μια σειρά τελειώνει στο τέλος της γραμμής. file_text_read_real(fileid) διαβάζει μια πραγματική αξία από το αρχείο και επιστρέφει αυτήν την αξία. file_text_readln(fileid) πηδά το υπόλοιπο της γραμμής στο αρχείο και αρχίζει στην έναρξη της επόμενης γραμμής. file_text_eof (fileid)επιστρέφει εάν φθάσαμε στο τέλος του αρχείου.

Για να χειριστείτε τα αρχεία στο σύστημα αρχείων μπορείτε να χρησιμοποιήσετε τις ακόλουθες λειτουργίες:

file_exists(fname) επιστρέφει εάν το αρχείο με το δεδομένο όνομα υπάρχει (true) ή όχι (false). file_delete(fname) διαγράφει το αρχείο με το δεδομένο όνομα. file_rename(oldname,newname) μετονομάζει το αρχείο με το όνομα oldname στο newname. file_copy(fname,newname) αντίγραφει το αρχείο fname στο newname. directory_exists(dname) επιστρέφει εάν ο υποδειγμένος κατάλογος υπάρχει. directory_create(dname) δημιουργεί έναν κατάλογο με το δεδομένο όνομα (συμπεριλαμβανομένης της πορείας προς αυτο) εάν δεν υπάρχει. file_find_first(mask,attr) επιστρέφει το όνομα του πρώτου αρχείου που ικανοποιεί τη μάσκα και τις ιδιότητες. Εάν κανένα τέτοιο αρχείο δεν υπάρχει, η κενή σειρά επιστρέφεται. Η μάσκα μπορεί να περιέχει μια πορεία και μπορεί να περιέχει wildchars, παραδείγματος χάριν 'C:\temp\*.doc'. Οι ιδιότητες δίνουν στα πρόσθετα αρχεία αυτό που θέλετε να δείτε. (Έτσι τα κανονικά αρχεία επιστρέφονται πάντα όταν ικανοποιούν τη μάσκα). Μπορείτε να προσθέσετε τις ακόλουθες σταθερές για να δείτε τον τύπο αρχείων που θέλετε:

fa_readonly read-only filesfa_hidden hidden filesfa_sysfile system filesfa_volumeid volume-id filesfa_directory directoriesfa_archive archived files

file_find_next() επιστρέφει το όνομα του επόμενου αρχείου που ικανοποιεί την προηγουμένως δεδομένη μάσκα και τις ιδιότητες. Εάν κανένα τέτοιο αρχείο δεν υπάρχει, κενή σειρά επιστρέφεται. file_find_close() πρέπει να κληθεί μετά αφού χειριστεί όλα τα αρχεία στην ελεύθερη μνήμη. file_attributes(fname,attr) επιστρέφει εάν το αρχείο δίνει όλες τις ιδιότητες στο attr. Χρησιμοποιήστε έναν συνδυασμό των σταθερών που υποδεικνύονται ανωτέρω.

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

filename_name(fname) επιστρέφει το μέρος ονόματος του ονόματος αρχείων, με την επέκταση αλλά χωρίς την πορεία. filename_path(fname)επιστρέφει το μέρος πορειών του ονόματος αρχείων, συμπεριλαμβανομένης της τελικής αντίστροφης κάθετου. filename_dir(fname)επιστρέφει το μέρος καταλόγου του ονόματος αρχείων, το οποίο είναι

Page 128: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

κανονικά το ίδιο με την πορεία εκτός από την τελική αντίστροφη κάθετο. filename_drive(fname)επιστρέφει της πληροφορίες κίνησης του ονόματος αρχείου. filename_ext(fname)επιστρέφει το μέρος επέκτασης του ονόματος αρχείων, συμπεριλαμβανομένου του κύριου σημείου. filename_change_ext(fname,newext) επιστρέφει το όνομα αρχείων, με την επέκταση (συμπεριλαμβανομένου του σημείου) που αλλάζουν στη νέα επέκταση. Με τη χρησιμοποίηση μιας κενής σειράς ως νέα επέκταση μπορείτε να αφαιρέσετε την επέκταση.

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

file_bin_open(fname,mod) ανοίγει το αρχείο με το όνομα. Ο τρόπος προσδιορίζει τι μπορεί να γίνει με το αρχείο: 0 = ανάγνωση, 1 = γράφοντας, 2 = και ανάγνωση και γράψιμο). Η λειτουργία επιστρέφει την ταυτότητα του αρχείου που πρέπει να χρησιμοποιηθεί στις άλλες λειτουργίες. Μπορείτε να ανοίξετε πολλά αρχεία συγχρόνως (32 το ανώτερο). Μην ξεχάστε να τα κλείσετε μόλις τελειώσετε. file_bin_rewrite(fileid) ξαναγράφει το αρχείο με τη δεδομένη ταυτότητα αρχείων, δηλαδή το καθαρίζει και αρχίζει απο την αρχή. file_bin_close(fileid) κλείνει το αρχείο με τη δεδομένη ταυτότητα αρχείων. file_bin_size(fileid) επιστρέφει το μέγεθος (σε bytes) του αρχείου με τη δεδομένη ταυτότητα αρχείων.file_bin_position(fileid) επιστρέφει την τρέχουσα θέση (στις bytes 0 είναι η πρώτη θέση) του αρχείου με τη δεδομένη ταυτότητα αρχείων. file_bin_seek(fileid,pos) κινεί την τρέχουσα θέση του αρχείου προς την υποδειγμένη θέση. Για να επισυνάψετε σε ένα αρχείο κινήστε τη θέση προς το μέγεθος του αρχείου πριν γράφει. file_bin_write_byte(fileid,byte) γράφει ενα  byte των στοιχείων στο αρχείο με τη δεδομένη ταυτότητα αρχείων. file_bin_read_byte(fileid) διαβάζει ενα byte των στοιχείων από το αρχείο και επιστρέφει αυτό.

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

Οι ακόλουθες τρεις μόνο ανάγνωσης μεταβλητές μπορούν να είναι χρήσιμες: game_id* μοναδικό προσδιοριστικό για το παιχνίδι. Μπορείτε να το χρησιμοποιήσετε αυτό εάν χρειάζεστε ένα μοναδικό όνομα αρχείων. working_directory* κατάλογος εργασίας για το παιχνίδι. temp_directory* προσωρινός κατάλογος που δημιουργείται για το παιχνίδι. Μπορείτε να αποθηκεύσετε τα προσωρινά αρχεία εδώ. Θα αφαιρεθούν στο τέλος του παιχνιδιού.

Σε ορισμένες καταστάσεις θα θελήσετε να δώσετε στους παίκτες τη δυνατότητα command line στο παιχνίδι(παραδείγματος χάριν για να δημιουργήσετε cheats ή special modes). Για να πάρετε αυτά τα επιχειρήματα μπορείτε να χρησιμοποιήσετε τις ακόλουθες δύο ρουτίνες.

parameter_count() επιστρέφει τον αριθμό παραμέτρων command-line(σημειώστε ότι το όνομα του ίδιου του προγράμματος είναι ένας από αυτούς). parameter_string(n) επιστρέφει τη παράμετρο n. command-line Η πρώτη παράμετρος έχει το δείκτη 0. Αυτό είναι το όνομα του προγράμματος.

Μπορείτε να διαβάσετε την αξία των μεταβλητών περιβάλλοντος χρησιμοποιώντας την ακόλουθη λειτουργία:

environment_get_variable(name)επιστρέφει η αξία (μια σειρά) της μεταβλητής περιβάλλοντος με το δεδομένο όνομα.

Registry

Εάν θέλετε να αποθηκεύσετε ένα μικρό ποσό πληροφοριών μεταξύ του παιχνιδιού υπάρχει ένας απλούστερος μηχανισμός από το να χρησιμοποιήσετε ένα αρχείο. Μπορείτε να χρησιμοποιήσετε την registry. Η registry είναι μια μεγάλη βάση δεδομένων που τα Windows διατηρούν για να παρακολουθούν όλα τα προγράμματα. Μια είσοδος έχει ένα όνομα, και μια αξία. Μπορείτε να χρησιμοποιήσετε και σειρά και πραγματικές τιμές. Οι ακόλουθες λειτουργίες υπάρχουν:

Page 129: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

registry_write_string(name,str) δημιουργεί μια είσοδο στη registry με τη δεδομένη αξία ονόματος και σειράς. registry_write_real(name,Χ) δημιουργεί μια είσοδο στη registry με το δεδομένο όνομα και την πραγματική αξία. registry_read_string(name)  επιστρέφει τη σειρά που το δεδομένο όνομα κρατά. (Το όνομα πρέπει να υπάρξει. Διαφορετικά μια κενή σειρά επιστρέφεται). registry_read_real(name) επιστρέφει η πραγματική αξία που το δεδομένο όνομα κρατά. (Το όνομα πρέπει να υπάρξει. Διαφορετικά ο αριθμός 0 επιστρέφεται). registry_exists(name)  επιστρέφει εάν το δεδομένο όνομα υπάρχει.

Οι τιμές στη registry ομαδοποιούνται σε κλειδιά. Οι πιο πάνω ρουτίνες όλες δουλεύουν για τις τιμές μέσα στο πλήκτρο που δημιουργείται ειδικά για το παιχνίδι σας. Το πρόγραμμά σας μπορεί να το χρησιμοποιήσει αυτό για να λάβει ορισμένες πληροφορίες για το σύστημα που το παιχνίδι τρέχει . Μπορείτε επίσης να διαβάσετε τις τιμές σε άλλα κλειδιά. Μπορείτε να γράψετε επίσης αλλά να είστε πολύ προσεκτικοί. ΜΠΟΡΕΙΤΕ ΕΥΚΟΛΑ ΝΑ ΚΑΤΑΣΤΡΕΨΕΤΕ ΤΟ ΣΥΣΤΗΜΑ ΣΑΣ. (σημειώστε δεν επιτρέπεται στον ασφαλή τρόπο) Σημειώστε ότι τα κλειδιά τοποθετούνται πάλι κατά ομάδες. Οι ακόλουθες ρουτίνες προκαθορίζουν την εργασία για την ομάδα HKEY_CURRENT_USER. Αλλά μπορείτε να αλλάξετε την ομάδα ρίζας. Έτσι, παραδείγματος χάριν, εάν θέλετε να ανακαλύψετε τρέχοντα temp dir, χρησιμοποιήστε

path = registry_read_string_ext('\Environment','TEMP');

Οι ακόλουθες λειτουργίες υπάρχουν.

registry_write_string_ext(key,name,str) δημιουργεί μια είσοδο στο κλειδί στη registry με τη δεδομένη αξία ονόματος και σειράς. registry_write_real_ext(key,name,x)  δημιουργεί μια είσοδο στο κλειδί στη registry με το δεδομένο όνομα και την πραγματική αξία. registry_read_string_ext(key,name) επιστρέφει τη σειρά που το δεδομένο όνομα στο υποδειγμένο κλειδί κρατά. (Το όνομα πρέπει να υπάρξει. Διαφορετικά μια κενή σειρά επιστρέφεται). registry_read_real_ext(key,name)επιστρέφει την πραγματική αξία που το δεδομένο όνομα στο υποδειγμένο κλειδί κρατά. (Το όνομα πρέπει να υπάρξει. Διαφορετικά ο αριθμός 0 επιστρέφεται). registry_exists_ext(key,name) επιστρέφει εάν το δεδομένο όνομα υπάρχει στο δεδομένο κλειδί. registry_set_root(root)θέτει τη ρίζα για τις άλλες ρουτίνες. Χρησιμοποιήστε τις ακόλουθες τιμές:

0 = HKEY_CURRENT_USER 1 = HKEY_LOCAL_MACHINE 2 = HKEY_CLASSES_ROOT 3 = HKEY_USERS

 

 

INI files

Για να περάσει ορισμένες ρυθμίσεις παραμέτρου στα προγράμματα ένας τυποποιημένος μηχανισμός είναι η χρήση των αρχείων INI. Τα αρχεία INI περιέχουν τμήματα και κάθε τμήμα περιέχει διάφορα ζευγάρια όνομα-αξίας. Παραδείγματος χάριν, εδώ είναι ένα χαρακτηριστικό αρχείο INI:

[Form]Top=100Left=100Caption=The best game ever[Game]

   MaxScore=12324

Page 130: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Αυτό το αρχείο περιέχει δύο τμήματα, μια μορφή κλήσης (form)  και το άλλο αποκαλούμενο παιχνίδι (game). Το πρώτο τμήμα περιέχει τρία ζευγάρια. Πρώτα τα δύο έχουν μια πραγματική αξία ενώ το τρίτο έχει μια αξία σειράς. Τέτοια αρχεία INI είναι εύκολο να δημιουργηθούν και να αλλάξουν. Οι ακόλουθες λειτουργίες υπάρχουν στο Game Maker για να διαβάσουν και να αλλάξουν τα στοιχεία τους.

ini_open(name) ανοίγει το αρχείο INI με το δεδομένο όνομα. Το αρχείο ini πρέπει να αποθηκευτεί στον ίδιο φάκελλο με το παιχνίδϊ ini_close() κλείνει το τρέχων ανοικτό αρχείο INI. ini_read_string(section,key,default)  διαβάζει την αξία σειράς του υποδειγμένου κλειδιού στο υποδειγμένο τμήμα. Όταν το κλειδί ή το τμήμα δεν υπάρχει η προκαθορισμένη αξία επιστρέφεται. ini_read_real(section,key,default)διαβάζει την πραγματική αξία του υποδειγμένουυ κλειδιού στο υποδειγμένο τμήμα. Όταν το κλειδί ή το τμήμα δεν υπάρχει η προκαθορισμένη αξία επιστρέφεται. ini_write_string(section,key,value) γράφει την αξία σειράς για το υποδειγμένο κλειδί στο υποδειγμένο τμήμα. ini_write_real(section,key,value) γράφει την πραγματική αξία για το υποδειγμένο κλειδί στο υποδειγμένο τμήμα. ini_key_exists(section,key)επιστρέφει εάν το υποδειγμένο κλειδί υπάρχει στο υποδειγμένο τμήμα. ini_section_exists(section) επιστρέφει εάν το υποδειγμένο τμήμα υπάρχει. ini_key_delete(section,key)  διαγράφει το υποδειγμένο κλειδί από το υποδειγμένο τμήμα. ini_section_delete(section)διαγράφει το υποδειγμένο τμήμα.

Εκτέλεση προγραμμάτων 

Το Game Maker έχει επίσης τη δυνατότητα να αρχίσει εξωτερικά προγράμματα. Υπάρχουν δύο λειτουργίες διαθέσιμες για αυτό: execute_program και execute_ shell.. Η λειτουργία execute_program αρχίζει ένα πρόγραμμα, ενδεχομένως με μερικά επιχειρήματα. Μπορεί να περιμένει το πρόγραμμα για να τελειώσει (σταματώντας το παιχνίδι) ή να συνεχιστεί το παιχνίδι. Η λειτουργία execute_shell ανοίγει ένα αρχείο. Αυτό μπορεί να είναι οποιοδήποτε αρχείο για το οποίο κάποια ένωση καθορίζεται, π.χ. ένα html-file, ένα word file, κ.λπ. ή μπορεί να είναι ένα πρόγραμμα. Δεν μπορεί να περιμένει την ολοκλήρωση έτσι το παιχνίδι θα συνεχιστεί.

execute_program(prog,arg,wait) εκτελεί το πρόγραμμα prog με τα επιχειρήματα arg. wait δείχνει εάν θα περιμένει τη λήξη. execute_shell(prog,arg) εκτελεί το πρόγραμμα (ή το αρχείο) στο shell.

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

secure_mode* εάν το παιχνίδι τρέχει στον ασφαλή τρόπο.

 

 

Δημιουργία μορίων

Αυτή η λειτουργία είναι διαθέσιμη μόνο στην δηλωμένη έκδοση του Game Maker.

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

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

Page 131: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

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

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

Οι πληροφορίες για τα μόρια μπορούν να βρεθούν παρακάτω

 Τύποι μορίων 

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

       shape δείχνει τη μορφή των μορίων. Αυτό είναι σχετικό μόνο εάν το σύστημα μορίων δεν χρησιμοποιεί sprites ως μόρια. Μπορεί να είναι ένα από τα ακόλουθα:

o      pt_shape_pixel 

o      pt_shape_disk 

o      pt_shape_square 

o      pt_shape_diamond 

o      pt_shape_star 

o      pt_shape_plus 

o      pt_shape_cross 

       sprite δείχνει το sprite που χρησιμοποιείται για το μόριο όταν το σύστημα μορίων βασίζεται σε sprite .

       sprite_animate δείχνει εάν ένα sprite πρέπει να ειναι animated (true) ή όχι (false).

       sprite_stretch δείχνει εάν το animation του sprite πρέπει να τεντωθεί σε ολόκληρη τη διάρκεια ζωής του μορίου (true) ή εάν το animation πρέπει να επαναληφθεί (false). (Αυτό υποθέτει ότι η προηγούμενη αξία είναι αληθινή).

       sprite_random δείχνει εάν το animation του sprite πρέπει να αρχίσει σε ένα τυχαίο subimage (true) ή στο πρώτο subimage (false). Εάν το sprite δεν είναι animation χρησιμοποιήστε το αυτό για να πάρει ένα τυχαίο subimage και όχι το πρώτο.

       size_min,size_max δείχνει το μέγεθος των μορίων. Το μέγεθος επιλέγεται τυχαία μεταξύ των δεδομένων ορίων. Αυτό δεν είναι σχετικό για διαμορφωμένα μόρια. Για τα sprite-based μόρια δείχνει τον παράγοντα κλίμακας .

Page 132: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

       size_incr δείχνει την αύξηση μεγέθους σε κάθε βήμα. Σας αφήνει να αυξηθείτε ή να στενέψετε τα μόρια (ένα μέγεθος κάτω από 0 αντιμετωπίζεται ως 0) κατά τη διάρκεια του χρόνου.

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

       color_start,color_middle,color_end δείξτε το χρώμα του μορίου. Αρχίζει με το πρώτο χρώμα και σε όλοι τη διάρκεια ζωής του αλλάζει αργά το χρώμα στο μέσο χρώμα και τελικά στο τελευταίο χρώμα . επίσης τα sprite-based μόρια χρωματίζονται με αυτά τα χρώματα.

       alpha_start,alpha_middle,alpha_end δείξτε την άλφα διαφάνεια του μορίου (μεταξύ 0 και 1). Αρχίζει με την πρώτη άλφα αξία και σε όλοι τη διάρκεια ζωής του αλλάζει αργά την άλφα στη μέση αξία.

Ένα μόριο ζει για ένα περιορισμένο χρονικό διάστημα. Αυτό είναι υποδειγμένο χρησιμοποιώντας τις ακόλουθες παραμέτρους:

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

Οι ακόλουθες παράμετροι επηρεάζουν την κίνηση του μορίου:

       speed_min,speed_max δείχνει την ταχύτητα του μορίου (σε pixels ανά βήμα). Μια τυχαία αξία μεταξύ των δεδομένων ορίων επιλέγεται όταν δημιουργείται το μόριο.

       speed_incr δείχνει την αύξηση ταχύτητας σε κάθε βήμα. Χρησιμοποιήστε μια αρνητική αξία για να αφήσετε το μόριο να επιβραδύνει (η ταχύτητα δεν θα γίνει ποτέ μικρότερη από 0).

       speed_rand δείχνει το μέγιστο τυχαίο ποσό ταχύτητας που προστίθεται σε κάθε βήμα στην ταχύτητα που χρησιμοποιείται σε εκείνο το βήμα. Μπορεί να χρησιμοποιηθεί για να δώσει στα μόρια μια πιό τυχαία μετακίνηση.

       dir_min,dir_max δείχνει την κατεύθυνση της κίνησης του μορίου (στους αντίθετους προς τη φορά των δεικτών του ρολογιού βαθμούς 0 δείχνει μια κίνηση στα δεξιά). Μια τυχαία αξία μεταξύ των δεδομένων ορίων επιλέγεται όταν δημιουργείται το μόριο. Παραδείγματος χάριν, για να αφήσετε την κίνηση των μορίων σε μια τυχαία κατεύθυνση να επιλέξετε 0 και 360 ως τιμές.

       dir_incr δείχνει την αύξηση κατεύθυνσης (ή μείωση) σε κάθε βήμα. Αυτό θα κάνει τα μόρια να κινηθούν γύρω σε κύκλους.

       dir_rand δείχνει το μέγιστο τυχαίο ποσό κατεύθυνσης που προστίθεται σε κάθε βήμα στην κατεύθυνση που χρησιμοποιείται σε εκείνο το βήμα. Μπορεί να χρησιμοποιηθεί για να δώσει στα μόρια μια πιό τυχαία μετακίνηση.

       grav_amount δείχνει το ποσό βαρύτητας σε κάθε βήμα.

       grav_dir δείχνει την κατεύθυνση της βαρύτητας χρήση 270 για μια προς τα κάτω κατεύθυνση.

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

       step_type δείχνει τον τύπο νέων μορίων που δημιουργούνται σε κάθε βήμα.

       step_number δείχνει τον αριθμό τέτοιων μορίων που παράγονται σε κάθε βήμα. Αυτές οι δύο παράμετροι μπορούν παραδείγματος χάριν να χρησιμοποιηθούν για να δώσουν στα μόρια μια ουρά . Να είστε προσεκτικοί στο ότι ο συνολικός αριθμός μορίων δεν είναι υψηλός.

Page 133: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

       death_type δείχνει τον τύπο μορίων που παράγονται όταν πεθαίνει το μόριο.

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

Οι ακόλουθες λειτουργίες είναι διαθέσιμες για να καθορίσουν τους τύπους μορίων. part_type_create() δημιουργεί έναν νέο τύπο μορίων. Επιστρέφει το δείκτη του τύπου. Αυτός ο δείκτης πρέπει να χρησιμοποιηθεί σε όλες τις κλήσεις για να θέσει πιο κάτω τις ιδιότητες του τύπου μορίων. part_type_destroy(IND) καταστρέφει τον τύπο IND μορίων. Καλέστε το αυτό εάν δεν το χρειάζεστε για να σώσετε άλλο χωρο. part_type_destroy_all() καταστρέφει όλους τους τύπους μορίων που έχουν δημιουργηθεί. part_type_exists(IND) επιστρέφει εάν ο υποδειγμένος τύπος μορίων υπάρχει. part_type_clear(IND) καθαρίζει τον τύπο IND μορίων στις ρυθμίσεις προεπιλογής του. part_type_shape(IND,shape) θέτει το σχήμα του τύπου μορίων. Χρησιμοποιήστε μια από τις ακόλουθες σταθερές (η προεπιλογή είναι pt_shape_pixel).

·   pt_shape_pixel  ·   pt_shape_disk  ·   pt_shape_square  ·   pt_shape_diamond  ·   pt_shape_star  ·   pt_shape_plus  ·   pt_shape_cross 

part_type_sprite(ind,sprite,animat,stretch,random) θέτει το sprite για τον τύπο μορίων. Με το animat δείχνετε εάν το sprite πρέπει να γινει animated. Με το stretch δείχνετε εάν το animation πρέπει να τεντωθεί σε όλοι τη διάρκεια ζωής του μορίου. Και με το random μπορείτε να δείξετε εάν ένα τυχαίο subimage πρέπει να είναι ως αρχική εικόνα. part_type_size(ind,size_min,size_max,size_incr,size_rand) θέτει τις παραμέτρους μεγέθους για το μόριο . (Το μέγεθος προεπιλογής είναι 1 και το μέγεθος δεν αλλάζει). part_type_color(ind,color_start,color_middle,color_end)  θέτει τις παραμέτρους χρώματος για τον τύπο μορίων. (προεπιλογής όλα τα χρώματα είναι άσπρο). part_type_color2(ind,color_start,color_end) παρόμοιο αλλά αυτή τη φορά μόνο το χρώμα έναρξης και τελους τίθεται. Το μέσο χρώμα λαμβάνεται ενδιάμεσα. part_type_alpha(IND,alpha_start, alpha_middle,alpha_end) θέτει τις άλφα παραμέτρους διαφάνειας (0-1) για τον τύπο μορίων. part_type_alpha2(IND,alpha_start,alpha_end) παρόμοιο αλλά αυτή τη φορά μόνο η αξία έναρξης και τέλους δίνεται. part_type_life(IND,life_min,life_max) θέτει το όριο διάρκειας ζωής για τον τύπο μορίων. (προεπιλογή και οι δύο είναι 100). part_type_speed(ind,speed_min,speed_max,speed_incr,speed_rand) θέτει τις ιδιότητες ταχύτητας για το μόριο . (προεπιλογή όλες τις τιμές είναι 0). part_type_direction(IND,dir_min,dir_max,dir_incr, dir_rand) θέτει τις ιδιότητες κατεύθυνσης για τον τύπο μορίων. (προεπιλογή όλες τις τιμές είναι 0). part_type_gravity(IND,grav_amount,grav_dir) θέτει τις ιδιότητες βαρύτητας για τον τύπο μορίων. (Προεπιλογή δεν υπάρχει καμία βαρύτητα). part_type_step(IND,step_number,step_type) θέτει τον αριθμό και τον τύπο μορίων που πρέπει να παραχθούν σε κάθε βήμα για τον υποδειγμένο τύπο μορίων. (προεπιλογή κανένα μόριο δεν παράγεται). part_type_death(IND,death_number,death_type) θέτει τον αριθμό και τον τύπο μορίων που πρέπει να παραχθούν όταν πεθαίνει ένα μόριο του υποδειγμένου τύπου. ((προεπιλογή κανένα μόριο δεν παράγεται). 

Page 134: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Συστήματα μορίων 

Τα μόρια ζουν στα συστήματα μορίων. Έτσι για να έχετε τα μόρια στο παιχνίδι σας πρέπει να δημιουργήσετε ένα ή περισσότερα συστήματα μορίων. Μπορούν να υπάρξουν πολλά διαφορετικά συστήματα μορίων. Παραδείγματος χάριν, εάν το παιχνίδι σας έχει διάφορες σφαίρες και έχει κάθε σφαίρα μια ουρά , πιθανότατα κάθε σφαίρα θα έχει το σύστημα μορίων της. Ο ευκολότερος τρόπος για να φτιάξετε συστήματα μορίων είναι να δημιουργηθεί το ένα και να δημιουργηθούν έπειτα μόρια σε αυτο, που χρησιμοποιεί τους τύπους μορίων που διευκρινίσατε πριν. Αλλά, δεδομένου ότι θα δούμε πιο κάτω, τα συστήματα μορίων μπορούν να περιέχουν εκπομπούς που παράγουν αυτόματα μόρια, τα attractors που τους προσελκύουν, και τους καταστροφείς που τους καταστρέφουν.

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

Οι ακόλουθες λειτουργίες εξετάζουν τα συστήματα μορίων:

part_system_create() δημιουργεί ένα νέο σύστημα μορίων. Επιστρέφει το δείκτη του συστήματος. Αυτός ο δείκτης πρέπει να χρησιμοποιηθεί σε όλες τις κλήσεις για να θέσει πιο κάτω τις ιδιότητες του συστήματος μορίων. part_system_destroy(IND) καταστρέφει το σύστημα IND μορίων. Καλέστε αυτό εάν δεν το χρειάζεστε για να σώσετε χωρο. part_system_destroy_all() καταστρέφει όλα τα συστήματα μορίων που έχουν δημιουργηθεί. part_system_exists(IND) επιστρέφουν εάν το υποδειγμένο σύστημα μορίων υπάρχει. part_system_clear(IND) καθαρίζει το σύστημα IND μορίων στις ρυθμίσεις προεπιλογής του, αφαιρώντας όλο τα μόρια και τον εκπομπό και τα attractors σε αυτόν. part_system_draw_order(IND,oldtonew) θέτει τη σειρά στην οποία το σύστημα μορίων σχεδιάζει τα μόρια. Όταν το oldtonew είναι true τα παλαιότερα μόρια σχεδιάζονται πρώτα και τα νεώτερα βρίσκεται πάνω από αυτα (προεπιλογή). Διαφορετικά τα νεώτερα μόρια σχεδιάζονται πρώτα. Αυτό μπορεί να δώσει μάλλον διαφορετικά αποτελέσματα. part_system_doastep(IND) Αυτή η λειτουργία ανανεώνει τη θέση όλων των μορίων στο σύστημα και αφήνει τους εκπομπούς να δημιουργήσουν τα μόρια. Πρέπει να κληθεί ακριβώς μιά φορά σε κάθε βήμα του παιχνιδιού. part_system_draw(IND,Χ,Υ) Αυτή η λειτουργία σχεδιάζει τα μόρια στο σύστημα, στη σχετική θέση (x,y). Πρέπει να κληθεί στο γεγονός σχεδίων κάποιου αντικειμένου. Συχνά θέλετε να χρησιμοποιήσετε (0,0) ως αιτία θέσης γενικά το ίδιο το σύστημα μορίων φροντίζει τις θέσεις.

Οι ακόλουθες λειτουργίες εξετάζουν τα μόρια στα συστήματα μορίων: part_particles_create(IND,Χ,Υ,parttype,number) Αυτή η λειτουργία δημιουργεί αριθμημένα μόρια του υποδειγμένου τύπου στη θέση (x,y) στο σύστημα. part_particles_clear(IND) Αυτή η λειτουργία αφαιρεί όλα τα μόρια στο σύστημα. part_particles_count(IND) Αυτή η λειτουργία επιστρέφει τον αριθμό μορίων στο σύστημα.

 

Εκπομποί 

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

       xmin,xmax,ymin,ymax δείχνει τη επεκταμένη περιοχή στην οποία τα μόρια παράγονται.

       shape δείχνει το σχήμα της περιοχής. Μπορεί να έχει τις ακόλουθες τιμές:

o      ps_shape_rectangle 

Page 135: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

o      ps_shape_ellipse 

o      ps_shape_diamond 

o      ps_shape_line 

       distribution δείχνει τη διανομή που χρησιμοποιείται για να παράγει τα μόρια. Μπορεί να έχει τις ακόλουθες τιμές:

o      ps_distr_linear δείχνει μια γραμμική διανομή, η οποία είναι παντού στην περιοχή η πιθανότητα είναι ίση

o      ps_distr_gaussian δείχνει μια Gaussian διανομή στην οποία περισσότερα μόρια παράγονται στο κέντρο απ'ό,τι στις πλευρές της περιοχής 

       particle type δείχνει τον τύπο παραγωγής των μορίων

       number δείχνει τον αριθμό μορίων που παράγονται σε κάθε βήμα. Εάν είναι μικρότερο από 0, σε κάθε βήμα ένα μόριο παράγεται με μια πιθανότητα -1/number. παραδείγματος χάριν με αξία -5 ένα μόριο παράγεται κατά μέσον όρο μιά φορά κάθε 5 βήματα.

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

part_emitter_create(ps) δημιουργεί έναν νέο εκπομπό στο δεδομένο σύστημα μορίων. Επιστρέφει το δείκτη του εκπομπού. Αυτός ο δείκτης πρέπει να χρησιμοποιηθεί σε όλες τις κλήσεις για να θέσει πιο κάτω τις ιδιότητες του εκπομπού. part_emitter_destroy(ps,IND) καταστρέφει τον εκπομπό IND στο σύστημα μορίων. Καλέστε το αυτό εάν δεν το χρειάζεστε για να σώσετε χώρο.part_emitter_destroy_all(ps) καταστρέφει όλους τους εκπομπούς στο σύστημα μορίων που έχουν δημιουργηθεί. part_emitter_exists(ps,IND) επιστρέφει εάν ο υποδειγμένος εκπομπός υπάρχει στο σύστημα μορίων. part_emitter_clear(ps,IND) καθαρίζει τον εκπομπό IND στις ρυθμίσεις προεπιλογής του. part_emitter_region(ps,ind,xmin,xmax,ymin,ymax,shape,distribution) θέτει την περιοχή και τη διανομή για τον εκπομπό. part_emitter_burst(ps,ind,parttype,number) θέτει τον αριθμό μόριων που πετάγονται μιά φορά του υποδειγμένου τύπου από τον εκπομπό. part_emitter_stream(ps,IND,parttype,number) Από αυτή τη στιγμή δημιουργήτε τον αριθμο μόριων  του υποδειγμένου τύπου από τον εκπομπό σε κάθε βήμα. Εάν δώσετε έναν αριθμό μικρότερο από 0 σε κάθε βήμα ένα μόριο παράγεται με μια πιθανότητα -1/number. παραδείγματος χάριν μια αξία -5 ένα μόριο παράγεται σε ένα verage μιά φορά κάθε 5 βήματα.

 

 

Attractors

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

       x,y δείχνει τη θέση του attractor.

Page 136: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

       dist δείχνει τη μέγιστη απόσταση στην οποία το attractor έχει την επίδραση. μόρια πιό κοντά απο αυτή την απόσταση θα προσελκυστεί ο attractor .

       kind δείχνει το είδος attractor. Οι ακόλουθες τιμές υπάρχουν 

o      ps_force_constant δείχνει ότι η δύναμη είναι σταθερά ανεξάρτητή της απόστασης.

o      ps_force_linear δείχνει μια γραμμικά αυξανόμενη δύναμη. Στη μέγιστη απόσταση η δύναμη είναι 0 ενώ στη θέση του attractor επιτυγχάνει τη δεδομένη αξία.

o      ps_force_quadratic δείχνει ότι η δύναμη γίνεται τετραγωνική.

       additive  δείχνει εάν η δύναμη προστίθεται στην ταχύτητα και την κατεύθυνση σε κάθε βήμα (true) ή εφαρμόζεται μόνο στη θέση του μορίου (false). Όταν  προστεθεί το μόριο θα επιταχύνει προς το attractor διαφορετικά δύναμη θα κινηθεί εκεί με τη σταθερή ταχύτητα.

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

part_attractor_create(ps) δημιουργεί ένα νέο attractor στο δεδομένο σύστημα μορίων. Επιστρέφει το δείκτη του attractor. Αυτός ο δείκτης πρέπει να χρησιμοποιηθεί σε όλες τις κλήσεις για να θέσει πιο κάτω τις ιδιότητες του εκπομπού. part_attractor_destroy(ps,IND) καταστρέφει το attractor IND στο σύστημα μορίων. Καλέστε το αυτό εάν δεν το χρειάζεστε για να σώσετε χώρο part_attractor_destroy_all(ps) καταστρέφει όλα τα attractors στο σύστημα μορίων που έχουν δημιουργηθεί. part_attractor_exists(ps,IND) επιστρέφει εάν το υποδειγμένο attractor υπάρχει στο σύστημα μορίων. part_attractor_clear(ps,IND) καθαρίζει το attractor IND στις ρυθμίσεις προεπιλογής του. part_attractor_position(ps,IND,Χ,Υ) θέτει τη θέση του attractor IND (x,y). part_attractor_force(ps,ind,force,dist,kind,aditive)  θέτει τις παραμέτρους δύναμης του attractor IND.

 

Destroyers

Οι καταστροφείς καταστρέφουν τα μόρια όταν εμφανίζονται στην περιοχή τους. Ένα σύστημα μορίων μπορεί να έχει έναν αυθαίρετο αριθμό καταστροφέων. Ένας καταστροφέας έχει τις ακόλουθες ιδιότητες:

       xmin,xmax,ymin,ymax δείχνει την έκταση της περιοχής στην οποία τα μόρια καταστρέφονται.

       shape  δείχνει το σχήμα της περιοχής. Μπορεί να έχει τις ακόλουθες τιμές:

o      ps_shape_rectangle 

o      ps_shape_ellipse

o      ps_shape_diamond 

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

Page 137: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

part_destroyer_create(ps) δημιουργεί έναν νέο καταστροφέα στο δεδομένο σύστημα μορίων. Επιστρέφει το δείκτη του καταστροφέα. Αυτός ο δείκτης πρέπει να χρησιμοποιηθεί σε όλες τις κλήσεις για να θέσει πιο κάτω τις ιδιότητες του καταστροφέα. part_destroyer_destroy(ps,IND) καταστρέφει τον καταστροφέα IND στο σύστημα μορίων. Καλέστε αυτό εάν δεν το χρειάζεστε για να σώσετε χώρο. part_destroyer_destroy_all(ps) καταστρέφει όλους τους καταστροφείς στο σύστημα μορίων που έχουν δημιουργηθεί. part_destroyer_exists(ps,IND) επιστρέφει εάν ο υποδειγμένος καταστροφέας υπάρχει στο σύστημα μορίων. part_destroyer_clear(ps,IND) καθαρίζει τον καταστροφέα IND στις ρυθμίσεις προεπιλογής του. part_destroyer_region(ps,IND,xmin,xmax,ymin,ymax,shape) θέτει την περιοχή για τον καταστροφέα.

 

Deflectors  

Deflectors εκτρέπουν τα μόρια όταν εμφανίζονται στην περιοχή τους. Ένα σύστημα μορίων μπορεί να έχει έναν αυθαίρετο αριθμό deflectors. Deflector έχει τις ακόλουθες ιδιότητες:

       xmin,xmax,ymin,ymax δείχνει την έκταση της περιοχής στην οποία τα μόρια εκτρέπονται.

       kind  δείχνει το είδος deflector. Μπορεί να έχει τις ακόλουθες τιμές:

o      ps_deflect_horizontal εκτρέπει το μόριο οριζόντια χαρακτηριστικά χρησιμοποιήστε το για κάθετους τοίχους 

o      ps_deflect_vertical εκτρέπει το μόριο κάθετα χαρακτηριστικά χρησιμοποιήστε το για οριζόντιους τοίχους 

       friction το ποσό τριβής ως αποτέλεσμα του αντίκτυπου με deflector. Όσο υψηλότερο αυτό το ποσό το περισσότερο το μόριο επιβραδύνεται στον αντίκτυπο.

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

part_deflector_create(ps) δημιουργεί νέο deflector στο δεδομένο σύστημα μορίων. Επιστρέφει το δείκτη deflector. Αυτός ο δείκτης πρέπει να χρησιμοποιηθεί σε όλες τις κλήσεις για να θέσει πιο κάτω τις ιδιότητες deflector. part_deflector_destroy(ps,IND) καταστρέφει deflector IND στο σύστημα μορίων. Καλέστε αυτό εάν δεν το χρειάζεστε για να σώσετε χώρο part_deflector_destroy_all(ps) καταστρέφει όλα deflectors στο σύστημα μορίων που έχουν δημιουργηθεί. part_deflector_exists(ps,IND) επιστρέφει εάν υποδειγμένο deflector υπάρχει στο σύστημα μορίων. part_deflector_clear(ps,IND) καθαρίζει deflector IND στις ρυθμίσεις προεπιλογής του. part_deflector_region(ps,IND,xmin,xmax,ymin, ymax) θέτει την περιοχή για deflector. part_deflector_kind(ps,IND,kind) θέτει το είδος για deflector. part_deflector_friction(ps,IND,friction) θέτει την τριβή για deflector.

 

 

Page 138: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

Μετατροπείς

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

       xmin,xmax,ymin,ymax δείχνει την έκταση της περιοχής στην οποία τα μόρια αλλάζουν.

       shape δείχνει το σχήμα της περιοχής. Μπορεί να έχει τις ακόλουθες τιμές:

o      ps_shape_rectangle 

o      ps_shape_ellipse

o      ps_shape_diamond

       parttype1 δείχνει τον τύπο μορίων που αλλάζουν.

       parttype2 δείχνει τον τύπο μορίων στον οποίο αλλάζουν.

       kind  δείχνει το είδος του μετατροπέα. Μπορεί να έχει τις ακόλουθες τιμές:

o      ps_change_motion αλλάζει μόνο τις παραμέτρους κινήσεων του μορίου, όχι του χρώματος και σχήματος ή διάρκειας ζωής

o      ps_change_shape αλλάζει μόνο τις παραμέτρους μορφής όπως το μέγεθος και το χρώμα και τη μορφή

o      ps_change_all αλλάζει όλες τις παραμέτρους, αυτό βασικά σημαίνει ότι το μόριο καταστρέφεται και ένας νέος από το νέο τύπο δημιουργείται.

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

part_changer_create(ps) δημιουργεί έναν νέο μετατροπέα στο δεδομένο σύστημα μορίων. Επιστρέφει το δείκτη του μετατροπέα. Αυτός ο δείκτης πρέπει να χρησιμοποιηθεί σε όλες τις κλήσεις για να θέσει πιο κάτω τις ιδιότητες του μετατροπέα. part_changer_destroy(ps,IND) καταστρέφει το μετατροπέα IND στο σύστημα μορίων. Καλέστε αυτό εάν δεν το χρειάζεστε για να σώσετε χώροpart_changer_destroy_all(ps) καταστρέφει όλους τους μετατροπείς στο σύστημα μορίων που έχουν δημιουργηθεί. part_changer_exists(ps,IND) επιστρέφει εάν ο υποδειγμένος μετατροπέας υπάρχει στο σύστημα μορίων. part_changer_clear(ps,IND) καθαρίζει το μετατροπέα IND στις ρυθμίσεις προεπιλογής του. part_changer_region(ps,IND,xmin,xmax,ymin,ymax, shape) θέτει την περιοχή για το μετατροπέα. part_changer_types(ps,IND,parttype1,parttype2) θέτει ποιο σύστημα μορίων ο μετατροπέας πρέπει να άλλαξει σε ποιο τύπο. part_changer_kind(ps,IND,kind) θέτει το είδος για το μετατροπέα.

 

 

Παράδειγμα πυροτεχνημάτων 

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

Page 139: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

 {  // κάνει το σύστημα μορίων    ps = part_system_create();    // τα μόρια πυροτεχνημάτων   pt1 = part_type_create();  part_type_speed(pt1,0,3,0,0);  part_type_direction(pt1,0,360,0,0);  part_type_color(pt1,c_red,c_yellow,c_black);  part_type_life(pt1,30,40);

  part_type_gravity(pt1,0.2,270);

   // ο πύραυλος   pt2 = part_type_create();  part_type_shape(pt2,pt_shape_disk);  part_type_size(pt2,4,4,0,0);  part_type_speed(pt2,10,14,0,0);  part_type_direction(pt2,80,100,0,0);  part_type_color(pt2,c_white,c_ltgray,c_gray);  part_type_life(pt2,30,60);  part_type_gravity(pt2,0.2,270);

  part_type_death(pt2,100,pt1);

  // δημιουργήστε το πυροτέχνημα στο θάνατο    // δημιουργήστε τον εκπομπό   em = part_emitter_create(ps);  part_emitter_region(ps,em,100,540,480,490,ps_shape_rectangle,ps_distr_linear);

  part_emitter_stream(ps,em,pt2,-4);

  // δημιουργήστε το ένα κάθε τέσσερα βήματα }

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

{  part_system_doastep(ps);

  }

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

{  part_system_draw(ps,0,0);

Page 140: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

  }

  

Παιχνίδια Multiplayer

Αυτή η λειτουργία είναι διαθέσιμη μόνο στην δηλωμένη έκδοση του Game Maker.

Το παιχνίδι ενάντια στον υπολογιστή είναι διασκεδαστικό. Αλλά παίζοντας παιχνίδια ενάντια σε ανθρώπινους παίκτες είναι ακόμη περισσότερη διασκεδαστικό. Είναι επίσης σχετικά εύκολο να γίνουν τέτοια παιχνίδια επειδή δεν ειναι απαραίτητο να εφαρμόσετε περίπλοκο υπολογιστή αντίπαλο AI Μπορείτε φυσικά να καθίσετε με δύο παίχτες πίσω από το ίδιο monitor  και να χρησιμοποιήσετε διαφορετικά πλήκτρα ή άλλες συσκευές , αλλά είναι περισσότερο ενδιαφέρον όταν μπορεί κάθε παίχτης να καθίσει πίσω από τον υπολογιστή του. Ή ακόμα καλύτερα, ένας παίχτης να κάθεται στην άλλη πλευρά του κόσμου.   Το Game Maker έχει υποστήριξη multiplayer . Παρακαλώ συνειδητοποιήστε ότι η δημιουργία παιχνιδιών multiplayer που συγχρονίζονται καλά και δεν έχουν καμία λανθάνουσα κατάσταση είναι ένας δύσκολος στόχος. Αυτό το κεφάλαιο δίνει μια συνοπτική περιγραφή των δυνατοτήτων. Στο internet, tutorials είναι διαθέσιμα με περισσότερες πληροφορίες.

Οι πληροφορίες για τα παιχνίδια multiplayer μπορούν να βρεθούν παρακάτω

  

Οργάνωση μιας σύνδεσης  

Δύο υπολογιστές που θα επικοινωνήσουν θα χρειαστούν κάποιο πρωτόκολλο σύνδεσης. Όπως τα περισσότερα παιχνίδια, Το Game Maker προσφέρει τέσσερις διαφορετικούς τύπους συνδέσεων: IPX, TCP/IP, Modem, and Serial Η σύνδεση IPX (για να είμαι ακριβείς, είναι ένα πρωτόκολλο) είναι σχεδόν απολύτως διαφανής. Μπορεί να χρησιμοποιηθεί για να παίξετε παιχνίδια με άλλους ανθρώπους στο ίδιο δίκτυο τοπικής περιοχής. Πρέπει να εγκατασταθεί στον υπολογιστή που χρησιμοποιείται. (Εάν δεν λειτουργεί, συμβουλευθείτε το documentation των Windows. Ή πηγαίνετε στο Network item στο control panel των Windows και προσθέστε το πρωτόκολλο IPX). Το TCP/i IP είναι το πρωτόκολλο internet. Μπορεί να χρησιμοποιηθεί για να παίξετε με άλλους χρήστες οπουδήποτε στο internet, υποθέτοντας οτι ξέρετε τη διεύθυνση IP τους. Σε ένα τοπικό δίκτυο μπορείτε να το χρησιμοποιήσετε χωρίς τη παροχή των διευθύνσεων. Μια σύνδεση modem γίνεται μέσω του modem . Πρέπει να παρέχετε μερικές ρυθμίσεις του modem (ένα κωδικό και ένα τηλεφωνικό αριθμό) για να τον χρησιμοποιήσετε. Τέλος, κατά χρησιμοποίηση μιας τμηματικής γραμμής (μια άμεση σύνδεση μεταξύ των υπολογιστών) πρέπει να παρέχετε διάφορες ρυθμίσεις port . Υπάρχουν τέσσερις λειτουργίες GML που μπορούν να χρησιμοποιηθούν για τη μονογραφή αυτών των συνδέσεων:

mplay_init_ipx() μονογράφει μια σύνδεση IPX. mplay_init_tcpip(addr) μονογράφει μια σύνδεση TCP/*IP addr είναι μια σειρά που περιέχει τη διεύθυνση Ιστού ή τη διεύθυνση IP, π.χ. "www.gameplay.com" ή "123.123.123.12", ακολουθούμενος ενδεχομένως από έναν αριθμό της port (π.χ. ":12"). Μόνο κατά ένωση μιας session (δείτε πιο κάτω) πρέπει να παρέχετε μια διεύθυνση. Σε ένα δίκτυο τοπικής περιοχής καμία διεύθυνση δεν είναι απαραίτητη. mplay_init_modem(initstr,phonenr) μονογράφει μια σύνδεση modem initstr είναι η σειρά έναρξης για το modem (μπορεί να είναι κενός). phonenr είναι μια σειρά που περιέχει τον τηλεφωνικό αριθμό (π.χ. "0201234567"). Μόνο κατά ένωση μιας session (δείτε πιο κάτω) πρέπει να παρέχετε έναν τηλεφωνικό αριθμό. mplay_init_serial(portno,baudrate,stopbits,parity,flow) μονογράφει ένα τμηματικό σύνδεσης portno είναι ο αριθμός των port (1-4). baudrate είναι το baudrate που χρησιμοποιείται (100-256K). stopbits δείχνει τον αριθμό stopbits (0 = 1 μπιτ, 1 = 1,5 μπιτ, 2 = 2 μπιτ). η ισότητα δείχνει την ισότητα (0=none, 1=odd, 2=even, 3=mark). Και η ροή δείχνει τον τύπο ελέγχου ροής (0=none, 1=xon/$l*xoff, 2=rts, 3=dtr, 4=rts και dtr). Επιστρέφει εάν είνα επιτυχής. Μια χαρακτηριστική κλήση είναι mplay_init_serial (1,57600,0,0,4). Δώστε 0 ως πρώτο επιχείρημα για να ανοίξει ένας διάλογος για το χρήστη για να αλλάξει τις ρυθμίσεις.

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

Page 141: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

mplay_connect_status() επιστρέφει τη θέση της τρέχουσας σύνδεσης. 0 = καμία σύνδεση, 1 = σύνδεση IPX, 2 = σύνδεση TCP/*IP, 3 = σύνδεση modem , και 4 = τμηματική σύνδεση.

Για να τελειώσει την κλήση σύνδεσης  

mplay_end() τελειώνει την τρέχουσα σύνδεση.

Κατά τη χρησιμοποίηση μιας TCP/*IP θα θελήσετε να πείτε στο πρόσωπο που θέλετε να παίξετε το παιχνίδι με αυτό που η διεύθυνση IP του υπολογιστή σας . Η ακόλουθη λειτουργία σας βοηθά εδώ:

mplay_ipaddress() επιστρέφει τη διεύθυνση IP της μηχανής σας (π.χ. "123.123.123.12") ως σειρά. Μπορείτε π.χ. να επιδείξετε αυτό κάπου στην οθόνη. Σημειώστε ότι αυτή η ρουτίνα είναι αργή

 

Creating and joining sessions

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

Εάν θέλετε να αρχίσετε ένα νέο παιχνίδι multiplayer πρέπει να δημιουργήσετε μια νέα sessions. Για αυτό μπορείτε να χρησιμοποιήσετε την ακόλουθη ρουτίνα:

mplay_session_create(sesname,playnumb,playername) δημιουργεί μια νέα sessions για την τρέχουσα σύνδεση sesname είναι μια σειρά που δείχνει το όνομα της sessions. playnumb είναι ένας αριθμός που δείχνει το μέγιστο αριθμό παικτών που επιτρέπεται σε αυτό το παιχνίδι (χρήση 0 για έναν αυθαίρετο αριθμό). playname είναι το όνομά σας ως χρήστης. Επιστρέφει εάν είναι επιτυχής.

Μια περίπτωση του παιχνιδιού πρέπει να δημιουργήσει τη sessions. Η άλλη περίπτωση(ς) του παιχνιδιού πρέπει να ενώσει αυτήν την sessions. Αυτό είναι πιό περίπλοκο. Πρέπει αρχικά να εξετάσετε ποιες sessions είναι διαθέσιμες και επιλέχτε έπειτα αυτή που ενώνει. Υπάρχουν τρεις σημαντικές ρουτίνες για αυτό:

mplay_session_find() αναζητήσει όλων των sessions που δέχονται ακόμα τους παίχτες και τις επιστροφές ο αριθμός sessions που βρίσκονται. mplay_session_name(numb) επιστρέφει το όνομα του αριθμού sessions numb (0 είναι η πρώτη sessions). Αυτή η ρουτίνα μπορεί μόνο να κληθεί μετά από την προηγούμενη ρουτίνα. mplay_session_join(numb,playername) σας κάνει να ενώσετε τον αριθμό session numb (0 είναι η πρώτη session). playername είναι το όνομά σας ως χρήστης. Επιστρέφει εάν είναι επιτυχής.

Υπάρχει μια ρουτίνα που μπορεί να αλλάξει τον τρόπο session. Πρέπει να κληθεί πρίν δημιουργήσει μια session: mplay_session_mode(move) θέτει εαν πρέπει να κινηθεί ο οικοδεσπότης session προς έναν άλλο υπολογιστή όταν η κίνηση οικοδεσποτών πρέπει είτε να είναι true είτε false (η προεπιλογή).

Για να ελέγξετε τη θέση της τρέχουσας session μπορείτε να χρησιμοποιήσετε την ακόλουθη λειτουργία 

mplay_session_status() επιστρέφει τη θέση της τρέχουσας session. 0 = καμία session, 1 = δημιούργησαν τη session, 2 = ενωμένη session.

Ένας χρήστης μπορεί να σταματήσει μια session χρησιμοποιώντας την ακόλουθη ρουτίνα: mplay_session_end() τελειώνει τη session για αυτόν τον χρήστη .

 

Players

Κάθε περίπτωση του παιχνιδιού που ενώνει μια session είναι παίκτης. Όπως υποδεικνύεται πιο πάνω, οι παίχτες έχουν ονόματα. Υπάρχουν τρεις ρουτίνες που εξετάζουν τους παίκτες.

Page 142: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

mplay_player_find() αναζήτησει όλων των παικτών στις τρέχουσες sessions και επιστρέφει τον αριθμό παίκτων που βρίσκει. mplay_player_name(numb) επιστρέφει το όνομα του αριθμού παικτών numb (0 είναι ο πρώτος παίκτης , το οποίο είναι πάντα οι ίδιοι). Αυτή η ρουτίνα μπορεί μόνο να κληθεί μετά από την προηγούμενη ρουτίνα. mplay_player_id(numb) επιστρέφει τη μοναδική ταυτότητα του αριθμού παικτών numb (0 είναι ο πρώτος παίκτης , η οποία είναι πάντα οι ίδιοι). Αυτή η ρουτίνα μπορεί μόνο να κληθεί μετά από την πρώτη ρουτίνα. Αυτή η ταυτότητα χρησιμοποιείται στην αποστολή και τη λήψη των μηνυμάτων σε και από τους μεμονωμένους παίκτες.

 

Shared data

Η κοινή μετάδοση στοιχείων είναι πιθανώς ο ευκολότερος τρόπος να συγχρονιστεί το παιχνίδι. Όλη η επικοινωνία προστατεύεται από σας. Υπάρχει ένα σύνολο 1000000 τιμών που είναι κοινές για όλες τις οντότητες του παιχνιδιού (κατά προτίμηση χρησιμοποιήστε μόνο τους πρώτους για να σώσετε τη μνήμη). Κάθε οντότητα μπορεί να θέσει τις τιμές και να διαβάσει τις τιμές.   Στο Game Maker σιγουρεύεται ότι κάθε οντότητα βλέπει τις ίδιες τιμές. Μια αξία μπορεί είτε να είναι μια πραγματική είτε μια σειρά. Υπάρχουν ακριβώς δύο ρουτίνες:

mplay_data_write(IND, val) γράψτε την αξία val (σειρά ή πραγματικός) στη θέση IND (IND μεταξύ 0 και 1000000). mplay_data_read(IND) επιστρέφει την αξία στη θέση IND (IND μεταξύ 0 και 1000000). Αρχικά όλες οι τιμές είναι 0.

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

mplay_data_mode(guar) θέτει εαν πρέπει να χρησιμοποιηθεί η εγγυημένη μετάδοση για κοινή χρήση.Το guar στοιχείων πρέπει είτε να είναι true (η προεπιλογή) είτε false.

 

Μηνύματα 

Ο δεύτερος μηχανισμός επικοινωνίας που υποστηρίζει το Game Maker είναι η αποστολή και λήψη μηνυμάτων. Ένας χρήστης μπορεί να στείλει μηνύματα σε έναν ή όλους τους άλλους χρήστες . Οι χρήστες μπορούν να δουν εάν τα μηνύματα έχουν φθάσει και λαμβάνουν μέτρα αναλόγως. Τα μηνύματα μπορούν να σταλούν σε έναν εγγυημένο τρόπο στον οποίο είστε βέβαιοι ότι φθάνουν (αλλά αυτό μπορεί να είναι αργό) ή σε έναν μη-εγγυημένο τρόπο, ο οποίος είναι γρηγορότερος.

Οι ακόλουθες ρουτίνες μηνύματος υπάρχουν:

mplay_message_send(player,id,val) στέλνει ένα μήνυμα στον υποδειγμένο χρήστη(είτε ένα προσδιοριστικό είτε ένα όνομα χρήση 0 για να στείλει το μήνυμα σε όλους τους χρήστες ). id είναι ένα προσδιοριστικό μηνυμάτων ακέραιων αριθμών και val είναι η αξία (είτε ένας πραγματικός είτε μια σειρά). Το μήνυμα στέλνεται στον μη-εγγυημένο τρόπο. Εάν val περιέχει μια σειρά το μέγιστο μήκος σειράς που επιτρέπεται είναι 30000 χαρακτήρες. mplay_message_send_guaranteed(player,id,val)  στέλνει ένα μήνυμα στον υποδειγμένο χρήστη(είτε ένα προσδιοριστικό είτε ένα όνομα, χρήση 0 για να στείλει το μήνυμα σε όλους τους χρήστες). id είναι ένα προσδιοριστικό μηνυμάτων ακέραιων αριθμών και val είναι η αξία (είτε ένας πραγματικός είτε μια σειρά). Αυτό είναι εγγυημένη στέλνει. Εάν val περιέχει μια σειρά το μέγιστο μήκος σειράς που επιτρέπεται είναι 30000 χαρακτήρες. mplay_message_receive(player) λαμβάνει το επόμενο μήνυμα από τη σειρά αναμονής μηνυμάτων που προήλθε από τον υποδειγμένο χρήστη(είτε ένα προσδιοριστικό είτε ένα όνομα). Χρήση 0 για τα μηνύματα από οποιοδήποτε χρήστη. Η ρουτίνα επιστρέφει εάν υπήρξε πράγματι ένα νέο μήνυμα. Σε αυτή την περίπτωση μπορείτε να χρησιμοποιήσετε τις ακόλουθες ρουτίνες για να πάρετε το περιεχόμενό της:

Page 143: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

mplay_message_id()επιστρέφει το προσδιοριστικό του τελευταίου λαμβανόμενου μηνύματος. mplay_message_value()επιστρέφει την αξία του τελευταίου λαμβανόμενου μηνύματος. mplay_message_player()επιστρέφει το χρήστη που έστειλε το τελευταίο λαμβανόμενο μήνυμα. mplay_message_name()επιστρέφει το όνομα του χρήστη που έστειλε το τελευταίο λαμβανόμενο μήνυμα. mplay_message_count(player)επιστρέφει τον αριθμό μηνυμάτων που αφήνονται στη σειρά αναμονής από το χρήστη(χρήση 0 για να μετρήσουν όλο το μήνυμα). mplay_message_clear(player)επιστρέφει όλα τα μηνύματα που αφήνονται στη σειρά αναμονής από το χρήστη(χρήση 0 για να αφαιρέσουν όλο το μήνυμα).

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

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

3D Graphics

Αυτή η λειτουργία είναι διαθέσιμη μόνο στην δηλωμένη έκδοση του Game Maker.

Το Game Maker είναι ένα πρόγραμμα για την παραγωγή 2-διαστατων και isometric παιχνιδιών. Ακόμα υπάρχει κάποια λειτουργία για να δημιουργήσει τρισδιάστατη γραφική παράσταση. Προτού αρχίσετε υπάρχουν μερικά πράγματα που πρέπει να καταλάβετε.

       η τρισδιάστατη λειτουργία στο Game Maker περιορίζεται στο μέρος γραφικής παράστασης. Δεν υπάρχει καμία υποστήριξη για άλλη τρισδιάστατη λειτουργία. Μόλις αρχίσετε την τρισδιάστατη γραφική παράσταση θα πάρετε προβλήματα με άλλες πτυχές του Game Maker, όπως τις απόψεις, το βάθος , κ.λπ.... Η λειτουργία είναι περιορισμένη και έχει χαμηλή προτεραιότητα . Έτσι μην αναμείνετε υποστήριξη για τρισδιάστατα πρότυπα αντικειμένου, κ.λπ....

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

o      δεν μπορείτε να χρησιμοποιήσετε backgrounds και foregrounds στα δωμάτιά σας άλλο. (Ο λόγος είναι ότι  θα γεμίσουν την εικόνα) 

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

o      δεν μπορείτε να χρησιμοποιήσετε tiles άλλο. Τα tiles πιθανότατα δεν θα ταιριάξουν πλέον σωστά.

o      ο έλεγχος σύγκρουσης χρησιμοποιεί ακόμα τις 2-d θέσεις των περιπτώσεων στο δωμάτιο. Έτσι δεν υπάρχει καμία ανίχνευση σύγκρουσης σε 3D.Μερικές φορές μπορείτε ακόμα να το χρησιμοποιήσετε αυτό (εάν χρησιμοποιείτε το δωμάτιο ως αντιπροσώπευση ενός επίπεδου κόσμου (π.χ. για racing ή παιχνίδια FPS) αλλά σε άλλες καταστάσεις πρέπει να το κάνετε οι ίδιοι.

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

Page 144: 4gelher.weebly.com4gelher.weebly.com/uploads/1/8/0/6/18062729/gamemak…  · Web viewΔΗΜΙΟΥΡΓΩΝΤΑΣ ΠΑΙΧΝΙΔΙΑ. ΜΕ ΤΟ. GAME MAKER Έκδοση 6.1. Συγγραφέας

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

       δεν υπάρχει καμία τρισδιάστατη διαμόρφωση στο Game Maker. Επίσης δεν προγραμματίζω προσθήκη υποστήριξης για τη φόρτωση τρισδιάστατων προτύπων.

       πρέπει να εργαστείτε προσεκτικά για να κρατήσετε μια λογική ταχύτητα. Επίσης, τα πράγματα δεν βελτιστοποιούνται πραγματικά για ταχύτητα.

 ΕπίλογοςΜε την 3D λειτουργία του προγράμματος μπορείτε να δημιουργήσετε συμπαθητικά 3D παιχνίδια.Αλλα θα έχουν περιορισμένες δυνατότητες και επίσης απαιτούν αρκετή δουλεία από εσας.Μην περιμένετε να φτιάξετε το δικό σας quake.Το Game Maker ήταν και θα παραμείνει ένα πρόγραμμα βασισμένο για 2D παιχνίδια