ERGGalata
← Devlog
·Sunucu

Sunucu karar verir, istemci çizer

Yeteneğin sonucunu istemcide tahmin etmemek bir performans hatası gibi görünüyor. Değil — MMO'da hile yapılamamasının tek yolu bu.

Çoğu oyun motoru sana şunu öğretir: istemci tahmin etsin, sunucu doğrulasın. Tuşa bastığın an efekt oynasın, hasar sayısı uçsun, sunucu arkadan onaylasın. Böylece oyun “tepkisel” hissettirir.

ERG’de bu yok. Tuşa bastığında hiçbir şey olmuyor — ta ki sunucu ne olduğunu söyleyene kadar.

Neden

MMO’da bir yeteneğin sonucu tek bir sayı değil. Hedefin hâlâ menzilde mi, üzerinde hangi aura var, o sırada başka biri ona kalkan attı mı, kritik geldi mi, hedefin direnci ne — bunların hepsi aynı anda ve tek bir otorite tarafından çözülmek zorunda.

İstemciye “sen tahmin et, ben düzeltirim” dersen iki şey oluyor:

  • Düzeltme çirkin. Tahmin tutmadığında ekranda gördüğün şey geri alınıyor. Tek oyunculu oyunda kimse fark etmez; 25 kişilik bir savaşta sürekli oluyor.
  • Tahmin eden istemci güvenilmez istemcidir. Hesabı yapabilen istemci, hesabı yalan söyleyebilen istemcidir. Sunucu her şeyi baştan hesaplayacaksa istemcinin hesabı zaten çöp; hesaplamayacaksa hile kapısı açık.

Bedeli

Gecikme. Tuş ile efekt arasında bir gidiş-dönüş var. İstanbul’dan İstanbul’a ~20 ms, Frankfurt’tan ~50 ms.

Bunu gizlemenin yolu tahmin değil, kabul. Tuşa bastığında istemci sonucu uydurmuyor ama boş da durmuyor: tuş basılı görünüyor, cooldown karartması başlıyor, cast bar doluyor. Bunların hiçbiri sonuç iddia etmiyor — sadece “isteğin alındı” diyor. Sonuç geldiğinde geri alınacak bir şey olmuyor, çünkü hiçbir şey iddia edilmemişti.

Karar #2: Yetenek sonuçları istemcide asla tahmin edilmez.

Aynı kural konumda da geçerli

Karakterinin X-Y konumu sunucuda yaşıyor, milimetre cinsinden, düz bir düzlemde. Godot’un fizik motoru bu konuma dokunmuyor. İstemcinin yaptığı tek şey: sunucunun verdiği X-Y’yi alıp, zemine dikey ışın atarak Z’yi bulmak ve karakteri oraya çizmek.

Kulağa aşırı katı geliyor. Ama alternatifi şu: istemcinin fizik motoru konumu belirlerse, o fizik motorunu değiştiren kişi nereye isterse oraya gider.


Bu kararların ortak yanı şu: hiçbiri oyunu daha eğlenceli yapmıyor. Sadece oyunun on yıl sonra hâlâ oynanabilir olmasını sağlıyor. Bir MMO’da hile yaygınlaşırsa oyun ölür — grafik ne kadar iyi olursa olsun.