Multiplayer Oyun Sunucularında Tickrate, UDP ve Gecikme (Lag) Optimizasyonu
Neden CS:GO ve Valorant Gibi Oyunlarda TCP Kullanılmaz?
Gerçek zamanlı rekabetçi çok oyunculu (Multiplayer) oyunların ağ mimarisi, web programlamasından tamamen farklı bir evrendir. Saniyenin onda biri gibi bir gecikme (Latency), merminin hedefi vurup vurmadığını belirler.
UDP Protokolünün Seçimi
Eğer karakterin konumunu (X, Y, Z koordinatları) TCP üzerinden gönderirseniz ve paket yolda kaybolursa, TCP o paket tekrar gelene kadar arkadan gelen yeni paketleri sıraya sokup bekletir (Head-of-Line Blocking). Oyun bir anlığına donar ve sonra her şey hızla akar. UDP (User Datagram Protocol) ise kaybolan paketi umursamaz. Geçmişteki konumu beklemenin anlamı yoktur, oyuncu zaten hareket etmiştir; önemli olan saniyenin 60'ta biri kadar önce gelen en güncel X, Y, Z verisidir.
Tickrate (Sunucu Güncelleme Hızı) Nedir?
Tickrate, sunucunun oyun dünyasındaki her şeyi (oyuncular, mermiler, objeler) saniyede kaç kez hesaplayıp istemcilere (oyunculara) gönderdiğidir.
64 Tick: Sunucu her 15.6 milisaniyede bir oyun dünyasını günceller. (Eski CS:GO Matchmaking standardı).
128 Tick: Sunucu her 7.8 milisaniyede bir oyun dünyasını günceller. Mermi yolları (hitbox) çok daha keskindir ancak sunucu CPU'suna muazzam yük bindirir.
Oyun sunucusu (Dedicated Server) kiralarken ve optimize ederken CPU saat hızına (Clock Speed) dikkat etmek çekirdek sayısından (Core Count) çok daha kritiktir çünkü oyun sunucuları genellikle tek çekirdek performansına yüklenir.
Rekabetçi oyunlarda neden TCP değil de UDP kullanıldığını Head-of-line blocking üzerinden harika açıklamışsınız. Efsane bir makale.
Cevap yazmak için giriş yapmalısınız.
Giriş Yap