← Devblog
Teknik 20.07.2026 · 9 dk okuma

Determinist simülasyon: WebView'de hile ve desync'e karşı

Dövüşü sunucu hesaplıyor, istemci sadece render ediyor. Reklaylar sadece seed ve aksiyon listesi — kilobaytlarla paylaşılır.

Bir PvP oto-savaşçısında en kritik teknik karar şudur: dövüşü kim hesaplıyor? Cevabımız net — sunucu. İstemci yalnızca sonucu render ediyor.

WebView ortamında istemciye güvenmek felakettir. Bellek düzenleyicileri, hız hileleri ve basit desync sorunları oyunu bir ayda çökertir. Bu yüzden simülasyonu tamamen deterministik yaptık: aynı girdi, her cihazda bit bit aynı çıktı.

Determinizm nasıl sağlanıyor

  • Sabit adımlı simülasyon (fixed timestep), kayan nokta yerine tam sayı matematiği.
  • Tohumlanmış (seeded) rastgelelik — aynı seed, aynı sonuç.
  • Sıralı olay kuyruğu; hiçbir şey "aynı anda" olmaz, her şeyin bir sırası var.

Bunun güzel bir yan etkisi var: bir maçın tamamını yeniden oynatmak için ekran kaydına gerek yok. Sadece seed + oyuncu aksiyonları listesini saklıyoruz. Bu birkaç kilobayt ediyor ve bir bağlantıyla paylaşılabiliyor.

Reklay sistemi bize bedava bir viral kanal veriyor: oyuncular clutch anlarını link olarak atabiliyor. Aynı veri, hile tespiti ve denge analizi için de altın değerinde.