İçeriğe atla
Giriş Adımları
Mimari · Katman 03

Sunucu Otoritesi: Doğru Olan Kimin Hesabı

Çok oyunculu bir maçta iki oyuncunun ekranı asla birebir aynı anı göstermez. Bu farkın bir karmaşaya dönüşmemesi için tek bir hakem gerekir. O hakem sunucudur ve bu sayfa onun neyi, nasıl denetlediğini anlatır.

Otorite
Tam sunucu
İstemci rolü
Niyet bildirimi
Denetlenen başlık
4
Düzeltme
Sessiz konum çekme

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.

İstemcinin niyet gönderdiği, sunucunun sonucu hesaplayıp geri yayınladığı otorite akışı şeması
12 · İstemci niyeti gönderir, sunucu sonucu hesaplar ve tüm oyunculara aynı sonucu yayınlar.

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

Otorite modellerinin karşılaştırması
ModelHesap neredeManipülasyon direnciKullanım
Tam sunucu otoritesiYalnızca sunucuYüksekRekabetçi başlıklar
Karma modelSunucu ve istemciOrtaKooperatif başlıklar
İstemci otoritesiYalnızca istemciDüşükTek 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.

Neden önemli

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.