Sık oynamayan insanları yönetmek için ELO algoritması


9

Devam eden bir pong yarışmasında oyuncuları sıralamak için ELO algoritmasını kullanıyorum. Çoğu oyuncu her gün oynar, ancak bir ay içinde oynamamış bir oyuncumuz var. Algoritmam şu anda sadece son 30 günde skorları takip ediyor ve sonuç olarak, bu oyuncu hiç oynamamış olmasına rağmen hızla yükseliyor. İlk oyunlarından bir demet kaybetti, ancak son birkaç oyununun çoğunu kazandı, bu da kayıplarının listelerden düştüğü ve puanının yükseldiği anlamına geliyor.

Açıkçası, 30 gün sonra puanları bırakma planım işe yaramıyor. Oyuncuları sık sık oynamadıkları için cezalandırmak için başka hangi yöntemleri kullanabilirim?

Şimdiye kadar bulduğum tek şey, hareketsizlik günlerine dayanan yüzdeye göre puanları azaltmaktır (yani bir kullanıcı bir hafta içinde oynamadıysa, puanları normalin sadece% 70'ine, ve% 100'e kadar puan kazanmak için X kez oynaması gerekir).

Ancak, bu çok keyfi görünüyor. Aktif olmayan oyuncuları başka türlü aktif bir ortamda kullanmak için daha iyi fikir veya önerileriniz var mı?

Şimdiden teşekkürler.

Yanıtlar:


18

Her maç için verilen puanları saklıyor ve daha sonra zaman içinde bu puan ayarlamalarını 'sona eriyor' gibi geliyor. Bu, fark ettiğiniz gibi, kolay sömürüye açıktır.

Standart bir ELO uygulamasında, ELO puanınız sonsuza kadar; puanların sıralama sisteminden bu şekilde ayrılması nihayetinde genel puan deflasyonuna yol açacağından (yani: 1500 artık 'ortalama' anlamına gelmeyecektir) zamanla 'bozulmaz'.

ELO sıralamalarının, oyun oyuncularının genellikle onları düşünme biçiminde "puan" olmadığını unutmayın; bir oyuncunun beceri seviyesini diğer oyunculara göre sıralama girişimidir, ödül değildir. Bu puanlar oyuncuya bir ceza olarak alınmamalıdır, çünkü oyuncuları benzer bir beceri seviyesindeki rakiplere karşı eşleştirmeye çalışmanız gereken tek araçtır. Bu değerleri - sonsuza dek - etkilemesi gereken tek şey, sıralanan diğer oyunculara karşı kazanç ve kayıplardır.

Oyuncuların yüksek bir skor elde etmesini durdurmak ve daha sonra yok olmak, bir daha asla oynamamak isteyen birçok oyun tarafından alınan yaklaşım, skor tablosu ekranı için bir aktivite gereksinimine sahip olmaktır; eğer bir oyuncu 30 gün içinde (ya da her neyse) bir oyun oynamamışsa, öyleyse skor tablosunda görünmez. Oyuncu geri döndüğünde ve başka bir sıralama maçı oynadığında, tam ELO sıralamasında, sanki hiç ayrılmamış gibi geri döner. Yetenek seviyeleri aradaki diğer aktif oyunculara göre değiştiyse, oyun, rakiplere karşı maç kazanma ve kaybetme standart süreci ile bunu hemen fark edecek ve sıralamalarını ayarlayacaktır.


1
+1, bunun neden başarısız olduğuna dair doğru açıklama olsa da, bunun yerine ELO'yu bırakıp tamamen farklı bir şey için giderdim. (Ne olduğunu bilmiyorum, ya da
gönderirim

4
@ Looris Bu son derece mantıklı bir geliştirme seçeneği olurdu. Amaç, insanların objektif beceri düzeylerinin birbirine göre anlamlı bir karşılaştırmasını sağlamak değilse (yani: eşleştirme amaçları için), ELO bir puanlama mekanizması olarak kullanmak için mükemmel bir seçim değildir. Ve hatta eşleştirme için kaputun altında ELO gibi bir sistem kullanan, hatta görüntüleme amacıyla tamamen farklı bir "puan" sistemi kullanan ve insanları daha sık oynamaları için ödüllendiren bazı oyunlar bile var. Örneğin, StarCraft 2 bunu yapar.
Trevor Powell

4

Elo ve TrueSkill gibi algoritmalar bir oyuncunun becerisini , zamanın geçmesine bakılmaksızın oynanan her oyunun sonucuna göre belirler . Bununla birlikte, her iki algoritma da bir "belirsizlik" faktörü ile birlikte gelir - Elo söz konusu olduğunda, K Factoryeni oyuncular için genellikle yüksek bir set vardır, öyle ki Elo puanları "gerçek" beceri puanlarında hızlı bir şekilde birleşir. Belirli bir süre veya belirli sayıda oyundan sonra K Factor, normalde azaltılır, böylece oyunlar arasında derecelendirme daha az değişir.

Gördüğünüz şey muhtemelen tipik Elo davranışıdır (Elo uygulamanıza bağlı olarak): oyuncunuz rakiplerinden daha az oyun oynamıştır, bu da onu daha yüksek bir "yeni oyuncu" yapar K Factor; Oyunlarını kazandığından beri, algoritma onu daha yetenekli bir oyuncu olarak görüyor ve daha yüksek bir ödül veriyor!

Sıralama algoritmaları genellikle oyuncular arasında karşılaştırmalar için sadece kullanılır ve unutmayın değil yarışmalar sonucunu belirlemek için, davranışlarını verilen. Katılımı ödüllendirmek istediğiniz göz önüne alındığında, yarışmaya oyuncuları başka bir şekilde puanlamanızı tavsiye ederim. Bazı öneriler:

  • Oyuncuları kazanma sayısına göre puanlayın.
  • Kazanç / kayıplara puan değerleri atayın, örneğin bir galibiyet için 2 puan, zarar için 1 puan.
  • Belirli bir haftada / ayda sadece oyuncunun en iyi X oyunlarını sayın.
  • Oyuncuların "hak kazanmak" için minimum sayıda oyun oynamalarını zorunlu kılın.

Bu çözümlerin hiçbirinin tamamen "adil" bir sonuç vermeyeceğini unutmayın, çünkü daha fazla oynayan oyuncular, yapmayan oyunculardan daha yüksek bir puana sahip olacaktır. Adaleti sağlamanın tek yolu, oyuncuların aynı sayıda oyun oynamasıdır.


Sanırım daha fazla oynayan oyuncuların (aynı ortalama kazanç / kayıp oranına sahipken) o kadar fazla oynamayan oyunculardan daha yüksek bir skoru olması adil ...
David Gouveia

3
@davidluzgouveia - bu kesinlikle "adil" tanımı değildir. Bir turnuvada oyuncuları puanlarken, hiçbir oyuncu başka bir oyuncunun sahip olmadığı bir avantaja sahip değilse sonuç "adil" olur (beceriye bakılmaksızın). Bunu söyledikten sonra, bahsettiğimiz durum arkadaşlar arasında gündelik bir rekabet; puanlama, katılımı teşvik etmekten tamamen kazanmaktan ziyade.
Blair Holloway

Evet, katı bir turnuvadan ziyade sıradan bir yarışma. David'in yorumuna katılıyorum, açıkçası, bu yüzden burada bir çözüm arıyorum. Girdiniz için teşekkürler!
Jemaclus

0

ELO algoritmasını bilmiyorum, ama sık oynamayan insanları cezalandırmak yerine, sık oynayan insanları ödüllendirmeye ne dersiniz ? Örneğin, puanınızı şöyle bir şey yaptıysanız:

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

O zaman sık sık oynayan insanlar muhtemelen daha fazla oyun oynamaya ve daha yüksek bir skor elde etme şansına sahip olacaktır.

Değiştirmek isteyebileceğiniz başka bir şey de, eski skorların temizlenmesinin oyuncunun toplam skoru üzerinde etkili olmasını önlemektir. Bu oyuncunun saflarda yükselmesinin ana nedeni (ve sonunda sonuçta tamamen düşmesi).

Ayrıca, bir süre ciddi bir şekilde oynayan ve harika bir sicil elde eden insanlar, muhtemelen başarılarının sonunda kaybolacağını ve kaybolacağını bilerek mutlu olmazlar. Bu sistem ciddi şekilde cesaret kırıcı.

Bu, skorları sildikten sonra bile her oyuncunun "oynanan toplam oyun" ve "kazan / kaybet oranının" önbelleğini tutarak kolayca düzeltilebilir.

Bu bilgilerle, oyuncunun kaç galibiyet ve mağlubiyet elde ettiğini kolayca anlayabilir ve her oynadığında bunları güncelleyebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.