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.

2.5. LAYER LOGIC 35<br />

È presente, inoltre, <strong>un</strong> sistema <strong>di</strong> Messaging tra i <strong>di</strong>versi componenti:<br />

ogni componente infatti può implementare il me<strong>to</strong>do ExecMessage(), e, a<br />

seconda <strong>di</strong> quan<strong>to</strong> riporta<strong>to</strong> come parametro, comportarsi <strong>di</strong> conseguenza.<br />

2.5 Layer Logic<br />

In ques<strong>to</strong> Layer prende forma il contes<strong>to</strong> logico: legando il concet<strong>to</strong> <strong>di</strong><br />

<strong>Peer</strong> espos<strong>to</strong> dal Layer P2P con il Fac<strong>to</strong>ry del DataLayer espos<strong>to</strong> dal modulo<br />

SharedComponents nasce l’idea <strong>di</strong> <strong>un</strong> contes<strong>to</strong> <strong>di</strong> dati appartenenti al singolo<br />

<strong>Peer</strong>.<br />

Ogni componente crea<strong>to</strong> <strong>di</strong>rettamente dal Fac<strong>to</strong>ry ri<strong>su</strong>lterà “lega<strong>to</strong>” al relativo<br />

<strong>Peer</strong>, e <strong>di</strong> conseguenza potrà essere mo<strong>di</strong>fica<strong>to</strong> o <strong>di</strong>strut<strong>to</strong> solo da<br />

quest’ultimo.<br />

A ques<strong>to</strong> Layer, inoltre, è delegata <strong>un</strong>’altra f<strong>un</strong>zione fondamentale, senza<br />

la quale l’utilità del modulo P2P e del modulo SharedComponents sarebbe fine<br />

a se stessa: rimane in ascol<strong>to</strong> delle notifiche (creazione/mo<strong>di</strong>fica/<strong>di</strong>struzione<br />

componenti) in uscita dal modulo SharedComponents, preoccupandosi poi <strong>di</strong><br />

inoltrarle al Layer P2P che, me<strong>di</strong>ante il Layer NET, le segnalerà a <strong>su</strong>a volta<br />

a tutti i <strong>Peer</strong> conosciuti.<br />

Ques<strong>to</strong> porta sostanzialmente ad avere lo stesso DataLayer (cioè popola<strong>to</strong><br />

dagli gli stessi componenti) <strong>su</strong> ogni <strong>Peer</strong>, e le regole che definiscono i permessi<br />

<strong>di</strong> creazione/mo<strong>di</strong>fica/<strong>di</strong>struzione garantiscono la consistenza, dal momen<strong>to</strong><br />

che ogni componente può cambiare <strong>di</strong> sta<strong>to</strong> solo tramite il <strong>su</strong>o <strong>Peer</strong> ’Owner’.<br />

Quando <strong>un</strong> <strong>Peer</strong> A si connette ad <strong>un</strong> <strong>Peer</strong> B, dopo le fasi <strong>di</strong> HandShaking<br />

(Layer NET) e <strong>di</strong> scambio NetID (Layer P2P), A invierà preventivamente a<br />

B i componenti serializzati <strong>di</strong> <strong>su</strong>a proprietà presenti nel proprio SharedComponents,<br />

e B farà lo stesso.<br />

Quando i componenti serializzati <strong>di</strong> A arrivano a B, il Fac<strong>to</strong>ry <strong>di</strong> quest’ultimo<br />

creerà <strong>di</strong> fat<strong>to</strong> <strong>un</strong>a “copia” del Data Layer <strong>di</strong> A (Object Replication).

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

Saved successfully!

Ooh no, something went wrong!