Conosco l'algoritmo Truskill, è abbastanza complesso ma efficace.
La mia domanda è ci sono altri algoritmi / metodi per determinare l'abilità dei giocatori per una misurazione accurata per il gioco competitivo multiplayer?
Conosco l'algoritmo Truskill, è abbastanza complesso ma efficace.
La mia domanda è ci sono altri algoritmi / metodi per determinare l'abilità dei giocatori per una misurazione accurata per il gioco competitivo multiplayer?
Risposte:
Penso che chiedere "il più semplice ed efficace" sia un requisito irrealistico, ma ci sono sicuramente alcuni buoni approcci. Piuttosto che entrare nei dettagli, collegherò ad un articolo:
http://www.lifewithalacrity.com/2006/01/ranking_systems.html
Questo copre:
Nel complesso vedrai che sono praticamente tutte variazioni sullo stesso tema: scegli un valore iniziale o medio per un giocatore, quindi i valori vengono utilizzati per prevedere il risultato del gioco. La differenza tra il risultato effettivo e il risultato previsto viene utilizzata per modificare i punteggi per ciascun giocatore e il processo si ripete con i punteggi modificati. Poiché ogni modifica ai punteggi rende più accurato il risultato previsto, i punteggi convergono sui loro valori "reali". (Ciò presuppone in realtà che si tratti di un gioco di abilità piuttosto che di un caso, che l'abilità in questione sia in grado di essere classificata in modo lineare, ecc.)
Dipende dal gioco. Ci sono alcuni problemi in cui puoi entrare:
Per i giochi che hanno una componente fortuna e una componente abilità (Bridge, Poker, Magic: the Gathering, ecc.), La maggior parte degli algoritmi non tiene conto del fatto che a volte un giocatore più debole può avere fortuna. Se il tuo gioco rientra in questa categoria, dovrai fare un po 'di lavoro. Generalmente questo significa capire quale percentuale è la fortuna e quale percentuale è l'abilità (un trucco difficile, ma se hai già utilizzato un algoritmo basato sull'abilità come Elo, potresti eseguire alcune metriche sui risultati per capire con quale frequenza l'algoritmo prevede un turbamento rispetto a quanto spesso accade effettivamente). Quindi devi cambiare l'algoritmo, e esattamente a cosa cambiarlo è probabilmente oltre lo scopo di questa domanda.
Per le partite in cui le partite possono essere manipolate (posso scegliere di giocare una partita classificata contro il mio amico), devi mettere in atto delle protezioni aggiuntive per impedire ai giocatori di lanciare intenzionalmente partite.
Per i giochi in cui un giocatore può "allenarsi" se non gioca regolarmente, il sistema potrebbe comportare una sorta di degrado basato sul tempo. Il sistema Glicko è una mod di Elo che aggiunge una variabile di "incertezza" alla classifica di ogni giocatore, in base a quanti giochi hanno giocato e quanto recentemente li hanno giocati; più è certa la classifica di un giocatore, meno cambia da gioco a gioco.
I giochi multiplayer (sia gratuiti che per tutti, basati sulla squadra o su qualche altra struttura del giocatore) necessitano di cure speciali, ovviamente. Alcuni giochi a squadre rendono più semplice capire il contributo di ogni individuo, rispetto ad altri.
Chiedi anche qual è lo scopo del tuo sistema di classificazione / classificazione. Nei giochi e negli sport professionistici, lo scopo è statistico: la valutazione viene utilizzata come predittore del risultato di una determinata partita. L'obiettivo principale qui è l'accuratezza. Tuttavia, questo è raramente ciò che i giocatori vogliono; invece vogliono progredire, una sensazione che stanno migliorando e scalando le classifiche (sia che stiano effettivamente migliorando o meno). In breve, c'è un compromesso tra precisione e divertimento che devi considerare.
Cosa hai trovato complicato in TrueSkill ? Ho pensato che fosse un algoritmo semplice con la giusta quantità di manopole per modificare le diverse modalità di gioco, e si riduce a Elo quando il gioco è testa a testa con alta certezza.
Se stai cercando il modo più semplice per classificare e misurare efficacemente un giocatore in un ambiente multiplayer - la mia raccomandazione è TrueSkill.