Unreal'ın Gameplay Framework'ünde GameMode, GameState, PlayerController, PlayerState ve Pawn'ın rolleri nelerdir?

Cevap

Bu sınıflar sorumlulukları özellikle multiplayer düşünülerek ayırır: kim kuralları koyar, kim neyi bilir, ne nerede yaşar.

SınıfNerede var?Sorumluluk
GameModeSadece serverOyun kuralları, spawn, kazanma koşulu, hangi sınıfların kullanılacağı
GameStateServer + tüm client'larHerkesin bilmesi gereken oyun durumu (skor, kalan süre, oyuncu listesi)
PlayerControllerServer + sahibi olan clientOyuncunun iradesi: input, UI, kamera, Pawn'ı possess etme
PlayerStateServer + tüm client'larOyuncuya ait paylaşılan veri (isim, skor, takım); Pawn ölse de yaşar
Pawn / CharacterServer + ilgili client'larDünyadaki fiziksel temsil; ölüp yeniden doğabilir
HUDSadece yerel clientEkran arayüzü

Örnek akış: Oyuncu bağlanır → GameMode bir PlayerController ve PlayerState oluşturur → RestartPlayer ile Pawn spawn edilir → Controller Possess(Pawn) yapar. Oyuncu ölünce Pawn yok edilir ama skor PlayerState'te kalır.

Yaygın hatalar:

  • Client'tan GetGameMode() çağırmak: client'ta null döner, çünkü GameMode sadece server'dadır.
  • Skoru Pawn'da tutmak: ölümle birlikte kaybolur.
  • Input mantığını tamamen Pawn'a koymak: araç değiştirme veya spectator'a geçişte karmaşa yaratır. UE5'te Enhanced Input ile input mapping genelde Controller veya Pawn'da kurulur, ancak oyuncuya ait kalıcı mantık Controller'da durur.

AI tarafında aynı mantık geçerlidir: AAIController bir Pawn'ı possess eder ve Behavior Tree çalıştırır.

  1. Oyun motorlarında neden custom memory allocator kullanılır? Linear (arena), pool ve stack allocator nasıl çalışır?ZorUnreal & C++Game Dev
  2. Cache-friendly veri yapısı ne demektir? Array of Structs (AoS) ile Struct of Arrays (SoA) farkı nedir?ZorUnreal & C++Game Dev
  3. C++'ta move semantics nedir? Aşağıdaki kodda hangi constructor'lar çağrılır?ZorUnreal & C++Game Dev
  4. C++'ta virtual fonksiyonlar ve vtable nasıl çalışır? Destructor neden virtual olmalıdır?OrtaUnreal & C++Game Dev
  5. Unreal'da replication nasıl çalışır? Replicated property, RepNotify ve RPC türleri arasındaki fark nedir?ZorUnreal & C++Game Dev
  6. TSharedPtr, TUniquePtr, TWeakPtr ve TWeakObjectPtr arasındaki farklar nelerdir?OrtaUnreal & C++Game Dev

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle