Progettazione e Sviluppo di un Multiplayer Online Game su Reti Peer-to-Peer
Alma Mater Studiorum Universit`a degli Studi di Bologna Facolta` di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Scienze di Internet Tesi di Laurea in Laboratorio di Programmazione Internet
Alma Mater Studiorum Universit`a degli Studi di Bologna
Facolta` di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea in Scienze di Internet
Tesi di Laurea in Laboratorio di Programmazione Internet
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
64 CAPITOLO 2. ARCHITETTURA SOFTWARE<br />
Questi PlaceHolder sono anch’essi elementi <strong>di</strong> scena dal momen<strong>to</strong> che caratterizzano<br />
la mappa <strong>di</strong> gioco (come colonne, p<strong>un</strong>ti luce, ostacoli, etc), e sono<br />
quin<strong>di</strong> caricati contestualmente al loa<strong>di</strong>ng della mappa (che viene eseguita<br />
in modo del tut<strong>to</strong> in<strong>di</strong>pendente da <strong>un</strong> <strong>di</strong>scorso <strong>di</strong> rete).<br />
Quando inizia <strong>un</strong>a partita, ogni <strong>Peer</strong> “occupa”, preventivamente, N/(Numero<br />
<strong>di</strong> <strong>Peer</strong>) PlaceHolder con <strong>un</strong> componente <strong>di</strong> tipo HealthPackGenera<strong>to</strong>r (ere<strong>di</strong>ta<strong>to</strong><br />
da Object3D). Il criterio (necessariamente con<strong>di</strong>viso) utilizza<strong>to</strong> per la<br />
<strong>di</strong>stribuzione e l’assegnazione dei PlaceHolder ai <strong>di</strong>versi <strong>Peer</strong> può essere realizza<strong>to</strong><br />
me<strong>di</strong>ante politiche basate <strong>su</strong>l NetID, o qual<strong>un</strong>que altra informazione<br />
che contrad<strong>di</strong>stingue ogni singolo <strong>Peer</strong>, evitando quin<strong>di</strong> f<strong>un</strong>zioni alea<strong>to</strong>rie.<br />
Ogni HealthPackGenera<strong>to</strong>r si occuperà <strong>di</strong> istanziare perio<strong>di</strong>camente, laddove<br />
non già presente, <strong>un</strong> componente <strong>di</strong> tipo HealthPack alle stesse coor<strong>di</strong>nate<br />
del relativo PlaceHolder.<br />
Ques<strong>to</strong> significa che ogni Player “possiede” <strong>un</strong> determina<strong>to</strong> numero <strong>di</strong><br />
HealthPack e ne gestisce quin<strong>di</strong> anche le collisioni con i Character degli altri<br />
Player (Figura 2.29).<br />
2.7.4 Connessione e Disconnessione dei Player<br />
Nelle sezioni precedenti è sta<strong>to</strong> evidenzia<strong>to</strong> come ogni informazione a<strong>to</strong>mica<br />
appartenga ad <strong>un</strong> determina<strong>to</strong> <strong>Peer</strong>.<br />
Ques<strong>to</strong> risolve, da <strong>un</strong>a parte, il problema della consistenza dello sta<strong>to</strong> <strong>di</strong> gioco,<br />
ma dall’altra introduce alc<strong>un</strong>e problematiche dovute all’importanza <strong>di</strong><br />
ogni singolo <strong>Peer</strong>, al p<strong>un</strong><strong>to</strong> da poter essere considerati degli SPOF.<br />
Quando <strong>un</strong> <strong>Peer</strong> si <strong>di</strong>sconnette od esce dalla Membership, gli effetti della<br />
logica <strong>di</strong> aggiornamen<strong>to</strong> dei componenti <strong>di</strong> <strong>su</strong>a appartenenza non viene più<br />
propagata agli altri <strong>Peer</strong>. Per alc<strong>un</strong>i tipi <strong>di</strong> componenti, inoltre, può essere<br />
necessario <strong>di</strong>struggerne le istanze quando il <strong>Peer</strong> owner non è più raggi<strong>un</strong>gibile.<br />
Non esiste <strong>un</strong>a regola generale, ma è possibile definirne <strong>un</strong>a per ogni tipo