26
ΑΝΑΠΤΥΞΗ 3D ΣΚΟΠΕΥΤΙΚΟΥ ΠΑΙΧΝΙΔΙΟΥ ΤΡΙΤΟΥ ΠΡΟΣΩΠΟΥ ΠΟΛΛΑΠΛΩΝ
ΠΑΙΚΤΩΝ ΤΥΠΟΥ ROGUELITE
To PhotonView είναι ένα εξάρτημα (component) που προστίθεται σε ένα αντικείμενο
παιχνιδιού για να γίνει αυτόματα ένα δικτυωμένο αντικείμενο και να αναγνωρίζεται μέσω του
μοναδικού id που του ανατίθεται. Κάθε αντικείμενο που περιέχει από ένα PhotonView ανήκει
στον παίκτη που το δημιούργησε, και άμα αποσυνδεθεί ο παίκτης, όλα τα αντικείμενα με
PhotonView που του ανήκουν θα εξαφανιστούν. Επιπλέον το PhotonView κάνει εύκολο τον
συγχρονισμό της τοποθεσίας, της περιστροφής, και του μεγέθους του αντικειμένου.
Τα RPC είναι διαδικτυακά μηνύματα για την εκτέλεση κώδικα που στέλνονται προς όλους
τους χρήστες που βρίσκονται στο ίδιο δωμάτιο. Μόνο αντικείμενα που έχουν ένα Photon View
μπορούν να καλούν συναρτήσεις με την μέθοδο RPC. Τα RPC βοηθάνε στον εντοπισμό του
αντικειμένου που πρέπει να εκτελέσει την ίδια συνάρτηση σε όλους τους χρήστες. Μια
συνάρτηση μπορεί να κληθεί με RPC όταν αναγράφεται [PunRPC] ακριβώς από πάνω της. Όταν
εκτελείται ένα RPC από ένα αντικείμενο, στέλνει αυτόματα και το id από το PhotonView που
περιέχεται και όποια άλλη παράμετρος οριστεί. Η αποστολή του RPC έχει 4 επιλογές:
• RpcTarget.All – Η συνάρτηση RPC καλείται σε όλους τους χρήστες, όμως ο χρήστης
που έστειλε το RPC τρέχει τον κώδικα αμέσως χωρίς καθυστέρηση.
• RpcTarget.Buffered – Αποθηκεύονται τα RPC που καλούνται και στέλνονται στους
νέους παίκτες που συνδέονται.
• RpcTarget.Others – Η συνάρτηση RPC καλείται για όλους τους παίκτες εκτός από
τον παίκτη που κάλεσε την συνάρτηση RPC.
• RpcTarget.ViaServer – H συνάρτηση RPC περνάει πρώτα από τον διακομιστή της
Photon προτού γυρίσει και τρέξει ο κώδικας στους παίκτες.
Τα Photon events (RaiseEvents) είναι επίσης διαδικτυακά μηνύματα, όπου το event
στέλνει μόνο έναν κωδικό προς όλους τους παίκτες για την αναγνώριση της συνάρτησης που
πρέπει να εκτελεστεί με τις παραμέτρους που προστίθενται. Το πλεονέκτημα των events είναι το
γεγονός ότι δεν απαιτείται το αντικείμενο να έχει το component PhotonView. Από την άλλη η
αποστολή ενός event χρειάζεται μεγαλύτερη διαδικασία από την μεριά του προγραμματισμού σε
σχέση με τα RPC. Υπάρχει η επιλογή της αξιοπιστίας ή της αναξιοπιστίας κατά τον τρόπο
αποστολής του event. Τα events έχουν επίσης επιλογές παρόμοιες για την αποστολή με RPC με
την ρύθμιση RaiseEventOptions:
• All – Ο κωδικός του event στέλνεται σε όλους τους παίκτες.
• Others – Ο κωδικός του event στέλνεται σε όλους εκτός από τον παίκτη που
κάλεσε το RaiseEvents.
• MasterClient – Ο κωδικός του event στέλνεται μόνο στον host του δωματίου.
Υποστηρίζονται όλες οι πλατφόρμες που υποστηρίζει και η Unity. Οι θύρες που χρειάζονται για
την ομαλή λειτουργία του πακέτου μαζί με το πρωτόκολλο και τον σκοπό τους είναι οι εξής
(Πίνακας 1):
Πίνακας 1 Θύρες, πρωτόκολλα και η χρήση τους για την λειτουργία του πακέτου Photon
Αριθμός θύρας
Πρωτόκολλο
Χρήση
5058 ή 27000
UDP
Client σε Nameserver (UDP)