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ıf | Nerede var? | Sorumluluk |
|---|---|---|
| GameMode | Sadece server | Oyun kuralları, spawn, kazanma koşulu, hangi sınıfların kullanılacağı |
| GameState | Server + tüm client'lar | Herkesin bilmesi gereken oyun durumu (skor, kalan süre, oyuncu listesi) |
| PlayerController | Server + sahibi olan client | Oyuncunun iradesi: input, UI, kamera, Pawn'ı possess etme |
| PlayerState | Server + tüm client'lar | Oyuncuya ait paylaşılan veri (isim, skor, takım); Pawn ölse de yaşar |
| Pawn / Character | Server + ilgili client'lar | Dünyadaki fiziksel temsil; ölüp yeniden doğabilir |
| HUD | Sadece yerel client | Ekran 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.
İlgili Unreal & C++ soruları
- Oyun motorlarında neden custom memory allocator kullanılır? Linear (arena), pool ve stack allocator nasıl çalışır?
- Cache-friendly veri yapısı ne demektir? Array of Structs (AoS) ile Struct of Arrays (SoA) farkı nedir?
- C++'ta move semantics nedir? Aşağıdaki kodda hangi constructor'lar çağrılır?
- C++'ta virtual fonksiyonlar ve vtable nasıl çalışır? Destructor neden virtual olmalıdır?
- Unreal'da replication nasıl çalışır? Replicated property, RepNotify ve RPC türleri arasındaki fark nedir?
- TSharedPtr, TUniquePtr, TWeakPtr ve TWeakObjectPtr arasındaki farklar nelerdir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.