Περίληψη:
Στη σημερινή εποχή που το διαδίκτυο μας έχει φέρει όλους πιο κοντά από ποτέ, τα διαδικτυακά παιχνίδια πολλαπλών παικτών (multiplayer online games) γίνονται ολοένα και πιο διαδεδομένα, με τα κορυφαία από αυτά, στο αποκορύφωμά τους, να έχουν από 1 εκατομμύριο έως και πάνω από 10 εκατομμύρια ταυτόχρονους χρήστες[1]. Τα multiplayer online games μας επιτρέπουν να παίζουμε, να συνεργαζόμαστε, και να επικοινωνούμε με ανθρώπους που βρίσκονται χιλιάδες χιλιόμετρα μακριά μας, σα να βρίσκονταν στο ίδιο δωμάτιο. Για την επίτευξη αυτού, προφανώς η καθυστέρηση στο συγχρονισμό των παικτών και των κινήσεων μέσα σε ένα παιχνίδι πρέπει να είναι όσο το δυνατόν πιο κοντά στο μηδέν, κάτι που είναι πλέον δυνατό χάρη στην εξέλιξη του διαδικτύου, των καλωδιώσεων μεταξύ παρόχου και τελικού χρήστη, του χαμηλότερου χρόνο απόκρισης και των υψηλότερων ταχυτήτων, αλλά και των servers στο cloud.
Η παρούσα διπλωματική εργασία έχει ως στόχο τη δημιουργία ενός Software Development Kit (SDK) για Unity, με την αξιοποίηση νέων τεχνολογιών. Αυτό το SDK θα παρέχει όχι μόνο έτοιμο προς χρήση κώδικα από προγραμματιστές παιχνιδιών, αλλά και θα συνδέεται αυτόματα με το backend σύστημα υποστήριξης που θα διαχειρίζεται την αναμετάδοση ειδικά σχεδιασμένων μηνυμάτων για τη μέγιστη απόδοση, ελάχιστο χρόνο απόκρισης, και χρήση όσο το δυνατόν λιγότερου bandwidth, έτσι ώστε να μπορούν να υποστηριχθούν χιλιάδες ταυτόχρονοι χρήστες, σε παράλληλα παιχνίδια, χωρίς να επηρεάζει το ένα το άλλο. Με αυτόν τον τρόπο, το backend σύστημα μπορεί να τρέξει σε έναν οποιονδήποτε cloud server, χωρίς κάποιες ιδιαίτερες προδιαγραφές, και μελλοντικά αν χρειαστεί αναβάθμιση, να γίνεται απλά με κάθετη κλιμάκωση.
Τέλος, καθώς το σύστημα προορίζεται για εμπορική χρήση, σχεδιάστηκε μια ιστοσελίδα στην οποία οι προγραμματιστές μπορούν να διαχειρίζονται τα παιχνίδια τους, να βλέπουν στατιστικά όπως πόσους ταυτόχρονους χρήστες έχει το κάθε παιχνίδι τους και πόσο bandwidth έχουν καταναλώσει ανά λεπτό, αλλά και να αγοράζουν συνδρομές για αυτά. Το σύστημα παρέχει διάφορες συνδρομές, με κάθε πακέτο να υποστηρίζει διαφορετικό αριθμό ταυτόχρονων χρηστών.