The 6 Pluggable Physics & Simulation Solvers (0x61–0x66)

Complete specification of Playna's 6 standalone simulation modules covering opcodes, data-plane tick CPU, transport hints, and client rendering patterns.

The 6 Pluggable Physics & Simulation Solvers

Playna exposes **6 standalone game-agnostic simulation modules**. Studios select their solver inside the ECS schema without touching backend server code.

ProviderOpcodeTick / CPU ProfileRecommended ChannelExample Genres
**`swept_ccd`**`0x61` / `0x20`Solve on shot · 0 idle CPUStream (>1200B) / DatagramBilliards, Carom, Air Hockey
**`ballistics`**`0x62`30 Hz / Shot evaluationDatagram / StreamArchery, Artillery, Grenades
**`rigid_body`**`0x63`60 Hz · 4x Sub-steppingHTTP/3 WT Datagram / WSSVehicle Soccer, Brawlers
**`kinematic_ecs`**`0x64`30 / 64 / 128 HzHTTP/3 WT / WSS / UDPFPS, MOBA, Battle Royale
**`granular_particle`**`0x65`30 Hz · Sparse diffsDatagram / WSSFalling Sand, Fluids, Voxels
**`turn_based`**`0x66`**0 Hz** (Strict per-move)Reliable Ordered StreamChess, Checkers, Cards, Sudoku

Client Scene Rendering Rules

  • **`swept_ccd` (`0x61`):** Submit one impulse command; interpolate streamed collision keyframes and commit final positions strictly on shot completion.
  • **`ballistics` (`0x62`):** Render local projectile arcs from schema wind/gravity constants and reconcile authoritative impact/score frames.
  • **`rigid_body` (`0x63`):** Stream clamped 3D forces and smooth 60 Hz entity snapshots via a short interpolation buffer.
  • **`kinematic_ecs` (`0x64`):** Run responsive client locomotion prediction bounded by `max_speed_mps`, paired with server `T - RTT/2` hitscan checks.
  • **`granular_particle` (`0x65`):** Upload incoming sparse `(x, y, kind)` cells directly to an instanced mesh or GPU data texture.
  • **`turn_based` (`0x66`):** Zero tick traffic while waiting; unlock inputs strictly when `active_slot === mySlot` and enforce monotonic `turn_seq`.

6 Tak-Çalıştır Fizik & Simülasyon Çözücüsü (0x61–0x66)

6 Tak-Çalıştır Fizik & Simülasyon Çözücüsü

Playna veri düzlemi, oyun kurallarından tamamen bağımsız **6 adet ayrık çözücü modülü** sunar. Geliştirici yalnızca şema içinde `simulation` alanını seçer; sunucuya oyuna özel kod yazılmaz.

SağlayıcıOpcodeÖnerilen Tick / CPUTaşıma KanalıÖrnek Oyun Türleri
**`swept_ccd`**`0x61` / `0x20`Olay anında hesap · Boşta 0 CPUStream (>1200B) / DatagramBilardo, Air Hockey, Langırt
**`ballistics`**`0x62`30 Hz / Atış bazlıDatagram / StreamOkçuluk, Topçu, El Bombası
**`rigid_body`**`0x63`60 Hz · 4x Sub-stepHTTP/3 WT Datagram / WSSAraçlı Futbol, Arena Brawler
**`kinematic_ecs`**`0x64`30 / 64 / 128 HzHTTP/3 WT / WSS / UDPFPS, MOBA, Top-Down, MMORPG
**`granular_particle`**`0x65`30 Hz · Seyrek diffDatagram / WSSKum, Sıvı, Yıkılabilir Grid
**`turn_based`**`0x66`**0 Hz** (Sadece hamlede)Güvenilir Sıralı AkışSatranç, Dama, Kart, Sudoku

İstemci Sahnesi Nasıl Render Edilir?

  • **`swept_ccd` (`0x61`):** İstemci tek atış komutu yollar. Sunucudan dönen anahtar kare eğrisi sahnede pürüzsüz enterpole edilir; son pozisyon ve sıra değişimi yalnızca bitiş olayından uygulanır.
  • **`ballistics` (`0x62`):** Çıkış noktası, yön vektörü ve güç gönderilir. İstemci rüzgar/yerçekimi sabitleriyle yayı çizer, isabet ve puan olayını sunucudan eşitler.
  • **`rigid_body` (`0x63`):** Kuvvet/impulse girdileri akarken 60 Hz transform paketleri kısa tamponla monitör yenileme hızında enterpole edilir.
  • **`kinematic_ecs` (`0x64`):** Yerel oyuncu anlık prediction kullanır; sunucu `max_speed_mps` ve tarih halkasında `verify_ray_hit` ile doğrular.
  • **`granular_particle` (`0x65`):** Yalnızca dolu/değişen `(x, y, kind)` hücreleri gelir; istemci bu diziyi instanced mesh veya GPU dokusuna yazar.
  • **`turn_based` (`0x66`):** Boşta sıfır tick paketi üretir. Yalnızca `active_slot === mySlot` iken hamle gönderilir ve `turn_seq` kontrolüyle tahta güncellenir.