Call Of Duty 4 - ITALIA - Guida Alla Rimozione Del Lag 1 di 3 http://www.callofduty4.it/index.php?option=com_content&task=view&... Guida Alla Rimozione Del Lag GUIDA AI PROBLEMI DI LAG INTRODUZIONE Spesso giocatori inesperti tendono a dare la colpa dei propri rallentamenti a problemi di comunicazione con il server. Come vedremo ciò è vero solo in alcuni casi, molto più spesso invece i problemi sono attribuibili alla configurazione del gioco, alla connessione o comunque al computer che si stanno utilizzando. Fumo, foschia, esplosioni, bossoli o più in generale qualsiasi effetto grafico possono dare luogo a rallentamenti nel calcolo delle immagini da parte del computer e quindi possono dare al giocatore la sensazione di una azione poco fluida o ritardata. Questa guida ha lo scopo di permettere ai giocatori di settare il proprio computer in maniera tale da ottenere sempre la massima giocabilità. DUE PAROLE SUI FPS Come accade per i film anche nei giochi online un’azione non è altro che un susseguirsi di immagini (chiamate Frame) ad una certa velocità che danno l’impressione di un movimento fluido. Per FPS si intende Frame Per Second ovvero il numero di immagini per secondo che il vostro computer (in particolare la scheda video) e’ in grado di generare. Call Of Duty 2 dispone di molti strumenti utili per controllare la qualità del gioco, uno fra questi è l’indicatore in tempo reale dei vostri FPS. Per verificare tale valore attivate l’indicatore di frame, digitando da console /cg_drawfps 1 Un valore ottimale deve essere sempre e ripeto sempre superiore ai 60 FPS. In condizioni particolari come fumo, esplosioni o situazioni caotiche di gioco, tale valore può diminuire vistosamente, rallentando la visualizzazione delle immagini e quindi rendendo il gioco scattoso come un vecchio film muto. E’ chiaro infatti che se la vostra scheda video e’ in grado di generare solo 2 FPS il gioco non potrà essere fluido dato che l’immagine sullo schermo cambierà solo 2 volte per secondo. CLIENT E SERVER I giochi online come Call Of Duty 4 funzionano tramite un server al quale sono connessi diversi client, tipicamente un client per ogni giocatore. Il server invia regolarmente a tutti i client un “gamestate” ovvero una “fotografia” dell'esatta situazione di gioco in quel momento. Un gamestate (detto tecnicamente snapshot) comprende, semplificando, la posizione degli altri giocatori e che cosa stanno facendo in quel istante. Da notare che il server non invia nulla a livello grafico, ma invia semplicemente delle coordinate matematiche (punti e vettori) che il client userà per ricreare la scena. Il client quindi , ricevuto un gamestate dal server , lo elabora calcolando la posizione e i movimenti degli altri giocatori e renderizzando il mondo 3D completamente in locale. Qui c'e' bisogno di una precisazione importante. Il server manda solo 20 gamestate al secondo, ma il client renderizza molti più frame al secondo (tipicamente oltre 60), La domanda quindi è: dove prende il client i frame che non gli vengono inviati dal server? La risposta è semplice: Ogni client calcola autonomamente i frame che stanno fra due gamestate. Il calcolo avviene interpolando i dati di un gamestate e calcolando come, con tutta probabilità, la situazione si evolverà nel prossimo gamestate. In pratica e semplificando molto, il server invia solo 20 immagini al secondo della situazione “reale” di gioco, tutte le altre sono calcolate o meglio “inventate” dal client. Il sistema funziona bene, visto che se un giocatore si trovava nel punto A e si sta muovendo con una certa velocità e direzione, si assume che il giocatore si troverà nel punto B al prossimo gamestate “reale”. Il client quindi crea localmente questo movimento. La velocità del procedimento rende il gioco fluido e perfettamente giocabile. Inoltre questo alleggerisce di molto il lavoro del server e il carico sulla rete, dato che il server manda solo 20 gamestate al secondo e lascia il grosso del lavoro al client. Il difetto maggiore di questo metodo è il seguente: Supponiamo che in un gamestate ricevuto dal server un giocatore si trovi a 10 metri da noi e si stia avvicinando velocemente. Il client calcola allora i frame intermedi supponendo, in base alla posizione e alla velocità dell’ultimo gamestate ricevuto, che al prossimo gamestate tale giocatore si troverà a 8 metri da noi. Se invece il nuovo gamestate indicherà una distanza di 9 metri, il giocatore verrà graficamente fatto saltare indietro di 1 metro per accordarsi all’ultimo gamestate ricevuto. Ripeto, la velocità di aggiornamento in condizioni ottimali rende il processo impercettibile e quindi il gioco risulterà perfettamente giocabile. LAG-O-METER 10/09/2008 11.22 Call Of Duty 4 - ITALIA - Guida Alla Rimozione Del Lag 2 di 3 http://www.callofduty4.it/index.php?option=com_content&task=view&... LAG-O-METER Ora veniamo al lagometer, cioè il misuratore di lag, il vero tema di questa guida. Il lagometer e' una rappresentazione grafica dell'iterazione fra il server e il vostro client. Per attivarlo digitate da console: /cg_drawlagometer 1 Come vedrete subito e' diviso in due parti da una linea tratteggiate bianca. Il grafico sopra rappresenta i FPS calcolati dal client (abbiamo detto di solito ben oltre 60 per secondo), mentre la parte sotto rappresenta solo i gamestate "reali" inviati dal server (20 per secondo) GRAFICO CLIENT Qui sono rappresentati tutti i frame elaborati dal client. il grafico avanza di un pixel per ogni frame calcolato, in pratica più i vostri FPS saranno alti più si aggiornerà velocemente. Se il pixel e' blu vuol dire che il frame si e' dimostrato calcolato in maniera corretta dal client. Se il pixel e' giallo vuol dire che, in base al gamestate successivo, il frame non era stato predetto in maniera corretta, e che quindi verrà scartato e sostituito con uno corretto. L'altezza della barra corrisponde al tempo di elaborazione di ogni singolo frame da parte del computer locale GRAFICO SERVER Qui sono rappresentati solo i gamestate "reali". Il grafico avanza di un pixel ogni gamestate ricevuto dal server, quindi avanza più lentamente del grafico sovrastante (un pixel ogni 50ms ovvero 20 al secondo) Se il pixel e' verde significa che il gamestate inviato dal server e' stato ricevuto correttamente dal client. Se il pixel e' rosso vuol dire che il gamestate non e' stato correttamente ricevuto (packet loss). L'altezza della barra corrisponde al ping fra server e client POSSIBILI SITUAZIONI 1) E' la situazione ottimale una sottile barra blu sopra che indica che tutti i frame sono giusti e calcolati in tempi rapidi. Una sottile barra verde sotto che indica che tutti i gamestate sono stati correttamente ricevuti. Da notare che piccoli ed isolati puntini gialli nella barra superiore sono praticamente normali e non compromettono la giocabilità. 2) Piccoli problemi. piccoli triangoli gialli intervallati da puntini blu indicano che il client non riesce a calcolare le immagini intermedie fra i gamestate ricevuti. In pratica, i punti blu sono i gamestate ricevuti dal server quindi validi, mentre i triangoli gialli sono i frame “virtuali” che non si sono riusciti a calcolare in tempo o in maniera corretta. Questo crea quel tipico movimento a leggerissimi scatti, dove in pratica la posizione dei giocatori viene aggiornato molto di rado con l’ausilio dei soli gamestate ricevuti dal server. Notare anche leggeri picchi nella barra verde che indicano un aumento momentaneo di ping. 3) Problemi di LAG! uno o più grandi triangoli gialli. 10/09/2008 11.22 Call Of Duty 4 - ITALIA - Guida Alla Rimozione Del Lag 3 di 3 http://www.callofduty4.it/index.php?option=com_content&task=view&... Il client non riesce a calcolare in tempo i frame, neanche i nuovi gamestate appena ricevuti. Qui si verificano i casi di "connessione interrotta" dovuti al client. In questa situazione i giocatori sembrano essere teletrasportati da una parte all'altra della mappa, e spesso una volta ricevuto un gamestate valido sembrano tornare improvvisamente indietro ad una posizione precedente. Anche qui notare i picchi nel ping (barra verde sotto) 4-5-6) Problemi col server. La barra rossa nel grafico sottostante indica che ci sono problemi di comunicazione con il server. Indica che il gamestate non e' stato ricevuto ovvero che in pratica si e' perso contatto con il server. Qui si verificano i casi di "connessione interrotta" dovuti al server. Ciò può accedere in varie circostanze: - il server non ha inviato il gamestate perchè troppo carico - il server lo ha inviato ma il gamestate e' stato "perso" dalla rete o non recapitato in tempo. - il pc client e' troppo occupato o la sua rete e' troppo satura per ricevere il gamestate inviato. - il pc client si e' momentaneamente scollegato dalle rete. PROBLEMI E SOLUZIONI Triangoli gialli nel grafico superiore: - Abbassare la grafica o liberare risorse (chiudere tutte le altre applicazioni aperte) per lasciare tutta la cpu e la ram all'elaborazione dei frame intermedi. - comprare un nuovo pc! :D Picchi verdi nel grafico sottostante: - chiudere le altre applicazioni che usano la connessione ad internet per abbassare il ping. - cambiare provider adsl! :D Barre rosse nel grafico sottostante: Provate se la cosa si verifica anche su altri server. - Se si verifica in tutti i server avete seri problemi di stabilità nella vostra connessione. Se si verificano solo con alcuni server...allora tali server non sono affidabili e provocano lag a tutti i giocatori...non giocateci! RIEPILOGO Riepilogando molto velocemente possiamo dire che la condizione ottimale e': BARRA BLU sopra (la cui velocità rappresenta i FPS e la cui altezza indica il tempo di elaborazione di ciascun frame) . BARRA VERDE sotto (la cui velocita’ e’ fissata dal server con l’invio di 20 gamestate per secondo e la cui altezza corrisponde al ping) Triangoli gialli nel grafico superiore sono errori attribuibile al client. Barre rosse nel grafico inferiori sono errori attribuibili al server o alla rete In generale le opzioni consigliate lato client per COD2 sono: /rate 25000 /snaps 20 /cl_maxpackets 100 Tutte queste opzioni sono settabili da console e vi consiglio di controllarle. Un valore minore di MaxPackets può diminuire il ping ma allo stesso tempo può rendere il gioco meno fluido. 10/09/2008 11.22