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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

28 CAPITOLO 2. ARCHITETTURA SOFTWARE<br />

già presente nella propria lista <strong>di</strong> <strong>Peer</strong> conosciuti.<br />

In ques<strong>to</strong> caso B è già a conoscenza dell’esistenza <strong>di</strong> C, dal momen<strong>to</strong> che la<br />

connessione è avvenuta proprio tra B e C.<br />

Quando però arriva il secondo comando “Add<strong>Peer</strong>”, parametrizza<strong>to</strong> con il<br />

NetID <strong>di</strong> D, il <strong>Peer</strong> B, controllando nella propria lista <strong>di</strong> <strong>Peer</strong> conosciuti, si<br />

accorge <strong>di</strong> non conoscere il <strong>Peer</strong> identifica<strong>to</strong> dal NetID <strong>di</strong> D. A ques<strong>to</strong> p<strong>un</strong><strong>to</strong>,<br />

quin<strong>di</strong>, Il <strong>Peer</strong> B si connetterà al NetID <strong>di</strong> D per includerlo tra i propri <strong>Peer</strong><br />

conosciuti.<br />

Si attiva quin<strong>di</strong> <strong>un</strong>a propagazione “a catena” che terminerà solo <strong>un</strong>a volta<br />

che tutte le liste <strong>di</strong> <strong>Peer</strong> conosciuti coincideranno tra loro.<br />

2.3.1 Modulo Time<br />

All’interno del Layer P2P, è presente <strong>un</strong> sot<strong>to</strong>-modulo che si occupa della<br />

gestione del Timing, mira<strong>to</strong> a garantire <strong>un</strong>a visione temporale con<strong>di</strong>visa.<br />

Una volta terminata la fase <strong>di</strong> consolidamen<strong>to</strong> della Membership, inizia<br />

<strong>un</strong>a fase parallela e prol<strong>un</strong>gata nel tempo: ogni <strong>Peer</strong> notificherà a tutti gli<br />

altri <strong>Peer</strong> conosciuti, quello che è il valore del proprio TimeStamp <strong>di</strong> sistema<br />

attraverso il comando TimeSync.<br />

Quando <strong>un</strong> <strong>Peer</strong> A riceverà <strong>un</strong> comando TimeSync da <strong>un</strong> <strong>Peer</strong> B, calcolerà<br />

il delta tra il TimeStamp in esso contenu<strong>to</strong> ed il proprio, e lo memorizzerà<br />

in <strong>un</strong>’apposita lista in<strong>di</strong>cizzata per NetID. Il valore del delta deve inoltre<br />

comprendere <strong>un</strong> TimeSpan che compensi il fat<strong>to</strong>re Lag: viene infatti aggi<strong>un</strong><strong>to</strong><br />

<strong>un</strong> lasso temporale calcola<strong>to</strong> in base al tempo <strong>di</strong> latenza tra la richiesta<br />

TimeSync e la relativa risposta.<br />

Dal momen<strong>to</strong> che questa fase viene reiterata (dopo <strong>un</strong> determina<strong>to</strong> periodo<br />

<strong>di</strong> tempo viene infatti esegui<strong>to</strong> nuovamente <strong>un</strong> BroadCast <strong>di</strong> TimeSync),<br />

ogni <strong>Peer</strong> conoscerà con <strong>un</strong>a <strong>di</strong>screta precisione il fat<strong>to</strong>re <strong>di</strong> conversione del<br />

TimeSpan <strong>di</strong> tutti gli altri <strong>Peer</strong>, rispet<strong>to</strong> al proprio.

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

Saved successfully!

Ooh no, something went wrong!