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.

44 CAPITOLO 2. ARCHITETTURA SOFTWARE<br />

2.7.1 Movimen<strong>to</strong> <strong>di</strong> oggetti<br />

Il movimen<strong>to</strong> <strong>di</strong> elementi grafici in f<strong>un</strong>zione <strong>di</strong> <strong>un</strong> input utente è <strong>un</strong>o degli<br />

aspetti che contrad<strong>di</strong>stingue le applicazioni multime<strong>di</strong>ali interattive e, nella<br />

fattispecie, i videogiochi.<br />

Per ques<strong>to</strong> motivo è nata l’esigenza <strong>di</strong> estendere il componente “Object3D”,<br />

che <strong>di</strong> fat<strong>to</strong> è <strong>su</strong>fficiente per modellare le informazioni che caratterizzano<br />

oggetti 3D “statici”, in <strong>un</strong> apposi<strong>to</strong> componente “MovingObject3D” che consentisse<br />

la descrizione <strong>di</strong> <strong>un</strong> ogget<strong>to</strong> in movimen<strong>to</strong>.<br />

Ques<strong>to</strong> componente, come precedentemente illustra<strong>to</strong> nella sezione 2.5,<br />

è compos<strong>to</strong> dagli stessi sot<strong>to</strong>-componenti <strong>di</strong> “Object3D”, ma introduce due<br />

nuovi sot<strong>to</strong>-componenti: <strong>un</strong> componente <strong>di</strong> tipo Vec<strong>to</strong>r3 con LocalID “Next-<br />

Position” ed <strong>un</strong> componente <strong>di</strong> tipo String con LocalID “NextTimeStamp”.<br />

Il primo in<strong>di</strong>ca la posizione che as<strong>su</strong>merà l’ogget<strong>to</strong> all’istante <strong>di</strong> tempo in<strong>di</strong>ca<strong>to</strong><br />

dal secondo.<br />

E’ importante sot<strong>to</strong>lineare come, nel Layer View e nel Layer Logic (e Data<br />

Layer), le coor<strong>di</strong>nate della posizione <strong>di</strong> <strong>un</strong> ogget<strong>to</strong> in movimen<strong>to</strong> vengano<br />

campionate utilizzando intervalli <strong>di</strong> tempo <strong>di</strong>fferenti: nel Layer View si deve<br />

garantire l’illusione <strong>di</strong> movimen<strong>to</strong> “continuo”, e ques<strong>to</strong> avviene aggiornando<br />

ad ogni iterazione le coor<strong>di</strong>nate secondo <strong>un</strong> vet<strong>to</strong>re <strong>di</strong> “offset” calcola<strong>to</strong> in<br />

f<strong>un</strong>zione della velocità e del tempo trascorso tra il “frame” attuale e quello<br />

precedente. In quei casi in cui la velocità <strong>di</strong> movimen<strong>to</strong> è talmente alta da<br />

non consentire l’illusione <strong>di</strong> movimen<strong>to</strong>, spesso si interviene con effetti “Post<br />

Processing” quali l’“Onion Skinning” ed il “Motion Blur”.<br />

Nel Layer Logic invece la frequenza <strong>di</strong> aggiornamen<strong>to</strong> delle coor<strong>di</strong>nate<br />

può essere notevolmente più bassa, poiché le informazioni presenti nel Data<br />

Layer devono essere le minime in<strong>di</strong>spensabili a garantire la corretta interpretazione<br />

dello sta<strong>to</strong> <strong>di</strong> gioco <strong>su</strong> ogni <strong>Peer</strong>, astraendo, da <strong>un</strong>a parte, da quelle<br />

informazioni grafiche e decorative che non apportano cambiamenti sostanziali<br />

allo sta<strong>to</strong> <strong>di</strong> gioco, cercando, laddove possibile, <strong>di</strong> mantenere <strong>un</strong>a bassa

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

Saved successfully!

Ooh no, something went wrong!