sabato 6 agosto 2016

Ruzzle: calcolo del livello di abilità

 (*) Come già scritto nel mio precedente articolo Ruzzle: cos'è il livello di abilità,  il livello di abilità è un indice numerico che rappresenta la perizia nel gioco in relazione agli avversari incontrati, calcolato, come scritto sul sito ruzzle-game.com, sulla base di su un algoritmo di classificazione ELO.
In altre parole, quando si battono gli altri giocatori il posizionamento aumenta, mentre quando si perde il posizionamento diminuisce. Quanti punti di classifica si guadagnano o si perdono dipende dalla classifica degli avversari, o con maggior precisione dipende dalla differenza di classifica con gli avversari.
L'algoritmo utilizzato in Ruzzle per il calcolo del livello di abilità ricalca quello descritto nella pagina di Wikipedia dedicata a Elo .

Elo, spesso scritto in maiuscolo, ELO, non è un acronimo, bensì il cognome del creatore del sistema utilizzato per calcolare la forza relativa di un giocatore di scacchi, Arpad Emrick Elo (1903 - 1992), un professore di fisica statunitense con origini ungheresi.

Prima di entrare nella parte più tecnica farò un esempio (**):
Siano Luca (1900) e Marco (2000) due giocatori di Ruzzle che hanno il livello di abilità indicato fra parentesi:
Se Luca vince guadagna 20 punti, mentre Marco ne perde 21
Se Marco vince guadagna 11 punti, mentre Luca ne perde 12
In caso di pareggio Marco perderà 5 punti, mentre Luca ne guadagna 4.
In caso di pareggio di avversari con lo stesso livello di abilità, come prevedibile, non si perdono nè guadagnano punti.

E ora veniamo alla formula che determina questi risultati:

Legenda:

- Ln : nuovo livello
- Li o L : livello iniziale

- floor è una funzione matematica che arrotonda all'intero inferiore. Es; floor(11,3) = 11,  floor(-11,3) = -12

- K : costante = 32

- E : esito incontro che vale 1 in caso di vittoria, 0 in caso di sconfitta, 0,5 in caso di pareggio.

- Ea : esito atteso, compreso tra 0 e 1, che dipende dalla differenza di livello di abilità con l'avversario. Ln=Li + floor(K(E-Ea))
Indichiamo con i pedici 1 e 2 i due giocatori di una partita a Ruzzle:





Se torniamo all'esempio precedente con Luca (Li = 1900) e Marco (Li=2000), il rispettivo esito atteso è di 0,36 per Luca e 0,64 per Marco, conseguentemente, se supponiamo una vittoria di Luca, avremo i seguenti livelli dopo la partita:

nuovo livello Luca =
1900 + floor(32*(1-0,36)) = 1900+floor(20,48) = 1900+20 = 1920

nuovo livello Marco =
2000 + floor(32*(0-0,64)) = 2000 +floor(-20,48) = 2000-21 = 1979

Al momento ho potuto verificare in quanto precedentemente illustrato per punteggi compresi tra 1700 e 2050 circa.  E' possibile che l'algoritmo da me indicato si utilizzato per tutti i giocatori, ma è altresì possibile che per per i giocatori principianti e quelli di livello più scarso, come pure per i giocatori delle fasce più alte di livello ci siano dei fattori correttivi o semplicemente la costante "K" abbia un valore diverso da 32.
Se uno dei due giocatori rinuncia alla partita ci sono variazioni minori del livello di abilità (da verificare).
Se si parte dal livello zero e si vince la prima partita si salta al livello 1500.

(*) 06/06/2016 - Non bisogna confondere il "Livello di abilità" (nella versione inglese Ranking) con i livello raggiunto giocando i tornei settimanali (level progression) (introdotti da oltre un anno ma dopo la prima stesura di questo articolo) che andava da 1 a 20 - da poco introdotti livelli superiori.
Ho quindi aggiornato la foto di copertina per evitare eventuali equivoci.
(**) I calcoli sono quelli fatti nel novembre 2014, non credo che la Mag Interactive abbia apportato modifiche all'algoritmo, ma non ho fatto altre prove per verificare.
Se ti è piaciuto quello che hai letto o l'hai trovato utile e/o interessante lascia un segno del tuo passaggio: condividi sui social o lascia un commento. Grazie!

2 commenti:

  1. Da pochi giorni ho fatto partite con avversari con livello superiore al 20 , al quale sono fermo da lungo tempo, che non mi hanno saputo dire come avessero fatto a raggiungerlo. Sapete qualcosa ? Grazie

    RispondiElimina
    Risposte
    1. Ciao Dexter, forse dipende dal sistema operativo. Su Android sono da poco passato al livello 21 mentre su iOS7 (un iPhone 4) ho da poco ricevuto il messaggio che non ci sono ancora livelli superiori al 20. Prova a guardare se la tua app è aggiornata, in tal caso se sei al livello 20, dovresti vedere la barra di aggiornamento che sta avanzando in alto a sinistra.

      Elimina

Ringrazio tutti quelli che vorranno lasciare un commento o che seguiranno o sottoscriveranno il mio blog. Il linea di massima cercherò sempre di ricambiare.
Nel caso vogliate fare delle richieste o dei commenti off-topic ossia non collegati all'argomento dell'articolo, vi sarei grato se li postate sulla pagina Facebook del blog. Grazie!
Ho dovuto purtroppo attivare la moderazione a causa di alcuni commenti offensivi nei confronti di terzi.