Giter VIP home page Giter VIP logo

finalreport's Introduction

Τελική Αναφορά

ΠΟΛΥΜΕΣΑ

ΓΙΑΝΝΙΟΣ ΑΝΤΩΝΙΟΣ Π2013153

Εισαγωγή

Το θέμα της εργασίας ήταν η δημιουργία ενός παιχνιδιού 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, και του κώδικα.

Super Mario sprite

Super Mario sprite2

Tiled

Sublime

Συμπεράσματα

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

finalreport's People

Contributors

p13gian2 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.