Ανάπτυξη βιντεοπαιχνιδιών με το XNA Game Studio
Δημοσιεύθηκε από Κώστας Αναγνώστου στο Δεκεμβρίου 29, 2008
Μετά από μερικούς πειραματισμούς με το template του blog βρήκα ένα που να μου δίνει λίγο χώρο να αναπτύξω το κείμενο. Ήρθε η ώρα λοιπόν να αρχίσουμε σιγά σιγά το κολύμπι στα βαθιά νερά της ανάπτυξης βιντεοπαιχνιδιών.
Η ανάπτυξη ενός βιντεοπαιχνιδιού μπορεί να είναι πολύ απλή ή πολύ δύσκολη υπόθεση ανάλογα με το είδος του παιχνιδιού αλλά και τα εργαλεία που έχεις στην διάθεση σου. Εμείς θα ξεκινήσουμε από τα ρηχά φορώντας καλού κακού ως σωσίβιο το XNA Game Studio.
ΧΝΑ τι;
Για αυτούς που δεν έχουν ακούσει για το XNA Game Studio, ας το περιγράψουμε λίγο στα γρήγορα. XNA γενικά (η Microsoft ισχυρίζεται ότι δεν είναι αρχικά λέξεων) ονομάζεται όλο το σετ των εργαλείων που παρέχει η Microsoft για την ανάπτυξη παιχνιδιών σε Windows, Xbox360 και Zune. Περιλαμβάνει εργαλεία όπως το PIX για γραφικά, το XACT για ήχο, το Xbox Development Kit, το Visual Studio κλπ. Το XNA Game Studio είναι ένα υποσύνολο των εργαλείων αυτών που στοχεύει αποκλειστικά στην ανάπτυξη παιχνιδιών σε Windows, Xbox360 και Zune χρησιμοποιώντας τη τεχνολογία .NET της ίδιας εταιρίας. Βασίζεται πάνω στο περιβάλλον ανάπτυξης Visual Studio, την γλώσσα προγραμματισμού C#, σε μια ειδική έκδοση του DirectX και φυσικά στο .NET. Το XNA Game Studio έχει φτάσει στην έκδοση 3.0 και είναι διαθέσιμο δωρεάν σε όλους.
Γιατί XNA Game Studio;
Η χρήση του περιβάλλοντος ανάπτυξης του XNA Game Studio έχει πολλά πλεονεκτήματα ειδικά για εκμάθηση προγραμματισμού βιντεοπαιχνιδιών. Καταρχάς έχει διάφορα επίπεδα δυσκολίας. Αν κάποιος επιθυμεί να αναπτύξει ένα διδιάστατο παιχνίδι τότε δεν χρειάζεται να ασχοληθεί καθόλου με μετασχηματισμούς, πίνακες, shaders και τριδιάστατα μοντέλα. Αν κάποιος θέλει να δοκιμάσει με κάποιο τριδιάστατο παιχνίδι τότε το XNA Game Studio τον διευκολύνει σημαντικά με αρκετές έτοιμες βιβλιοθήκες που αναλαμβάνουν να φορτώσουν τα μοντέλα από το δίσκο και να τα απεικονίσουν χρησιμοποιώντας έτοιμους shaders. Και αν κάποιος αισθάνεται έτοιμος να πάρει τον έλεγχο του συστήματος μπορεί να παρακάμψει κάθε έτοιμη λειτουργία του XNA Game Studio και να την υλοποιήσει εξαρχής όπως επιθυμεί αυτός.
Αυτό που μας ενδιαφέρει σαν αρχάριους προγραμματιστές βιντεοπαιχνιδιών είναι ότι το XNA Game Studio μας παρέχει ένα γρήγορο τρόπο να φορτώσουμε και να απεικονίσουμε περιεχόμενο στο παιχνίδι μας (το οποίο είναι αρκετά δύσκολο να το υλοποιήσεις εξαρχής), και ένα game loop το οποίο μπορούμε να χρησιμοποιήσουμε άμεσα.
Επιπλέον το παιχνίδι που αναπτύσσουμε μπορεί να τρέξει με ελάχιστες (ή και καμία) αλλαγές και σε Windows και σε Xbox360 (και σε Zune αν έχει αγοράσει κανείς, και το παιχνίδι δεν είναι υψηλών απαιτήσεων).
Έχω ακούσει ότι το XNA Game Studio δεν σου διδάσκει σωστά προγραμματισμό βιντεοπαιχνιδιών!
Προσωπικά δεν πιστεύω ότι αυτός το ισχυρισμός ισχύει. Από ιδία εμπειρία και από παραδοσιακό προγραμματισμό βιντεοπαιχνιδιών με C++ και με ανάπτυξη σε XNA Game Studio μπορώ να πω ότι το πόσο καλά θα μάθεις ανάπτυξης παιχνιδιών με το XNA Game Studio εξαρτάται αποκλειστικά από το πώς θα το χρησιμοποιήσεις. Σίγουρα δεν θα ασχοληθείς με διαχείριση μνήμης που είναι ένα μεγάλο αγκάθι του παραδοσιακού προγραμματισμού βιντεοπαιχνιδιών με C++, αλλά η διαχείριση περιεχομένου (asset management), shaders, κίνηση, πολυνηματικός προγραμματισμός είναι όλα εκεί. Ο τρόπος που διαχειρίζεται το ΧΝΑ το DirectX είναι ελαφρά διαφορετικός αλλά η φιλοσοφία είναι η ίδια.
Επαναλαμβάνω το πόσο καλά θα μάθεις ανάπτυξης παιχνιδιών με το XNA Game Studio εξαρτάται αποκλειστικά από πως θα το χρησιμοποιήσεις. Είναι εντελώς ανοικτή και παραμετροποιήσιμη πλατφόρμα.
Ναι αλλά, Θεός φυλάξοι, C# για ανάπτυξη βιντεοπαιχνιδιών;
Σίγουρα η C# είναι γενικά (λόγω του .NET) πιο αργή από ότι η C++. Αλλά συμβαίνουν δύο πράγματα που κάνουν τη ζυγαριά να κλείνει υπέρ της C# (και ακόμα περισσότερο στο μέλλον): οι επεξεργαστές έχουν γίνει τόσο ισχυροί που απλά δεν κάνει διαφορά που η C# είναι λίγο πιο αργή. Επιπλέον η ευχρηστία και η παραγωγικότητα που ενθαρρύνει η C# (και άλλες ανάλογες γλώσσες προγραμματισμού) έχουν περισσότερη σημασία πλέον από την επίτευξη της απόλυτης ταχύτητας σε ένα παιχνίδι. Δεύτερος λόγος είναι ότι γενικά τα παιχνίδια σπαταλούν περισσότερο χρόνο στον επεξεργαστή γραφικών (GPU) λόγω το όγκου των δεδομένων που πρέπει να απεικονίσουν παρά στην CPU οπότε η καθυστέρηση της C# πολλές φορές δεν γίνεται αντιληπτή.
Δεν κατάλαβα τίποτα, τι είναι game loop, shaders, DirectX, .NET, C#;
Δεν υπάρχει λόγος ανησυχίας, στα επόμενα άρθρα θα αναλύσουμε σταδιακά όλους αυτούς τους, φαινομενικά δύσκολους, όρους!
Πως μπορώ να πάρω μια γεύση του XNA Game Studio;
Εύκολα, κατεβάζοντας το από το http://creators.xna.com/en-US/downloads. Θα χρειαστεί πρώτα να κατεβάσετε το Visual Studio 2008 Express Edition (C#). Αφού το εγκαταστήσετε μπορείτε πλέον να κατεβάσετε και το XNA Game Studio 3.0. Σε επόμενο άρθρο θα δούμε πως μπορούμε να φτιάξουμε εύκολα ένα απλό παιχνίδι στην πλατφόρμα αυτή.

papajohn είπε
Αντε τώρα να αντισταθείς να κάνεις install το VS2008…!
thinkinggamer είπε
Ξέρω υπάρχει το επιχείρημα για παντοκρατορία της Microsoft κλπ κλπ. Οταν όμως δίνει ένα τέτοιο εργαλείο δωρεάν πώς να αντισταθείς;