Un sabato pomeriggio due bambini giocano a guardie e ladri in un parco, inseguendosi mentre si sparano l'un l'altro con le proprie pistole giocattolo. Un bambino punta la sua pistola all'altro, preme il grilletto e grida "BANG! Sei morto!". L'altro bambino continua a correre e a sparare con la propria pistola, rispondendo "No, mi hai mancato!".
È l'antico dilemma degli shooting game: come si determina se qualcuno è stato colpito? Mentre tale determinazione è palese in un gioco dal vivo con pistole giocattolo, diventa complicato venirne a capo nel mondo degli MMO. Nel gioco reale di guardie e ladri il fair-play si basa sulle meccaniche di base e su un arbitro: l'amicizia. Un arbitro è una persona o un'entità stabilita da due o più parti per arbitrare o giudicare una disputa tra di esse nel momento in cui si possano trovare in disaccordo sul giusto esito. Nel mondo dei giochi online l'arbitro è un computer, una console, o un sistema nella rete che può cambiare in base all'azione di gioco. Deve determinare la risoluzione delle dispute tramite il processo di gestione delle dinamiche del danno
Il
Damage Arbitration, questo il termine tecnico, stabilisce a quale giocatore viene assegnato il risultato di un attacco e si occupa di tutti gli algoritmi relativi. Il design stabilisce la complessità di questo sistema e i fattori da considerare nella scelta sono molteplici: percezione del giocatore, funzioni di arbitraggio, regole di calcolo e gestione dei cheater. Questo articolo discute gli elementi chiave del processo di decisione del danno nei giochi online, al fine di aiutare nella scelta del sistema che più si adatta al design di un particolare prodotto.
Percezione del giocatore: Una parte fondamentale dei giochi online è la gestione della percezione del giocatore, che cambia da un videogame all'altro in quanto ogni prodotto ha il proprio set di visuali e di meccaniche, le quali definiscono l'interazione con il mondo virtuale. Ogni giocatore è separato dalla rete e ha una diversa rappresentazione visuale del mondo.
Metodi come il dead reckoning aiutano a predire dove i giocatori si potrebbero trovare nel mondo basandosi su una serie di fattori esterni, compensando così la latenza di rete. Oggetti in movimento come i veicoli sono indicati da una posizione e da dati di spostamento, quali la velocità e l'azione in corso. Le informazioni sullo spostamento vengono usate per stimare la posizione attuale del veicolo in gioco, mentre l'azione in corso determina come il player sta guidando il veicolo, ad esempio eseguendo un barrel roll o sterzando.
Questi aspetti si combinano per creare un'impressione di continuità del gameplay, mantenendo l'illusione che il mondo di gioco sia lo stesso per tutti e quindi contribuendo al senso di fair-play. I giocatori vogliono sapere che stanno ricevendo punti ogni volta che infliggono danno e che abbattono un bersaglio, perciò nell'arbitraggio è fondamentale introdurre gli effetti dell'interazione e per mantenere la sensazione che tutto sia corretto.
Scelta dell'arbitro: La scelta dell'arbitro si basa sul game design, sulla struttura della rete e sul metodo di gestione dei cheater. Ci sono quattro archetipi principali che guidano la scelta dell'arbitro: l'attaccante, il bersaglio, il server ed il giocatore pre-determinato.
Attaccante: Questo archetipo fornisce la miglior impressione di successo all'attaccante, ignorando gli effetti della latenza. Il bersaglio riceve immediatamente la richiesta del danno in seguito alla ricezione di un colpo e l'attaccante riceve il merito dell'uccisione. Più attaccanti che sparano allo stesso bersaglio possono però causare difficoltà nel gestire a chi deve andare il merito di una potenziale uccisione. La
figura 1 mostra un esempio di questa configurazione. A1 e A2 sono gli attaccanti e B0 è il bersaglio. Entrambi A1 ed A2 danneggiano B0 e presumono di averlo ucciso. Ogni attaccante manda un messaggio di uccisione a B0, aspettandosi di ricevere il merito della kill.
Un rischio di usare quest'approccio è che sia un client a determinare il risultato del danno; con questa configurazione il client deve essere un sistema fidato e non modificabile dall'utente, poiché una volta che viene permesso di sfruttare del software personale, la possibilità di incorrere in cheater aumenta.
Bersaglio: Questo archetipo fornisce il miglior senso di fair-play al bersaglio, utilizzando la sua percezione del mondo per determinare il risultato di un attacco. Un gestore centrale si occupa di arbitrare i risultati di tutte le richieste di danno ricevute da ogni bersaglio, quindi ognuno di essi deve determinare il proprio danno e la sua quantità da riconoscere ai singoli attaccanti. Dei calcoli compensano le inconsistenze tra le informazioni fornite dagli attaccanti e la percezione del bersaglio, ad esempio occupandosi di stabilire chi ha colpito per primo. La
figura 2 mostra la configurazione del bersaglio come arbitro. A1 e A2 sono gli attaccanti e B0 è il bersaglio. Entrambi A1 e A2 mandano una richiesta di danno. La richiesta di A1 viene ricevuta per prima e uccide B0. In quanto arbitro, B0 registra il danno, determina la kill e la assegna ad A1. Quando A2 invia la richiesta, B0 dà una riposta negativa in quanto il bersaglio è già stato ucciso.
Questo archetipo è una buona scelta per la maggior parte dei giochi. Sia gli attaccanti che il bersaglio sono coinvolti nell'arbitraggio e contribuiscono nell'individuazione dei cheater. Tuttavia un cheater potrebbe modificare il proprio client per rifiutare tutte le richieste di danno ricevute, ottenendo un vantaggio sleale. Un sistema di player-ban o player-kick può aiutare a ridurre i cheater.
Server: Usare il server come arbitro è idoneo per i giochi dove è un server centralizzato a eseguire i calcoli per la fisica e per la logica di gioco. I server affiancano a ogni informazione di posizione una marcatura oraria, che può essere utilizzata per riavvolgere lo stato del gioco al fine di determinare accuratamente i punteggi delle uccisioni.
Questa configurazione è complessa ed i giocatori potrebbero sperimentare gli effetti della latenza, ma fornisce la miglior protezione contro i cheater, che generalmente non hanno modo di accedere o di manipolare il server. La
figura 3 mostra il server come arbitro. A1 e A2 sono gli attaccanti e B0 è il bersaglio. A1 invia la richiesta di danno, che è ricevuta per prima. Il server elabora la richiesta e determina l'uccisione, quindi invia un messaggio di kill a B0 ed assegna il punto ad A1. Quando la richiesta di danno di A2 viene ricevuta, il server già sa che B0 è stato ucciso, perciò dà una risposta negativa ad A2.
Giocatore predeterminato: L'uso di un singolo giocatore predeterminato come arbitro si può descrivere come una configurazione ibrida tra gli archetipi di Bersaglio e Server. Questa configurazione offre un buon compromesso, per la maggior parte delle configurazioni di rete, tra prevenzione dei cheater e latenza; tuttavia possono verificarsi inconsistenze nelle informazioni associate al server.
A beneficiare da questo archetipo sono i giochi che usano come host il computer o la console di un giocatore. I giocatori hanno maggior controllo sulla propria esperienza di gioco, in quanto se sospettano che l'host stia barando sono liberi di ignorarlo e di passare ad un altro. Sistemi di player-kick o player-ban sono sufficienti per mantenere il senso di fair-play.
Articolo apparso sul numero di Agosto 2009 della rivista GameDeveloper
A cura di
Ronald Roy, Game Integrator Engineer per Sony Computer Entertainment
Continua in: Dinamiche di gestione degli shooter (parte 2)