Bu bölümde, projede tanımlanacak yeni sınıflar hakkında bilgi vereceğiz.
Ön tanımlı olarak projeye atanan AGameModeBase, ADefaultPawn ve APlayerController sınıflarını kullanabiliriz, ancak bu sınıflar sadece temel işlemleri yerine getirebilir. Örneğin,
- AGameModeBase: Oyuncu spawn noktası gibi temel kuralları yönetir, ama özel bir oyun mantığı (skor, round sistemi, durum geçişleri) içermez.
- ADefaultPawn: Sadece hareket edebilen bir nesnedir. Özel bir model, animasyon veya yeteneği yoktur.
- APlayerController: Fare/klavye girdisini alır ama bu girdilerle ne yapacağı (özel hareket, etkileşim, UI yönetimi) tanımlanmamıştır.
⚠️ Sadece bir sahneyi gezinmek için DefaultPawn kullanılabilir. Ancak gerçek bir oyun geliştirmek için, bu sınıfları türeterek kendi mantığınızı eklemeniz zorunludur.
Projede kullanılan sınıfların temel görevleri ve ilişkileri aşağıdadır:
Sınıfların temel görevleri ve ilişkileri
| Sınıf |
Görev ve ilişkileri |
| GameMode (Yönetmen ve Senaryo) |
- Sadece sunucuda çalışır.
- Oyunun kurallarını belirler.
- "Oyun nasıl kazanılır/kaybedilir?", "Kaç tur oynanacak?", "Oyuncular nasıl spawn olur?", "Hangi sınıflar kullanılacak?" sorularının cevabıdır.
- Oyuncu listesine erişir.
- GameState'e oyun durumu bilgisini yazar.
- PlayerController ve Pawn sınıf tiplerini belirler.
- Client'lar için görünmezdir.
|
| PlayerController |
- Hem sunucuda hem client'ta (her oyuncu için ayrı bir instance) çalışır.
- Kullanıcı girdisini (mouse, klavye) alır ve yorumlar.
- Pawn'a "şu tarafa git", "zıpla" komutunu gönderir.
- UI'ı (HUD) yönetir.
- Ağ üzerinden sunucuya RPC (Remote Procedure Call) gönderir.
- Bir Pawn'u "possess" eder (kontrolüne alır) ve onu yönetir.
- HUD ve PlayerState ile doğrudan iletişim halindedir.
|
| Pawn/Character |
- Dünyadaki fiziksel temsildir.
- Collision'ı, mesh'i, animasyonları içerir.
- PlayerController'dan veya AI (AIController)'dan gelen komutları fiziksel harekete dönüştürür.
- Health, inventory gibi özellikler genellikle burada veya ayrı bir component'te tutulur.
- Bir Controller tarafından kontrol edilir.
- GameMode onu spawn eder.
- Dünyadaki diğer Actor'lerle etkileşime girer.
|
- Oyun başlar. Sunucudaki GameMode, yeni bağlanan oyuncu için bir PlayerController oluşturur.
- GameMode, kurallarına göre bir Pawn spawn eder ve bu Pawn'un kontrolünü oyuncunun PlayerController'ına verir (Possess).
- Oyuncu klavyeye basar. Client'taki PlayerController bu tuş vuruşunu alır, "W=İleri" olarak yorumlar.
- PlayerController, kontrol ettiği Pawn'a "İleri git" komutu gönderir.
- Pawn, komutu alır ve MovementComponent'ını kullanarak fiziksel olarak ileri hareket eder. Bu hareket, ağ üzerinden diğer tüm client'lara replike edilir.
- Aynı anda PlayerController, hız çubuğunu güncelleyen UI (HUD) kodunu çalıştırır.
- Pawn bir item ile çarpışır. Sunucudaki Pawn örneği, bu çarpışmayı algılar ve GameState'deki skoru artırmak için GameMode'a bir fonksiyon çağrısı yapar.
Özetle:
- GameMode kuralları koyar (sunucu merkezli).
- PlayerController girdiyi alır ve karar verir (player merkezli).
- Pawn bu kararları fiziksel dünyada uygular (dünya merkezli).