24 Kasım 2010 Çarşamba

Unreal Development Kit (UDK) - İlk Oyun Projemiz



UDK (Unreal Development Kit
) dünyanın en iyi (ve de pahalı) oyun motorlarından biri olan (çoğu kişiye göre en iyisi olan) Unreal Engine 3 ün ücretsiz dağıtılan kısıtlı versiyonudur. Kullanım ve üretim aşamasında bir sorun olmamak ile beraber, para kazanma aşamasında Epic Games in bazı şartları vardır. ancak bu şartlar oyun geliştiricilerin gözünü korkutmamış, bilakis orjinali servet fiyatı olan bu ürünün kısıtlı kullanımlı sürümü dahi bütün dikkatleri üzerine çekmiştir. Kendisini http://www.udk.com/download adresinden indirebilirsiniz.


UDK, özel 3D uygulamaları ve Oyunlar için ihtiyaç duyulabilecek çok geniş çeşitlilikte araçları hizmetimize sunmaktadır. Epic Games tarafından üzerinde şiddetle çalışılan bu teknolojinin şu anda bile dünyanın en iyi 3D oyun motorları arasında gösterilmesi, onun gelecekte de sahanın yıldız oyuncusu olacağını göstermektedir. Sık sık yeni versiyonları düzenli olarak sunulan UDK da yenilikler ile beraber bazı değişikliklerin de oluşması da kaçınılmazdır. Dolayısı ile varolan projemizi yeni çıkan versiyonda çalıştırmaya kalkıştığımızda bazı sorunlar ile karşılaşmamız muhtemeldir. Bu yüzden yeni bir versiyona geçerken önce eski versiyonda herşeyin düzgün çalıştığına emin olup sonra kademe kademe yeni versiyona test ederek geçmek, ve en sonunda da herşeyin düzgün çalıştığına emin olmamız akıllıca olacaktır. Bu denli hızlı geliştirilen bir teknoloji için bu değişiklikler normal karşılanmalıdır.


UDK nın son versiyonunu siteden indirdikten sonra kuruluma başlarken dikkat etmemiz gereken ilk şey kolayca bulabileceğimiz bir yere kurulum yapmamızdır. Çünkü (heleki programlama yapacaksanız) sık sık UDK dizinlerine erişmemiz gerekecek ve onların bulunması zor bir yerde olması işimizi zorlaştıracaktır. Ben C:\UDK şeklinde kurmanızı öneriyorum.

UnrealEditor bir oyun üretimi için ihtiyaç duyabileceğimiz her özelliği görsel bir ortamda bize sunmaktadır. Çok güçlü özelliklerine rağmen UDK nın oldukça makul sistem gereksinimleri vardır.


Oyun tasarım Editörünün arabirimi de 3D yazılımlarına oldukça benzerdir. Elbette kullanımı biraz daha farklı :) Bu makalede oyun tasarım editörüne girmeyeceğim. Olayın alt yapısından bahsedecek ve UDK yı programlamak için temel ayarlamaların nasıl yapılacağından bahsedeceğim. Belki ilerleyen zamanlarda editörün kullanımına dair çalışmalar da yapabiliriz. Ancak bu konu eninde sonunda 3D sanatçılarına daha çok hitap eden bir konu haline dönüşüyor. Ve de bir yazılımcı olarak işin kod tarafı beni daha çok ilgilendiriyor tabiki.


UDK, UnrealScript adı verilen bir script dili ile programlanabilmektedir. Aslında UDK tasarım editörü o kadar gelişmiş bir arabirim ve özellikler sunar ki hiç kod yazmadan dahi oyun üretebilirsiniz. Ama dinamik olarak olaya müdahale etmek isterseniz (ki adam akıllı bir proje oluşturmak için mutlaka isteyeceğiz) UnrealScript ile kod yazarak UDK nın neredeyse her özelliğine realtime müdahale edebileceğiz. UnrealScript, bir script dili olarak literatürde geçmesine rağmen, yazdığımız kodlar derlendiği ve çıktı olarak binary dosyalar oluştuğundan aslında (teorik olarak) programlama dili de diyebiliriz.


UnrealScript güçlü bir kod sistemine sahip olsa bile ciddi bir kod geliştirme ortamı (IDE) den şimdilik yoksundur. İstediğimiz herhangi bir text editörünü kullanabiliriz. Ancak önerilen bir kaç ortam vardır ki bunlardan biri de MS Visual Studio yu UnrealScript komutlarından anlayan hale dönüştürmektir. Ki bir .NET programcısı olarak ben bunu tavsiye ediyorum. Bu iş için nFringe isimli yardımcı progamı kullanıyoruz. Bu program bir modul olarak Visual Studio ya ekleniyor ve ardından VisualStudio muz UnrealScript üretirken de Intellisense (otomatik kod tamamlama), ve anlık hata düzeltme imkanı sunuyor. nFringe normalde ücretli bir yazılım ama ticari olmayan projeler için free. Detaylı bilgi için http://pixelminegames.com/nFringe.aspx adresinden bilgi alabilir ve programı indirebilirsiniz. (Bunun dışında UDK için kullanabilecek başka IDE lere gözatmak isterseniz http://wiki.beyondunreal.com/Legacy:Text_Editor sayfasına da bakabilirsiniz.)


UDK sadece görsel tasarım ortamı değildir aynı zamanda programlanabilir bir yapıdır demiştik. Ve UnrealScript için de OOP destekli bir script (!) dilidir diyebiliriz. OOP özelliklerine ek olarak bazı özel bazı kod yazım şekilleri de eklenmiştir. UnrealScript in syntax yapısına ilerde detaylı olarak değineceğiz. (başka makalelerde)



UDK yı programlamaya başlamadan önce ortam değişkenlerini ayarlamamız gerekir.Bu yüzden dilerseniz dizin yapısına kısaca göz atarak UDK yı keşif turuna çıkalım,



UDK Dizin Yapısı
UDK temel kurulum dizini altında 4 temel dizin bulunur :
  • Binaries

  • Developmens

  • Engine

  • UDKGame 



Binaries:
Oyun tasarım editörü ve aynı zamanda UnrealScript derleyisisi olan UDK.EXE başta olmak üzere UDK yı çalıştıran tüm önemli binary dosyalarımız (exe, dll vs..) burada bulunmaktadır. Bir anlamda UDK nın kensidinin yer aldığı kısımdır diyebiliriz. Binaries in bazı alt klasörlerinde birkaç ek yardımcı programlar da bulunmaktadır, SpeedTreeModeler (ağaç yapım programı) , FaceFXPlugins (3D yazılımlar için yüz çizim plugini), ActorX (3D modelleme yazılımları için bir başka ara plugin). Diğer dizinler UDK nın kendisi ile ilgili. (Win32, Win64, Windows, InstallData vs..)



Development:
Burası projemiz için çok elzem bir bölge. UnrealScript kaynak kodlarımızı yaratacağımız yer burasıdır. Development dizini altında 2 alt dizin göreceksiniz; bunlar Flash ve Src. Flash alt dizininde oyunun giriş menülerini oluşturmak için kullanılacak flash (evet bildiğiniz flash) dosyaları bulunur. SRC alt dizini asıl önemli olan ve UnrealScript lerimizi yazarken sürekli kapısını aşındıracağımız dizindir. Burada zaten UnrealScript için yazılmış (ham halde) çok sayıda kaynak kod dosyası bulunmaktadır. Geliştirme sürecimiz boyunca Development\SRC dizini altına kendi alt dizinimizi yaratıcaz ve kodlarımızı bu alt dizine ekleyeceğiz. bunu yaparken de SRC altındaki diğer kaynak kodlarından bol bol faydalanacağız.



Engine:
Burada UnrealEngine temel dosyalarının kullanabileceği pek çok unsur bulunmaktadır. Şimdilik bu dizinde herhangi bir değişiklik yapmıyoruz. Sadece yaptığımız uygulamalarımızın buradaki dosyaları/özellikleri (Shaders, Contents, Controls vs..) kullanacağını bileceğiz. Engine dizini altındaki dizinlere yüzeysel olarak gözatar isek,
  • Config : Temel konfigürasyon dosyaları içerir. Genellikle UDKGame dizini altındaki konfigürasyon dosyaları ile ilişkilidir ve oradakiler tarafından miras alınır.

  • Content : İçerik paketleri.

  • EditorResources : Editör tarafından kullanılan kaynaklar.

  • Localization : Her dil için ayrı bir localizasyon dosyası içerir. Oyunlarımıza geniş dil desteği verebilmek için.

  • Shaders : Shader özellikleri içeren dosyaları barındırır. Bunları kullanan uygulama daha zangin görüntüleme effektlerine sahip olur.

  • Stats : Rapor yaratmak için şablon dosyaları içerir.

    Şimdilik Engine dizinine pek bir müdahalede bulunmayacağız ama az çok ne olduklarını bilmekte de fayda var.





    UDKGame: Bir diğer önem arz eden dizinimiz de burasıdır. İlk anlamamız gereken şey bu dizinin doğrudan bizim üretmek istediğimiz oyun projesinin dizini olduğudur. Yani buradaki unsurlar doğrudan ya da dolaylı bizim eklediğimiz ya da en azından varlığından haberdar olduğumuz şeyler olmalı. UDK standart olarak bir kaç şeyi yine buraya da ekler. Ama bu dizini bizim kendi bölgemiz olarak düşünmemizde fayda var. Buradaki herşeyin bize özel olacağını da. UDKGame dizininde derlenmiş tüm scriptler ve projemize eklemek istediğimiz tüm içerikler / varlıklar (assets) tutulur. Her bir içerik türüne göre farklı dizinlerde tutulur. Dilerseniz bu dizinlere de yine kısaca gözatalım.

    • Content : XNA ile uğraşmış olanlarınız hatırlayacak ki orada da proje dizinimizde bir content dizini vardı. UDKGame içindeki Content dizini de oyun etaplarına eklenecek tüm paketleri tutar. Bu dizine eklenmiş herhangi bir içeriği oyunumuzda rahatça kullanabiliriz. Leveller, modeller, sesler, özel effectler, haritalar, alınabilir eşyalar, dokular (texture), ve ila oyun için her türlü içerik... Zaten kurulum ile birlikte bize birçok içerik verilmekte. Ama kullanırken lisans koşullarını ihlal etmemeye dikkat edin. Şimdilik pojenizde kullamayacak bile olanız bu içerikleri burada silmeden bırakmanız daha uygun. Çünü ugulama içinde buradaki içerikleri kullanan bimediğimiz kısımlar olabilir. Tek bir satırda bile referans olarak geçse ve biz o içeiği silmiş isek sorun çıkacaktır. Zaten proje bitminde oyunun paketlenmesi aşamasında kullanılacak içerikler bir araya getirlir, kullanılmyan içerikle burada yer alsalar bile çıktı da yer almzlar. Dolayısı ile buradaki dosyaların sıkı takibini yapmak zorunda değiliz. Yani kulanlmyanları belirleyip silmek çok da mühim değildir. Dilerseniz Content dizini altında kendi özel altdizininizi yaratır ve projemizin tüm içeriklerini oraya atarak karışmasını engelleyebilirsiniz. Burada ilk olarak Maps dizini ile tanışık olmakta fayda var. Adından da anlaşılacağı üzere bu dizin Unreal Editör ile yapılan .UDK uzantılı harita dosyalarımızı içine atacağımız yer olacak. Maps in içinde default olarak zaten bir kaç harita doayası olacaktır. Eğer henüz editörde iyi değil isek ilk denemeleri buradaki halihazırdaki harita dosyalarını kullanabiliriz.


    • Script : Derlenmiş script kodlarımızın yer aldığı dizindir. Az önce Development dizininden bahsederken SRC dizini altında kendi dizinimizi yarattığımızı ve açık kaynak kodlarımızı kaynak kodlarımızı orada ürettiğimizi yazmıştım. İşte bu kodlar derlendiğinde UDKGame\Script dizini altında .u uzantısına sahip dosyalar haline gelirler. Buradaki .u dosyalarına bakarsanız artık notepad yada başka bir editörde açılamazlar. Çünkü derlenmiş ve binary dosya haline gelmişlerdir. İşte bu yüzden UnrealScript e tam olarak script demeye gönlüm razı olmuyor :) Çünkü ortaya artık kaynak kodlarından tamamen bağımsız binary dosyalar çıkıyor. Yorumlanmıyor (!), derleniyorlar.. Dolayısı ile UnrealScript de herşey aslında gerçek bir programlama dili gibi işliyor.


    • Localization : Oyunumuzun menüleri ve içindeki mesaj bildirimlerinde kullanacağı dil paketini ayarlıyoruz.


    • Logs : Oyunumuzu gözlemeyip olan bitenin kaydının tutulduğu Log dizini.


    • Movies : Oyunun loading ekranında veyahutta içinde intro olarak göstermek istediğimiz videoları bu dizine (Bink video formatında) ekliyoruz. Bink video ları dosya uzantısı .bik olur ve Movies dizini altında baktığımızda iki adet .bik dosyasının default olarak geldiğini görürüz. Bunlar oyunumuzun çalışmadan hemen önce görüntülenen unreal logosunu gösteren videolardır. Biz kendimizinkileri ekleyebiliriz.


    • Config : Buradaki .ini dosyaları oyunumuz için hayati önem taşımaktadır. Burada iki tür ayar sisteminden sözedebiliriz, default ayar dosyaları ve, detaylandırılmış (materialized) ayar dosyaları. Materialized ayar dosyaları zaman içinde güncellenebilir. Ama sistemin temel ayar dosyaları motor tarafından güncellenmez.


    • Splash : Adına “Splash Screen” dedikleri editör ve oyun başlarken karşımıza çıkan .BMP formatındaki resimlerin yer aldığı dizindir. Default olarak 2 adet UDK ilişikli resim burada bulunur. Biz kendimizinkileri ekleyebiliriz.


    • CookedPC : Cooking işlemini daha üst düzey bir derleme aşaması olarak düşünebiliriz. Hatırlayın ki SRC altındaki dosyalarımız derlenerek .u dosyaları haline geliyordu. Cooking işlemi ise haritalar ile bu kodları ve içerikleri birşeştirerek derlenmiş kullanıma (oynanmaya hazır) sahneler haline getirilirler. İşe bu işleme maruz kalmış içerikler de CookedPC dizininde bulunurlar. Cooking işemi oyunun paketlenip dağıtılmasından bir önceki derleme aşamasıdır. Sahnelerimizin derlenip derlenmediğini bu dizinin içine bakarak kontrol edebiliriz. 





    UnrealScript 
    UnrealScript paketlerinin yönetimini nFringe ya da VisualStudio yapmaz. Tüm bu kod paketlerinin doğru dizinlere yerleşim işini bir manuel olarak kendimiz yapmalıyız. Projemize etki edecek config dosyalarının güncellenmesi (projemize göre modifiye edilmesi) de buna dahildir.

    UDK\Development\src dizini altında zaten birçok alt dizin bulunduğunu farketmişsinizdir. Bunların her biri Classes isimli tek bir alt dizin içerir ve işte onunda altında emrimize amade olarak sunulmuş, çok sayıda UnrealScript sınıflarını içeren kaynak kodları bulunur. İçlerinde yer alan her .uc uzantılı metin dosyası açık bir sınıf (class) tanımı içermektedir. İlerde örneklerini yaptıkça göreceğiz ki tüm bu class kodlarını rahatlıkla kendi uygulamamıza çağırabilir ve kullanabiliriz. Özetlemek gerekirse “Classes” alt dizin ismi olarak UDK da standarttır. Derleyici .uc sınıf tanım dosyalarını burada arar. Classes ismi altındaki .uc dosyalarının her biri sadece bir sınıf tanımı içinde barındırır ve tanımlanan sınıfın ismi .uc dosyasının ismi ile aynı olur.

    SRC altındaki her bir dizin derleme sonrası tek bir dosya haline getirilir. Bu dosya dizin ismi ile aynı adı taşıyan .u uzantılı bir binary dosyadır. Bu dosya UDKGame\Script altında oluşur. (Derlemenin nasıl yapılacağı konusuna daha sonra gelicem.)

    UnrealScript ile UDK oyunlarımıza renk/güç katmaya karar verdiğimizde ilk olarak UDK\Development\src dizini altında kendimize ait bir proje dizini oluşturarak işe başlamalıyız. Dizinin ismi tamamen size kalmış. Ben MyGame isimli bir dizin yarattım. Sonra da (SRC altındaki diğer dizinlerde olduğu gibi) MyGame in altına bir de Classes isimli bir alt dizin açtım. Ki .uc uzantılı class kaynak dosyalarımızı burada yaratacağız.

    UDK nın hemen her noktasına kod ile müdahale edebiliriz. Kullanıma hazır 2000 den fazla sınıf bu yüzden üretilmiş durumdadır. Yeni bir özellik katabileceğiniz gibi varolan özellikleri de değiştirebilirsiniz. İlk olarak default olarak kullanımda olan first person shooter (FPS) kameranın açısını basitçe değiştirerek küçük bir örnek yapacağız. Kaynak kodlarını hazır olarak indirmek için doyaların üzerine tıklayın : MyGameInfo.uc, MyPawn.uc, MyPlayerController.uc

    Buradaki kodlar UDK kullanarak yapılan ciddi projelerden olan TheBall isimli oyunu üretenlerin sitesinde verdikleri makaleye ait. Halihazırda basit bir örnek olduğundan ben de bu makalede aynı kodları kullanıcam. Detaylı bakmak için siteyi ziyaret edebilirsiniz : http://www.theballthegame.com 

    Zip dosyasının içindeki folderi olduğu gibi Development\SRC altına atın. Yani böyle : Development\SRC\MyGame

    Lakin buna rağmen UnrealScript MyGame dizinini derlemeyecektir. Kendisine orada olduğumuzu belirtmek için config dosyalarında bazı küçük ayarlamalar yapmalıyız. UDKGame\Config dizini altında çok sayıdı .ini dosyası bulunmaktadır. Bunlar üretmek istediğimiz oyun ile ilgili çok sayıda ayarların tanımlandığı dosyalardır. Kodlarımız için yapacağımız ayarlama UDKGame\Config\UDKEngine.ini dosyasınındadır. Bu dosyayı herhangi bir metin editöründe açıyoruz. [UnrealEd.EditorEngine] tabı altında bazı EditPackages tanımlamaları göreceğiz. Bunlar default olarak tanımlanmış derleyicinin dikkate alacağı temel UDK paketlerdir. Ve elbette buraya kendi özel paketlerimizi ekleyebiliriz. Bunun için ModEditPackages deyimini kullanacağız. Yukarıda projemize başlarken SRC dizini altına MyGame dizini eklemiştik. İşte o dizini burada ModEditPackages komutu ile UnrealScript derleyicisine tanıtmış oluyoruz.


    [UnrealEd.EditorEngine] 
    ModEditPackages=MyGame
    EditPackages=Core
    EditPackages=Engine
    EditPackages=GFxUI
    EditPackages=GameFramework
    EditPackages=UnrealEd
    EditPackages=GFxUIEditor
    EditPackages=IpDrv
    EditPackages=OnlineSubsystemPC
    EditPackages=OnlineSubsystemGameSpy
    EditPackages=OnlineSubsystemLive
    EditPackages=OnlineSubsystemSteamworks
    ......
    ....
    yani böyle.

    Tekrarlamakta yarar varki Burada yer alan EditPackages ve ModEditPackages deyimleri son derece önem arz eder. Bunlar udk nın kendisinin ve bizim eklediğimiz paketlerin derleme işlemine katılmasını sağlayan tanımlamalardır. Birden fazla mod package tanımı da yapabiliriz. Ama her biri için Development\Src altında ayrı bir dizinimiz olmalı. Paket isimleri de temsil ettiği dizin ismi ile aynı olmalı. Bu tanımlama satırları aynı zamanda derleme işleminden etkilenecek class hiyerarşisini de belirlemiş olur. Ve buradaki sıralama yine çok önemlidir. Çünkü bu hangisinin önce derleneceğini ve yükleneceğine karar veren sıradır. Bazı sınıflar diğerlerine bağlı olduğunu düşünürsek derlemeye yanlış sırada katılan sınıflar hataya sebep olabilir. Sınıflar kavramına daha sonra detayları ile gireceğiz (başka makalelerde).





    Ön Derleme
    Şimdi bir ön derleme yapalım. Bütün derleme işlemlerimizi ve fazlasını Binaries\Win32 (veya win64) altındaki UDK.EXE yapmaktadır. Ama bu komutu konsoldan kullanmak için pek çok parametresini bilmek gerekmektedir. Epic Games bunun için bize fonda buradaki udk.exe yi kullanan ve bunu kolay bir arabirimde yapan bir program hazırlamıştır. UDK kurulumu ile birlikte gelen bu küçük programcığın ismi UnrealFrontEnd dir.





    Programı çalıştırdığımızda Make menüsünden FullREcompile dersek SRC altındaki tüm .uc kodları derlenir. UDKEngine.ini de gerekli ayarlamayı da yaptığımız için FrontEnd artık MyGame dizininden haberdardır. Eğer bir sorun yoksa “succesfull” mesajı ile birlikte UDKGame\Script dizini altında MyGame.u dosyası oluşmuş olmalıdır. Eğer MyGame gibi başka dizinlerimiz de varsa onlar da aynı şekilde dizin ismi ile aynı adı taşıyan .u dosyasına derlenecek ve UDKGame\Script altına konacaktır. (Şayet sorun varsa ModEditPackages=MyGame satırını en alta alıp tekrar deneyin.)

    Bu noktada bilmemiz gereken ilk şey derlenenin sadece sadece kod derlemesinin olduğudur. Yani .u dosyaları sadece kodlarımızın derlenmiş halidir. Ve oyunumuzun diğer içeriklerinden bağımsızdır. Yani kodlarla oyun atmosferini birleştirmek için 2. bir toparlama işlemi daha yapmamız gerekecek. Ki buna da Cooking işlemi diyoruz. Ama cooking işleminden önce de birkaç ayar yapmamız gerekiyor.

    UDK oyunlarında bir de GameType (oyun tipi) kavramı vardır. Oyun tipi denen şey aslında GameInfo sınıfından (ya da Game sınıfları ailesinden yaratılan) özelleştirilmiş bir sınıftır. Oyun tipi oyunun ana hattını (temel sistematiğini belirleyen omurga gibidir ve önemlidir. Geçerli oyun tipini öğrenmek için UDKGame.ini dosyasının içindeki [Engine.GameInfo] tabının altına bakmalıyız. Buradaki ilk satıra dikkat ederseniz :

    DefaultGame=UTGame.UTDeathmatch


    görünüyor. Buradaki ilk kısım yani ‘UTGame’ derleyiciye Development\SRC\UTGame dizinini işaret etmektedir.

    UTDeathmatch’ ifadesi ise bu dizin altında bulunan UTDeathmatch sınıfını işaret ediyor.

    Bütün bunlar ne demek?? şu demek : biz de kendi oyun tipimizi SRC dizini altında yaratabiliriz. Bunun için GameInfo dan yada başka bir oyun sınıfını temel sınıf olarak kullanarak devralma yöntemi ile kendi oyun tipi sınıfımızı yaratabiliriz. UTDeathmatch sınıfını bile devralarak zenginleştirebilir / değiştirebiliriz :)

    Bu arada oyun tipini none olarak da belirterek de varsayılan oyun tipini değiştirmemiz mümkün. Ben bunu denedim ve açıkçası gördüğüm manzara beni pek etkilememişti...

    Şimdi UDKGame\Config\UDKGame.ini içindeki ilgili değişiklikleri yapalım. Değiştireceğimiz satırlar şöyle:

    [Engine.GameInfo]
    DefaultGame=MyGame.MyGameInfo
    DefaultGameType=MyGame.MyGameInfo
    DefaultServerGame=MyGame.MyGameInfo
    PlayerControllerClassName=MyGame.MyPlayerController
    DefaultMapPrefixes= (Prefix=”MG”,bUsesCommonPackage=FALSE,GameType=”MyGame.MyGameInfo”)
    ….................
    …........

    Şimdi ilk olarak oyun tipini ayarlayacağız. Bunun için [Engine.GameInfo] tabına gittiğimizde default oyun tipinin DefaultGame=UTGame.UTDeathmatch olarak ayarlı olduğunu görürüz. Bir çok sebepten dolayı şu aşamada bu oyun modunda oynayamayız. Bu yüzden o satırı
    DefaultGame=MyGame.MyGameInfo
    olarak değiştiriyoruz. Aynı şekilde playercontroller sınıfının tanımlandığı satır olan “PlayerControllerClassName=UTGame.UTPlayerController
    satırını da kendi playercontroller nesnemizi kullanmak için "PlayerControllerClassName=MyGame.MyPlayerController"
    olarak değiştiriyoruz. Son olarak en sona
    DefaultMapPrefixes= (Prefix=”MG”,bUsesCommonPackage=FALSE,GameType=”MyGame.MyGameInfo”) satırını da ekliyoruz.

    Prefix nedir? Prefix programlama literatüründe dosyaları isimlerine göre gruplamanın bir yoludur. İsmin önüne koyduğumuz bir ek kelime ile onları teknik olarak gruplandırır ve bu ek ile teknik işlemlere maruz bırakırız. Az önce DefaultGame.ini ye eklediğimiz son satırda UDK level dosyasının adının “MG” ile başlayacağını derleyiciye .ini dosyasının içinde bildirmiş oluyoruz.

    Artık level oluşturabiliriz. Level oyunun tüm atmosferidir. Yani UDK editöründe üretilen .UDK uzantılı mapler. UDK Editörü bu makalenin konusunun dışında olduğundan şimdilik o konuya girmiyorum. Burada şimdilik basit bir harita üretelim eğer yapamıyorsak varolan haritalardan birini kullanabiliriz. Tüm yapmamız gereken dosyası “MG-ExampleGameLevel.udk” adı ile …\UDKGame\Content\Maps dizinine kaydediyoruz. Dosya adının başındaki MG işte az önce bahsettiğimiz prefix. Yani cooking işleminde bu dosyanın UDKGame.ini dosyasında ayarlanan oyun tipinde olacağını söylüyoruz.

    Şimdi artık Cooking işlemine geçebiliriz. Tekrar Unreal FrontEnd programımıza dönelim ve bu defa Cook menüsünden Full Recook diyelim.






    İşlem başarı ile sonuçlanmış ise artık programımız tamamen derlenmiş, içerikleri birleştirilmiş ve çıktı almaya hazır halde demektir. Kurulum dosyası olarak çıktı almak için son olarak en Sağ taraftaki Package Game buttonunu kullanın. FronEnd kuruluma hazır olarak bir exe üretecektir.

    Hayırlı olsun! :)



    Bir antiparantez olarak şunu da ekliyimki, cooking işleminden sonra haritalarımızı çıktı almadan test etmek isteyebiliriz. Ki doğal olarak isteyeceğiz de. Bunun içinde yine FrontEnd in Launch buttonunu kullanıyoruz.



    Aslında bir haritayı denemek için ille de cooced etmiş olmanız şart değil. Ama gerçek bir deneme yapmak için cooking işleminden sonra sahayı burada denemenizi öneririm.


    UDK dünyasına basitçe girmiş olduk. Daha derinlemesine projeler ve kod örneklerini zaman buldukça üretmeye ve burada paylaşmaya çalışacağım. Bu makale bir ön giriş niteliğinde idi. He türlü fikir / bilgi paylaşımına açığım.

    Saygılarımla,

    (Not : buradak bilgilerin UDK nın yeni versiyonları ile birlikte değişime uğrayabileceğini lütfen dikkate alınız.)
    Yorum Gönder