# Game State Nedir ?

**AGameState** sınıfı, çok oyunculu oyunlarda oyun durumunun paylaşıldığı ve tüm istemcilerin erişebileceği önemli bir sınıftır. Bu sınıf, oyunun mevcut durumunu, oyun içindeki oyuncuların durumlarını ve takım bilgilerini tutmak için kullanılır. **AGameState**, çoğunlukla sunucu tarafından yönetilir ve istemcilerle paylaşılan bilgilerin senkronize edilmesini sağlar.

GameMode, oyunun kurallarını ve yapılarını tanımlarken, **GameState** oyun hakkında **paylaşılan** bilgileri taşır. Bu, oyuncuların öldürme sayıları, takım skorları ve genel oyun akışına dair önemli veriler olabilir. GameState sınıfı, tüm istemciler tarafından erişilebilen bilgileri içerecek şekilde **replicate** edilir, bu da çok oyunculu oyunlar için merkezi bir bilgi kaynağı haline gelmesini sağlar.

#### GameState Özellikleri

1. **Replicate Edilen Değişkenler**:
   * **PlayerArray**: Bağlı oyuncuların listesini tutar. Her oyuncu, **PlayerState**'i aracılığıyla bu listeye eklenir. Bu liste istemciler arasında senkronize edilir.
   * **MatchState**: Oyunun mevcut durumu (örneğin, "Başlangıç", "Devam Ediyor", "Bitti") hakkında bilgi içerir. Bu durum tüm istemcilerle paylaşılır.
   * **ElapsedTime**: Oyunun geçen süresi. Bu, genellikle bir yarış veya zamanlı görev gibi oyun türlerinde önemlidir.
2. **Oyun Durumu Paylaşımı**: GameState, tüm istemcilerin **oyun durumu** ile ilgili bilgilere erişmesini sağlar. Örneğin, her oyuncunun veya takımın puanları, ölüm sayıları gibi bilgiler **GameState** içinde saklanabilir ve tüm istemcilerle paylaşılır.
3. **Erişim**:
   * **Sunucu Tarafı**: GameState yalnızca sunucu tarafında tam olarak erişilebilir. Sunucu, oyun durumu üzerinde kontrol sahibi olur ve gerekli verileri istemcilere gönderir.
   * **İstemci Tarafı**: GameState'in bazı bilgileri istemcilere de replike edilir. Böylece her istemci, tüm oyuncuların skorlarını veya takımlarının durumunu anlık olarak görebilir.
4. **Bilgi Yönetimi**:
   * GameState, her oyuncunun **PlayerState**'ini içeren bir listeye sahip olup, bu **PlayerState**'ler her oyuncunun durumu hakkında bilgiler taşır. **PlayerState** bilgileri replike edilerek sunucu ve istemciler arasında paylaşılır.
   * GameState, oyun sırasında aktif olan oyuncuları **PlayerArray**'de tutar. Bu liste, oyuncuların oyun başlangıcında ve yeni oyuncular eklenerek güncellenir.
