Saya menggunakan algoritma ELO untuk memberi peringkat pemain dalam kompetisi pong yang sedang berlangsung. Sebagian besar pemain bermain setiap hari, tetapi kami memiliki satu pemain yang belum bermain dalam sebulan. Algoritma saya saat ini hanya melacak skor selama 30 hari terakhir, dan sebagai hasilnya, pemain ini dengan cepat naik melalui peringkat, meskipun belum pernah bermain. Dia kehilangan banyak pertandingan pertamanya, tetapi memenangkan sebagian besar dari beberapa pertandingan terakhirnya, yang berarti bahwa kekalahannya menurun dari tangga lagu dan skornya naik sebagai hasilnya.
Jelas, rencana saya untuk menurunkan skor setelah 30 hari tidak berhasil. Metode apa lagi yang bisa saya gunakan untuk menghukum pemain karena tidak sering bermain?
Satu-satunya hal yang saya buat sejauh ini adalah mengurangi poin berdasarkan persentase yang didasarkan pada hari tidak aktif (yaitu jika pengguna tidak bermain dalam seminggu, poinnya hanya bernilai 70% dari normal, dan dia harus bermain X kali untuk mendapatkan kembali hingga 100% poin).
Namun, ini sepertinya terlalu arbitrer. Adakah yang punya ide atau saran yang lebih baik untuk menangani pemain yang tidak aktif di lingkungan yang aktif?
Terima kasih sebelumnya.
sumber
Algoritma seperti Elo dan TrueSkill menentukan keterampilan pemain berdasarkan hasil dari setiap permainan yang dimainkan, tanpa memperhatikan berlalunya waktu. Namun, kedua algoritma tersebut datang dengan faktor "ketidakpastian" - dalam kasus Elo, ada
K Factor
yang biasanya ditetapkan tinggi untuk pemain baru, sehingga peringkat Elo mereka akan menyatu pada peringkat keterampilan "benar" mereka dengan cepat. Setelah waktu yang ditentukan atau jumlah permainan yangK Factor
ditentukan, biasanya dikurangi, sehingga peringkat berubah lebih sedikit di antara permainan.Apa yang Anda lihat adalah perilaku Elo yang khas (tergantung pada implementasi Elo Anda): pemain Anda telah memainkan lebih sedikit permainan daripada pesaingnya, yang membuatnya menjadi "pemain baru" dengan pemain yang lebih tinggi
K Factor
; karena dia memenangkan permainannya, algoritme melihatnya sebagai pemain dengan keterampilan lebih tinggi dan memberinya peringkat yang lebih tinggi!Perhatikan bahwa algoritma peringkat umumnya hanya digunakan untuk perbandingan antara pemain, dan bukan untuk menentukan hasil kompetisi, mengingat perilaku mereka. Mengingat Anda ingin menghargai partisipasi, saya akan merekomendasikan mencetak gol dalam kompetisi dengan cara lain. Beberapa saran:
Perhatikan bahwa tidak satu pun dari solusi ini akan memberikan hasil yang sepenuhnya "adil", karena pemain yang bermain lebih banyak akan memiliki skor lebih tinggi daripada pemain yang tidak. Satu-satunya cara untuk memastikan keadilan adalah bagi pemain untuk memainkan jumlah permainan yang sama.
sumber
Saya tidak tahu tentang algoritma ELO, tetapi bagaimana alih-alih menghukum orang yang tidak sering bermain, Anda menghadiahkan orang yang sering bermain? Misalnya jika Anda membuat skor Anda seperti:
Maka orang-orang yang sering bermain mungkin akhirnya akan bermain lebih banyak dan memiliki lebih banyak peluang untuk mencapai skor yang lebih tinggi.
Dan hal lain yang mungkin ingin Anda ubah adalah untuk mencegah pembersihan skor lama agar tidak berdampak pada skor total pemain. Itulah alasan utama mengapa pemain itu naik pangkat (dan juga mengapa ia akhirnya akan jatuh sepenuhnya dari tangga lagu).
Juga, orang-orang yang bermain serius untuk sementara waktu dan mencapai rekam jejak yang hebat, mungkin tidak akan senang mengetahui bahwa prestasi mereka pada akhirnya akan memudar dan menghilang. Sistem itu sangat mengecewakan.
Ini mudah diperbaiki hanya dengan menyimpan cache dari "total permainan yang dimainkan" setiap pemain dan "rasio menang / kalah", bahkan setelah Anda menghapus skor sendiri.
Dengan informasi itu, Anda dapat dengan mudah menyimpulkan kembali berapa banyak kemenangan dan kekalahan yang dimiliki pemain dan memperbaruinya sesuai setiap kali ia bermain lagi.
sumber