Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /var/www/vhosts/bilgigunlugum.net/httpdocs/index.php on line 43
Unreal Engine

Unreal Engine Oyun Programlama sayfalarımız yayında...

Ana sayfa > Oyun programlama > Unreal Engine > Sınıf tanımlama

Unreal Engine sınıf tanımlama

Bu bölümde, projede tanımlanacak yeni sınıflar hakkında bilgi vereceğiz.

Neden ek sınıflar tanımlıyoruz?

Ö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.

Sınıfların temel görevleri ve ilişkileri

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.

Çalışma akışı

  • 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).