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.
5.1. ANTI-CHEATING 105<br />
Il Player C ha <strong>un</strong> timing due volte più veloce rispet<strong>to</strong> ad A: il delta infatti<br />
decrementa costantemente fino a invertire il segno.<br />
Il Player D Invece ha <strong>un</strong> delta più o meno costante, ma nell’istante T3 ques<strong>to</strong><br />
invia <strong>un</strong> comando riportante <strong>un</strong> TimeStamp valorizza<strong>to</strong> come se fosse sta<strong>to</strong><br />
invia<strong>to</strong> in T4.<br />
E’ <strong>di</strong>fficile valutare con sicurezza se l’alterazione del delta del Player B sia<br />
dovuta a problemi <strong>di</strong> latenza o sia stata causata dall’utilizzo <strong>di</strong> <strong>un</strong> Cheat.<br />
Anche nel caso del Player D la valutazione ri<strong>su</strong>lta delicata, poichè può<br />
capitare che in <strong>un</strong> momen<strong>to</strong> <strong>di</strong> congestione il TimeSync invia<strong>to</strong> dal Player<br />
D al Player Player A, venga ricevu<strong>to</strong> da quest’ultimo con <strong>un</strong> ritardo tale da<br />
giustificare il TimeStamp riporta<strong>to</strong> <strong>su</strong>l comando invia<strong>to</strong> <strong>su</strong>ccessivamente.<br />
Nel caso del Player C, invece, il timing è palesemente accelera<strong>to</strong> (2X), e<br />
per tan<strong>to</strong> deve essere escluso dalla Membership in ogni caso.<br />
5.1.2 Space Based Cheating<br />
Un primo sistema in grado <strong>di</strong> scremare quelle situazioni palesemente sospette,<br />
come la velocità del Character raddoppiata, è relativamente semplice<br />
da implementare: in CheatDetection() <strong>di</strong> <strong>un</strong> MovingObjectScript è infatti<br />
possibile controllare, da <strong>un</strong>a parte che i valori dei componenti NextPosition e<br />
NextTimeStamp siano coerenti rispet<strong>to</strong> alle velocità <strong>di</strong> movimen<strong>to</strong> specificata<br />
all’interno della classe stessa (ovvero il valore <strong>su</strong>l quale, in Update Writer()<br />
verrà calcola<strong>to</strong> il vet<strong>to</strong>re <strong>di</strong> spostamen<strong>to</strong>), e dall’altra verificare che, salvo<br />
casi particolari (ed opport<strong>un</strong>amente gestiti) come il Respawn 2 , la <strong>di</strong>stanza<br />
tra il valore del componente Position appena aggiorna<strong>to</strong> ed il valore ass<strong>un</strong><strong>to</strong><br />
precedentemente stia entro i limiti imposti dalla velocità <strong>di</strong> spostamen<strong>to</strong><br />
(Figura 5.3).<br />
Da ques<strong>to</strong> p<strong>un</strong><strong>to</strong> <strong>di</strong> vista Cheats come lo Speed-Hack sono facilmente in<strong>di</strong>viduabili.<br />
2 Azione <strong>di</strong> riposizionamen<strong>to</strong>, all’interno della mappa <strong>di</strong> gioco, del Character quando<br />
quest’ultimo muore o viene <strong>di</strong>strut<strong>to</strong>