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.

62 CAPITOLO 2. ARCHITETTURA SOFTWARE<br />

Quando si verifica <strong>un</strong>’intersezione tra <strong>un</strong> “Ray” ed <strong>un</strong> Character, e quest’ultimo<br />

si trova in testa alla lista degli oggetti intersecati (<strong>un</strong> “Ray”, può<br />

intersecare, infatti, più oggetti contemporaneamente, or<strong>di</strong>nati in <strong>un</strong>a lista<br />

dal più vicino al più lontano), il <strong>Peer</strong> che ha esegui<strong>to</strong> l’“HitScan”, invierà <strong>un</strong><br />

messaggio al componente relativo al Character colpi<strong>to</strong>, che <strong>di</strong> conseguenza<br />

decrementerà i propri “P<strong>un</strong>ti vita”.<br />

2.7.3 Creazione e <strong>di</strong>struzione <strong>di</strong> oggetti<br />

Come illustra<strong>to</strong> nelle sezioni 2.4 e 2.6, la creazione <strong>di</strong> <strong>un</strong> elemen<strong>to</strong> grafico<br />

che apporta informazione allo sta<strong>to</strong> <strong>di</strong> gioco, come può essere <strong>un</strong> ogget<strong>to</strong> 3D,<br />

viene concretizzata, istanziando il componente vi<strong>su</strong>ale au<strong>to</strong>maticamente dal<br />

View Context del Layer View, basandosi <strong>su</strong>i componenti presenti nel Data<br />

Layer.<br />

Per quegli oggetti grafici che devono essere “con<strong>di</strong>visi”, cioè presenti in tutti<br />

i <strong>Peer</strong> appartenenti alla Membership, è imperativo, quin<strong>di</strong>, passare per il Data<br />

Layer, istanziando il componente logico, piut<strong>to</strong>s<strong>to</strong> che creare <strong>di</strong>rettamente<br />

l’ogget<strong>to</strong> 3D.<br />

Per esempio, se si vuole creare <strong>un</strong> Bullet tri<strong>di</strong>mensionale, sarà <strong>su</strong>fficiente<br />

creare <strong>un</strong> componente <strong>di</strong> tipo Bullet opport<strong>un</strong>amente inizializza<strong>to</strong> (coor<strong>di</strong>nate<br />

e rotazione devono coincidere con quella del Character che “spara” il<br />

Bullet).<br />

Analogamente, per <strong>di</strong>struggere <strong>un</strong> ogget<strong>to</strong> 3D, invece <strong>di</strong> eliminare <strong>di</strong>rettamente<br />

l’istanza grafica, è necessario rimuovere il relativo componente dal<br />

DataLayer.<br />

Eliminando solamente l’istanza grafica, infatti, ne verrebbe istanziata <strong>un</strong>a<br />

nuova copia, au<strong>to</strong>maticamente all’iterazione <strong>su</strong>ccessiva, dal momen<strong>to</strong> che il<br />

componente logico ri<strong>su</strong>lta ancora presente nel Data Layer.<br />

Ogni creazione e <strong>di</strong>struzione <strong>di</strong> <strong>un</strong> componente, come illustra<strong>to</strong> nella sezione<br />

2.4, viene propagata all’intera Membership attraverso i coman<strong>di</strong> “Create-

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

Saved successfully!

Ooh no, something went wrong!