📐 Hesaplama Sistemi

ELO Nasıl Hesaplanır?

MünazaRank'in her adımını şeffaf bir şekilde açıklayan tam teknik döküman. Matematiği kendiniz doğrulayabilirsiniz.

🧭 Genel Bakış

Sistemimiz, geleneksel Elo'yu turnuva münazerası için özelleştirmiş bir varyantı kullanır. Temel farklılıklar şunlardır: tur bazlı hesaplama (turnuva sonu değil, her tur ayrı ayrı), konuşmacı puanına (SP) dayalı performans ödülü, ve dinamik K-faktörü (deneyim arttıkça daha istikrarlı Elo).

1️⃣ Dinamik K-Faktörü

K-faktörü, bir oyuncunun Elo'sunun ne kadar hızlı değişeceğini belirler. Yeni oyuncular için büyük, deneyimliler için küçüktür. Biz "maç sayısı" yerine girilen salon (oda) sayısını kullanırız; çünkü 6 rakibe karşı aynı anda oynanan British Parliamentary formatında H2H sayacı pairwise kayıtlar nedeniyle şişirilebilir.

match_count = girilen salon sayısı (her tur +1)

K-Faktörü:
  match_count ≤ 20  →  K = 40   (Yerleştirme dönemi)
  match_count ≤ 100 →  K = 35   (Gelişim dönemi)
  match_count  > 100 →  K = 30   (Veteran)

Unranked Barajı:
  total_tournaments < 4 ise oyuncu sıralamada “Unranked” görünür.
  4. turnuvasında gerçek sırasına yerleşir.

2️⃣ Takım Elosu ve Beklenen Skor (EA)

Her tur başlamadan önce, her oyuncunun takım Elosu hesaplanır: oyuncunun kendi Elo'su ile takım arkadaşının Elo'sunun ortalaması. Bu değer, beklenen skoru (EA) üretmek için rakiplerin Elosu ile karşılaştırılır.

TeamElo  = (oyuncuElo + ortakElo) / 2

// EA için rakip TeamElo = aynı salondaki diğer 3 takımın ortalama TeamElosu
// (team1 + team2 + team3) / 3  (kendi takımı hariç)

EA = 1 / (1 + 10^((rakipTeamElo - TeamElo) / 400))

EA 0 ile 1 arasındadır. 0.5 → iki taraf eşit güçte; 0.8 → oyuncu ezici favori demektir.

3️⃣ Gerçekleşen Skor (SA) ve Dağıtım Modu

Takımın kazandığı veya kaybettiği toplam ELO, takım üyeleri arasında "mutlak SP farkı" eşiğine göre ikiye ayrılır.

🟣
Gelişim Modü (Kazanım)
SP Farkı = 0 (Tam Eşit, Prelim)

İki partner birebir aynı SP aldığında düşük Elo’luya büyük pay verilir. Gelişim şansı tanınır.

A_Kazanım_Payı = Elo_B / (Elo_A + Elo_B)
// Düşük Elo’lu → büyük pay (ters oranlı)
⚖️
Performans Modü (Kazanım)
SP Farkı ≥ 1 (Prelim)

Herhangi bir SP farkı varsa Gelişim ödülü iptal; daha yüksek SP alan aslan payını alır. ELO eşitliği sonucu değiştirmez.

mult = 0.5 + (SP_A - SP_B) / 20   [cap: 0.1 – 0.9]
// Fark=1→55/45 | Fark=2→60/40 | Fark=5→75/25 | Fark≥8→90/10
🛡️
Kayıp Modu (SP Oranına Göre)
Δ < 0 (Prelim)

Takım kaybederse daha yüksek SP alan oyuncu daha az Elo kaybeder. Dağılım ters SP oranıyla belirlenir. Outround'larda SP olmadığından Elo-bazlı kayıp uygulanır.

mult = 0.5 - (SP_A - SP_B) / 20   [cap: 0.1 – 0.9]
// SP_A > SP_B ise A daha az kaybeder | Outround'da ELO-bazlı
🦸‍♂️
IRON (Tek Kişi) Dağıtımı
Gelmeyen Yarışmacı

Bir yarışmacının maça gelmeyip 0 SP aldığı, partnerinin ise IRON olarak (iki konuşma yaparak) tek başına yarıştığı turlar için özel moddur.

Eğer S1 = 0 SP ise:
  S1_Payı = 0 % (Ne kazanır ne kaybeder)
  S2_Payı = 100 % (Takımın tüm kaderi onda biter)
💡 Outround (Eleme) Maçlarında Ne Olur? Final, yarı final gibi konuşmacı puanlaması (SP) yapılmayan turlarda standart Kazanım / Kayıp Modu çalışır.

4️⃣ Elo Delta (Ham Değişim)

Her tur için Elo değişimi klasik formülle hesaplanır:

EloDelta = K × (SA - EA)

Örnek:
  K = 32, EA = 0.45 (hafif underdog), SA = 1.0 (1. sıra)
  EloDelta = 32 × (1.0 - 0.45) = +17.6  ≈ +18

  K = 32, EA = 0.70 (favori), SA = 0.0 (4. sıra)
  EloDelta = 32 × (0.0 - 0.70) = -22.4  ≈ -22

Tüm prelim ve outround (eleme) turlarındaki delta'lar kümülatif olarak toplanır. Eleme turları, SP yoksa Gelişim / Kayıp modunda hesaplanır.

⚔️ Outround (Eleme) Turu — Pairwise Maç Mantığı

Eleme turlarında tam bir 1–2–3–4 puanlı sıralama olmayabilir; bunun yerine "tur atlandı / elendi" bilgisi vardır. Sistem bu duruma göre otomatik olarak doğru pairwise skorunu üretir.

🥊Çeyrek / Yarı Final Modu4 takım, 2 çıkar
KarşılaşmaSASBAçıklama
Çıkan 1 ↔ Çıkan 20.50.5İkisi de geçti → berabere
Elenen 3 ↔ Elenen 40.50.5İkisi de elendi → berabere
ÇıkanElenen10Çıkan kazandı sayılır
🏆Final Modu4 takım, tam sıralama

Admin panelinde takımlar 1.–2.–3.–4. şeklinde sıralanmışsa klasik pairwise çalışır: 1. > 2. > 3. > 4. (her üst sıra alttaki tüm sıraları yener). Sadece şampiyon biliniyorsa, şampiyon diğer 3'ünü yener (SA=1), kalan 3 birbiriyle berabere (SA=0.5).

🔍 SP Fallback: Eleme turunda SP yoksa sistem spDiff = 0kabul eder ve otomatik olarak Gelişim / Kayıp modu devreye girer. Admin panelinden SP'leri manuel girdiysen ve fark > 1 ise Performans modu tetiklenir.

5️⃣ Kümülatif Başarı Bonusları

Turnuvalarda elde edilen başarılar, kariyerde kalıcı bir bonus oluşturur. Her break +5 Elo, her En İyi Konuşmacı (Best Speaker) ödülü ise +15 Elo değerindedir. Bu bonuslar bir defaya mahsus değil, kariyerdeki tüm başarılar kümülatif olarak eklenir.

BonusTotal = (career_break_count × 5) + (best_speaker_count × 15)

// Örnek: 3 kez break eden ve 1 kez en iyi konuşmacı olan oyuncu
BonusTotal = (3 × 5) + (1 × 15) = +30 Elo

// Hesaplama sonu:
EloSonu = EloBaşlangıcı + toplam_prelim_delta + BonusTotal
✅ Bonuslar idempotent'tir: yani veriler sıfırlanıp yeniden hesaplansa bile aynı sonuç üretilir çünkü başarılarher turnuva için ayrı ayrı takip edilir.

6️⃣ Tam Hesaplama Akışı — Örnek Senaryo

Aşağıdaki örnek, bir oyuncunun 4 prelim turunu ve 1 break'i kapsayan tam hesaplama adımlarını gösterir:

TurKTeamEloRakipEloEAModSADelta
Tur 140100010500.43Gelişim0.60+7
Tur 24010079900.52Performans0.85+13
Tur 340102011000.39Gelişim0.40+0
Tur 440102010200.50Performans0.20-12
🏆 Çeyrek Final40100810800.40Outround-Gelişim0.63+9
Toplam (Prelim + Outround)+17
Break Bonusu (1. break → +5)+5
Yeni Elo (1000 + 17 + 5)1022

7️⃣ Sıralama Tiers

Oyuncular Elo değerlerine göre altı sınıfa ayrılır:

🏆 Şampiyon> 2000 Elo
💎 Uzman1700 – 1999 Elo
⚡ Avantajlı1400 – 1699 Elo
📈 Yükselen1200 – 1399 Elo
🎯 Standart1000 – 1199 Elo
🌱 Başlangıç< 1000 Elo

Sık Sorulan Sorular

Q.Break bonusunu kimler alır ve nasıl doğrulanır?
A. Sadece turnuva sonuçlarında resmi olarak 'break' ettiği açıklanan takımların konuşmacıları +5 ELO break bonusu kazanır. Gölge (shadow) veya swing takımlar break bonusundan hariç tutulur. Break yapılan turnuvaların listesi ve toplam break sayısı konuşmacı profilinde doğrudan turnuva istatistikleri (tournament_stats) tablosundan doğrulanarak gösterilir.
Q.Eleme (outround) turları Elo hesabına giriyor mu?
A. Evet, artık giriyor. SP verisi yoksa sistem SP farkı = 0 kabul ederek Gelişim/Kayıp modunu çalıştırır. Admin panelinden SP'leri manuel girebilirsin; girersen fark > 1 olursa Performans modu devreye girebilir. Pairwise mantığı çeyrek/yarı final (2 çıkan, 2 elenen) ve final (tam sıralama) formatlarına göre otomatik seçilir.
Q.H2H (Head-to-Head) nasıl işliyor?
A. BP formatında bir salonda 4 takım vardır. Oyuncunun 3 rakiple aynı anda maç yaptığı kabul edilir ve H2H kayıtları pairwise (ikili) olarak tutulur. Yani 1 turda oyuncu 3 ayrı H2H maçı oynamış sayılır.
Q.Aynı adda iki konuşmacı olursa ne olur?
A. Admin panelindeki "Alias Yönetimi" bölümünden iki ismi birleştirebilirsiniz. Birleştirme sonrası sistem tüm verileri yeniden hesaplar.
Q.SP sıfır olan turlar nasıl işlenir?
A. SP yoksa (prelim ya da outround fark etmez) sistem SP farkını 0 kabul eder → Gelişim/Kayıp modu devreye girer: kazanırsa düşük Elo'luya daha fazla ödül, kaybederse yüksek Elo'ludan daha fazla düşülür.
Q.Outround'da log'da ne görünür?
A. Round log kayıtlarında eleme turları için "outround-gelisim", "outround-kayip" veya "outround-berabere" etiketleri kullanılır. Bu sayede prelim turlarıyla eleme turları log içinde kolayca ayırt edilebilir.