Bu bölümde, Unreal Engine ile oluşturulan bir projenin çalışma sırasını ve Unreal Engine Oyun Oynama Çerçevesini incelemeye çalışacağız.
Unreal Engine editör ortamında bir Level'ı çalıştırdığımızda, arkada karmaşık bir sistemin işlediğini görürüz. Projedeki her bir nesne bu sistemin belirli bir görevini üstlenir ve belirli bir sırayla devreye girer. Bu hiyerarşiyi ve çalışma mantığını daha iyi anlamak için her bir bileşene yakından bakalım.
Temel seviye nesneler ve çalışma sırası
1. World (Dünya): Unreal Engine'in en üst seviye kapsayıcısıdır. Bir oyun çalıştığında, tüm Level'ların ve onlarla ilgili verilerin (örneğin fizik motoru, renderlama sistemi) bulunduğu ana ortamdır. Bir proje açtığınızda veya bir oyunu başlattığınızda, bir World nesnesi otomatik olarak oluşturulur ve tüm diğer nesneler bu dünyanın içinde var olur.
2. Level (Seviye): World'ün içinde yer alan bir haritadır. Her Level, kendi başına bir sahnedir ve içinde Actor'ları, ışıkları, geometrileri ve diğer oyun bileşenlerini barındırır. Bir Level'ı çalıştırdığınızda, o Level'daki tüm nesneler World'e yüklenir ve oynanabilir hale gelir.
3. Game Instance (Oyun Örneği): Oyunu başlattığınız anda oluşturulan ve oyun süresince varlığını koruyan en kalıcı nesnedir. Oyuncunun adını, puanını veya ayarları gibi, Level'lar arasında bile kaybolmaması gereken verileri saklamak için idealdir. Örneğin, bir ana menüden oyunu başlattığınızda ve sonra farklı Level'lar arasında geçiş yaptığınızda, Game Instance nesnesi hafızada kalmaya devam eder.
4. Game Mode (Oyun Modu): Bir Level'a özel kuralları belirler. Örneğin, bu Level'ın bir takım tabanlı oyun mu, yoksa tek oyunculu bir macera mı olacağını belirler. Game Mode, bir Level başladığında hangi Pawn sınıfının kullanılacağı, hangi Player Controller'ın atanacağı gibi temel kuralları tanımlar. Her Level için farklı bir Game Mode kullanabilirsiniz.
5. Game State (Oyun Durumu): Oyunun anlık durumunu izleyen ve tüm istemciler (multiplayer oyunlarda) arasında senkronize edilen bir nesnedir. Bir takımın skoru, maçın kalan süresi veya bir hedefi kimin ele geçirdiği gibi, oyunun genel durumuyla ilgili bilgileri tutar. Game State, oyun kurallarını değil, o kuralların o anki sonucunu temsil eder.
6. Player Controller (Oyuncu Kontrolcüsü): Bir oyuncunun girişini (klavye, fare, gamepad) işler ve bu girdileri bir Pawn veya Character nesnesine aktarır. Bir oyuncu oyuna girdiğinde, o oyuncuya özel bir Player Controller oluşturulur. Bir oyuncu öldüğünde veya Level değiştirdiğinde bile Player Controller genellikle varlığını korur. Bu sayede, oyuncunun kamera ayarları gibi bilgileri korunmuş olur.
7. Player State (Oyuncu Durumu): Bir oyuncunun bireysel durumunu (skoru, canı, adı) tutan ve multiplayer oyunlarda tüm istemciler arasında senkronize edilen bir nesnedir. Game State, tüm oyunun durumunu tutarken, Player State yalnızca o oyuncuya ait bilgileri içerir.
8. Pawn (Piyon) ve Character (Karakter): Pawn, bir oyuncu veya yapay zeka tarafından kontrol edilebilen, fiziksel dünyada bir varlığı olan temel bir sınıftır. Kendi başına bir canavar, araba veya nesne olabilir. Character ise, özellikle insan benzeri karakterler için tasarlanmış, Pawn sınıfından türetilmiş özel bir sınıftır. Zıplama, koşma gibi yaygın hareket yetenekleri Character sınıfında önceden tanımlanmıştır. Bir Pawn veya Character oluşturulduğunda, bir Controller (genellikle bir Player Controller) tarafından kontrol edilmeye başlanır.
9. Actor (Aktör): Unreal Engine dünyasına yerleştirilebilen, hareket edebilen, etkileşime girebilen tüm nesnelerin temelidir. Bir ışık, kamera, fizik nesnesi veya bir karakter birer Actor'dır. Pawn ve Character sınıfları da aslında Actor'dan türemiştir.
10. Actor Component (Aktör Bileşeni): Bir Actor'a işlevsellik eklemek için kullanılan modüler bir parçadır. Örneğin, bir Actor'a ışık eklemek için bir "Point Light Component", ses eklemek için bir "Audio Component" veya fiziksel etkileşim eklemek için bir "Static Mesh Component" ekleyebilirsiniz. Bu bileşenler sayesinde, aynı Actor'a farklı özellikler kazandırmak veya farklı Actor'lara aynı özellikleri kolayca eklemek mümkündür.
Seviye başlatma ve nesne oluşturulma akışı
Unreal Engine Editör'ünde bir seviyeyi çalıştırdığınızda (Play in Editor), nesnelerin oluşturulma sırası aşağıdaki adımları takip eder:
Bu hiyerarşi, Unreal Engine'in esnek ve modüler yapısının temelini oluşturur. Bu sayede, oyunun kurallarını, oyuncunun durumunu ve dünyadaki nesnelerin davranışlarını birbirinden bağımsız, yönetilebilir parçalar halinde organize edebiliriz.
* Actor, World içine yerleştirilebilen veya oluşturulabilen bir nesnedir. Konumu değiştirilebilir, döndürülebilir ve yeniden boyutlandırılabilir.
* Pawn, Actor'dan türetilen ve Actor'un sahip olduğu özelliklere ek olarak, bir Controller tarafından kontrol edilebilir ve işlem yapılabilen bir nesnedir.
* Character, Pawn'dan türetilen ve Pawn'un sahip olduğu özelliklere ek olarak, çevrede dolaşma yeteneğine sahip olan bir nesnedir.
Unreal Engine Editor Content Drawer içinde fareye sağ tıkladığımızda açılan menüden "Blueprint Class" seçeneğini seçtiğimizde karşımıza gelen pencerede gösterilen "Genel sınıflar" aşağıdadır.
Unreal Engine'in oyun oynama yapısı, oyun deneyiminizi üzerine inşa edebileceğiniz modüler bir temel sağlayan bir sınıf koleksiyonudur. Bu sınıfların birbirleriyle uyumlu çalışacak ve birbirlerini tamamlayacak şekilde tasarlandığını bilerek, oyununuz için uygun olan unsurları seçebilirsiniz.
Oyun yapısı sınıfları
Game instance, motor başlatıldığında örneklenir (instantiated) ve motor kapatılana kadar etkin kalır. Oyunda fiziksel olarak varlığı olmayan, bunun yerine verileri izlemek ve kod çalıştırmak için var olan bir yönetici sınıfıdır. Oyun örneği çoğaltılmaz ve çok oyunculu ağda yer alan sunucuda ve tüm bağlı istemcilerde bağımsız olarak bulunur. Level yüklemeleri arasında kalıcı olmasını istediğiniz her şey Game instance içinde bulunmalıdır. Örneğin, Game instance kayıtlı oyun sisteminizi yönetmek için iyi bir seçenektir. Game instance ayrıca, Game instance tarafından oluşturulan ve yok edilen ve Game instance'ın ömrüyle aynı süre boyunca var olan herhangi bir sayıda Game instance alt sistemi için bir yönetici görevi görür. Bu alt sistemlerden birine örnek olarak, oyununuzdaki arkadaşlar, oyun oturumları, lobiler, liderlik tabloları ve çok daha fazlası gibi çevrimiçi hizmet işlevlerini yönetmek için kullanabileceğiniz Çevrimiçi Alt Sistemler verilebilir.
Oyun modu (Game mode), level'ınız motora yüklendikten ve dünya oluşturulduktan hemen sonra örneklenir. Oyun modu, actor sınıfından türetilen sunucu tabanlı bir yönetici sınıfıdır. Bu sınıf, level yüklendiğinde oluşturulduğu için level'lar arasında kalıcı değildir. Oyun modu, level yüklendiğinde örneklenen ilk aktördür ve harita bazında ayarlanabilir. Oyun modu, bir oyun oturumunun genel kurallarını ve yapısını yöneten ve oluşturulduktan sonra kalan çerçeve aktörlerini örnekleyen oyun çerçevesinin merkezinde yer alır. İlk ikisi Game state ve Player state'dir.
Game state ve Player state, sırasıyla oyunun ve içindeki oyuncuların durumunu izlemek üzere tasarlanmış fiziksel olmayan aktörlerdir. Bu sınıflar, durum bilgilerini yetkili sunucu ile ağ çok oyunculu modundaki tüm bağlı istemciler arasında kopyalar. Oyun durumu, takım puanları, hedefler ve tüm oyuncuların listesi ve ilişkili oyuncu durumları gibi bir oyundaki tüm oyuncularla ilgili verileri ve mantığı içerir. Diğer yandan, oyuncu durumu, sağlık, cephane sayısı ve envanter gibi ilişkili oyuncusuyla ilgili verileri ve mantığı işler. Oyun modu tarafından tek bir oyun durumu oluşturulur. Her oyuncu bir oyuna katıldığında veya seviyeye girdiğinde bir oyuncu durumu oluşturulur.
Oyun modu, oyuncuları oyuna katıldıklarında ortaya çıkarır. Bir oyuncu temel olarak bir controller ve bir pawn'dan oluşur. Kontrolcü sınıfları, bir oyuncunun oyun dünyasındaki eylemlerini belirleyen mantığı işler. UE'de yaygın olarak kullanılan iki tür kontrolcü sınıfı vardır: Player controller and AI controller. Oyuncu kontrol sınıfı, bir insandan gelen girdileri işleyebilen, anlık bilgileri görüntüleyebilen ve oyunda fiziksel temsillere sahip olabilen bir yönetici sınıfıdır. Yapay zeka kontrol sınıfı ise, oyunda fiziksel temsillere sahip olan ve ağaç davranışları, ağaç durumları, gezinme vb. dahil olmak üzere UE'nin yapay zekasının yardımıyla eylemlerini belirleyen bir yönetici sınıfıdır.
Fiziksel olmayan bir aktör sınıfı olan kontrol sınıfı ve türetilmiş sınıfları, oyun dünyasında fiziksel bir görünüme sahip değildir. Pawn sınıfı, oyuncunun oyun dünyasındaki fiziksel görüntüsünden oluşur. Pawn sınıfı, bir oyuncu yaratmak için kontrol sınıfı kadar önemlidir. Kontrolcüler pawn'lara sahiptir ve pawn'ları oyunda eylemler gerçekleştirmek üzere yönlendirir. Pawn'lar, actor'dan türetilmiş sınıflar olarak, çarpışma bileşeni, statik ağ bileşeni ve hareket bileşeni gibi çeşitli actor bileşenlerinden oluşur. Karakter sınıfı, karakter hareket bileşeni, skeletal mesh bileşeni ve kapsül bileşeni gibi daha fazla özellik içeren bileşenlerle varsayılan pawn sınıfı üzerine inşa edilen pawn'dan türetilmiş bir alt sınıftır.
| Sınıf | Açıklama |
|---|---|
| Actor | Actor, bir level'a yerleştirilebilen kamera, static mesh veya player start location gibi herhangi bir nesnedir. Aktörler, hareket ettirme, döndürme ve ölçekleme gibi dönüşümleri destekler. Oyun kodu aracılığıyla oluşturulabilir ve yok edilebilirler. Aktörler ayrıca, aktör bileşenleri (Actor components) adı verilen özel nesne türlerini barındıran kaplardır. Aktörlerin nasıl hareket ettiğini, nasıl işlendiklerini vb. kontrol etmek için farklı bileşen türleri kullanılır. Aktörlerin diğer temel işlevi, oyun sırasında ağ genelinde özelliklerin ve işlev çağrılarının kopyalanmasıdır. |
| Actor bileşeni (Component) | Aktör bileşenleri, aktörlerin yapı taşlarıdır. Farklı aktör bileşenleri, aktörün nasıl hareket ettiği, nasıl canlandırıldığı, dünyada nerede bulunduğu, oyuncu tarafından nasıl görüldüğü vb. gibi aktörün farklı parçalarını kontrol eder. |
| Pawn | Pawn, bir oyuncu veya yapay zeka tarafından kontrol edilebilen herhangi bir aktörün temel sınıfıdır. |
| Character | Karakter, world içinde yürüyebilen, koşabilen, zıplayabilen, uçabilen ve yüzebilen, dikey yönelimli bir oyuncu temsili için tasarlanmış özel bir pawn türüdür. |
| Controller | Kontrolcüler, bir pawn'un hareketlerini kontrol etmek için işlem yapabilen fiziksel olmayan aktörlerdir. Bir oyuncu kontrolcüsü, insan oyuncular tarafından pawn'ları kontrol etmek için kullanılırken, bir yapay zeka kontrolcüsü, bir pawn'un hareketlerini dikte etmek için yapay zeka kullanır. |
| World | Dünya, Aktörler ve Bileşenlerin bulunacağı ve işleneceği bir haritayı temsil eden en üst düzey nesnedir. Kalıcı Level'ı ve oyun durumu (gamestate), oyun modu (gamemode) ve haritada bulunan Pawn'lar ve Kontrolcüler gibi birçok başka nesneyi içerir. |
| Game mode | Oyun modu, oyun çerçevesinde hangi sınıfların kullanılacağını belirten birincil sınıftır ve genellikle bayrağı ele geçirme gibi modlar için oyun kurallarını belirlemek için kullanılır. |
| Game instance | Oyun örneği sınıfı, oyun devam ettikçe varlığını sürdürür. Haritalar ve menüler arasında geçiş yapıldığında, bu sınıf aynı örneğini korur. Bu sınıf, oyun devam ettiği sürece, level'lar ve haritalar arasında var olması gereken bilgi ve sistemleri yönetmek için kullanılır. Oyun Örneği sınıfını, farklı oyun örneği alt sistemlerini düzenlemek için de kullanabilirsiniz. |
| Game instance subsystem | Oyun örneği alt sistemleri, oyun devam ettiği sürece var olması gereken sistemleri ve işlevleri düzenlemek için kullanılır. Örneğin, çevrimiçi deneyimler içeren oyunlardaki çevrimiçi hizmet işlevlerini kontrol eden alt sistemler. |
| Game state | Oyun durumu, takım puanları, hedefler ve tüm oyuncuların listesi ve bunlarla ilişkili oyuncu durumları gibi bir oyundaki tüm oyuncularla ilgili verileri ve mantığı içerir. |
| Player State | Oyuncu durumu, sağlık, mühimmat sayısı ve envanter gibi ilişkili oyuncusuyla ilgili verileri ve mantığı yönetir. |
| Gameplay statics | Sesleri çalmak, parçacık efektleri oluşturmak, aktörleri oluşturmak, aktörlere hasar uygulamak, oyuncu pawn'u almak, oyuncu kontrolcüsü olmak vb. gibi oyunla ilgili yaygın işlevleri yönetmek için kullanılan statik bir sınıftır. |
| User interface | Kullanıcı Arayüzleri (UI), oyun menüleri, göstergeler (HUD) ve oyun ekranı üzerine çizilen diğer öğelerden oluşur. Kullanıcılara bilgi sağlar ve oyuncuların oyunla etkileşim kurmasına yardımcı olur. |
| Heads-up Displays (HUD) | HUD, ekrana yerleştirilmiş öğeleri görüntülemek için temel nesnedir. Oyundaki her insan kontrollü oyuncunun, kendi görüntüleme alanına çizilen kendi örneği vardır. |
| Kamera | Kamera, oyuncunun bakış açısını veya dünyayı nasıl gördüğünü yansıtır. Bu nedenle, kameralar yalnızca insan kontrollü oyuncular için önemlidir. |