Yapmasi kolay, mukellestirmesi cok zor bir olay bu. Blizzard'da yalnizca bunun uzerine calisan ML ekibi var.
Kisinin yetenekleri - takimin yetenekleri - ping degerleri - queue da bekleme suresi gibi faktorleri de dahil ettiginde isler karismaya basliyor.
Tum bunlara oyun ici mekanikler ( her takimda healer olmali ya da hic birinde olmamali vs ) gib seyleri de eklersen dedigim gibi mukemmellestirmesi cok zor oluyor.
Ayrica coldstart problemi ya da smurfing problemi gibi detaylar da var. Bir oyuncu sistemin atadigi ratingden daha iyi ya da daha kotu oynuyor olabilir. Bununla bas etmek icin gizli bir baska rating daha var sunucuda saklanan.
Sisteme yeni katilan yeni bir oyuncunun ratingini belirlemek de mesele. Genelde yeni gelenin ortalama oldugunu varsayman gerekiyor.
Nitekim dedigim gibi cok kapsamli bir is profesyonelce yapmak istersen ama baslangic icin bence en uygunu:
oyuncunun ratingi : X
oyuncunun ping degeri: Y
β => Rating makasi
θ=> Ping makasi
X ± β degerindeki oyuncular kumesi -> S1
y ± θ degerindeki oyuncular kumesi -> S2
S1 ∩ S2 -> Kesisim kumesindeki oyuncular yakin rating ve ping'deki oyuncular. Bu cocuklar arasindan FIFO yontemiyle ( en uzun suredir sira bekleyen ) secilim yapip bir araya getirebilirsin.
Bekleme suresi arttikca β ve θ degerlerini arttirmalisin. ( Yoksa sonsuza kadar sira bekleyebilir uzak bir yerden baglaniyorsa )
Bu algoritmanin en buyuk sorunu, 9 tane dusuk pingli oyuncuyla 1 tane yuksek pingli oyuncunun bir araya gelme ihtimali ama buna bir cozum yok.