Θέλοντας να βοηθήσω νέους και αρχάριους στον χώρο του Game Development, αλλά και για να σας δείξω ότι ο προγραμματισμός δεν είναι κάτι που πρέπει να φοβόμαστε, αλλά κάτι που θέλει μόνο λογική σκέψη, κάνω αυτό το tutorial για να σας δείξω
πως θα φτιάξουμε ένα mobile game σε ΈΝΑ μόνο απόγευμα.
Γνωρίζοντας πως ούτε το 10% από όσους το διαβάζουν δεν είναι διατεθιμένοι να αγοράσουν το Game Maker, σας ενημερώνω ότι για να καταφέρουμε να πετύχουμε τον σκοπό μας θα χρειαστούμε την Full έκδοση του Game Maker, το Game Maker:Studio. Δεν αποτελεί σε καμία περίπτωση προώθηση της engine, μιας και υπάρχουν και άλλες και μάλιστα free.
Το μόνο που θέλω να δείξω είναι πόσο εύκολα και γρήγορα μπορούμε να δημιουργήσουμε ένα mini game έχοντας τα κατάλληλα εργαλεία.
Απαιτούνται ελάχιστες γνώσεις προγραμματισμού και βασικές γνώσεις λειτουργίας του Game Maker.
Όσοι δεν βαρεθήκατε να διαβάζετε μέχρι τώρα, συγχαρητήρια, περάσατε στην φάση της προετοιμασίας!
Τι χρειάστηκα:
-Game Maker:Studio
-Photoshop CS5
-Bfxr sound effects engine
-Έναν καπνό Craven (προαιρετικός)
-Δύο φραππέ μέτρια με γάλα
-Μακαρόνια με κέτσαπ και τυρί
Συνολικός χρόνος απασχόλησης: 8 ώρες
Ώρες πραγματικής δουλειάς: 6 ώρες
Οι άλλες δύο ώρες σπαταλήστηκαν στο youtube κοιτάζοντας βιντεάκια από το South Park και μονομαχίες εντόμων.
Ξεκινάμε με την ιδέα. Η ιδέα είναι κάτι απλό, ένα mini game (arcade κατά προτίμηση) που να είναι διασκεδαστικό τα 5 πρώτα λεπτά κάθε φοράς που το παίζεις. Θέλουμε ο παίχτης να μην λιώνει στο παιχνίδι γιατί θα το βαρεθεί, μιας και είναι mini game και θα το απεγκαταστήσει σύντομα. Θέλουμε όμως να το παίζει και
να του μείνει στο μυαλό σαν θετική σκέψη κάθε φορά που θα σκρολάρει στις εφαρμογές του. Επομένως στοχεύουμε να φτιάξουμε ένα παιχνίδι που
θα είναι εύκολο να το μάθεις, θα σου δίνει μία αίσθηση ευφορίας και μετά από 5 λεπτά θα καταντάει μονότονο, αλλά θα θες να το παίζεις μία φορά τη μέρα, για την αίσθηση ευφορίας που σου δίνει.
Μετά από 5λεπτη σκέψη αποφάσισα λοιπόν να φτιάξω ένα παιχνίδι που θα έχει να κάνει με physics (γιατί οι συγκρούσεις και οι γκέλες είναι κλασσική συνταγή επιτυχίας) και με θέμα τα Χριστούγεννα (για να έχει +2.7% modifier στην πιθανότητα να το προσέξει κάποιος στο Store). Κι έτσι αποφάσισα να φτιάξω ένα παιχνίδι που θα χειρίζεσαι μία χιονόμπαλα που το gameplay του θα μοιάζει με το Bounce(λατρεία της γενιάς του '89) Για εμπόδια θα έχει χιονανθρώπους και άλλες χιονόμπαλες(για να βλέπει ο παίχτης γκέλες) και το περιβάλλον θα είναι κάτι γιορτινό(έλατα και χριστουγεννιάτικα φωτάκια).
Αφού φτιάξουμε τα sprite για το παιχνίδι μας περνάμε στην φάση της δημιουργίας. Όσοι είστε εξοικειωμένοι με τον Game Maker, ξέρετε τη διαδικασία. Πρώτα φτιάχνουμε τα γραφικά, το background, τους ήχους, το δωμάτιο του παιχνιδιού και τέλος τα αντικείμενα.
Το tutorial αυτό είναι εξειδικευμένο και
δεν θα αναφερθώ στο πως φτιάχνουμε ένα παιχνίδι από το μηδέν, αλλά πως χρησιμοποιούμε τα physics του Game Maker σωστά για να φτιάξουμε κάτι γρήγορα.
Αν θέλετε tutorials για το πως να φτιάξουμε ένα παιχνίδι στο Game Maker με μηδενική γνώση της engine, δεν έχετε παρά να μου το ζητήσετε, ή ακόμη καλύτερα να ΔΙΑΒΑΣΕΤΕ ΠΑΛΙΟΤΕΜΠΕΛΗΔΕΣ το help document του προγράμματος. Αλλά αν μου το ζητήσετε ευγενικά δεν θα πω όχι
Για να καταλάβουμε πως δουλεύουν τα physics στον game maker, πρέπει να κατανοήσουμε πρώτα ότι το πρόγραμμα έχει δύο "mode" κίνησης: Την κανονική και την Physics. Όταν δημιουργούμε ένα αντικείμενο λοιπόν μας θα δούμε την επιλογή Uses Physics, όπως φαίνεται στην εικόνα
Κλικάρουμε το Uses Physics και ανοίγει το tab με τα physics properties του αντικειμένου. Και τώρα οι στιγμή που όλοι (και οι 3 αναγνώστες του topic) περιμένατε:
Αναλύουμε τι κάνει το κάθε ένα από αυτά και πως το χρησιμοποιούμε!
Collision Shape
Άλλο το Collison Mask που δώσαμε στο Sprite και άλλο το Collision Shape όταν χρησιμοποιούμε Physics. Ουσιαστικά το Collision Shape είναι αυτό που θα ορίζει ποιο θα είναι το Collision του αντικειμένου. Διαλέγουμε ένα από τα τρία που έχει (Circle, Box, Shape) και κάνουμε κλικ στο Modify Shape.
Με τα βελάκια που βλέπουμε κουνάμε το σχήμα για να το φέρουμε πάνω στο sprite μας και οι κουκκίδες είναι για να ορίσουμε τα όρια του σχήματος. Ξέρω, duh, αλλά πρέπει να τα πω, αλλιώς tutorial θα ήταν;
Αφού φτιάξουμε ένα σχήμα που μας ικανοποιεί περνάμε στο ωραίο κομμάτι του try 'n error. Βλέπουμε λοιπόν αυτό το πράγμα και προσπαθούμε να μην αγχωθούμε.
Το Density καθορίζει τη μάζα του σώματος του αντικειμένου. Όσο πιο μεγάλη μάζα, τόσο πιο βαρύ! Μη βάλετε αστρονομικά νούμερα, απλώς πειραματιστείτε με μικρές τιμές.
Το Restitution είναι το πόσο "ελαστικό" θα είναι το αντικείμενό μας, αλλά επειδή ο Game Maker δεν υποστηρίζει την παραμόρφωση των αντικειμένων, μην περιμένετε να δείτε το αντικείμενο να παραμορφώνεται, παρά μόνο το πόσο πολύ θα αναπηδάει κάθε φορά που θα συγκρούεται με κάποιο άλλο.
Το Collision Group είναι η "ομάδα" στην οποία ανήκει το αντικείμενο. Αυτό το αντικείμενο θα συγκρούεται μόνο με όσα ανήκουν στο ίδιο Collision Group, που σημαίνει ότι αν έχουμε ένα αντικείμενο που έχει Collision Group 1 αντί για 0, δεν θα αλληλεπιδρούν μεταξύ τους.
To Liner Damping είναι η επιβράδυνση του σώματος, άσχετα με το αν θα συγκρουστεί με κάποιο άλλο. Σκεφτείτε κάτι σαν την επιβράδυνση λόγω αέρα, μόνο που είναι ξεχωριστή στο κάθε αντικείμενο.
Το Angular Damping είναι η περιστροφή του αντικειμένου. Δηλαδή με τι ταχύτητα και πόσο θα περιστρέφεται όταν συγκρούεται με κάποιο άλλο.
Το Friction είναι όπως μαντέψατε η τριβή του κάθε αντικειμένου. Αν θέλετε περιγραφή και της τριβής τότε μάλλον βγάλτε το Γυμνάσιο πρώτα και μετά γυρίστε να διαβάσετε.
Είναι πολύ σημαντικό να καταλάβουμε ότι δεν χρειάζονται τρελές τιμές στις ιδιότητες αυτές!!!
Το Sensor κάνει το αντικείμενο να λειτουργεί σαν φωτοκύτταρο. Αυτό σημαίνει ότι αν συγκρουστούν δύο αντικείμενα και το ένα από αυτά είναι Sensor, θα συνεχίσουν και τα δύο την πορεία τους. Η χρήση του sensor είναι για να κάνουμε κάτι στο event της σύγκρουσης. ΠΧ θέλω να παίρνω έναν πόντο κάθε φορά που περνάω με την μπάλα μου μία γραμμή, αλλά δεν θέλω όταν συγκρουστώ με τη γραμμή να αλλάξω πορεία.
Το Start Awake το χρησιμοποιούμε αν θέλουμε να λειτουργεί σαν Physics Object το αντικείμενό μας με το που δημιουργηθεί.
Το Kinematic κάνει το αντικείμενο να λειτουργεί σαν δοκάρι. ΠΧ στο ποδόσφαιρό χτυπάει η μπάλα στο δοκάρι και η μπάλα κάνει γκέλα αλλά το δοκάρι παραμένει στη θέση του. Ουσιαστικά "στερεώνει" το αντικείμενο να κάνει ότι του έχουμε πει να κάνει και να μην το νοιάζει όταν συγκρούεται με άλλα.
ΣΗΜΑΝΤΙΚΟ
Για να κάνουμε το room να υποστηρίζει physics πρέπει να του το δηλώσουμε στις ιδιότητές του.
Τελευταίες Σημειώσεις:
-Για να συγκρουστούν δύο αντικείμενα που χρησιμοποιούν physics πρέπει να βάλουμε τουλάχιστον σε ένα από τα δύο το Collision Event και ένα κομμάτι κώδικα με comment για να μην διαγραφεί το event.
-Σε περίπτωση που κινούνται αργά τα αντικείμενα, βάζουμε σε ένα άσχετο object στο Create Event αυτό το κομμάτι κώδικα
" physics_world_update_speed(room_speed * 2); " και βλέπουμε τη διαφορά. Αν το 2 δεν μας κάνει αυξάνουμε σιγά-σιγά και με μικρές τιμές 2.1 2.2 κτλ.
-Δεν πίνουμε ποτέ αλκοόλ όταν προγραμματίζουμε, μας κάνει να βαριόμαστε και να χαζεύουμε στο youtube.
-Για να κάνουμε ένα αντικείμενο να κινηθεί με physics δεν χρησιμοποιούμε την κλασσική εντολή vspeed ή hspeed, ούτε τα drag n drop, αλλά την " phy_speed_y " και "phy_speed_x "
Γνωρίζοντας τα βασικά αυτά πράγματα και μέσα σε πολύ λίγο χρόνο μπορείτε να φτιάξετε πολύ εύκολα ένα minigame με physics στον Game Maker. Απαιτούνται ελάχιστες γνώσεις προγραμματισμού και βασικές γνώσεις λειτουργίας του Game Maker.
Έφτιαξα το Snowball Rush σήμερα το απόγευμα μόνο και μόνο για να σας δείξω πόσο εύκολα μπορείτε να κάνετε κι εσείς κάτι τέτοιο. Όποιος χρειαστεί βοήθεια μη διστάσει να το ζητήσει. Αν θέλετε μπορώ να συνεχίσω τα tutorials με "φροντιστηριακό" χαρακτήρα ξεκινόντας από τα βασικά του Game Maker. Ευχαριστώ για την υπομονή και εύχομαι να προσπαθείτε να εξελίσσεστε!
Για να δείτε το παιχνίδι που μπορούμε να φτιάξουμε σε λίγη ώρα μπείτε στους beta testers μας εδώ
plus.google.com/communities/102676488940388776617
και μετά κάντε κλικ εδώ
play.google.com/apps/testing/com.Twisted_Goat.Snowball_Rush