background image

 

 

 

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)