Bu bölümde, Unreal Engine ile oluşturacağımız bir ThirdPersonShooter proje ile çalışma mantığını incelemeye çalışacağız.
Unreal Engine ile yeni bir proje oluşturmak için sırasıyla Epic Games Launcher, Unreal Engine ve Unreal Engine proje tarayıcısını çalıştırıp gerekli işlemleri yapmalıyız.
1. Epic Games Launcher'ı çalıştırıp, Launch butonuna tıklayarak, Unreal Engine'i başlatalım.
2. Açılan proje tarayıcı penceresinde,
Proje oluşturulduktan sonra aşağıdakine benzer bir pencere karşımıza gelir:
Yapılan işlemler neticesinde, aşağıda gösterilen dizin yapısında TPS_Test adlı bir proje oluşturulur.
4. "Content" dizini seçili iken, "+ Add" butonuna tıkladığımızda açılan menüde, "Add Feature or Content Pack..." seçeneğine tıklayarak açtığımız pencerenin "Content" sekmesindeki "Starter Content" seçeneğini seçip, "Add to Project" butonuna tıklayarak "Starter Content" paketini projemize ekleyelim.
Yapılan işlemler sonucunda, "Content" dizini altında içeriği 10 dizin olan "StarterContent" adlı bir dizin oluşturulur.
Açılan proje penceresinde, Content\ThirdPerson dizini içindeki Lvl_ThirdPerson level'ı açık durumdadır.
Outliner sekmesi altında aşağıda gösterilen çevre birimleri yer almaktadır.
Level'ı çalıştırdığımızda, aşağıda sarı renkle gösterilen 10 adet nesne Outliner'a eklenir.
Level'ı Editor'da açtığımızda "Viewport" ve "Outliner" içinde herhangi bir karakter yer almamaktadır. ThirdPersonCharacter, Level çalıştıktan sonra Player Controller tarafından oluşturulur.
Projenin işlemleri hangi sırayla gerçekleştirdiğini izlemek için sırasıyla aşağıdaki işlemleri gerçekleştirelim:
Content Drawer içinde Content\ThirdPerson\Blueprints dizinindeki üç Blueprint dosyasını çift tıklayarak sırayla Editor'da açalım ve aşağıda gösterilen değişiklikleri yapalım.
Blueprint dosyaları açıldığında, sol tarafta, "Construction Script" FUNCTIONS bölümünde ve "Event Beginplay" ise "EventGraph" bölümünde yer alır.
1. BP_ThirdPersonGameMode dosyasına çift tıkladığımızda açılan pencerede "Construction Script" sekmesinde, "Construction Script" kutusu çıkışından fare ile sürükleyip açtığımız pencerede "Print String" seçeneğini seçerek açtığımız kutuda metin bölümüne "GameMode_Construction" ifadesini yazalım.
Karşınıza aşağıdakine benzer bir pencere gelirse, "Open Full Blueprint Editor" ifadesine tıklayarak, yukarıda gösterilen pencereye geçiş yapabilirsiniz.
2. BP_ThirdPersonGameMode dosyasına çift tıkladığımızda açılan pencerede "EventGraph" sekmesinde, sağ tıkladığımızda açılan pencerede "Event BeginPlay" seçeneğini seçerek bir "Event BeginPlay" kutusu oluşturalım. Kutu çıkışından fare ile sürükleyip açtığımız pencerede "Print String" seçeneğini seçerek açtığımız kutuda metin bölümüne "GameMode_BeginPlay" ifadesini yazalım.
3. BP_ThirdPersonPlayerController dosyasına çift tıkladığımızda açılan pencerede "Construction Script" sekmesinde, "Construction Script" kutusu çıkışından fare ile sürükleyip açtığımız pencerede "Print String" seçeneğini seçerek açtığımız kutuda metin bölümüne "BP_ThirdPersonPlayerController_Construction" ifadesini yazalım.
4. BP_ThirdPersonPlayerController dosyasına çift tıkladığımızda açılan pencerede "EventGraph" sekmesinde, "Event BeginPlay" kutu çıkışından fare ile sürükleyip açtığımız pencerede "Print String" seçeneğini seçerek açtığımız kutuda metin bölümüne "BP_ThirdPersonPlayerController_BeginPlay" ifadesini yazalım.
5. BP_ThirdPersonCharacter dosyasına çift tıkladığımızda açılan pencerede "Construction Script" sekmesinde, "Construction Script" kutusu çıkışından fare ile sürükleyip açtığımız pencerede "Print String" seçeneğini seçerek açtığımız kutuda metin bölümüne "BP_ThirdPersonCharacter_Construction" ifadesini yazalım.
6. Tüm Blueprint sınıf dosyalarını kaydedip, pencerelerin sol üst köşesindeki "Compile" butonu ile derleyelim.
7. BP_ThirdPersonCharacter dosyasına çift tıkladığımızda açılan pencerede "EventGraph" sekmesinde, sağ tıkladığımızda açılan pencerede "Event BeginPlay" seçeneğini seçerek bir "Event BeginPlay" kutusu oluşturalım. Kutu çıkışından fare ile sürükleyip açtığımız pencerede "Print String" seçeneğini seçerek açtığımız kutuda metin bölümüne "BP_ThirdPersonCharacter_BeginPlay" ifadesini yazalım.
Level'ı çalıştırdığımızda, önce üç Blueprint sınıfına ait tüm constructor fonksiyonlarının daha sonra BeginPlay fonksiyonlarının aşağıdaki sırayla çalıştığını ekranın sol üst köşesindeki ifadelerden (İşlem sırası alttan yukarı olmak üzere) ve Output Log üzerinde görebiliriz.
Unreal Engine ile oluşturulan bir projenin çalışma sırası ve Unreal Engine Oyun Oynama Çerçevesi hakkında buradan detaylı bilgi alabilirsiniz.
Construction Script
Unreal Engine'deki Blueprint Construction Script, bir Blueprint sınıfının görsel olarak düzenlendiği, inşa edildiği ve ilk ayarlarının yapıldığı özel bir bölümdür. Blueprint'i düzenleme ekranında gördüğünüz Construction Script kutusu, aslında bir dizi komutun çalıştırıldığı bir fonksiyondur. Bu fonksiyon, Blueprint'in bir kopyası (instance) seviyede değişiklikler yapmak için kullanılır. Bu, oyun çalışmıyor olsa bile gerçekleşir.
Ne zaman ve nasıl oluşturulur?
Actor sınıfından türetilerek oluşturulan her sınıf için bir "Construction Script" tanımlanır.
Bir Blueprint sınıfı oluşturduğunuzda (örneğin bir Actor Blueprint'i), Construction Script otomatik olarak gelir. Bu bir başlangıç şablonudur. Siz bu kutuya düğümler ekledikçe, Unreal Engine bu komut zincirini derler.
Oluşturulma: Blueprint'i oluşturduğunuz anda Unreal Engine, bu özel fonksiyonun iskeletini hazırlar. Bu, bir Event BeginPlay gibi bir olay düğümü değildir.
Çalışma anı: Construction Script, editör içinde bir Blueprint'i sahnede hareket ettirdiğinizde, döndürdüğünüzde, ölçeklendirdiğinizde veya herhangi bir parametresini değiştirdiğinizde hemen çalışır. Aynı zamanda, oyunu başlattığınızda (play mode) Event BeginPlay'den önce bir defa daha çalışır.
Çalışma mantığı ve kullanım alanları
Construction Script'in ana amacı, editörde yaptığınız değişikliklerin görsel olarak anında yansımasını sağlamaktır. Bu, oyun geliştiricisinin işini inanılmaz derecede hızlandırır. Örneğin:
Aşağıdaki işlemleri gerçekleştirdiğimizde Construction Script çalışır ve tüm çıktılar Output Log'da görünür.
Özetle, Construction Script, editör ortamında bir Blueprint nesnesinin anlık olarak "yapılandırılmasını" sağlayan bir işlevdir. Bu, oyun içindeki Event Graph'ta yer alan olaylardan farklıdır. Event Graph genellikle oyun başladığında, bir tuşa basıldığında veya bir olay tetiklendiğinde çalışırken, Construction Script'in ana görevi editörde görsel ve işlevsel bir geri bildirim sağlamaktır.
Event BeginPlay
Event BeginPlay, oyun başladığında (veya bir Blueprint'in oyun sırasında "spawn" edildiğinde) yalnızca bir kez çalıştırılan bir olaydır. Bu, bir Blueprint'in oyun mantığının başladığı noktadır.
Kullanımı
BP_ThirdPersonGameMode içinde yer alan ve "Details" sekmesinde gösterilen sınıflar aşağıda gösterilmektedir: