# Authority Ve Rol Nedir ?

Unreal Engine'de **Authority** (Yetki) ve **Role** (Rol), çok oyunculu oyunlarda sunucu ve istemci arasındaki kontrol mekanizmasını tanımlamak için kullanılan iki temel kavramdır. Bu kavramlar, aktörlerin kimin tarafından yönetildiğini ve hangi işlevlerin nerede çalıştırılacağını belirler. Çok oyunculu bir oyunda bu mekanizmaların doğru anlaşılması, oyun mantığının sağlıklı çalışması için kritik öneme sahiptir.

***

#### **Authority (Yetki)**

Yetki, bir aktör üzerinde kimin kontrol sahibi olduğunu belirler. Sunucu veya istemci üzerinde bir aktörle işlem yaparken, yetki durumu hangi eylemlerin gerçekleştirilebileceğini ve aktörün davranışlarının nasıl değiştirilebileceğini tanımlar.

* **Yetkiniz varsa:**
  * Aktör üzerinde tam kontrol sahibi olursunuz.
  * Aktörün durumunu güncelleyebilir, olayları tetikleyebilir ve davranışlarını değiştirebilirsiniz.
  * Yetki, genellikle sunucuya (veya belirli durumlarda sahip istemciye) aittir.
* **Yetkiniz yoksa:**
  * Aktör yalnızca sunucudaki yetkili versiyonun bir temsili (SimulatedProxy) olarak bulunur.
  * İstemcideki aktör, yalnızca sunucudan alınan verilere göre kendini günceller.

Yetki kontrolü yaparken şu metot sıkça kullanılır:

{% tabs %}
{% tab title="Blueprint" %}

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2F9IRIblzLsjrPbGsc4ToJ%2Fimage.png?alt=media&#x26;token=724e0f3a-fc13-4ffb-a00d-53723c5ccea6" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="C++" %}

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2F7UmUyogl8WbZrC9QgC9k%2Fimage.png?alt=media&#x26;token=15e20c6d-aa4f-4ab4-91bd-14450a4216f6" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

***

#### **Role (Rol)**

Bir aktör, bulunduğu istemci veya sunucu ortamına bağlı olarak farklı roller üstlenebilir. Roller, bir aktörün o anki kontrol durumunu ifade eder.

* **Authority Role (Yetkili Rol):**

  * Aktörün tüm güncellemeleri ve kararları sunucu tarafından yapılır.
  * Sunucuda bulunan veya sunucu tarafından yönetilen aktörler bu role sahiptir.

  <figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FXB7Mgbti4qtx8GZupIPw%2FScreenshot_1.png?alt=media&#x26;token=d5b8e8dc-3337-4ac8-9c22-d9bb9c91fa95" alt="" width="563"><figcaption></figcaption></figure>
* **SimulatedProxy:**

  * Sunucudaki bir aktörün istemci üzerindeki temsili.
  * İstemci, bu roldeki aktörü yalnızca izler; üzerinde kontrol sahibi değildir.

  <figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FHBfKlBuYnc1TsYwy3Yl5%2FScreenshot_3.png?alt=media&#x26;token=bd2021de-3eb4-45b4-84c5-55f872bb82a9" alt="" width="563"><figcaption></figcaption></figure>
* **AutonomousProxy:**

  * Oyuncunun kendi cihazından doğrudan kontrol ettiği bir aktör.
  * AutonomousProxy, yalnızca oyuncunun sahip olduğu istemcide bulunur ve istemcinin aktör üzerinde doğrudan kontrol sağladığını ifade eder.

  <figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FVT8IsP6RABTVF8Fjmvkm%2FScreenshot_2.png?alt=media&#x26;token=53166e95-2e1d-4557-9429-cd5eb43d22df" alt="" width="563"><figcaption></figcaption></figure>

**Önemli Not:**\
Bir PlayerController, sahip olduğu istemciye (Owning Client) yansıtıldığında AutonomousProxy olarak kabul edilir. Bu durumda, ilgili Pawn (oyuncu karakteri) da o istemci için AutonomousProxy rolünü üstlenir. Diğer tüm istemciler (Clientler) için ise, bu Pawn **SimulatedProxy** olarak yansıtılır.

AutonomousProxy, istemcinin aktörün hareketini ve davranışlarını doğrudan kontrol edebilmesi anlamına gelir. Ancak bu kontrol, tam bir yetki ile sınırlı olmayabilir. Yani, istemci (Client) aktörü yönetirken doğrudan girişler alır ve bunlar anlık olarak etkili olur; ancak sunucunun genel oyun durumunu ve düzenini korumak için yaptırımlar ve doğrulamalar gerektiğinde bunlar yine sunucu tarafından gerçekleştirilir.

Bu yapı, çok oyunculu oyunlarda istemcilerin bireysel olarak karakterlerini kontrol etmelerine olanak tanırken, aynı zamanda oyun dünyasının düzeninin sağlanmasına yardımcı olur. Diğer oyuncular, o aktörü sadece simüle edilmiş bir temsil olarak görürler; bu da oyun içi etkileşimlerin doğru bir şekilde senkronize edilmesine yardımcı olur.

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FvwM4MxlhNgvgLIcdJNgm%2Fimage.png?alt=media&#x26;token=56740647-e510-431c-80b9-7eeffda1075d" alt=""><figcaption></figcaption></figure>

***

#### **Yerel Kontrol (Is Locally Controlled)**

**Yerel kontrol**, bir istemcinin kendi aktörünü veya karakterini doğrudan yönetip yönetmediğini belirler. Yerel kontrol, oyun girişlerinin doğrudan etkili olduğu durumlarda kullanılır ve genellikle oyuncunun kendi karakteri için geçerlidir.

* **Bir Pawn Yerel Olarak Kontrol Ediliyorsa (Is Locally Controlled):**
  * Oyuncunun doğrudan kendi cihazı üzerinden aktörü kontrol ettiği anlamına gelir.
  * Yerel kontrol, oyuncunun girdi komutlarının anlık olarak etkili olduğu, daha hızlı ve sezgisel bir deneyim sunar.
* **Bir Pawn Yerel Olarak Kontrol Edilmiyorsa:**
  * Aktör başka bir istemci veya sunucu tarafından yönetiliyordur.
  * Bu durumda, aktör üzerindeki işlemler genellikle gecikme ve senkronizasyon süreçlerine tabidir.

Pawn'ın yerel olarak kontrol edilip edilmediğini şu şekilde kontrol edebilirsiniz:

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FAnrXX5fBcND684Z9Paf0%2Fimage.png?alt=media&#x26;token=271b301b-52e6-4476-a2e9-7354784007e0" alt=""><figcaption></figcaption></figure>
