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.

46 CAPITOLO 2. ARCHITETTURA SOFTWARE<br />

l’interpolazione lineare.<br />

Per ridurre ulteriormente artefatti <strong>di</strong> ques<strong>to</strong> tipo, tale processo va esteso anche<br />

alla rotazione, utilizzando algoritmi interpolanti stu<strong>di</strong>ati appositamente<br />

per le rotazioni, come l’interpolazione sferica.<br />

Grazie al “Dead Reckoning”, quin<strong>di</strong>, si riduce la richiesta <strong>di</strong> banda per la<br />

notifica dei movimenti, ma contemporaneamente, dal momen<strong>to</strong> l’interpolazione<br />

viene effettuata dal Layer View <strong>di</strong> ogni singolo <strong>Peer</strong> in modo in<strong>di</strong>pendente,<br />

non viene garantita la consistenza dello sta<strong>to</strong> <strong>di</strong> gioco durante l’intera azione<br />

<strong>di</strong> movimen<strong>to</strong>, salvo la sincronizzazione apportata implicitamente dalla notifica<br />

dei singoli intervalli <strong>di</strong> tempo.<br />

Sorgono però i seguenti problemi:<br />

Quando <strong>un</strong> <strong>Peer</strong> “A” effettua il movimen<strong>to</strong> <strong>di</strong> <strong>un</strong> ogget<strong>to</strong> <strong>di</strong> <strong>su</strong>a appartenenza,<br />

<strong>di</strong>rettamente a carico del Layer View, ed invia, a precisi intervalli <strong>di</strong><br />

tempo, l’aggiornamen<strong>to</strong> del relativo componente logico al <strong>Peer</strong> “B” a lui connesso,<br />

<strong>su</strong>bentra <strong>un</strong> problema causa<strong>to</strong> dall’eventuale “Lag” tra “A” e “B”.<br />

L’aggiornamen<strong>to</strong> dello sta<strong>to</strong> del componente logico relativo all’ogget<strong>to</strong> in<br />

movimen<strong>to</strong>, arriverà a “B” dopo <strong>un</strong> cer<strong>to</strong> numero <strong>di</strong> millisecon<strong>di</strong> “N ”: significa<br />

che “B” inizierà il processo <strong>di</strong> movimen<strong>to</strong>, e quin<strong>di</strong> <strong>di</strong> interpolazione e<br />

“Dead Reckoning”, quando l’ogget<strong>to</strong> in “A” si è già sposta<strong>to</strong> <strong>di</strong> <strong>un</strong> vet<strong>to</strong>re<br />

pari alla velocità al millisecondo, moltiplicata per “N ”. Essendo com<strong>un</strong>e per<br />

entrambi il p<strong>un</strong><strong>to</strong> d’arrivo al medesimo istante <strong>di</strong> tempo, l’ogget<strong>to</strong> in “B”<br />

sarà costret<strong>to</strong> a muoversi più velocemente rispet<strong>to</strong> ad “A” per recuperare il<br />

ritardo accumula<strong>to</strong> con il Lag (Figura 2.17).<br />

Un altro problema frequente è caratterizza<strong>to</strong> da <strong>un</strong> fasti<strong>di</strong>oso effet<strong>to</strong> visivo<br />

che vede l’improvviso riposizionamen<strong>to</strong> dell’ogget<strong>to</strong> tra <strong>un</strong> istante <strong>di</strong><br />

aggiornamen<strong>to</strong> e quello <strong>su</strong>ccessivo, quando la posizione <strong>di</strong> destinazione prevista<br />

<strong>di</strong>fferisce da quella reale. Errori <strong>di</strong> arro<strong>to</strong>ndamen<strong>to</strong>, fat<strong>to</strong>ri non previsti<br />

(collisioni, attri<strong>to</strong>, etc) e desincronizzazioni temporali portano a ques<strong>to</strong> tipo<br />

<strong>di</strong> “Jumping” o <strong>di</strong> “Warping” (Figura 2.18 e Figura 2.19).<br />

Quando la <strong>di</strong>fferenza tra il p<strong>un</strong><strong>to</strong> <strong>di</strong> destinazione previs<strong>to</strong> e quello reale

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

Saved successfully!

Ooh no, something went wrong!