Inside Move, Shoot & AOI: Spatial Interest Filtering Meets Rewind Hitscan
Cutting redundant bandwidth in wide arenas while keeping sub-frame shot validation cheat-proof.
One of the most common questions in multiplayer action architecture is straightforward: does **Shoot** belong inside **Move** physics, or in a separate solver?
Move + AOI: Replicating Only What Each Player Can See
In Playna, step-distance validation and Area of Interest (`visibility: "aoi"`) operate inside the replication layer alongside your simulation solver:
- Actors locomote under `kinematic_ecs` (`0x64`) clamped by `max_speed_mps` and world bounds.
- Outgoing delta snapshots filter every entity outside each recipient's `aoi_radius`.
- Withholding distant enemy coordinates from the wire simultaneously shrinks packet bandwidth and prevents client radar/map cheats.
Shoot: Hitscan Ray vs Ballistic Projectile
| Weapon Mechanic | Solver Configuration | Server Authority |
| **Instant Hitscan (CS / Valorant)** | `kinematic_ecs` + `lag_compensation` | Rewinds target spheres to `T - RTT/2` and checks 3D ray intersection |
| **Arcing Projectile (PUBG / Archery)** | `kinematic_ecs` + `secondary: ["ballistics"]` | Locomotion stays in AOI while fire frames evaluate gravity, wind & drag |
On the client, discrete 20–60 Hz updates smooth cleanly up to 144/240 Hz via buffered `LERP` and quaternion `SLERP`.
Move, Shoot ve AOI: Konum Filtreleme ile Lag-Compensated Hitscan Nasıl Birleşir?
Çok oyunculu aksiyon oyunlarında geliştiricilerin en sık sorduğu soru şudur: Ateş etme (**Shoot**) mantığı hareket (**Move**) fiziğinin parçası mıdır, yoksa ayrı mı çalışır?
Move + AOI: Her Oyuncuya Sadece Yakınındaki Dünya
Playna’da konum doğrulama (`validate_step_distance`) ve Area of Interest (`visibility: "aoi"`) doğrudan çoğaltma katmanında çalışır:
- Her oyuncu `kinematic_ecs` (`0x64`) üzerinde `max_speed_mps` ve harita sınırları içinde hareket eder.
- Veri düzlemi her alıcıya yalnızca `aoi_radius` yarıçapı içindeki varlıkların delta farklarını paketler.
- Haritanın uzak ucundaki rakiplerin konumu ağ paketine hiç girmediği için hem bant genişliği korunur hem wallhack/radar hileleri kesilir.
Shoot: Hitscan Ray mı, Balistik Mermi mi?
| Silah / Atış Türü | Seçilen Sağlayıcı | Sunucu Doğrulaması |
| **Anlık Hitscan (CS / Valorant)** | `kinematic_ecs` + `lag_compensation` | Dünyayı `T - RTT/2` tarihine geri sarıp 3D ray-küre kesişimi test eder |
| **Düşüşlü / Rüzgarlı Atış (PUBG / Ok)** | `kinematic_ecs` + `secondary: ["ballistics"]` | Yürüme AOI ile akarken atış eğrisi yerçekimi/rüzgar ile hesaplanır |
İstemci tarafında ise 20–60 Hz gelen konum kareleri `t_render = t_now - (1.5 ~ 2.0 * dt_tick)` tamponu üzerinden `LERP` ve `SLERP` ile monitör hızınıza (144/240 Hz) yumuşatılır.