# Inside Move, Shoot & AOI: Spatial Interest Filtering Meets Rewind Hitscan

*Published: 2026-11-15 | Category: Netcode & AOI*

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:

1. Actors locomote under `kinematic_ecs` (`0x64`) clamped by `max_speed_mps` and world bounds.
2. Outgoing delta snapshots filter every entity outside each recipient's `aoi_radius`.
3. 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:

1. Her oyuncu `kinematic_ecs` (`0x64`) üzerinde `max_speed_mps` ve harita sınırları içinde hareket eder.
2. Veri düzlemi her alıcıya yalnızca `aoi_radius` yarıçapı içindeki varlıkların delta farklarını paketler.
3. 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.
