08.09.2019 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!