Meydan okuma 4: RPC çağrısı
- Oyun Geliştirme kursu
- İleri seviye
- Ders 70/71
- 5 dk
Bir ServerRpc metodunu tanımlayan scripti yazarsın.
Meydan Okuma 4: ServerRpc Ağ Çağrıları
Yetkili sunucu (Authoritative Server) mimarisinde istemciler oyun durumunu doğrudan değiştiremez. Bir eylemi sunucuda tetiklemek için [ServerRpc] niteliği taşıyan metotlar kullanılır.
// Istemci tarafindan cagirilir, yalnizca sunucuda calisir
[ServerRpc]
public void RequestFireServerRpc(Vector3 direction) {
SpawnProjectileOnServer(direction);
}Netcode kurallarına göre metot adı mutlaka ServerRpc son eki ile bitmelidir.
Uygulama ServerRpc metot adı testi
Bir Start metodu tanımla. İçinde string rpcMetodu = "TakeDamageServerRpc"; tanımla ve konsola "Tetiklenen RPC: " + rpcMetodu yazdır.
Başlangıç kodu
using UnityEngine;
public class RpcMethodTester : MonoBehaviour
{
// Start icinde rpcMetodu tanimla ve yazdir
}Örnek çözüm
using UnityEngine;
public class RpcMethodTester : MonoBehaviour
{
void Start()
{
string rpcMetodu = "TakeDamageServerRpc";
Debug.Log("Tetiklenen RPC: " + rpcMetodu);
}
}Beklenen çıktı
Tetiklenen RPC: TakeDamageServerRpc
Uygulama RPC istemci kimliği takibi
Bir Start metodu tanımla. İçinde int clientId = 1; tanımla ve konsola "Istemci kimligi: " + clientId yazdır.
Başlangıç kodu
using UnityEngine;
public class RpcClientTester : MonoBehaviour
{
// Start icinde clientId tanimla ve yazdir
}Örnek çözüm
using UnityEngine;
public class RpcClientTester : MonoBehaviour
{
void Start()
{
int clientId = 1;
Debug.Log("Istemci kimligi: " + clientId);
}
}Beklenen çıktı
Istemci kimligi: 1
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Netcode mimarisinde bir istemcinin sunucuda bir işlem tetiklemesini sağlayan RPC türü hangisidir?
- ClientRpc
- StaticRpc
- ServerRpc Doğru cevap
- BroadcastRpc
Açıklama: İstemciden sunucuya giden uzaktan çağrılar ServerRpc olarak tanımlanır.
2 ServerRpc fonksiyonu bildirimi
[____] public void SubmitScoreServerRpc(int score) {}
[ServerRpc] public void SubmitScoreServerRpc(int score) {}
Açıklama: Sunucuda yürütülmesi istenen metotların başında '[ServerRpc]' niteliği yer alır.
3 Multiplayer RPC kavramları
| Kavram | Anlamı |
|---|---|
ServerRpc |
İstemciden sunucuya çağrı yapan metot |
ClientRpc |
Sunucudan istemcilere yayın yapan metot |
RPC |
Uzaktan yordam çağırma mekanizması |
Authoritative Server |
Oyun durumunu kesin yöneten sunucu |