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

Υπό μορφή brain-storming ας ρίξουμε μια ματιά στα κομμάτια του puzzle που απαρτίζουν το βιντεοπαιχνίδι μας. Βέβαια μπορεί να υπάρξουν και αλλαγές όπως είναι πολύ σύνηθες από την σχεδίαση στην υλοποίηση αλλά πιστεύω ότι με αυτά τα βασικά μπλοκ θα καταφέρουμε να αναπτύξουμε το βιντεοπαιχνίδι μας (και ταυτόχρονα να αναπτύξουμε μια πλατφόρμα που να μπορούμε να βασιστούμε για να αναπτύξουμε οποιοδήποτε παρεμφερές παιχνίδι).

The Game Puzzle

Τα δομικά μπλοκ του παιχνιδιού

Εάν παρατηρήσουμε τα διάφορα κομμάτια του puzzle θα προσέξουμε ότι μερικά από αυτά δεν ταιριάζουν στην αρχική παρουσίαση του παιχνιδιού. Συγκεκριμένα δεν αναφέραμε πουθενά για δικτυακό παιχνίδι και για Client-Server υλοποιήσεις. Αυτά όμως θα μας δώσουν τροφή παράταιρο συζήτηση, αναζήτηση και γνώση, και έτσι θεώρησα ότι είναι απαραίτητο να τα συμπεριλάβουμε από νωρίς στην σχεδίαση γιατί μελλοντική τους ένταξη ίσως απαιτεί μεγάλο αριθμό αλλαγών σε όλο το project. Ας δώσουμε μια περιγραφή για το κάθε ένα ώστε να μπορούμε να έχουμε μια πρώτη γνωριμία με όλα και να ξεκαθαρίσουμε τι πρόκειται να φτιάξουμε. Η σειρά είναι τυχαία και αργότερα θα φτιάξουμε ένα διάγραμμα ροής που θα συνδέσει τα κομμάτια του puzzle.
Display Engine: Θα είναι υπεύθυνη για την τελική σύνθεση και απεικόνιση του περιεχομένου στην οθόνη του υπολογιστή. Θα λαμβάνει τα δεδομένα από την τοπική μηχανή του παιχνιδιού και θα τα απεικονίζει υλοποιώντας μια τεχνική Model View Controller. Το πλεονέκτημα μιας τέτοιας υλοποίησης είναι ότι αποδεσμεύει την φιλοσοφία του παιχνιδιού από τα γραφικά και επομένως αν κάποιος θελήσει να αλλάξει τα γραφικά του παιχνιδιού δεν θα χρειαστεί να επέμβει πουθενά αλλού παρά μόνο στο συγκεκριμένο μπλοκ.
User Input: Θα ασχολείται με την διάδραση του χρήστη με το βιντεοπαιχνίδι. Θα γίνεται έλεγχος του ποντικιού, του πληκτρολογίου και του χειριστηρίου και τα δεδομένα θα μεταφέρονται μέσω του Game Client στην κεντρική μηχανή του παιχνιδιού.
Sound F/X: Σε επικοινωνία με την τοπική μηχανή παιχνιδιού αναπαράγει τους διάφορους ήχους που ακούγονται κατά την διάρκεια του παιχνιδιού.
Local Game Engine: Πρόκειται για την τοπική μηχανή του παιχνιδιού που σε συνεργασία με την Server Game Engine υλοποιεί την λογική του βιντεοπαιχνιδιού. Η επικοινωνία μεταξύ τους γίνεται μέσω του Game Client ενώ υπάρχει και διασύνδεση με την μηχανή απεικόνισης ώστε να εμφανιστούν τα γραφικά στην οθόνη.
Game Client: Είναι υπεύθυνος για την αποστολή-λήψη δεδομένων μεταξύ της τοπικής μηχανής και του Server. Ομαδοποίηση και συγχρονισμός είναι οι κύριες λειτουργίες του ενώ την δικτυακή σύνδεση θα την αναλαμβάνει η μηχανή δικτύου.
Network Engine: Υλοποιεί όλες τις λειτουργίες αποστολής-λήψης δεδομένων μέσω δικτύου.
Game Server Engine: Ουσιαστικά πρόκειται για την καρδιά του παιχνιδιού και υλοποιεί το μεγαλύτερο μέρος της λογικής του. Συλλέγει τα δεδομένα των παικτών, των αντιπάλων και της πίστας και ενημερώνει όλα τα μέλη του παιχνιδιού για την τρέχουσα κατάσταση.
Opponent Engine: πρόκειται για την μηχανή υλοποίησης των διαφόρων αντιπάλων που κυκλοφορούν στο δρόμο, καθώς και τον τρόπο συμπεριφοράς του σε συνάρτηση με το επίπεδο δυσκολίας του παιχνιδιού.
Map Generator: Με λειτουργία την υλοποίηση των τυχαίων χαρτών καθώς και της λογικής των βενζινάδικων και των σημείων επισκευής.
Settings: Λόγο της ποικιλίας των διαφορετικών ρυθμίσεων που απαιτούνται στα υποσυστήματα για την ομαλή λειτουργία του παιχνιδιού πιστεύω πώς η ολοκλήρωση του σε ένα πακέτο θα είχε αρκετά πλεονεκτήματα.

Συγκεντρώνοντας τα παραπάνω έχουμε το μπλοκ διάγραμμα που ακολουθεί και απεικονίζει την διασύνδεση των υποσυστημάτων.

Block diagram of the game

Tο μπλοκ διάγραμμα του παιχνιδιού

Θα ήθελα να αναφέρω στο σημείο αυτό ότι η υλοποίηση με τον παραπάνω τρόπο είναι μια εντελώς δική μου ιδέα και δεν βασίζεται σε κάποια άλλη ήδη υπάρχουσα λύση επομένως μπορεί να εγκυμονεί κίνδυνους ή και μην είναι η πλέον βέλτιστη. Θα χαιρόμουν ιδιαίτερα εάν λάμβανα σχόλια και προτάσεις για την βελτίωση της.

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

Comments are closed.