Tek cümlelik kural
İstemci ne söylerse söylesin, doğru olan sunucunun hesabıdır. Bu tek cümle, çok oyunculu tasarımın en temel güvenlik ilkesidir ve bütün doğrulama zinciri onun üzerine kurulur.
Uygulamada bu şu anlama gelir: tarayıcınız sunucuya bir konum bildirmez, bir hareket niyeti bildirir. İleri gitmek istediğinizi söylersiniz, ne kadar ilerlediğinize sunucu karar verir.
Sunucu neleri denetliyor
Denetim, oyunun türüne göre değişse de dört başlık her yerde ortaktır.
- Hareket hızı
- Karakterin bir tick içinde alabileceği azami mesafe sabittir. Fazlası kabul edilmez, düzeltilmez, reddedilir.
- Eylem aralığı
- İki eylem arasındaki asgari süre sunucuda tutulur. Daha sık gelen istekler işlenmez.
- Görüş hattı
- Bir hedefe etki etmek için aradaki engelin sunucu tarafında da boş olması gerekir.
- Kaynak durumu
- Envanter ve kaynak miktarı yalnızca sunucuda tutulur; istemcideki gösterim bir kopyadır.
İstemci tahmini neden var
Her hareket için sunucudan onay beklemek, tuşa bastıktan sonra karakterin yüz milisaniye geç yürümesi demektir. Bu his oynanamaz derecede kötüdür.
Çözüm, istemcinin sonucu tahmin edip hemen çizmesidir. Sunucudan gerçek sonuç geldiğinde iki değer karşılaştırılır. Aynıysa hiçbir şey olmaz; farklıysa karakter sessizce doğru konuma çekilir.
Düzeltmenin görünür hâli
Bu çekme işlemi küçükse fark edilmez. Büyükse, oyuncunun geri sarma veya lastik bant dediği hareket ortaya çıkar. Sebep neredeyse her zaman art arda kaybolan paketlerdir.
Otoritenin üç modeli
| Model | Hesap nerede | Manipülasyon direnci | Kullanım |
|---|---|---|---|
| Tam sunucu otoritesi | Yalnızca sunucu | Yüksek | Rekabetçi başlıklar |
| Karma model | Sunucu ve istemci | Orta | Kooperatif başlıklar |
| İstemci otoritesi | Yalnızca istemci | Düşük | Tek kişilik içerik |
Betrupi kütüphanesindeki çok oyunculu başlıkların tamamı ilk modeli kullanır. Tek kişilik parkur koşularında bile bitiş süresi sunucuda ayrıca denetlenir.
Sunucu otoritesi olmayan bir yapıda, istemci tarafında yapılan tek bir değişiklik tüm maçı bozar. Otorite sunucudayken böyle bir değişiklik yalnızca o oyuncunun ekranını etkiler ve sunucu tarafından hiç kabul edilmez. Denetim kayıtlarının nasıl tutulduğunu güvenlik ve anti-hile sayfasında anlattık.