Drivin’ My Car – μέρος 2ο

Αφού καθορίσαμε την δομή των υποσυστημάτων του βιντεοπαιχνιδιού ας ρίξουμε μια ματιά στο πως θα τα “παντρέψουμε” με το XNA. Η λειτουργία ενός παιχνιδιού με το XNA βασίζεται σε μια κλάση η οποία ονομάζεται Game. Η κλάση αυτή σχεδιάστηκε για να αποτελέσει την καρδία ενός βιντεοπαιχνιδιού υλοποιώντας τον βρόγχο του παιχνιδιού ο οποίος λαμβάνει την είσοδο του χρήστη, υλοποιεί την λογική του παιχνιδιού και εμφανίζει τα αποτελέσματα στην έξοδο.

The game loop provided by XNA

Ο βρόχος του παιχνιδιού που προσφέρει το XNA


Όπως φαίνεται και στο σχήμα ο βρόγχος υλοποιείται από δυο μεθόδους τις Update και Draw οι οποίες εναλλάσσονται καθ’ όλη την διάρκεια του παιχνιδιού. Επιπρόσθετα παρατηρούμε στο σχήμα ότι υπάρχουν και μερικές βοηθητικές μέθοδοι ο οποίες εμπλέκονται στην εκτέλεση του παιχνιδιού. Αρχικά εκτελείται η Initialize η οποία προσφέρεται για να γίνουν οι απαραίτητες αρχικοποιήσεις στα διάφορα αντικείμενα και μεταβλητές του παιχνιδιού. Συνήθως ο ορισμός του μεγέθους της οθόνης και η λειτουργία πλήρους οθόνης εκτελούνται στην φάση αυτή. Πρέπει να τονίσουμε ότι η μέθοδος αυτή εκτελείται μόνο μια φορά κατά την εκκίνηση του παιχνιδιού. Μετά την Initialize ακολουθεί η LoadContent η οποία εκτελείται και αυτή μόνο μια φορά για να φορτώσει το περιεχόμενο το οποίο μπορεί να είναι οι υφές ,οι γραμματοσειρές , τα μοντέλα, διάφορες ρυθμίσεις κλπ. Η γενική φιλοσοφία του XNA είναι όλο το περιεχόμενο να φορτωθεί στη μνήμη και να μην υπάρχουν μεταβολές στην μνήμη (δέσμευση-αποδέσμευση) που ενδεχομένως επηρεάσουν την ταχύτητα εκτέλεσης του παιχνιδιού. Ας μην ξεχνάμε ότι η C# είναι μια Managed γλώσσα στην οποία η αποδέσμευση μνήμης γίνεται με την ύπαρξη ενός Garbage Collector ο οποίος εκτελείται όταν πραγματοποιούνται μεταβολές στην μνήμη έτσι ώστε να διαγράφει τα άχρηστα δεδομένα και να βελτιστοποιεί τα χρήσιμα. Όταν ολοκληρωθεί ο βρόγχος του παιχνιδιού εκτελείται η UnloadContent στην οποία αποδεσμεύονται οι μεταβλητές του παιχνιδιού.
Παρατηρώντας λοιπόν τον τρόπο λειτουργίας του XNA βλέπουμε ότι όλα τα υποσυστήματα του παιχνιδιού πρέπει να βρίσκονται στην διαδικασία Update εκτός από την Display Engine η οποία πρέπει να ενταχθεί στην Draw.

This entry was posted in Ανάπτυξη βιντεοπαιχνιδιών. Bookmark the permalink.

Comments are closed.