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 MechanicSolver ConfigurationServer 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.