Το θέμα της εργασίας ήταν η δημιουργία ενός παιχνιδιού 2D, βασισμένου στο κλασικό παιχνίδι Super Mario. Χρησιμοποιήθηκε ο κώδικας από τo αποθετήριο του Super Mario.
Σύνοψη
Λόγω έλλειψης χρόνου δεν κατάφερα να ολοκληρώσω το τελευταίο παραδοτέο (δημιουργία μενού, δημιουργία επιπλέον εχθρών). Στα υπόλοιπα παραδοτέα έγινε προσπάθεια να δημιουργηθούν όλα τα ζητούμενα των παραδοτέων.
Επιλογή Εργαλείων
Σαν εργαλείο ανάπτυξη του κώδικα χρησιμοποίησα το πρόγραμμα SublimeText, το οποίο είναι ένας επεξεργαστής κειμένου με πρόσθετα που υποστηρίζουν πολλές γλώσσες, ανάμεσα στις οποίες είναι και η Javascript και η HTML. Οι παραπάνω γλώσσες χρησιμοποιήθηκαν για την ανάπτυξη του παιχνιδιού, με επιπλέον χρήση της βιβλιοθήκης PHASER. Για την επεξεργασία των sprites χρησιμοποιήθηκε το πρόγραμμα GIMP, το οποίο είναι ένα εξαιρετικό freeware πρόγραμμα επεξεργασίας εικόνας. Για την δημιουργία επιπλέον levels, χρησιμοποιήθηκε το πρόγραμμα TILED.
Διαδικασία Ανάπτυξης
Η ανάπτυξη του παιχνιδιού στηρίχθηκε όπως είπαμε και πριν, στον κώδικα του Super Mario που προσφέρει η εταιρεία ανάπτυξης της βιβλιοθήκης PHASER. Δημιουργήθηκαν πολλά προβλήματα, όπως π.χ το πάγωμα του παχνιδιού με την χρήση του πλήκτρου "P" ή όταν ο παίχτης χάνει μια ζωή, να ξεκινάει από την αρχή, χωρίς να επαναδημιουργούνται οι σκοτωμένοι εχθροί. Η ανάπτυξη των sprites στηρίχθηκε πάνω στα υπάρχοντα sprites του Super Mario, τα οποία και παραλάχθηκαν πάνω σε προσωπική ιδέα. Ο χαρακτήρας του ήρωα του Super Mario, μοιάζει με τον κλασσικό ήρωα του παιχνιδιού της δεκαετίας του 1980, Bombjack.
Αλλάχθηκε επίσης το sprite των δώρων που μαζεύει ο ήρωας του παιχνιδιού, στο οποίο προστέθηκε κίνηση και δείχνει ένα διαμάντι να βγαίνει μέσα από ένα κουτί. Ακόμη ο παίχτης κάθε φορά που μαζεύει ένα διαμάντι, αυτό φεύγει ψηλά στον ουρανό. Η παραπάνω λειτουργία έγινε με την εκμετάλευση των physics του PHASER. Επιπλέον, προστέθηκαν SCORE, Ζωές, Επεξήγηση πλήκτρων χειρισμού του παίκτη, με την χρήση google fonts. Προστέθηκε η δυνατότητα ο χρήστης να παγώνει (Pause) προσωρινά το παιχνίδι πατώντας το πλήκτρο P. Όταν ο χρήστης χάσει όλες τις ζωές του, εμφανίζεται game over.
Προστέθηκαν ήχοι και μουσική που παίζει στο background κατά την διάρκεια του παιχνιδιού. Επίσης προστέθηκε πλήκτρο (SPACE) με το οποίο ο χρήστης μπορεί να κάνει μεγάλο άλμα, και πλήκτρο (SHIFT) με το οποίο ο παίκτης καθυστερεί την πτώση του. Αυτό πάρθηκε σαν ιδέα από το παλιό παιχνίδι Bombjack.
Χρησιμοποιήθηκαν επιπλέον συναρτήσεις όπως η construct στον κώδικα, έτσι ώστε να μπορώ να την κάλω στην περίπτωση που ο χρήστης χάνει μια ζωή και να ξανακατασκευάζονται τα αντικείμενα από την αρχή. Επίσης αντιμετώπισα ένα πρόβλημα στον υπολογισμό του score λόγω της κίνησης των δώρων προς τον ουρανό, το οποίο το έλυσα φτιάχνοντας δυο διαφορετικά αντικείμενα για τα δώρα (coins και coins1). Το ένα είναι το φανερό το οποίο χρησιμοποιείται για την απεικόνιση του δώρου και την μετακίνηση στον ουρανό και το δεύτερο κρυφό για τον υπολογισμό του score).
Τέλος οι εχθροί όταν καταστρέφονται από τον παίκτη δεν ξαναδημιουργούνται στην περίπτωση που ο παίκτης χάσει μια ζωή, συνεχίζει δηλαδή από εκεί που είχε μείνει, ώστε να του δίνεται η δυνατότητα να τελειώσει την πίστα.
Δεν πρόλαβα να προσθέσω teleports, extra bonus, και επιπλέον εχθρούς όπως και μενού λόγω περιορισμένου χρόνου.
Screenshots
Ακολουθούν μερικά screenshots από την κατασκευή των sprites, των levels, και του κώδικα.
Συμπεράσματα
Η εργασία αυτή ήταν πολύ καλή επειδή εμβάθυνα περισσότερο στην Javascript, και μελετώντας περισσότερο την βιβλιοθήκη PHASER, μπόρεσα να μάθω περισσότερα στην κατασκευή ενός παιχνιδιού 2D. Επίσης, αντιμετωπίζοντας διάφορα προβλήματα πάνω στο παιχνίδι και την λειτουργία του, κατάφερα να σκεφτώ και να βρω πολλούς και διαφορετικούς τρόπους επίλυσης για το καθένα, επιλέγοντας τον καλύτερο από όλους. Αυτό μου έδωσε την δυνατότητα να αποκτήσω περισσότερη εμπειρία στην συγγραφή κώδικα.