# Player State Nedir ?

**APlayerState** sınıfı, çok oyunculu oyunlarda her oyuncuya ait bilgilerin saklandığı, yönetildiği ve paylaşıldığı önemli bir sınıftır. Bu sınıf, bir oyuncunun adını, skorunu, ping bilgilerini, takımını ve diğer önemli bilgilerini tutmak için kullanılır. Her oyuncunun kendine ait bir **PlayerState**'i bulunur ve bu bilgiler, ağ üzerinden tüm istemcilerle paylaşılır (replicate edilir). Bu sayede, oyun içindeki diğer oyuncular her oyuncunun durumunu görebilir.

**APlayerState** sınıfı, **AGameState** üzerinden kolayca erişilebilen bir yapıdır ve her oyuncunun durumunu tutar. Bu, oyuncular arasında etkileşimleri yönetmek ve her oyuncuya özel bilgi paylaşımını sağlamak için kritik bir sınıftır.

#### PlayerState Özellikleri

1. **Replicate Edilen Değişkenler**:
   * **PlayerName**: Oyuncunun mevcut adı. Bu bilgi, ağ üzerinden tüm istemcilerle paylaşılır ve her istemci, oyuncunun adı hakkında bilgi sahibi olur.
   * **Score**: Oyuncunun şu anki puanı. Skor bilgisi, oyun ilerledikçe güncellenir ve replike edilerek istemcilere iletilir.
   * **Ping**: Oyuncunun ağdaki gecikme süresi (ping). Bu bilgi de replike edilerek, diğer oyuncuların oyun içindeki bağlantı kalitesi hakkında bilgi sahibi olmasını sağlar.
   * **TeamID**: Oyuncunun hangi takıma ait olduğu bilgisini tutar. Bu bilgi de replike edilerek tüm istemcilerle paylaşılır.
2. **Replicate Edilen Diğer Bilgiler**:
   * **Custom Variables**: Özel oyun durumlarına göre farklı bilgilerin tutulması mümkündür. Örneğin, oyuncunun oynadığı silah, ekipmanlar, takım liderliği gibi veriler, **PlayerState** sınıfında tutulabilir.
3. **Erişim**:
   * **Sunucu Tarafı**: PlayerState yalnızca sunucu tarafından **tam erişilebilir**. Sunucu, oyuncu bilgilerini kontrol eder ve doğru verileri istemcilere iletir.
   * **İstemci Tarafı**: PlayerState bilgileri replike edilir, böylece istemcilerde oyuncuların skorları, isimleri, pingleri gibi bilgileri güncel bir şekilde görebiliriz.

#### PlayerState ve GameState İlişkisi

* **AGameState** sınıfı, oyuncuların **PlayerState** bilgilerini saklar. Her oyuncunun PlayerState'i, AGameState tarafından yönetilen **PlayerArray** içerisinde yer alır. Bu sayede tüm istemciler, **PlayerArray**'i kullanarak oyuncuların bilgilerine erişebilirler.
