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ę.
źródło
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 Factor
jest 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ść taK Factor
jest 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:
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.
źródło
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:
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.
źródło