# Net Mode Nedir ?

Unreal Engine, farklı ağ senaryolarına göre oyunların nasıl çalışacağını belirleyen bir **Net Mode** sistemine sahiptir. Bu modlar, oyunun bir istemci-sunucu yapısında mı yoksa tamamen dağıtık bir yapıda mı çalışacağını tanımlar. Net Mode, oyuncuların birbirleriyle nasıl etkileşime girdiğini, veri senkronizasyonunun nasıl sağlandığını ve ağ üzerindeki iletişimin nasıl yapılandırıldığını belirler.

Unreal Engine'deki başlıca **Net Mode** türleri şunlardır:

1. **Standalone**: Tek oyunculu oyun modu, sadece bir oyuncunun yerel bilgisayarında çalışır. Bu modda ağ iletişimi yoktur, tüm oyun işlemleri yerel olarak gerçekleştirilir.
2. **Listen Server**: Bu modda bir oyuncu sunucu olarak çalışır ve aynı zamanda istemci rolünü de üstlenir. Diğer oyuncular bu sunucuya bağlanarak oyunu oynarlar. Dinleyici sunucu, hem sunucu hem de istemci fonksiyonlarını bir arada barındırır.
3. **Dedicated Server**: Bu modda, sunucu ve istemci rollerinin tamamen ayrıldığı bir yapı vardır. Sunucu, sadece oyun verilerini işler ve istemciler bu sunucuya bağlanır. Sunucu, oyuncu etkileşimlerinden bağımsız olarak sadece ağ trafiğini yönetir.
4. **Client**: İstemci modu, oyuncunun oyunu oynadığı ve sunucuya bağlandığı moddur. İstemci, oyun verilerini sunucudan alır ve sunucuya geri gönderir. Sunucudan gelen veriler, istemcinin oyun dünyasında görünmesini sağlar.

| Net Mode            | Oynanabilir mi ? | Yetkisi var mı ? | Diğer clientler'e açık mı ? |
| ------------------- | ---------------- | ---------------- | --------------------------- |
| NM\_Standalone      | Evet             | Evet             | Hayır                       |
| NM\_Client          | Evet             | Hayır            | Hayır                       |
| NM\_ListenServer    | Evet             | Evet             | Evet                        |
| NM\_DedicatedServer | Hayır            | Evet             | Evet                        |

## Oyun Başladığında;

Önce GameEngine, sonra yaşam döngüsü boyunca kalıcı olan GameInstance, ardından ULocalPlayer nesnesi oluşturulur. Oyun bir URL'ye gider, bu URL bir sunucu adresi ya da bir harita ismi olabilir. Harita yüklendiğinde, UWorld nesnesini döndürür ve ağ modunu (NetMode) belirler:

* NM\_Client: GameInstance uzak bir sunucuya bağlandıysa UWorld NM\_Client olarak başlar.&#x20;

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FTgOoncLZ5PytILTw9Xv4%2Fimage.png?alt=media&#x26;token=2659ea26-a97c-4a0e-94d9-300a857d6a5d" alt="" width="563"><figcaption></figcaption></figure>

* NM\_Standalone: Harita lokal olarak yüklendiyse, ağ bağlantısı olmadığından NM\_Standalone olarak görünür. Bu hem tekli hem çoklu oyuncu olabilir, ancak başka client kabul etmez. <br>

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FXpfjG8ZRJVV1yoieHBpV%2Fimage.png?alt=media&#x26;token=fb088628-cfce-47bb-9f9f-6f44773bbb48" alt="" width="563"><figcaption></figcaption></figure>

* NM\_ListenServer: Harita sonunda ?listen komutuyla yüklendiyse UWorld Listen-Server modunda başlar. Client bağlantılarına açıktır.<br>

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2Fcf6G0lmAmaZDb1V7LM3y%2Fimage.png?alt=media&#x26;token=80d92f4b-eca4-4f5d-b793-c40de85a4b7a" alt="" width="563"><figcaption></figcaption></figure>

* NM\_DedicatedServer: Dedicated serverda GameInstance local player veya viewport içermez. Sadece client’lerin bağlanması için açık bir UWorld sağlar.<br>

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FrSvQTCIyoLSCH0ov2RVj%2Fimage.png?alt=media&#x26;token=4e09cbbd-3f2a-4463-9f8f-01ec96cb6760" alt="" width="563"><figcaption></figcaption></figure>

### Unreal Engine Ağ Senaryoları;

Unreal Engine de iki farklı ağ senaryosu bulunur;

1. Tek oyunculu oyun: Tek bir GameInstance vardır ve World Standalone modunda çalışır.
2. Çok oyunculu oyun: Birden fazla işlem (process) bulunur, her birinin kendi GameInstance ve World kopyası vardır. Bu işlemlerden biri ya ListenServer ya da DedicatedServer olarak çalışır, diğerleri ise Client modundadır.

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FDCAzRmCWN93u2aBWOEXc%2Fimage.png?alt=media&#x26;token=78264975-0256-4bc5-a1b3-0a72b96611e3" alt=""><figcaption></figcaption></figure>
