İçeriğe atla
BetRupi Laboratuvarı nişanı BetRupi
Teknik

Işınlanma ve netcode: tahmin edilemeyeni taşımak

Ağ katmanı, oyuncuların nereye gideceğini tahmin ederek çalışır. Tek karede metrelerce yer değiştiren bir karakter bu tahmini işe yaramaz hâle getiriyor.

İdil Koralp 11 dakikalık okuma

Çok oyunculu bir modda ekranınızda gördüğünüz görüntü, sunucudan gelen son bilgiyle cihazınızın tahmininin karışımıdır. Sunucu bir karakterin nerede olduğunu söyler; cihazınız o karakterin nereye gideceğini tahmin ederek aradaki boşluğu doldurur.

Bu tahmin tek bir varsayıma dayanır: hareket süreklidir. Sağa koşan karakter bir sonraki karede biraz daha sağdadır. Yanılma payı küçüktür, düzeltme de küçük olduğu için göze batmaz.

Kuantum Sekmesi tam olarak bu varsayımı geçersiz kılıyor.

Sekmenin ağda karşılığı

Karakter A noktasındayken bir anda B noktasında beliriyor. Arada yol yok, hız yok, yön yok. Tahmin motoru ne yaparsa yapsın yanılıyor; yanıldığında da düzeltiyor ve düzeltme büyük olduğu için ekranda sıçrama olarak görünüyor.

İlk alan testinde en sık gelen geri bildirim şuydu: rakip yok oldu, sonra yanımda belirdi. Mekanik zaten buydu, ama hissedilen şey mekanik değil arızaydı.

Burada ince bir ayrım var. Ölçüm doğruydu; oyuncular sunucunun söylediği yeri görüyordu. Yanlış olan, o yeri nasıl gördükleriydi.

İç test ortamında ölçülen konum düzeltmeleri
DurumDüzeltme miktarıOyuncu fark ediyor mu
Normal koşuÇok küçükHayır
Ani yön değişimiKüçükNadiren
Sekme, bildirimsizBüyükHer seferinde
Sekme, bildirimliKüçükNadiren

Niyeti önceden göndermek

Çözüm sekmenin kendisini değil, bildirimini değiştirmek oldu. Karakter sekmeden hemen önce sunucuya bir niyet gönderiyor: sekiyorum, hedefim burası.

Bildirim ile sekmenin gerçekleşmesi arasına çok kısa bir bekleme koyduk. Ağ tarafında genellikle gecikmeyi azaltmaya çalışırsınız; burada tersini yaptık. Küçük ve öngörülebilir bir gecikme ekleyerek büyük ve öngörülemez bir düzeltmeden kurtulduk.

Bu bekleme iki iş birden yapıyor. Diğer oyuncuların cihazları hedefi önceden öğrendiği için yanlış tahmin hiç yapılmıyor; aynı bildirim ekranda kısa bir iz olarak da gösterildiği için rakip artık yok olmuyor, gideceğini haber veriyor.

Mekaniği zayıflatmadan

Bildirimin görünür olması sekmeyi öngörülebilir kılmıyor; yalnızca başladığını duyuruyor. Hedefin nerede olduğu hâlâ gizli. Aksi hâlde modun tamamı işlevini kaybederdi.

Görsel telafi

Teknik düzeltme tek başına yetmedi. Sekme artık doğru görünüyordu ama hâlâ ani hissettiriyordu, çünkü gözün takip edecek hiçbir şeyi yoktu.

İki katman ekledik. Sekmenin başladığı noktada yarım saniye kalan bir iz; hedefte belirmeden hemen önce görünen kısa bir parlaklık. İkisi de kuralı değiştirmiyor, sadece gözün olayı takip etmesini sağlıyor.

Bu katman eklendikten sonra karakterin yok olduğu yönündeki geri bildirim tamamen kesildi. Ölçülen değer daha önce düzelmişti; his ancak burada düzeldi.

Ağ sorunu mu, algı sorunu mu

Bir mekanik bozuk hissettiriyorsa sorunun tamamı ağda olmayabiliyor. Sayılar düzeldikten sonra bile hissin ayrıca çalışılması gerekti. Arayüz tarafındaki karşılığı arayüz rehberinde anlatılıyor.

Hâlâ çözülmemiş olan

Yöntemin bir sınırı var: çok kısa aralıklarla art arda yapılan sekmeler. Bildirim penceresi üst üste binmeye başladığında düzeltme yine büyüyor.

Şimdilik bunu iki sekme arasına konan bir bekleme süresiyle sınırlıyoruz. İyi bir çözüm değil, çünkü sınırlamayı mekaniğin kendi mantığına değil bir ağ kısıtına dayandırıyor. Bunu açıkça yazıyoruz; ileride değişebilir.

Modun oynanış tarafını Kuantum Sekmesi sayfasında, bu yazıda geçen terimleri ise bağlantı sözlüğünde bulabilirsiniz.