İçeriğe atla
Giriş Adımları
Genel bakış

Platform Mimarisi: Web Sayfası Değil, Gerçek Zamanlı Uygulama

Klasik bir web sayfası sunucudan gelen metni düzenler, ekrana koyar ve işi biter. Oyun ise sayfanın işinin bittiği yerde başlar: sekme açık kaldığı sürece dönen bir döngü kurar ve o döngüyü kilometrelerce ötedeki bir simülasyonla senkron tutmaya çalışır.

Kare bütçesi
16,7 ms
Hedef kare
60 fps
Kurulum boyutu
0 MB
Oyun sayısı
8

Sekmede dönen döngü

Bir oyun sekmesi açıldığı andan kapandığı ana kadar dört adımlık bir döngü kurar: girdi oku, durumu güncelle, ekrana çiz, tekrarla. Bu döngü tek kişilik bir başlıkta kendi kendine yeter.

Çok oyunculu bir başlıkta ise aynı döngünün bir kopyası sunucuda da dönmektedir. İki döngünün sürekli birbirine yaklaşması gerekir. Tarayıcı oyunlarının bütün zorluğu, bütün zarafeti de bu buluşma noktasındadır.

Girdi, güncelleme, çizim ve tekrar adımlarından oluşan oyun döngüsü şeması
01 · Tek turda gerçekleşen dört adım ve bunların sunucu kopyasıyla eşleşme noktası.

Her turun 16,7 milisaniyesi

Döngü saniyede 60 kez döndüğünde her tur için yaklaşık 16,7 milisaniyelik bir bütçe kalır. Bu bütçeye sığması gerekenler sırasıyla şunlardır:

  1. Fizik ve çarpışma hesabı
  2. Animasyon karışımı
  3. Ses tetikleyicileri
  4. Arayüz çizimi
  5. Ağdan gelen durum paketlerinin işlenmesi

Bütçe aşıldığı anda kare düşer. Oyuncu bunu kasma diye tarif eder; ölçüm tarafındaki karşılığı ise kare süresinin bir anda 16,7 milisaniyenin üstüne çıkmasıdır.

Ölçüt farkı

Ortalama kare hızı ile kare süresinin kararlılığı aynı şey değildir. Ortalama 90 fps veren ama arada 40 milisaniyelik sıçramalar üreten bir yapılandırma, sabit 60 fps veren bir yapılandırmadan daha kötü hissettirir. Ayrıntısı performans ayarları sayfasındadır.

Aşamalı yükleme

Betrupi giriş adımı tamamlandığında tarayıcı önce yalnızca çekirdek motoru ve menü varlıklarını indirir. Bir oyunun kendi dosyaları, siz o oyuna girdiğinizde parça parça akar.

Bunun iki pratik sonucu var. İlk açılış süresi kısalır ve hiç açmadığınız bir oyunun varlıkları hiç indirilmez. Aynı oyunu ikinci kez açtığınızda dosyalar önbellekten geldiği için giriş belirgin biçimde hızlanır.

Sürüm karmaşasının olmaması

Masaüstü oyunlarında herkesin aynı yamada olması gerekir; biri güncellemeyi atlarsa eşleşemez. Tarayıcı tarafında sunucu yeni sürümü yayımladığı anda, bir sonraki sayfa yenilemesinde herkes aynı koddadır.

Bu iki şeyi aynı anda sağlar: hata düzeltmeleri hızlı ulaşır ve kural değişiklikleri herkes için aynı anda geçerli olur. Bir denge düzenlemesinin tüm oyuncu havuzunda eşzamanlı yürürlüğe girmesi, rekabetçi modlar için ciddi bir güvencedir. Yayımlanan sürümleri değişiklik günlüğünde izleyebilirsiniz.

Hesap sunucuda, cihaz serbest

İlerleme ve hesap bilgisi sunucuda tutulur. Evdeki bilgisayarda bıraktığınız seviye, akşam telefondan girdiğinizde olduğu gibi karşınıza çıkar. Yerel diskte saklanan tek şey genellikle küçük bir önbellek ve tercih dosyasıdır.

Aynı hesapla farklı cihazlardan giriş yapılabilir, ancak aynı anda yalnızca tek oturum aktif kalır. Bu kısıt, sunucu tarafındaki durum kopyasının tek olmasından kaynaklanır.

Sekiz oyun, sekiz yük profili

Aynı platformdaki başlıklar altyapıya çok farklı yükler bindirir. Aşağıdaki tablo hangi oyunun hangi kaynağı zorladığını özetler.

Betrupi oyunlarının teknik yük profili
OyunTürOyuncuSüreAğ hassasiyeti
Çekirdek ProtokolTaktiksel nişancı5v522-28 dkÇok yüksek
Devre ArasıArena nişancı3v38-12 dkYüksek
Paket KaybıAsimetrik kaçış4v112-16 dkOrta-yüksek
Sunucu OdasıKooperatif savunma4 kişi15-20 dkOrta
Gecikme HattıZamanlama yarışı6 kişi5-8 dkOrta, girdi odaklı
Veri AkışıHız parkuru1-8 kişi3-6 dkDüşük
Şifre KırıcıMantık bulmacası1v16-10 dkÇok düşük
Kod AğıSıra tabanlı strateji2-4 kişi18-25 dkÇok düşük
Kapsam

betrupi.biz bağımsız bir teknik referans sitesidir, platformun kendisi değildir. Hesap işlemi yürütmez, giriş formu barındırmaz ve ziyaretçiden bilgi istemez. Resmî adresi kendi başınıza nasıl doğrulayacağınızı official adres sayfasında anlattık.

Sıradaki bölüm

Mimarinin en alt katmanı görüntü tarafıdır. WebGL ile WebGPU arasındaki farkı ve otomatik ölçekleme mantığını orada ele aldık.