# Relevancy Nedir ?

Relevancy (geçerlilik), bir aktörün ağ üzerinde bir istemciye replikasyonu için uygun olup olmadığını belirleyen bir kavramdır. Unreal Engine'de, her aktörün replikasyon süreci, o aktörün ilgili olup olmadığını belirlemek için istemci bağlantılarının geçerliliğine dayanır. Yani, bir aktörün verileri bir istemciye gönderilip gönderilmeyeceği, o aktörün o istemci için "geçerli" olup olmadığına bağlıdır.

**Relevancy’nin Temel Özellikleri:**

* **Geçerlilik ve Replikasyon**: Bir aktör replikasyona uygun olduğunda, sunucu ağ sürücüsü (NetDriver) belirli aralıklarla her bir istemci bağlantısını kontrol eder ve o aktörün o istemci için geçerli olup olmadığını belirler. Eğer bir aktör geçerliyse, sunucu bu aktörün bilgilerini istemciye iletir. Bu süreç, ağ trafiğini optimize etmek için önemli bir rol oynar.

{% tabs %}
{% tab title="Birinci Oynucu İçin" %}

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FlmCPwIgsJtyJIyjRDSas%2FScreenshot_5.png?alt=media&#x26;token=3736aea3-88c5-4df5-8167-9728c43dc413" alt="" width="563"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="İkinci Oyuncu İçin" %}

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2Fj4dkI1TmmPLBY0h1Vmai%2FScreenshot_6.png?alt=media&#x26;token=6541aea7-f9b4-4aab-86c0-77fd313a5605" alt="" width="563"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

* **bAlwaysRelevant Aktörler**: Bazı aktörler her zaman geçerlidir. Bu tür aktörler **bAlwaysRelevant** olarak işaretlenmiştir ve bu, sunucunun her zaman bu aktörleri tüm istemcilere çoğaltacağı anlamına gelir.&#x20;

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FMew6D6vXemzzjjNOrC6G%2Fimage.png?alt=media&#x26;token=a3aa44e4-0817-43d7-b150-258d707592d6" alt="" width="563"><figcaption></figcaption></figure>

* Örneğin, **GameState** ve **PlayerState** aktörleri her zaman geçerlidir ve dolayısıyla her istemciye replikasyon yapılır.

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FvUNR7NcGlCbZYO7ISNED%2FScreenshot_7.png?alt=media&#x26;token=78bfafb0-22c3-4f3a-a4ec-46eeab1dd446" alt="" width="563"><figcaption></figcaption></figure>

* **Sahiplik ve Geçerlilik**: Aktörün **sahipliği (ownership)**, geçerliliğini etkileyebilir. Bir oyuncu tarafından sahip olunan veya başlatılan bir aktör, o oyuncu için her zaman geçerli kabul edilir.&#x20;

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FidlIaOnNV9hnu8IRvTLT%2FScreenshot_8.png?alt=media&#x26;token=64a96625-21aa-4aeb-af48-01f7177b64e5" alt="" width="563"><figcaption></figcaption></figure>

* Örneğin, bir oyuncunun sahip olduğu **PlayerController** aktörü yalnızca o oyuncuya replikasyon yapılır, diğer oyunculara bu aktör ile ilgili bilgi gönderilmez.

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FCNWXyBxlHsm9lE81mtRo%2FScreenshot_9.png?alt=media&#x26;token=5832c453-0377-44d2-82ee-73380284c1f8" alt="" width="563"><figcaption></figcaption></figure>

* **Gizlilik ve Collision Durumu**: Eğer bir aktör gizliyse (hidden) ve kök bileşeninin (root component) **collision** özelliği devre dışı bırakılmışsa, o aktör geçerli kabul edilmez. Bu, oyun dünyasında görünmeyen veya etkileşime girmeyen aktörlerin gereksiz yere replikasyon yapmasını engeller.

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FU966PSz6UzltPUAn7SEz%2Fimage.png?alt=media&#x26;token=6c2bc021-d32b-4f62-bbfc-e6c00b37abf4" alt="" width="563"><figcaption></figcaption></figure>

* **Mesafeye Dayalı Geçerlilik**: Bir aktörün geçerliliği, o aktör ile oyuncu arasındaki mesafeye de bağlıdır. Eğer aktör ile oyuncu arasındaki kare mesafe (squared distance), **NetCullDistanceSquared** parametresinden küçükse, o aktör o oyuncu için geçerli kabul edilir ve replikasyonu yapılır. Bu, oyuncuların sadece yakınlarındaki aktörlerin replikasyonunu almasını sağlar ve ağ trafiğini daha verimli hale getirir.&#x20;

{% tabs %}
{% tab title="Küçükse" %}

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FoAumS1uV3RXA4bh4KHIK%2FScreenshot_11.png?alt=media&#x26;token=002e598c-5398-43dc-b924-8f7ed55de6a9" alt="" width="563"><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Büyükse" %}

<figure><img src="https://499018633-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZiZeirBAvbtaBiMPpunl%2Fuploads%2FJ8CRJiEQ8jaEpNgkooEK%2FScreenshot_10.png?alt=media&#x26;token=78e87fbb-74ac-4a20-b4aa-a170a5da9a1d" alt="" width="563"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}
