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.

2.7. ESEMPI PRATICI 45<br />

frequenza <strong>di</strong> aggiornamen<strong>to</strong> (cioè intervalli <strong>di</strong> campionamen<strong>to</strong> relativamente<br />

l<strong>un</strong>ghi) dal momen<strong>to</strong> che questi devono essere ogni volta propagati <strong>su</strong> tutta<br />

la rete <strong>Peer</strong>-To-<strong>Peer</strong>, e dall’altra, da quelle informazioni che in qualche modo<br />

possono essere ricavate me<strong>di</strong>ante inferenza <strong>su</strong>lle informazioni presenti nel<br />

proprio Data Layer.<br />

Qui entrano in gioco sistemi <strong>di</strong> “pre<strong>di</strong>ction” e <strong>di</strong> interpolazione della posizione:<br />

il primo viene com<strong>un</strong>emente realizza<strong>to</strong> me<strong>di</strong>ante “Dead Reckoning”,<br />

cioè <strong>un</strong> algoritmo grazie al quale, utilizzando informazioni quali velocità e<br />

accelerazione, è possibile stimare la posizione che as<strong>su</strong>merà l’ogget<strong>to</strong> preso in<br />

esame al prossimo istante <strong>di</strong> tempo, conoscendo la posizione attuale o, ancora,<br />

stimare la posizione attuale conoscendo quella relativa all’istante <strong>di</strong> tempo<br />

precedente. Inversamente, è possibile ricavare la velocità <strong>di</strong> spostamen<strong>to</strong> (e<br />

quin<strong>di</strong> ogni singolo step da applicare la<strong>to</strong> View) se si è a conoscenza della<br />

posizione attuale e della posizione prevista ad <strong>un</strong> preciso prossimo istante <strong>di</strong><br />

tempo.<br />

Se si hanno a <strong>di</strong>sposizione questi dati è possibile applicarvi <strong>un</strong>’interpolazione<br />

in modo da ricavare gli step interme<strong>di</strong> tra la posizione all’istante <strong>di</strong><br />

tempo “Tn” e la posizione all’istante <strong>di</strong> tempo “Tn+1 ”. Questi step saranno<br />

più o meno ampi a seconda della velocità <strong>di</strong> spostamen<strong>to</strong> e dei millisecon<strong>di</strong><br />

trascorsi tra l’iterazione attuale e quella precedente.<br />

Le interpolazioni che vengono com<strong>un</strong>emente applicate sono l’interpolazione<br />

lineare e l’interpolazione spline. Per la prima sono <strong>su</strong>fficienti le informazioni<br />

che abbiamo deciso <strong>di</strong> includere nel componente MovingObject3D, anche se<br />

il ri<strong>su</strong>lta<strong>to</strong> non sempre sarà esteticamente apprezzabile , dal momen<strong>to</strong> che<br />

all’interno dello stesso intervallo il movimen<strong>to</strong> ri<strong>su</strong>lterà fluido, ma tra <strong>un</strong> intervallo<br />

e l’altro possono palesarsi repentini cambi <strong>di</strong> <strong>di</strong>rezione.<br />

Il secondo invece riduce ques<strong>to</strong> problema, ma necessita <strong>di</strong> maggiori informazioni<br />

(più p<strong>un</strong>ti interpolanti) e, in particolari tipi <strong>di</strong> movimen<strong>to</strong>, può presentare<br />

forti oscillazioni (fenomeno <strong>di</strong> Gibbs), <strong>di</strong>scostandosi quin<strong>di</strong> da quello<br />

che era il movimen<strong>to</strong> originale. Nel proget<strong>to</strong> <strong>di</strong> tesi si è scel<strong>to</strong> <strong>di</strong> utilizzare

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

Saved successfully!

Ooh no, something went wrong!