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
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
18 CAPITOLO 2. ARCHITETTURA SOFTWARE<br />
Riprendendo l’esempio precedente, e limitando il contes<strong>to</strong> ai soli giochi offline,<br />
al fine <strong>di</strong> realizzare <strong>un</strong> semplice gioco Arcade può non essere necessaria<br />
<strong>un</strong>a forte separazione tra il Layer logico (Business Layer) ed il Layer <strong>di</strong> vi<strong>su</strong>alizzazione<br />
(Presentation Layer): lo spostamen<strong>to</strong> <strong>di</strong> <strong>un</strong>o Sprite 7 che ne simula<br />
il movimen<strong>to</strong> <strong>su</strong> schermo, può essere realizza<strong>to</strong> mo<strong>di</strong>ficando <strong>di</strong>rettamente le<br />
variabili relative alla posizione <strong>di</strong> <strong>di</strong>segno dello stesso, come imme<strong>di</strong>ata conseguenza<br />
dell’input dell’utente.<br />
In <strong>un</strong> TBS, invece, i due Layer tendono ad essere <strong>di</strong>saccoppiati in modo<br />
naturale, portando il Layer <strong>di</strong> vi<strong>su</strong>alizzazione ad essere <strong>un</strong>a mera rappresentazione<br />
dei dati logici che, in ultima analisi, sono gli <strong>un</strong>ici deten<strong>to</strong>ri dello<br />
sta<strong>to</strong> attuale <strong>di</strong> gioco.<br />
Se però si estende l’esempio ampliandolo ai giochi online, allora anche per<br />
<strong>un</strong> gioco Arcade sarà opport<strong>un</strong>o seguire <strong>un</strong> pattern Three-tier 8 o MVC-like 9 ,<br />
dal momen<strong>to</strong> che avere <strong>un</strong> Layer logico separa<strong>to</strong> semplifica l’identificazione,<br />
la ricerca, l’accesso e quin<strong>di</strong> la sincronizzazione dello sta<strong>to</strong> <strong>di</strong> gioco. Non<br />
solo: In ques<strong>to</strong> contes<strong>to</strong> nascono problematiche relative alla latenza <strong>di</strong> rete,<br />
specialmente proprio in quelle tipologie <strong>di</strong> gioco che richiedono contemporaneamente<br />
massima reattività e massima consistenza.<br />
Idealmente, quin<strong>di</strong>, anche quelle azioni che normalmente, in architetture Singleplayer<br />
oriented, producono <strong>un</strong> feedback <strong>di</strong>ret<strong>to</strong>, come lo spostamen<strong>to</strong> <strong>di</strong><br />
<strong>un</strong> elemen<strong>to</strong> grafico in conseguenza ad <strong>un</strong>o specifico input, devono qui essere<br />
processate attraverso <strong>di</strong>versi Layer prima <strong>di</strong> essere eseguite, eventualmente<br />
anche con <strong>un</strong> apposi<strong>to</strong> ritardo introdot<strong>to</strong> volutamente da alc<strong>un</strong>i sistemi<br />
<strong>di</strong> sincronizzazione (si veda la sezione 4). Per alc<strong>un</strong>e tipologie <strong>di</strong> gameplay,<br />
però, tale ritardo finisce con l’impattare negativamente <strong>su</strong>ll’esperienza <strong>di</strong> gionetworking<br />
7 Un qualsiasi elemen<strong>to</strong> grafico, statico o <strong>di</strong>namico, che compone la scena <strong>di</strong> gioco<br />
8 Architettura software caratterizzata da tre moduli: Interfaccia Utente, Logica<br />
F<strong>un</strong>zionale e Dati<br />
9 Model-View-Controller, <strong>un</strong> pattern architetturale che vede separati i concetti <strong>di</strong> Model:<br />
il sistema <strong>di</strong> accesso ai dati, View: Il sistema <strong>di</strong> vi<strong>su</strong>alizzazione dati, ed il Controller: Il<br />
sistema <strong>di</strong> mo<strong>di</strong>fica dei dati