Τους τελευταίους μήνες παρουσιάστηκε στο Videogames Laboratory blog μια σειρά από άρθρα πάνω στην ανάπτυξη ενός space shoot’em up με το όνομα Not for Sale!. Σκοπός του tutorial αυτού ήταν να δούμε περισσότερο σύνθετες τεχνικές ανάπτυξης βιντεοπαιχνιδιών, τεχνικές που ως ένα βαθμό χρησιμοποιούνται και σε εμπορικά παιχνίδια. Πιστεύω ότι φτάσαμε το παιχνίδι σε ένα καλό επίπεδο με διαχείριση εχθρών, ανίχνευση συγκρούσεων, επεκτάσιμο σύστημα εφέ και εκρήξεων. Μένουν όμως πολλά να γίνουν ακόμα πριν να μπορέσουμε να το χαρακτηρίσουμε ολοκληρωμένο παιχνίδι.
Μια και ο σκοπός του blog αυτού είναι πρωτίστως εκπαιδευτικός, και μιας και δεν υπάρχει καλύτερος τρόπος να μάθεις από το να εμπλακείς ο ίδιος στην μάθηση, πιστεύω ότι ήρθε η ώρα να εμπλέξουμε τους αναγνώστες στην κατασκευή του παιχνιδιού. Θέλω λοιπόν να οργανώσουμε μια συνεργατική ανάπτυξη του παιχνιδιού στην οποία μπορεί να συμμετάσχει οποιοσδήποτε αναγνώστης του blog επιθυμεί και πιστεύει ότι μπορεί να συνεισφέρει.
Η ανάπτυξη θα οργανωθεί σε πρότυπα εταιριών ανάπτυξης, χρησιμοποιώντας όσο γίνεται ανάλογα εργαλεία. Για τον διαμοιρασμό κώδικα θα χρησιμοποιήσουμε το Google Code (svn) που ήδη χρησιμοποιούμε για τα tutorial. Για καταγραφή και διαχείριση σφαλμάτων θα χρησιμοποιήσουμε κάποιο bug tracking εργαλείο. Τα μέλη της ομάδας θα κρατάνε ημερολόγιο ανάπτυξης με την πρόοδο τους. Για την ανάπτυξη καθαυτή θα χρησιμοποιήσουμε το XNA Game Studio 4.0. Μόνο αναψυκτικά και φρούτα ή σοκολάτες δεν θα προσφέρουμε!
Επιπλέον, όπως και στις μεγάλες ομάδες ανάπτυξης, κάθε μέλος της ομάδας θα είναι υπεύθυνο και θα του «ανήκει» ένα υποσύστημα του παιχνιδιού. Για παράδειγμα αν κάποιος είναι υπεύθυνος για το σύστημα εφέ (με particle systems) μόνο εκείνος θα μπορεί να διορθώνει bugs και να το επεκτείνει.
Με μια πρώτη καταγραφή διακρίνω τα παρακάτω υποσυστήματα στο παιχνίδι:
- Σύστημα εφέ. Θα περιλαμβάνει τα πάντα από εκρήξεις μέχρι οποιοδήποτε άλλο εφέ (βροχή μετεωριτών, λάμψη από πυροβολισμούς κλπ).
- Audio manager για αναπαραγωγή εφέ και μουσικής.
- Σύστημα tile map για την τοποθέτηση του κυλιόμενου φόντου. Θα χρησιμοποιηθεί κανονικό tile map και όχι το απλοϊκό που χρησιμοποιείται τώρα. Προτείνεται η χρήση του Tiled Editor ο οποίος υποστηρίζεται από το XNA.
- Bonus system που θα αναβαθμίζει το παίκτη ανάλογα (είτε σε όπλα, είτε σε ασπίδα, ζωή κλπ)
- Animation συστημα για τους εχθρούς έτσι ώστε να κινούνται σε «κύματα» και να έχουν διακριτές κινήσεις
- Αναβαθμίσιμο weapon system για το παίκτη
- Level editor για το σχεδιασμό της πίστας. Αυτό μπορεί να βασίζεται στο Tiled Editor ή μπορεί να είναι ξεχωριστό εργαλείο.
- Σύστημα για την φόρτωση και παραμετροποίηση περιεχομένου μέσω xml αρχείων. Αυτό θα συνδέεται με το Level Editor.
Ότι λείπει μπορούμε να το συμπληρώσουμε στην πορεία.
Όσον αφορά τα γραφικά του παιχνιδιού μπορούμε να χρησιμοποιήσουμε τα υπάρχοντα. Ακόμα καλύτερα αν κάποιος τα καταφέρνει σε pixel art και θέλει να συνεισφέρει ακόμα καλύτερα. Το ίδιο ισχύει και για τον ήχο/μουσική. Επίσης θα χρειαστεί και ο ρόλος του Level Designer, ένα άτομο που θα τοποθετήσει τους εχθρούς σε συγκριμένα σημεία στη πίστα και θα ορίσει Hit Points, όπλα παίκτη και τα bonus που θα εμφανίζονται και πως αυτά θα αναβαθμίζουν το παίκτη. Αυτά θα ορίζονται όλα μέσω του Level Editor.
Το παιχνίδι θα αναπτυχθεί σε εκπαιδευτικούς σκοπούς όπως ανέφερα, και όχι για εμπορικούς, κανένα από τα μέλη της ομάδας (ούτε και εγώ φυσικά) θα μπορούμε να το εκμεταλλευτούμε ανάλογα. Ο κώδικας, εργαλεία και το περιεχόμενο θα είναι διαθέσιμος σε όλους. Το παιχνίδι θα βασιστεί στον υπάρχοντα κώδικα του Not For Sale! αλλά το κάθε μέλος μπορεί να αλλάξει, βελτιώσει και να αναβαθμίσει το αντίστοιχο υποσύστημα όπως νομίζει.
Οπότε για να ολοκληρώσω το κάλεσμα, όποια/όποιος ενδιαφέρεται να συμμετάσχει στην ανάπτυξη ας επικοινωνήσει μαζί μου μέσω του contact form με τα στοιχεία της/του και το υποσύστημα/τομέα με τον οποίο θα ήθελε να ασχοληθεί. Όλοι είναι ευπρόσδεκτοι με έναν όρο: όποιος συμφωνήσει να συμμετάσχει στην ανάπτυξη παρακαλώ να το εννοεί. Είναι πολύ άσχημο, και για τα υπόλοιπα μέλη, να ξεκινήσει κάποιος την ανάπτυξη και μετά να τα παρατήσει ή να μην διορθώνει bugs που εμποδίζουν την πρόοδο των υπόλοιπων κλπ. Αυτή είναι και η έννοια της «ιδιοκτησίας» ενός υποσυστήματος. Επίσης καλό θα ήταν αυτός που θα εμπλακεί με την ανάπτυξη να έχει κάποιο επίπεδο γνώσης προγραμματισμού (αντικειμενοστραφούς). Δεν είναι απαραίτητη η γνώση του ΧΝΑ ή της C# αλλά το πως ορίζονται οι κλάσεις, πως δουλεύει η κληρονομικότητα κλπ πρέπει να τα κατέχει.
Σχετικά με το δικό μου ρόλο τώρα, εγώ δεν θα εμπλακώ άμεσα με την ανάπτυξη (δηλαδή τη συγγραφή κώδικα). Κάνω πίσω σε αυτή την περίπτωση και δίνω σε εσάς το λόγο. Ο δικός μου ρόλος θα είναι περισσότερο οργανωτικός, συμβουλευτικός, ρόλος «μέντορα» αν θέλετε.
Ας κάνουμε λοιπόν αυτή τη προσπάθεια, αυτό να πείραμα να δούμε αν μπορούμε να τα καταφέρουμε σε μια συνεργατική ανάπτυξη ενός βιντεοπαιχνιδιού. Πιστεύω ότι έχουμε όλοι πολλά να μάθουμε από αυτό.
Περιμένω τις συμμετοχές σας.
Κάνε Like στο:
Μου αρέσει! Φόρτωση...