# Multi-Physics & Hybrid Composition (secondary_providers)

> Rules for composing primary and secondary physics solvers inside one match room, plus forbidden redundant pairs.

# Multi-Physics & Hybrid Composition

Complex multiplayer games frequently require character locomotion alongside projectile arcs or dynamic props. By declaring **`secondary_providers`** in your ECS schema, Playna routes binary commands by opcode (`0x61..0x66`) cleanly across compatible modules in the same room.

## Supported Hybrid Matrix

| Primary (`simulation`) | Allowed `secondary_providers` | Recommended Capabilities & AOI | Typical Genres |
| :--- | :--- | :--- | :--- |
| **`kinematic_ecs`** | `ballistics`, `rigid_body`, `granular_particle` | `lag_compensation` / `rollback` + `aoi` | Battle Royale, Hero Shooters, Sandbox Brawlers |
| **`rigid_body`** | `ballistics`, `swept_ccd` | `rollback` | Tank Duels, Naval Combat, Physics Vehicles |
| **`turn_based`** | `swept_ccd`, `ballistics` | None (Strict Serialized) | Turn-Based Billiards, Golf, Artillery PvP |

## Sample Hybrid Schema (FPS Move + Ballistic Shoot + AOI)

```json
{
  "name": "HybridFpsBallistics",
  "publish": true,
  "physics": {
    "simulation": "kinematic_ecs",
    "secondary_providers": ["ballistics"],
    "capabilities": ["lag_compensation"],
    "tick_rate_hz": 64,
    "history_depth_ticks": 64,
    "params": {
      "max_speed_mps": 12.0,
      "gravity_mps2": 9.81,
      "aoi_radius_m": 120.0
    }
  }
}
```

## Rejected Combinations

- **`swept_ccd` + `lag_compensation`:** Analytical trajectories resolve exact continuous collisions once per impulse (`incompatible_capability`).
- **`turn_based` + `rollback` / `lag_compensation`:** Turn-fenced commands require no speculative rewind.
- **`turn_based` + `granular_particle`:** Continuous cellular grid stepping conflicts with zero-CPU idle turn games.

---

# Çoklu Fizik & Hibrit Kombinasyonlar (secondary_providers)

# Çoklu Fizik & Hibrit Kombinasyonlar

Karmaşık oyunlar aynı anda hem oyuncu hareketini hem farklı fizik kurallarını gerektirir. Playna şema sözleşmesi **`secondary_providers`** dizisiyle aynı odada uyumlu birden fazla çözücüyü etkinleştirir ve gelen paketin opcode başlığına (`0x61..0x66`) göre ilgili modüle yönlendirir.

## Uyumlu Hibrit Kombinasyonlar

| Birincil (`simulation`) | İkincil (`secondary_providers`) | Ek Yetenek & AOI | Tipik Oyun Örnekleri |
| :--- | :--- | :--- | :--- |
| **`kinematic_ecs`** | `ballistics`, `rigid_body`, `granular_particle` | `lag_compensation` / `rollback` + `aoi` | Battle Royale, Araçlı Hero Shooter, Yıkılabilir Arena |
| **`rigid_body`** | `ballistics`, `swept_ccd` | `rollback` | Tank Düellosu, Topçu Araç, Fizik Sporları |
| **`turn_based`** | `swept_ccd`, `ballistics` | Yok (Sıralı) | Sıra Tabanlı Bilardo, Golf, Worms PvP |

## Örnek Hibrit Şema (FPS Move + Balistik Mermi + AOI)

```json
{
  "name": "HybridFpsBallistics",
  "publish": true,
  "physics": {
    "simulation": "kinematic_ecs",
    "secondary_providers": ["ballistics"],
    "capabilities": ["lag_compensation"],
    "tick_rate_hz": 64,
    "history_depth_ticks": 64,
    "params": {
      "max_speed_mps": 12.0,
      "gravity_mps2": 9.81,
      "aoi_radius_m": 120.0
    }
  }
}
```

## Reddedilen / Uyumsuz Çiftler

- **`swept_ccd` + `lag_compensation`:** Analitik sürekli yörünge zaten tek vuruşta kesin çözüldüğü için geriye dönük ray doğrulaması reddedilir (`incompatible_capability`).
- **`turn_based` + `rollback` / `lag_compensation`:** Sıra kilitli hamle akışında spekülatif geri sarma reddedilir.
- **`turn_based` + `granular_particle`:** 0 Hz bekleyen sıra oyunlarında sürekli 30 Hz hücresel grid akışı uyumsuzdur.
