# Game Mode Nedir ?

**AGameMode** sınıfı, Unreal Engine'deki oyun modunun temelini oluşturur ve oyunun kurallarını, akışını ve yapısını tanımlar. Bu sınıf, genellikle sunucu tarafında çalışır ve oyun başladığında hangi sınıfların spawna edileceğini (örneğin, APawn, APlayerController, APlayerState) belirler. GameMode, aynı zamanda çok oyunculu oyunlarda oyuncuların yönetimi ve oyun akışının kontrol edilmesinde önemli bir rol oynar.

Unreal Engine'deki **GameMode**, yalnızca **sunucu tarafında** çalışır. Bu, istemcilerin **AGameMode** sınıfına erişim sağlayamadığı ve **nullptr** değerini alacağı anlamına gelir. İstemciler yalnızca sunucudan gelen bilgilerle etkileşimde bulunurlar.

#### GameMode'un Temel Özellikleri

**AGameMode**, oyunun nasıl oynandığını ve oyuncuların oyundaki ilerlemelerini nasıl yönettiğini belirleyen çok sayıda fonksiyon ve özellik sunar. Bunlar şunlardır:

1. **Oyun Kuralları ve Yapısı:**
   * **Takımlar var mı?**: Oyunda takımlar olup olmayacağı ve takımların nasıl işlediği.
   * **Kazananın Belirlenmesi**: Oyuncular veya takımlar arasındaki kazananın nasıl belirleneceği. Örneğin, bir oyuncunun veya takımın kazanmak için kaç el alması gerektiği.
   * **Puan Kazanma**: Puanların nasıl kazanılacağı (örneğin, rakip oyuncuyu öldürmek, bayrağı çalmak vb.).
   * **Karakterler ve Silahlar**: Oyuncuların hangi karakterleri kullanabileceği, hangi silahların veya araçların oyunda mevcut olacağı gibi detaylar.
2. **Oyun Akışı Yönetimi:**
   * **Oyun Başlatma ve Bitirme**: Oyun başladığında hangi karakterlerin spawn edileceği ve oyunun nasıl sona ereceği.
   * **Zamanlayıcılar ve Sınırlamalar**: Oyun süresi, süreli görevler veya zaman sınırlı modlar.
3. **Oyuncu Yönetimi:**
   * **PlayerController ve PlayerState**: Her oyuncu için bir **PlayerController** ve **PlayerState** yönetir. Bu sınıflar, oyuncunun karakteriyle olan etkileşimini ve oyun durumu hakkındaki bilgileri taşır.
   * **Spawning ve Respawn**: Oyuncuların karakterlerinin nasıl spawn edileceği, yeniden doğma (respawn) işlemleri.
   * **Oyun Durumu ve Puan**: Her oyuncunun veya takımın puan durumu ve oyun içi ilerlemesi hakkında bilgi verir.

#### GameMode Özellikleri ve Kullanımı

**AGameMode** sınıfı, oyun modlarını tanımlamak ve oyun içindeki kuralları yönetmek için kullanılır. Unreal Tournament gibi eski oyunlardan bilinen bazı modlar şunlar olabilir:

* **Deathmatch**: Herkesin herkesle savaştığı bir mod.
* **Team Deathmatch**: Takımların karşı karşıya geldiği ve belirli sayıda öldürme hedeflerine ulaşmaya çalıştığı bir mod.
* **Capture the Flag**: Her takımın rakip takımın bayrağını çalmaya çalıştığı bir mod.

Bu oyun modları için GameMode şu şekilde yapılandırılabilir:

**Örnek: Takım Deathmatch Modu**

* **Takım Yapısı**: Oyuncular, iki veya daha fazla takıma ayrılabilir.
* **Kazananın Belirlenmesi**: Takımların kazanabilmesi için belirli sayıda öldürme veya puan elde etmeleri gerekir.
* **Puan Kazanma**: Bir oyuncuyu öldürmek, bir bayrak çalmak veya belirli bir hedefi yerine getirmek gibi.

**Silah ve Karakter Seçimi**

GameMode, hangi karakterlerin kullanılabileceğini belirler ve aynı zamanda silah seçimi üzerinde de kontrol sağlar. Örneğin:

* **Yalnızca tabanca ile oynama**: Oyuncular yalnızca tabancalarla savaşabilir.
* **Tek bir mermi şarjörü**: Oyuncular yalnızca bir şarjörle savaşa başlayabilir.
