Algoritma ELO untuk menangani orang yang tidak sering bermain


9

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.

Jawaban:


18

Sepertinya Anda menyimpan poin yang diberikan untuk setiap pertandingan, lalu 'kedaluwarsa' penyesuaian poin tersebut dari waktu ke waktu. Yang, seperti telah Anda perhatikan, mudah dieksploitasi.

Dalam implementasi ELO standar, skor ELO Anda selamanya; itu tidak 'membusuk' seiring waktu, karena memiliki poin meninggalkan sistem peringkat dengan cara ini pada akhirnya akan mengarah pada deflasi skor keseluruhan (yaitu: 1500 tidak akan lagi berarti 'rata-rata').

Ingatlah bahwa peringkat ELO bukan "poin" dalam cara yang biasanya dipikirkan oleh para pemain game; mereka adalah upaya untuk memeringkat tingkat keterampilan pemain relatif terhadap pemain lain, mereka bukan hadiah. Poin-poin ini tidak boleh diambil sebagai hukuman kepada pemain, karena itu satu-satunya alat yang Anda harus coba untuk mencocokkan pemain melawan lawan dari tingkat keterampilan yang sama. Satu-satunya hal yang harus mempengaruhi nilai-nilai ini - selalu - adalah menang dan kalah melawan pemain peringkat lainnya.

Pendekatan yang diambil oleh sebagian besar permainan yang ingin menghentikan pemain untuk mencapai skor tinggi dan kemudian menghilang, tidak pernah bermain lagi, adalah memiliki persyaratan kegiatan untuk tampilan papan peringkat; jika seorang pemain tidak memainkan permainan dalam 30 hari (atau apa pun), mereka hanya tidak muncul di papan peringkat sampai mereka melakukannya. Ketika pemain kembali dan memainkan pertandingan peringkat lainnya, mereka kembali dengan peringkat ELO penuh mereka, persis seolah-olah mereka tidak pernah pergi. Jika tingkat keahlian mereka telah berubah relatif terhadap pemain aktif lainnya untuk sementara, permainan akan dengan cepat menyadari hal itu dan menyesuaikan peringkat mereka, melalui proses standar untuk menang dan kalah dalam pertandingan melawan lawan.


1
Memberi +1 sementara ini adalah penjelasan yang benar tentang mengapa ini gagal, saya hanya akan menjatuhkan ELO dan pergi untuk sesuatu yang sama sekali berbeda. (Saya tidak tahu apa, atau saya akan mempostingnya ^^)
o0 '.

4
@ Lohoris Itu akan menjadi pilihan pengembangan yang sangat masuk akal. Jika tujuannya bukan untuk mempertahankan perbandingan yang bermakna antara tingkat keterampilan objektif orang relatif satu sama lain, (yaitu: untuk tujuan perjodohan), maka ELO bukan pilihan yang bagus untuk digunakan sebagai mekanisme penilaian. Dan bahkan ada beberapa permainan di luar sana yang menggunakan sistem seperti ELO di bawah tenda untuk perjodohan, sambil menggunakan sistem "poin" yang sama sekali berbeda untuk tujuan tampilan, yang memungkinkan mereka memberi penghargaan kepada orang-orang karena bermain lebih sering. StarCraft 2 melakukan ini, misalnya.
Trevor Powell

4

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 Factoryang 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 yang K Factorditentukan, 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:

  • Skor pemain berdasarkan jumlah kemenangan.
  • Tetapkan nilai poin untuk menang / kalah, misalnya 2 poin untuk menang, 1 poin untuk kerugian.
  • Hanya hitung game X terbaik pemain dalam satu minggu / bulan tertentu.
  • Mengharuskan para pemain untuk bermain dalam jumlah minimum permainan untuk "memenuhi syarat".

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.


Saya pikir itu hanya adil bahwa pemain yang bermain lebih banyak (sementara memiliki rasio menang / kalah yang sama) harus memiliki skor yang lebih tinggi daripada pemain yang tidak bermain sebanyak ...
David Gouveia

3
@davidluzgouveia - itu tidak sepenuhnya definisi "adil". Saat mencetak pemain di turnamen, hasilnya "adil" jika tidak ada pemain yang memiliki keunggulan yang tidak dimiliki pemain lain (tanpa memperhatikan skill). Karena itu, saya pikir kasus yang kita bicarakan adalah persaingan santai antara teman-teman; penilaian lebih pada mendorong partisipasi daripada menang langsung.
Blair Holloway

Ya, ini adalah kompetisi biasa dan bukan turnamen ketat. Saya setuju dengan komentar David, jelas, itulah sebabnya saya mencari solusi di sini. Terima kasih atas masukan Anda!
Jemaclus

0

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:

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

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.