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.
| Provider | Opcode | Tick / CPU Profile | Recommended Channel | Example Genres |
| **`swept_ccd`** | `0x61` / `0x20` | Solve on shot · 0 idle CPU | Stream (>1200B) / Datagram | Billiards, Carom, Air Hockey |
| **`ballistics`** | `0x62` | 30 Hz / Shot evaluation | Datagram / Stream | Archery, Artillery, Grenades |
| **`rigid_body`** | `0x63` | 60 Hz · 4x Sub-stepping | HTTP/3 WT Datagram / WSS | Vehicle Soccer, Brawlers |
| **`kinematic_ecs`** | `0x64` | 30 / 64 / 128 Hz | HTTP/3 WT / WSS / UDP | FPS, MOBA, Battle Royale |
| **`granular_particle`** | `0x65` | 30 Hz · Sparse diffs | Datagram / WSS | Falling Sand, Fluids, Voxels |
| **`turn_based`** | `0x66` | **0 Hz** (Strict per-move) | Reliable Ordered Stream | Chess, 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 / CPU | Taşıma Kanalı | Örnek Oyun Türleri |
| **`swept_ccd`** | `0x61` / `0x20` | Olay anında hesap · Boşta 0 CPU | Stream (>1200B) / Datagram | Bilardo, Air Hockey, Langırt |
| **`ballistics`** | `0x62` | 30 Hz / Atış bazlı | Datagram / Stream | Okçuluk, Topçu, El Bombası |
| **`rigid_body`** | `0x63` | 60 Hz · 4x Sub-step | HTTP/3 WT Datagram / WSS | Araçlı Futbol, Arena Brawler |
| **`kinematic_ecs`** | `0x64` | 30 / 64 / 128 Hz | HTTP/3 WT / WSS / UDP | FPS, MOBA, Top-Down, MMORPG |
| **`granular_particle`** | `0x65` | 30 Hz · Seyrek diff | Datagram / WSS | Kum, 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.