Yandex.Metrica
XNA'ye Giriş-Content Pipeline

XNA hakkında yaptığımız kısa tanıtımımızın ardından buyurun bu framework umuzu daha yakından tanıyalım ve hep beraber güzel örnekler yapmaya çalışalım.


Visual Studio ortamında yeni bir oyun projesi oluşturmamızın ardından karşımıza hazır olarak gelen 'Game1' sınıfı ve 'Content' isimli klasör biçiminde(İçerik Projesi) olan XNA Framework Content Pipeline karşımıza çıkıyor.


Öncelikle içerik kısmından başlamak istiyorum.Bir oyunda içerik(content) in çok önemli bir yer tuttuğunu belirtmemize gerek olmadığını biliyoruz.İster 2D(1) olsun ister 3D olsun herhangi bir oyun projemizde hayalimizde canlandırdığımız şeyleri beyaz tuvalimize(2) sorunsuz bir şekilde yansıtıyor olmamız önemlidir.


Şimdi çok basit bir oyun hayal edelim.Örneğin hemen akla gelen başlangıç anlamında oyun programlamanın Hello World ü olmuş bir oyun Pong*.Oyunun mantığını ve nasıl aktığını biliyorsunuzdur.Bunu tasarlayacak olan bizler için programlama dışında önem arz edecek şeylerden birisi örneğin küçük bir top resmi veya oyuna hareket katacak bir ses parçası olabilir.Projemiz büyüdükçe veya karmaşıklaştıkça bunlar gibi ihtiyaçlar(aslında biz onlara içerik diyoruz) artmaktadır.


2D bir oyunda örneğin oyunda görüntülenecek sprite(hareketli imaj) lar veya sabit konumlu imajlar,ses parçaları,video,yazı fontları en temel içerik çeşitlerimizi oluşturmaktadır.Diğer tarafta 3D oyunlar kısmında üç boyutlu modeller gibi içerikler söz konusu olduğunu biliyoruz.Hepsini ele alırsak şunu görüyoruz ki içeriğin oyunumuzu tasarlarken rahat bir şekilde kaynağından okunup,yüklenip kullanılması gerekmektedir.


XNA Framework ile gelen Content Pipeline mimarisi sayesinde içerik örneklerinden meydana gelen değişik dosya formatlarını yükleme,programda sorunsuzca kullanabileceğimiz veriler haline getirme,bu verilerin düzgün bir şekilde işlenebilmesi gibi işlemler için endişe etmemize gerek kalmıyor diyebiliriz.Content Pipeline sayesinde bizlere düşen sadece oyunumuzu programlamaya odaklanmak oluyor.


Kısaca XNA Game Studio'nun içerik hattı için çalışma mekanizmasını anlatırsak öncelikle sistemimize içerik yükleyebilmemiz için dışarıdan veri almaya yarayan importer mevcuttur.İmporter'ın görevi verileri dışarıdan almak ve sisteme entegre etmektir.Bu entegrasyon sonucu değişik verilerimiz DCC(Dijital Content Creation)(3) biçiminden XNA Game Studio Content Document Object Model(DOM) biçiminde kaydedilirler.3D dosya formatları(.FBX,.X),2D dosya formatları(.DDS,.BMP,.JPG,.PNG,.TGA),materyel dosya formatları(.FX),ses dosya formatları(.XAP(.XACT)) gibi çoğu bizlere tanıdık gelen dosya formatlarıyla işlem yapan importer mevcuttur.Bunlar standart XNA importer larıdır diyebiliriz. DOM biçimi için yüklenmiş asset(4) lerin meshes,vertices veya material olarak(processor lar için anlamlı) XML formatıyla yazılmış tek tip dosya halidir diyebiliriz.Özetle importer lar anlamlı verileri kaydederken processor ler bunları Content DOM'dan alarak program yürütülürken kullanılacak nesneler haline getirirler.XNA Framework Game Studio Content Pipeline processorleri Model,Texture2D,Effect.



Son olarak bu anlattıklarımızla ilgili olarak projemize örneğin bir resim dosyası yüklemek istiyorsak Content Manager sınıfı işimizi görüyor.Bu bileşen bizim tüm gerekli içerik dosyalarımızı hızlı ve sorunsuz bir şekilde yüklememizi sağlıyor.Sizlere ileride işin kod kısmına girdiğimizde daha çok anlaşılır olacağını düşündüğüm bu bileşenin çalışması hakkında bir örnek sunmak istiyorum.


Texture2D arkaplanResmi = Content.Load < Texture2D > ( " background " ) ;


Burada 2D doku sınıfı örneği arkaplanResmi nesnemize Content(5) adlı içerik dosyasına sürüklediğimiz background isimli muhtemelen .png veya .jpeg uzantılı olan imaj dosyasını yüklemiş oluyoruz.Bundan sonrası run-time(6) esnasında biraz önce bahsettiğimiz olaylarla ilişkilidir.



(1) Two Dimensional (İki Boyut)

(2)Bu yazıyı yazdığımda XNA Framework 3.1 sistemimde mevcut bulunmaktaydı.Bu sürüme kadar karşımıza gelen ilk penceremizin arka plan rengi Corn Flower(Peygamber çiçeği olarak geçiyor)(7) mavisi olarak ayarlıydı.Eminim adamlar sonsuzluğun ve özgürlüğün rengi olan maviyi seçerken bizlerden sizlere gerekli imkanları sunduk artık rahat bir şekilde hayal dünyanızı kodlayın diye bir mesaj yollamış olmalılar.(http://en.wikipedia.org/wiki/Cornflower)

(3)Animasyon,ses,imaj,video,grafik gibi dijital içeriklerin ilgili alanlarda gösteriminden önce oluşturulması ve düzenlenmesini ifade eden modern bir terimdir.

(4)Content Pipeline için kullanımı açısından diyebiliriz ki herhangi bir text veya media dosyasının kullanıma uygun bir şekilde ikili kodlanmış halidir diyebiliriz.İmaj,animasyon,ses,3D modeller giibi içerikleri kapsar.

(5)Visual Studio ortamında proje dosyalarını görüntüleyebileceğimiz Solution Explorer kısmında Content adlı içerik projemiz

(6)Program yürütülüyorken,çalışma anı

(7) Bir bayana buket halinde sunmak isterdim,zaten bizim gibi asosyal olarak bilinen programcıların zevkide anca böyle olurdu. :P



Comments(0):
Bu yazı için henüz bir yorum yapılmamış
Yorum yapabilmeniz için üye olmanız gerekmektedir,(Giriş Yap|| Üye Ol)