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.

56 CAPITOLO 2. ARCHITETTURA SOFTWARE<br />

sion Response” <strong>su</strong> “Ogget<strong>to</strong> A” verrà gesti<strong>to</strong> esclusivamente dal <strong>Peer</strong> “A”,<br />

e, viceversa il “Collision Response” <strong>su</strong> “Ogget<strong>to</strong> B” verrà gesti<strong>to</strong> esclusivamente<br />

dal <strong>Peer</strong> “B”. Gli effetti delle “Collision Responses” <strong>su</strong>i componenti<br />

logici coinvolti, verranno poi imme<strong>di</strong>atamente inoltrati agli altri <strong>Peer</strong>, che<br />

sposteranno infine i rispettivi oggetti View <strong>di</strong> conseguenza.<br />

Esis<strong>to</strong>no però contesti nei quali la “Collision Response” non in<strong>di</strong>vidua<br />

<strong>un</strong>a risposta “fisica”, cioè trasformazioni <strong>di</strong> ro<strong>to</strong>traslazioneil il cui aggiornamen<strong>to</strong><br />

è a carico <strong>di</strong> MovingObjectScript, bensì in<strong>di</strong>vidua variazioni logiche<br />

che impattano <strong>su</strong>lle <strong>di</strong>namiche <strong>di</strong> gioco e <strong>su</strong>l valore <strong>di</strong> specifici componenti<br />

del Data Layer. Si pensi ad esempio alla collisione tra <strong>un</strong> Bullet ed <strong>un</strong> Character,<br />

o ancora tra <strong>un</strong> Character ed <strong>un</strong> “HealthPack”. Nel primo caso il<br />

Bullet non deve <strong>su</strong>bire <strong>un</strong>a risposta fisica, rimbalzare o deviare traiet<strong>to</strong>ria,<br />

ma <strong>di</strong>struggersi e decrementare i P<strong>un</strong>ti vita del Character colpi<strong>to</strong>; viceversa,<br />

nel secondo caso invece l’“HealthPack” deve <strong>di</strong>struggersi e incrementare<br />

i P<strong>un</strong>ti vita del Character colpi<strong>to</strong>.<br />

In entrambi i casi viene utilizza<strong>to</strong> il sistema <strong>di</strong> Messaging per la notifica<br />

della collisione: Poiché il componente che rappresenta i P<strong>un</strong>ti vita <strong>di</strong> <strong>un</strong><br />

Character può essere mo<strong>di</strong>fica<strong>to</strong> esclusivamente dal proprio Player “Owner”,<br />

mentre il Bullet (o l’HealthPack) tipicamente appartengono ad <strong>un</strong> Player <strong>di</strong>fferente,<br />

e dal momen<strong>to</strong> che si è scel<strong>to</strong> <strong>di</strong> gestire il “Collision Detection” tra<br />

oggetti <strong>di</strong> tipo Bullet e Characater solo all’interno ComponentScript associa<strong>to</strong><br />

agli oggetti del primo tipo, quest’ultimo deve “informare” dell’avvenuta<br />

collisione il Characater coinvol<strong>to</strong>, che, <strong>di</strong> conseguenza decrementerà il proprio<br />

sot<strong>to</strong>-componente de<strong>di</strong>ca<strong>to</strong> ai P<strong>un</strong>ti vita (Figura 2.27).<br />

Analogamente al movimen<strong>to</strong>, anche per quan<strong>to</strong> riguarda le collisioni esis<strong>to</strong>no<br />

dei problemi dovuti al Lag, arro<strong>to</strong>ndamenti dei valori interpolanti e<br />

alla frequenza <strong>di</strong> aggiornamen<strong>to</strong> dell’Engine fisico (Tick). Anzi, in qualche<br />

modo, quest’ultimi vengono proprio amplificati dall’instabilità degli algoritmi<br />

<strong>di</strong> interpolazione utilizzati nel processo <strong>di</strong> movimen<strong>to</strong>, e alla loro, seppur<br />

minima, <strong>di</strong>fferenza tra <strong>Peer</strong> e <strong>Peer</strong>.

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

Saved successfully!

Ooh no, something went wrong!