Kako računamo ELO rejting u Tavla42
Kako Tavla42 računa tvoj ELO u tavli od verzije 1.3.1: tačna formula, K faktor, kocka za udvajanje i šta se promenilo, uz pravi kod.
Tvoj rejting u rangiranim partijama u Tavla42 je ELO broj. Svi počinju od 1500. Posle svake rangirane partije pobednik dobija poene, a gubitnik ih gubi. Koliko tačno, zavisi od tri stvari: razlike u rejtingu između vas, koliko je visoko otišla kocka za udvajanje i, od verzije 1.3.1, koliko si rangiranih partija odigrao u poslednjih 7 dana. Pobediš li protivnika istog nivoa, dobijaš +16. Pobediš li mnogo jačeg, dobijaš više. Pobediš li mnogo slabijeg, dobijaš manje. Gemon i bekgemon uopšte ne menjaju tvoj rejting.
To je kratka verzija. Ispod je ceo račun kakav važi od verzije 1.3.1 (oktobar 2026), brojevi koje smo izabrali, zašto smo ih dva puta menjali i pravi kod. Radije ti pokazujemo matematiku nego da tražimo da nam veruješ na reč.
Koje partije se računaju za ELO
- Rangirane partije: da. Samo se tu menja tvoj ELO.
- Boosted partije: ne. Boosted partije (pre verzije 1.3.0 zvale su se Casual) donose poene za Boosted rang-listu i Sparks, ali nikad ne diraju tvoj ELO.
- Turniri: partije u turniru ne menjaju tvoj ELO. Umesto toga, javni turniri dele fiksne ELO nagrade za postolje, na primer +50, +25 i +15. Više o tome u našem tekstu o turnirima.
Korak 1: koliko je bila verovatna tvoja pobeda?
Pre nego što kažemo koliko vredi pobeda, procenjujemo koliko je bila verovatna. To je očekivani rezultat, broj između 0 i 1:
očekivano = 1 / (1 + 10^((rejting protivnika − tvoj rejting) / 1200))
Ako imaš isti rejting kao protivnik, očekivani rezultat je 0,5: pismo ili glava. Što si više iznad njega, to je bliži 1.
| Razlika u rejtingu | Očekivani procenat pobeda favorita |
|---|---|
| 0 | 50,0% |
| 50 | 52,4% |
| 100 | 54,8% |
| 150 | 57,1% |
| 200 | 59,5% |
| 300 | 64,0% |
| 400 | 68,3% |
| 500 | 72,3% |
Korak 2: koliko je rezultat nadmašio prognozu?
Zatim poredimo ono što se desilo sa onim što se očekivalo:
promena = K × (rezultat − očekivano)
rezultat je 1 za pobedu i 0 za poraz. K je K faktor: najveća promena koju jedna partija može da donese (bez kocke, vidi ispod). Za većinu igrača K je 32. Zaokružujemo na ceo broj.
Dva igrača sa 1500: očekivani rezultat 0,5. Pobednik dobija 32 × (1 − 0,5) = +16, gubitnik −16.
Evo kako to izgleda za različite razlike u rejtingu, sa K = 32 i kockom na 1:
| Razlika u rejtingu | Pobeđuje favorit | Pobeđuje autsajder |
|---|---|---|
| 0 | +16 / −16 | +16 / −16 |
| 100 | +14 / −14 | +18 / −18 |
| 200 | +13 / −13 | +19 / −19 |
| 300 | +12 / −12 | +20 / −20 |
| 400 | +10 / −10 | +22 / −22 |
Logika je jednostavna: iznenađenje vredi više od očekivane pobede. Ako si 200 poena iznad protivnika, treba da dobijaš oko 60% partija protiv njega samo da bi ostao na istom. Pobeđuješ češće, penješ se. Pobeđuješ ređe, padaš, iako i dalje dobijaš većinu partija.
Korak 3: koliko si igrao ove nedelje?
Ovaj korak je nov u verziji 1.3.1. Pre nego što se rangirana partija boduje, server izbroji koliko je rangiranih partija svaki igrač odigrao u poslednjih 7 dana:
- Manje od 50 partija: K je 32.
- 50 partija ili više: K je 16. Svaka promena, naviše ili naniže, upola je manja.
| Razlika u rejtingu | K = 32 (favorit pobeđuje / gubi) | K = 16 (favorit pobeđuje / gubi) |
|---|---|---|
| 0 | +16 / −16 | +8 / −8 |
| 150 | +14 / −18 | +7 / −9 |
| 300 | +12 / −20 | +6 / −10 |
Zašto? Veličina oscilacije rejtinga tokom jedne nedelje je otprilike K puta broj odigranih partija. Neki igrači odigraju 300 rangiranih partija za nedelju dana. Sa K = 32, dovoljno je bilo da na toliko partija budu samo 2 ili 3 procentna poena ispod očekivanog procenta pobeda, što je sasvim u granicama obične sreće, pa da izgube oko 200 poena za jednu nedelju. Kada se tim igračima K prepolovi, nedelja sa mnogo partija oscilira otprilike koliko i obična. Igrači koji igraju manje zadržavaju pun K i penju se istom brzinom kao i pre.
Tri detalja:
- Svaki igrač ima svoj K. Partije se broje posebno za pobednika i posebno za gubitnika.
- Dve promene više nisu uvek odraz jedna druge. Ako si ove nedelje odigrao 60 rangiranih partija, a tvoj protivnik istog rejtinga 10, pobeda ti donosi +8, dok on gubi −16. Ako on pobedi, dobija +16, a ti gubiš −8. Kada oba igrača imaju isti K, pobednik i dalje dobija tačno onoliko koliko gubitnik izgubi.
- Period se pomera zajedno sa tobom. To je uvek 7 dana pre partije koja se boduje, a sama ta partija se ne broji. Kada ti broj partija padne ispod 50, vraćaš se na K = 32.
Zašto delimo sa 1200, a ne sa 400
U šahu ELO formula deli sa 400. Od toga smo i mi krenuli. U verziji 1.2.0 prešli smo na 800, a u verziji 1.3.1 na 1200.
Taj broj određuje koliko je sistem siguran da će jači igrač pobediti. Sa 400, favorit sa 200 poena prednosti treba da pobedi u 76% slučajeva. U šahu je to razumno. Za jednu partiju tavle to je previše, jer kockice slabijem igraču daju prave šanse u svakoj partiji. Čak i mnogo bolji igrač izgubi dosta pojedinačnih partija zbog loše sreće.
Rezultat je bio rejting koji je kažnjavao dobre igrače. Sa 400, igrač 300 poena iznad protivnika dobijao je +5 za pobedu, a gubio 27 za poraz. Da bi ostao na istom, morao je da dobije 85% tih partija, što je u tavli skoro nemoguće.
U verziji 1.2.0 prešli smo na 800, čime je kriva postala upola blaža. Pomoglo je, ali nedovoljno. Posle nekoliko nedelja rangiranih partija uporedili smo krivu sa stvarnim rezultatima. Naši najjači igrači dobijali su 57 do 58% partija, a kriva je od njih očekivala oko 60%. Zato su i dalje gubili rejting iako su dobijali većinu partija, a rang-lista je ostala zbijena: polovina aktivnih igrača bila je u rasponu od oko 60 poena.
Sa 1200, kriva odgovara onome što kockice zaista dozvoljavaju:
| Favorit sa 300 poena prednosti | Pre 1.2.0 (÷400) | Od 1.2.0 do 1.3.0 (÷800) | Od 1.3.1 (÷1200) |
|---|---|---|---|
| Očekivani procenat pobeda | 84,9% | 70,3% | 64,0% |
| Poeni za pobedu | +5 | +9 | +12 |
| Poeni za poraz | −27 | −23 | −20 |
Poređenja radi, FIBS, najstariji server za tavlu, ide još dalje i koristi 2000 za mečeve na jedan poen. Sa našim K faktorom od 32, to bi razvuklo rang-listu preko 3000 poena, pa smo se zaustavili na 1200.
Stare partije nismo ponovo računali. Nova formula važi za rangirane partije odigrane posle promene, a tvoj rejting je prenet takav kakav je bio.
Kocka za udvajanje: veći ulog, ali sa granicom
Partija igrana na višu kocku treba da vredi malo više, ali ne sme da ti prepiše rejting zbog jedne srećne partije. Zato kocka množi tvoju ELO promenu koeficijentom između 1,0 i 2,0. Svako udvajanje dodaje jednu šestinu puta do maksimuma:
koeficijent = 1 + log2(kocka) / 6
| Kocka | Koeficijent | Dva igrača sa 1500, K = 32 | Dva igrača sa 1500, K = 16 |
|---|---|---|---|
| 1 | 1,00 | ±16 | ±8 |
| 2 | 1,17 | ±19 | ±9 |
| 4 | 1,33 | ±21 | ±11 |
| 8 | 1,50 | ±24 | ±12 |
| 16 | 1,67 | ±27 | ±13 |
| 32 | 1,83 | ±29 | ±15 |
| 64 | 2,00 | ±32 | ±16 |
Čak i na maksimalnoj kocki od 64, promena je najviše duplo veća od uobičajene. Pre verzije 1.0.5 kocka je direktno množila poene, pa je jedna partija sa visokom kockom mogla da pomeri rejting mnogo više nego što je zasluživala. Kocka i dalje ima značaj, da bi odluke prihvatiti ili odustati imale smisla. Ali koga si pobedio i da li si pobedio vredi mnogo više.
Zašto se gemon i bekgemon ne računaju
Gemon vredi 2 poena, a bekgemon 3, i u Tavla42 ti i dalje donose više poena u rezultatu. Ali tvom rejtingu je svejedno. ELO meri samo jedno: koliko često pobeđuješ igrače određenog nivoa. Gemon je veća pobeda, ali je i dalje jedna pobeda. Prve verzije Tavla42 davale su dodatni ELO za gemon, a to je nagrađivalo uglavnom rizične i srećne partije umesto dosledne igre. Od verzije 1.0.5 računaju se samo pobeda, rejting protivnika i kocka.
Predaja, prekid veze i vreme za potez
Rangirana partija koja se završi ranije i dalje se računa. Ako se predaš, izađeš, predugo ostaneš bez veze ili prekoračiš vreme u 3 poteza, partija se boduje kao običan poraz, sa vrednošću kocke u tom trenutku. Aplikacija te upozori pre nego što se predaš. Pravilo postoji zbog pravičnosti: inače bi izlazak iz izgubljene partije bio besplatan način da zaštitiš rejting.
Pravi kod
Ovo je kod koji naš server za igru pokreće posle svake rangirane partije (Go):
const K = 32 // maximum change per game, before the cube
const HeavyVolumeK = 16 // K for players with a heavy ranked week
const HeavyVolumeGames = 50 // ranked games in the window that switch K
const HeavyVolumeWindow = 7 * 24 * time.Hour
const Divisor = 1200 // chess uses 400; dice make single games less predictable
const Starting = 1500
func KFor(recentRankedGames int) int {
if recentRankedGames >= HeavyVolumeGames {
return HeavyVolumeK
}
return K
}
func CalculateChangeWithK(winnerELO, loserELO, winnerK, loserK int, coefficient float64) Change {
expectedWinner := expectedScore(winnerELO, loserELO)
expectedLoser := 1 - expectedWinner
return Change{
Winner: int(math.Round(float64(winnerK) * (1 - expectedWinner) * coefficient)),
Loser: int(math.Round(float64(loserK) * (0 - expectedLoser) * coefficient)),
}
}
func expectedScore(playerELO, opponentELO int) float64 {
return 1.0 / (1.0 + math.Pow(10, float64(opponentELO-playerELO)/Divisor))
}
coefficient je množilac kocke iz tabele iznad. winnerK i loserK dolaze iz funkcije KFor, na osnovu rangiranih partija koje je svaki igrač odigrao u poslednjih 7 dana.
Obrati pažnju na to šta kod ne dobija: ni niz pobeda, ni zemlju, ni kupovine, ni neko skriveno „balansiranje“. Jedini ulazi su dva rejtinga, kocka i broj rangiranih partija koje je svaki igrač odigrao ove nedelje. Isti princip kao kod naših kockica: ako nije u formuli, ne utiče na tebe.
Česta pitanja o ELO rejtingu
Sa kojim ELO-om počinjem u Tavla42?
Svi novi igrači počinju od 1500.
Koliko ELO poena dobijam za pobedu?
Protiv protivnika sa istim rejtingom, +16 na kocki 1. Više ako protivnik ima viši rejting od tebe, manje ako ima niži. Viša kocka za udvajanje povećava promenu, najviše do duplo na kocki 64. Ako si u poslednjih 7 dana odigrao 50 ili više rangiranih partija, sve tvoje promene su upola manje.
Zašto sam dobio manje poena nego što je protivnik izgubio?
Zato što je jedan od vas odigrao 50 ili više rangiranih partija u poslednjih 7 dana. Rejting tog igrača se po partiji menja upola manje, i kod pobeda i kod poraza. Na promenu drugog igrača to ne utiče.
Da li gemon i bekgemon donose više ELO-a?
Ne. Donose više poena u rezultatu, ali tvoj ELO zavisi samo od pobede, rejtinga protivnika i vrednosti kocke.
Da li Boosted partije utiču na moj ELO?
Ne. Samo rangirane partije menjaju tvoj ELO. Boosted partije donose poene za Boosted rang-listu i Sparks.
Šta se dešava sa mojim ELO-om ako se predam ili mi pukne veza?
Rangirana partija koja se završi ranije boduje se kao običan poraz, sa vrednošću kocke u tom trenutku.
Šta se promenilo u ELO formuli u verziji 1.3.1?
Dve stvari. Delilac u formuli je povećan sa 800 na 1200, pa se od favorita očekuje da pobeđuju ređe i za poraz gube manje poena. A igrači sa 50 ili više rangiranih partija u poslednjih 7 dana sada imaju K faktor 16 umesto 32.
Imaš pitanja o svom rejtingu ili ideju kako da bude još pravedniji? Piši nam na support@table-online.ro.
Odigraj rangiranu partiju i proveri ovu matematiku →
Više voliš aplikaciju? Preuzmi Tavla42 sa App Store-a ili Google Play-a.
Spreman za igru?
Igraj odmah