CrossyRoad_InAction_PacManGhosts

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

Ένα από τα αρχικά στάδια της παραγωγής είναι η δημιουργία των ψηφιακών μας κόσμων και χαρακτήρων. Στη περίπτωση που μιλάμε για ένα 2D τίτλο, τότε εδώ είναι η σειρά του γραφίστα να δημιουργήσει τους χαρακτήρες και να τους δώσει κίνηση προτού τους «βάλουμε» σε μία μηχανή γραφικών. Επίσης, θα πρέπει να ζωγραφιστούν και τα διάφορα στοιχεία του περιβάλλοντος στο οποίο θα περιηγείται ο παίκτης. Εδώ πέρα θα σας φανούν πολύ χρήσιμα τα concept σχέδια που είχατε φτιάξει σε προηγούμενο στάδιο. Αυτό θα σας σώσει πάρα πολύ χρόνο καθώς δεν θα χρειαστεί να σκεφτείτε πως θα μοιάζει πχ. ο χαρακτήρας του παιχνιδιού ή τι γραφικό στυλ θα έχουν τα δέντρα σε ένα δάσος. Πολύ σημαντικό είναι ότι θα χρειαστεί να μάθετε ένα πρόγραμμα, όπως το GIMP ή το Photoshop για αυτή τη δουλειά, και σας διαβεβαιώ (δυστυχώς) πως αυτό το στάδιο θα σας πάρει πολύ καιρό για να βγάλετε ένα αξιόλογο αποτέλεσμα. Εάν πρόκειται για 3D παιχνίδι τα πράγματα είναι αρκετά πιο δύσκολα μιας και η παραγωγή 3D μοντέλων είναι περισσότερο χρονοβόρα και θα παρουσιάσει περισσότερα προβλήματα τεχνικού επιπέδου από όσα μπορείτε να φανταστείτε. Μερικά ενδεικτικά προγράμματα που μπορείτε να κοιτάξετε είναι τα Maya, 3DS Max και Blender. Δεν θα αναφερθώ περισσότερο σε αυτό το editorial γιατί είναι η ειδικότητα μου και σκοπεύω να γράψω έναν ξεχωριστό οδηγό πάνω στο 3D Modelling αφού τελειώσουμε με αυτή τη σειρά.

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

Η πρώτη είναι να ξοδέψετε άπειρες ώρες μαθαίνοντας πως να το καταφέρετε και μετά από ένα χρόνο να καταλάβετε ότι είναι κάτι πρακτικά αδύνατο για ένα άτομο που θα έχει να κάνει τα πάντα σε ένα παιχνίδι, να γίνει επίσης master στο texturing (σε τόσο μικρό διάστημα). Για να είμαστε και δίκαιοι, αυτός ο κανόνας ισχύει σχεδόν σε όλους τους τομείς που λέμε, γιατί πολύ απλά δεν θα έχεις τον ίδιο χρόνο να αφιερώσεις σε κάτι εάν έχεις να ασχοληθείς με άλλα 15 πράγματα. Εννοείται πως ο άλλος που ειδικεύεται σε αυτόν τον 1 τομέα θα έχει αφιερώσει πολλαπλάσιο χρόνο σε σχέση με εσένα σε αυτόν τον τομέα και επομένως θα είναι καλύτερος.

Αφού έχουμε τους χαρακτήρες και τα αντικείμενα του περιβάλλοντος μας έτοιμα, ήρθε η ώρα να τα εισάγουμε στην μηχανή γραφικών της αρεσκείας μας. Εδώ δεν υπάρχει κάποια συγκεκριμένη διαδικασία οπότε πραγματικά δεν υπάρχουν πολλά να πω. Κάθε μηχανή έχει τα δικά της εργαλεία εισαγωγής των assets και υποστηρίζει τα δικά της πρότυπα (formats) αρχείων με κάποια κοινά όπως τα png, jpg, gif για εικόνες και fbx, obj για 3D μοντέλα. Επί τη ευκαιρία λοιπόν, ας μιλήσουμε λίγο για μηχανές γραφικών. Στο προηγούμενο editorial αναφέρθηκα στη Unity και στην Unreal Engine και άθελα μου δεν ανέφερα μερικές 2D μηχανές όπως το Construct, το Gamemaker και το RPGMaker (μπορείτε να δείτε και ένα review της συγκεκριμένης μηχανής πατώντας εδώ). Ο λόγος που ανέφερα μόνο τις 2 πρώτες είναι ότι ενίοτε ασχολούμουν με το 3D (σε όλο το φάσμα του) και δεν έχω πολύ μεγάλη εμπειρία με τις υπόλοιπες 2D μηχανές.

Έχω δει απίστευτα παιχνίδια φτιαγμένα στο Construct αλλά ο σκοπός μου είναι να σας μεταδώσω την γενικότερη εμπειρία της παραγωγής ενός τίτλου που περιέχει λίγο από όλους τους τομείς που αναλύω παραπάνω (και παρακάτω). Αφού το διευκρινίσαμε και αυτό, το μόνο που θα ήθελα να πω πάνω στις μηχανές γραφικών είναι ότι η καθεμία έχει τα πλεονεκτήματα και τα μειονεκτήματά της και χρησιμοποιείται για διαφορετικούς σκοπούς. Εάν μιλάμε για έναν εμπορικό τίτλο θα πήγαινα με την Unity ή την Unreal, κυρίως για λόγους Porting και Project Scaling (και εδώ βλέπετε άλλο ένα θέμα για ανάλυση σε επόμενο editorial).

Μιας και πλέον είμαστε στην μηχανή γραφικών, ευκαιρία να βάλουμε μερικά φώτα για να βλέπουμε μπροστά μας βρε παιδάκι μου. Ναι, καλά καταλάβατε (ή όχι) πως μιλάω για το στάδιο του Lighting. Συνήθως πραγματοποιείται αφού έχουμε προσθέσει πρώτα όλα τα απαιτούμενα αντικείμενα του περιβάλλοντος μας. Το πως θα στήσουμε τον φωτισμό μας σε ένα παιχνίδι καθορίζει την ατμόσφαιρα του παιχνιδιού μας. Κάθε μηχανή γραφικών χρησιμοποιεί διαφορετικό σύστημα φωτισμού οπότε θεωρώ πως δεν υπάρχει λόγος στο να αναλύσω το καθένα. Επιγραμματικά, υπάρχουν διάφορα είδη φώτων (Lights), όπως για παράδειγμα τα Omni, Spot, Directional και Ambient. Εάν δω πως υπάρχει ενδιαφέρον μπορώ να γράψω ένα editorial αναλύοντας τι κάνει το καθένα από αυτά.

Σε αυτό το σημείο θα ήθελα να κάνω μια σύντομη αναφορά και στα Post Processing Effects, όπως το Anti-Aliasing (γνωστό και ως ΑΑ), το Depth of Field (γνωστό και ως θολούρα σε μακρινά/κοντινά αντικείμενα), το Motion Blur (γνωστό και ως θολούρα λόγω ταχύτητας κίνησης κάμερας), τα Lens Flare (γνωστό ως οι ενοχλητικές λάμψεις όταν σε τυφλώνει ένα φως), το Vignette (γνωστό και ως το πιο διαδεδομένο εφέ στο Instagram) και φυσικά το Chromatic Aberration (γνωστό και ως: Go home, you are drunk εφέ). Τα παραπάνω εφέ προσδίδουν ενδιαφέρον και καθαρότητα στο παιχνίδι (μέχρι ενός σημείου) αλλά επιβαρύνουν την απόδοση του παιχνιδιού μας. Επομένως, είναι καλό να δίνουμε την επιλογή στον παίκτη να απενεργοποιεί κάποια από αυτά εάν έχει ένα μέτριο σύστημα, έτσι ώστε να ευχαριστηθεί και αυτός το παιχνίδι με κάποια ικανοποιητικά frames per second.

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

Σκεφτείτε πως θα μπορούσατε να οδηγήσετε ένα αμάξι χωρίς να έχετε αμάξι. Επομένως, θα πρέπει πρώτα να προσθέσουμε κάποια ψηφιακά κόκαλα και να ορίσουμε την «δύναμη» (weight painting – google it) που θα ασκεί το καθένα στο κύριο όγκο (mesh) του μοντέλου. Ο γενικός όρος της παραπάνω διαδικασίας προετοιμασίας των ψηφιακών κοκάλων του μοντέλου μας ονομάζεται rigging. Συνήθως πρόκειται για μία βαρετή και επαναλαμβανόμενη διαδικασία αλλά για κάποιο λόγο γνωρίζω άτομα που τους αρέσει οπότε δεν θα σχολιάσω παραπέρα για να μην με πάρουν με τις πέτρες. Ας γυρίσουμε όμως στο character animation. Όλοι μας έχουμε δει τουλάχιστον μία ταινία της Disney (μπορεί και πολλές περισσότερες αλλά και αυτό είναι άλλο θέμα). Ε, το character animation είναι ακριβώς η ρεαλιστική κίνηση των χαρακτήρων μας, επομένως δεν χρειάζεται περισσότερη εξήγηση. Σε ένα πιο τεχνικό πλαίσιο, η κίνηση αυτή επιτυγχάνεται με τον ορισμό κλειδιών που περιέχουν διάφορες τιμές (τοποθεσία και περιστροφή στους άξονες X, Y και Z) τα οποία μεταβάλλονται με την πάροδο του χρόνου και διαφέρουν για κάθε ψηφιακό κόκαλο του χαρακτήρα μας. Όπως είπαμε, αυτά τα κόκαλα με την σειρά τους επηρεάζουν τον όγκο του χαρακτήρα μας δίνοντας έτσι την εκάστοτε επιθυμητή κίνηση. Αυτό το στάδιο δημιουργείται συνήθως σε προγράμματα εκτός της μηχανής γραφικών για λόγους ευκολίας και ταχύτητας. Αλλά και για όσους δεν έχουν πολύ όρεξη να κινούν τους χαρακτήρες που με τόσο κόπο έφτιαξαν και χρωμάτισαν, μπορούν να βρούνε έτοιμα μερικά animations στα Asset Stores της Unity και της Unreal (ακόμα και δωρεάν). Θα χρειαστεί βέβαια κάποια προσαρμογή για το κάθε μοντέλο σας αλλά ο χρόνος που θα γλυτώσετε δεν συγκρίνεται με αυτόν της προσαρμογής.

Ένας πάρα πολύ σημαντικός τομέας της παραγωγής ενός video game είναι ο ήχος. Όταν λέω ήχος σε ένα παιχνίδι εννοώ την μουσική αλλά και τα διάφορα ηχητικά εφέ που «παίζουν» όταν ο παίκτης κάνει κάποια συγκεκριμένη δράση. Ο ήχος παίζει έναν πολύ σημαντικό ρόλο στην ατμόσφαιρα και στο κύρος που θα δώσει σε ένα παιχνίδι. Μπορούμε κάλλιστα να πούμε πως είναι και το μισό παιχνίδι καθώς (μέχρι στιγμής) τα ερεθίσματα που λαμβάνει ο παίκτης από ένα παιχνίδι είναι οπτικά και ακουστικά. Είναι κρίμα λοιπόν να δουλέψετε σκληρά για το οπτικό (visual) κομμάτι του τίτλου σας και να παραμελήσετε κάτι τόσο σημαντικό όπως η μουσική και ο ήχος. Ευτυχώς σας έχω καλά νέα καθώς με μία ερώτηση σε κάποιο από τα γκρουπάκια που σας πρότεινα στο τέλος του προηγούμενου editorial, θα βρείτε πολλά άτομα που είναι πρόθυμοι να σας βοηθήσουν ή να δουλέψουν μαζί σας πάνω σε αυτόν τον τομέα. Και σε περίπτωση που είσαστε λίγο ντροπαλοί/ντροπαλές (you never know), με μία απλή αναζήτηση στο Google μπορείτε να βρείτε πολλές σελίδες που προσφέρουν δωρεάν royalty-free μουσικά κομμάτια και ηχητικά εφέ.

Μα θα μου πεις άνθρωπε μου, ωραία όλα αυτά αλλά εγώ μαθαίνω Java στη σχολή μου. Τι να τα κάνω όλα αυτά εάν δεν γράψω λίγο κώδικα για να δουλεύει το παιχνίδι; Και ξέρεις κάτι; Έχεις δίκιο φίλε μου. Και για όσους δεν κατάλαβαν, μπαίνουμε στο κομμάτι του προγραμματισμού! Ότι και να πω είναι λίγο οπότε θα προσπαθήσω να μην επεκταθώ πάρα πολύ σε τεχνικές ορολογίες. Ο προγραμματισμός με λίγα λόγια είναι ο ορισμός των κανόνων και διαδικασιών που θα ορίζουν το παιχνίδι μας. Για παράδειγμα, με τον προγραμματισμό λέμε στη μηχανή γραφικών πως εάν ο παίκτης πατήσει πάνω σε ένα σημείο που έχει φωτιά, θα χάσει 10 πόντους από τη ζωή του. Ο παίκτης δεν χρειάζεται (πρέπει) να έχει πρόσβαση στον κώδικα που τρέχει πίσω από το παιχνίδι, αλλά αυτός θα πρέπει να είναι ξεκάθαρα ορισμένος έτσι ώστε το gameplay του παιχνιδιού να είναι εύκολα κατανοητό από τον παίκτη. Συμπεραίνοντας, ο προγραμματισμός (programming ή αλλιώς scripting – επίσης google it) είναι ο σαφής ορισμός του gameplay ενός παιχνιδιού. Όπως και ένας τύπος που δεν θυμάμαι, έλεγε πάντα: Artists make things look good, coders make them work.

Και κάπου εδώ τελειώνει το δεύτερο κομμάτι της σειράς μας. Μείνετε συντονισμένοι στο Alt Tab για το τελευταίο part που θα έχει θέμα το Post – Production στάδιο του παιχνιδιού μας. Με λίγα λόγια, τι κάνω αφού φτιάξω το παιχνίδι μου; Πως θα το διανέμω και πως θα το παίξει περισσότερος κόσμος; Για οποιαδήποτε ερώτηση που μπορεί να έχετε, μην διστάσετε να μου στείλετε ένα μήνυμα στο aggelos.tsiflas@gmail.com ή απλά να αφήσετε ένα σχόλιο από κάτω.