Algorytm ELO do obsługi osób, które nie grają często

9

Korzystam z algorytmu ELO, aby klasyfikować graczy w trwających zawodach w ponga. Większość graczy gra codziennie, ale mamy jednego gracza, który nie grał od miesiąca. Mój algorytm śledzi obecnie wyniki tylko w ciągu ostatnich 30 dni, w wyniku czego gracz szybko rośnie w szeregach, mimo że nigdy nie grał. Przegrał kilka swoich pierwszych gier, ale wygrał większość z ostatnich kilku gier, co oznacza, że ​​jego straty spadają z list przebojów, a jego wynik rośnie.

Oczywiście mój plan porzucenia wyników po 30 dniach nie działa. Jakich innych metod mogę użyć, aby ukarać graczy za nieczęstą grę?

Jedyne, co do tej pory wymyśliłem, to zmniejszenie punktów na podstawie procentu opartego na dniach bezczynności (tj. Jeśli użytkownik nie grał w ciągu tygodnia, jego punkty są warte tylko 70% normalnego, i musiałby zagrać X razy, aby odzyskać do 100% punktów).

Wydaje się to jednak zbyt arbitralne. Czy ktoś ma jakieś lepsze pomysły lub sugestie dotyczące postępowania z nieaktywnymi graczami w innym środowisku?

Z góry dziękuję.

Jemaclus
źródło

Odpowiedzi:

18

Wygląda na to, że przechowujesz punkty przyznane za każdy mecz, a następnie „wygasasz” te zmiany punktów w miarę upływu czasu. Który, jak zauważyłeś, jest łatwy do wykorzystania.

W standardowej implementacji ELO twój wynik ELO jest wieczny; z czasem nie „zanika”, ponieważ opuszczenie systemu rankingu w ten sposób ostatecznie doprowadzi do całkowitej deflacji wyniku (tj. 1500 nie będzie już oznaczało „średniej”).

Pamiętaj, że rankingi ELO nie są „punktami” w taki sposób, w jaki gracze zwykle o nich myślą; są próbą uszeregowania poziomu umiejętności gracza względem innych graczy, nie są nagrodą. Punkty te nie powinny być odbierane jako kara dla gracza, ponieważ są jedynym narzędziem, które musisz próbować dopasować graczy do przeciwników o podobnym poziomie umiejętności. Jedyne, co powinno wpłynąć na te wartości - zawsze - to wygrane i przegrane z innymi graczami w rankingu.

Podejście przyjęte przez większość gier, które chcą powstrzymać graczy przed osiągnięciem wysokiego wyniku, a następnie zniknięcie, aby nigdy więcej nie grać, polega na wymaganiu aktywności dla wyświetlania tabeli liderów; jeśli gracz nie grał w grę przez 30 dni (lub cokolwiek innego), po prostu nie pojawia się w tabelach wyników, dopóki tego nie zrobi. Kiedy gracz powraca i gra w innym meczu rankingowym, wraca z pełnym rankingiem ELO, dokładnie tak, jakby nigdy nie wyszedł. Jeśli poziom umiejętności zmienił się w porównaniu do innych aktywnych graczy w międzyczasie, gra szybko to zauważy i dostosuje ich ranking, poprzez standardowy proces wygrywania i przegrywania meczów z przeciwnikami.

Trevor Powell
źródło
1
+1, podczas gdy jest to prawidłowe wyjaśnienie, dlaczego to się nie udaje, po prostu porzucam ELO i wybiorę coś zupełnie innego. (Nie wiem co, inaczej bym to opublikował ^^)
o0 '.
4
@Lohoris To byłby całkowicie rozsądny wybór dla deweloperów. Jeśli celem nie jest utrzymanie znaczącego porównania obiektywnych poziomów umiejętności ludzi względem siebie (tj. Do celów dobierania graczy), to ELO nie jest doskonałym wyborem do zastosowania jako mechanizm punktacji. Istnieją nawet niektóre gry, które wykorzystują system ELO pod maską do dobierania graczy, a jednocześnie używają zupełnie innego systemu „punktów” do celów wyświetlania, co pozwala nagradzać ludzi za częstsze granie. StarCraft 2 robi to na przykład.
Trevor Powell,
4

Algorytmy takie jak Elo i TrueSkill określają umiejętności gracza na podstawie wyniku każdej rozegranej gry, bez względu na upływ czasu. Jednak oba algorytmy mają czynnik „niepewności” - w przypadku Elo K Factorjest zwykle ustawiony wysoko dla nowych graczy, tak że ich ocena Elo szybko zbiega się z „prawdziwą” oceną umiejętności. Po określonym czasie lub określonej liczbie gier wartość ta K Factorjest zwykle zmniejszana, tak że ocena zmienia się mniej między grami.

To, co widzisz, jest prawdopodobnie typowym zachowaniem Elo (w zależności od implementacji Elo): Twój gracz grał mniej gier niż jego konkurenci, co czyni go „nowym graczem” z wyższym K Factor; ponieważ wygrywa swoje gry, algorytm postrzega go jako gracza o wysokich umiejętnościach i przyznaje mu wyższą pozycję!

Należy pamiętać, że algorytmy rankingowe są zwykle używane tylko do porównań między graczami, a nie do ustalania wyniku zawodów, biorąc pod uwagę ich zachowanie. Biorąc pod uwagę, że chcesz nagradzać udział, polecam ocenianie graczy w zawodach w inny sposób. Jakieś sugestie:

  • Punktuj graczy na podstawie liczby wygranych.
  • Przypisuj wartości punktowe wygranym / przegranym, np. 2 punkty za wygraną, 1 punkt za przegraną.
  • Policz tylko najlepsze gry X gracza w danym tygodniu / miesiącu.
  • Wymagaj od graczy rozegrania minimalnej liczby gier w celu „zakwalifikowania się”.

Zauważ, że żadne z tych rozwiązań nie da całkowicie „uczciwego” wyniku, ponieważ gracze, którzy grają więcej, uzyskają wyższy wynik niż gracze, którzy nie. Jedynym sposobem na zapewnienie uczciwości jest granie w identyczną liczbę gier.

Blair Holloway
źródło
Myślę, że to sprawiedliwe, że gracze, którzy grają więcej (przy takim samym średnim stosunku wygranych / przegranych) powinni mieć wyższy wynik niż gracze, którzy nie grają za dużo ...
David Gouveia,
3
@davidluzgouveia - to nie jest ścisła definicja „sprawiedliwego”. Przy punktowaniu graczy w turnieju wynik jest „sprawiedliwy”, jeśli żaden z graczy nie ma przewagi, której nie ma inny gracz (bez względu na umiejętności). Powiedziawszy to, myślę, że sprawa, o której mówimy, to zwykła rywalizacja między przyjaciółmi; punktacja polega raczej na zachęcaniu do uczestnictwa, niż na wygrywaniu.
Blair Holloway,
Tak, jest to zwykła konkurencja, a nie ścisły turniej. Oczywiście zgadzam się z komentarzem Davida, dlatego szukam tutaj rozwiązania. Dzięki za wkład!
Jemaclus,
0

Nie wiem o algorytmie ELO, ale może zamiast karać ludzi, którzy nie grają często, nagradzasz ludzi, którzy często grają? Na przykład, jeśli utworzyłeś swój wynik w stylu:

Score = (Wins / Losses) * (Total Games Played) * Some_Scale_Factor

Wtedy ludzie, którzy często grają, prawdopodobnie grają w więcej gier i mają większe szanse na osiągnięcie wyższego wyniku.

Kolejną rzeczą, którą możesz chcieć zmienić, jest zapobieganie wpływowi czyszczenia starych wyników na wpływ na całkowity wynik gracza. To jest główny powód, dla którego ten gracz rośnie w szeregach (a także dlaczego w końcu całkowicie spadnie z list przebojów).

Ponadto ludzie, którzy grają poważnie i osiągają świetne wyniki, prawdopodobnie nie będą zadowoleni, wiedząc, że ich osiągnięcia w końcu znikną i znikną. Ten system jest bardzo zniechęcający.

Można to łatwo naprawić, utrzymując pamięć podręczną „wszystkich rozegranych gier” każdego gracza i „stosunku wygranych do przegranych”, nawet po usunięciu samych wyników.

Dzięki tym informacjom możesz łatwo wywnioskować, ile wygranych i przegranych gracz miał, i odpowiednio je zaktualizować za każdym razem, gdy gra ponownie.

David Gouveia
źródło