Ana sayfa Yazılım Unity 3.0 incelemesi: Unity ve iPhone, ördek proje

Unity 3.0 incelemesi: Unity ve iPhone, ördek proje

0

Unity 3.0″in ne gibi yeni özellikler getirdiğini inceleyeceğiz. Ardından küçük bir projeye başlayıp, ilk aşamasında modellediğimiz ya da sağdan soldan bulduğumuz 3D objeleri Unity”deki sahnemize atmayı öğreneceğiz.  Unity”nin çeşitli platformlara uygun çıktı verebilmesi özelliği ile tanışma olması açısından, bu projemizin bir iPhone uygulaması olmasını düşündüm. Böylelikle iPhone uygulaması geliştirmenin az gizemli dünyasına da giriş yapmış oluruz
 

Unity 3.0 İncelemesi

Unity3.0  ile gelen özelliklere bir özet geçecek olursak;

• Tek bir Unity bütün Platformlara Hükmedecek. iPhone”a uygulama geliştirmek için ayri Unity, Windows”a, Mac OS”a ayrı Unity işi bitti. Bütün Unity”ler tek bir bayrak altında toplandılar. Sadece build ederken iPhone”a mı Xbox”a mı, Android”e mi, kısacası hangi platformda çalışmasını istiyorsanız seçiyorsunuz, o kadar.

• Lightmap geldi. Hem performans getiren, hem de Genel Aydınlatma metodunun (Global Illumunation) güzelliklerini gerçek zamanlı uygulamalarımızda kullanmamızı sağlayan “pre-render” dokular olan ışıklandırma haritalarımızı (lightmap) artik Unity”nin içinde oluşturabiliyoruz. Eskiden Maya”da “batch-bake” ile bir takim bürokratik gereklilikleri yerine getirdikten sonra ışıklandırma haritası oluştururduk. Max”de daha kolay olarak olmasına karşılık, Cinema 4D “de FBX formatında Maxon firmasının önemsemediği hatalar olduğu için çeşitli taklalar atarak bir şekilde oluşturuyorduk. Simdi Unity “Beast” isimli ışıklandırma haritası üretim aracını bünyesine kattı. Böylelikle normalde 90.000$ civarında lisans ödenen Beast teknolojisi bedava olarak elimize geçiyor. (Şekil 1)
 

unity
Şekil 1
 
Audio Magic: Ses alanında yenilikler var. örneğin yürüdüğünüz yere göre değişen ses efektleri ( tünelde boğuk ayak sesleri, katedralde yankılı ayak sesleri) elde edebiliyoruz.

• Unity”nin ciddi eksiklerinden olan, hatalarımızı saptamamıza ve script”lerimizde konforlu çalışmamıza yarayan hata izleme, debugging geldi. Yaşlı dost 3D Game Studio”da kirik dökük de olsa yıllardır var olan debugging Unity”e 5 sene gecikmeli ulaştı. Apple bize eşeği satar. Ama yanında vermesi gereken semerin teknolojisi, içine sinmemişse bize vermez. Semeri rahat hale getirmek için gizli gizli çalışır. Sonra semeri 1 sene sonra istediği hale getirince bedava verir. Ama sonuçta, biz bir sene eşeğe semersiz bineriz (bkz. iPhone dünyası ve sms, copy-paste, facetime, video recording özellikleri) . Vakti zamanında Apple tasarım ödülünü almış olan Unity”de sanırım bu inceliklere dikkat ediyor ki, bize 5 sene sonra debugging bağışladı. Bu süre zarfında icat ettiğim tuhaf debugging metotlarına o kadar alışmışım ki, daha bakmadım bile yeni gelen bu özelliğe.

 

Defferred Rendering: Rendering konusunda önemli bir gelişme olan ve yüzlerce ışığı gerçek zamanlı render etmeye yarayan bu teknoloji ile etkileyici sahneler canlandırmak mümkün olabiliyor. Defferred rendering metodunun zorlandığı kısımlar olan transparency ve antialiasing konusunda Unity 3.0″in nasıl üstesinden geldiğini test ettikçe yazacağım.
(Şekil 2 )

Lens Efektleri: Depth of Field, God Rays gibi etkileyici “post process” efektleri pakete dâhil edilmiş.
 

unity 3.0
Şekil 2
 
Asset Management: Proje büyüdüğü zaman klasörlerin arasında gezip doku arama isi tarihe karıştı. Güzel bir arabirimle bütün dokularımızı objelerimizi ön-gösterimle bulabiliyoruz.

Occlusion Culling: Eskiden Unity kameranın baktığı her şeyi, görmesek bile çizerdi. Bir duvarın arkasındaki diğer odayı ve içindeki objeleri biz duvar yüzünden görmesek bile çizmeye uğraşırdı. Şimdi bu özellik sayesinde Unity görmediğimiz objeleri gerçekten çizmiyor. Diyelim ki Silent Hill”deki gibi hastanede gecen bir level tasarladınız. İlk katta idari bir ofis var, oradan çıkınca yine ayni katta, bir takim acayip tekinsiz işlerin dönmüş olduğu yüzlerce hasta odası var. Aşağıda `bugün inmesek?` diyeceğimiz bodrumlar var. üstte de akilli insanin adımını atmayacağı ameliyat odaları var. Level”imizi Max”de düşük poligonlu çizdik, ve kanlı, paslı, fayanslı ve uğursuz dokularımızla Unity”ye aldık. Karakterimizi idari ofise koyduk ve çalıştırdık. Unity, bize göstermese de, eskiden kameranın baktığı yerde ve kameranın gördüğü yakin ve uzak sınırlar içersindeki her şeyi için için çiziyordu. Yani arada duvarlar olsa ve biz yan odaları göremesek de, bakış açımızdaki bütün hasta odalarını, üst katı, alt katı çiziyordu. Bu ciddi bir performans kaybı demekti. Şimdi bu tür optimizasyonları yapar hale geldi. Bunu da Umbra firmasının yine Alan Wake, Conan gibi oyunlarda kullanılan ve epey pahalı olan sistemini pakete dahil ederek yapıyor. Bu da çok ciddi bir performans artışı sağlıyor. Yalnız gece vakti bunları yazarken Silent Hill”i hatırlamak iyi olmadı. Televizyonda neşeli sesleri olan bir şeyler açıyorum, ışıkları arttırıp devam ediyorum.

 

• Karakter kontrolünde kullanabileceğimiz ekstra scriptler, birbirinden farklı ağaçları otomatik olarak üretip nispeten daha gerçekçi bir ormanlar yaratacağımız procedural-tree-creator eklemiş. Ve artık lightmap, texture-import gibi birçok süreç multi-tasking olarak çalışıyor.

Sonuç olarak Unity 3.0 sınıfındaki oyun motorlarına göre çok akıllıca işler yaparak multiplatforma ağırlık veriyor. önceki versiyona göre %50″lere varan bir render hızı artışı vaat ediyor. Büyük sürüm yükseltmesini, dolayısı ile upgrade paramızı cüzdanımızdan çıkartmasını hakli kılan sayamadığım iyileştirmeler ve yeni özellikler barındırıyor. Lightmapping ve Occlusion Culling gibi sistemleri kendisi geliştirmek yerine Beast, Umbra gibi kendini kanıtlamış paketleri ürününe dahil ediyor. Böylelikle Unity geliştiricileri bu ayrı uzmanlık isteyen iki konu ile boğuşmuyorlar ya da onlarla uğraşacak programcılar alıp ekibi kalabalıklaştırmıyorlar. Onun yerine masada bir takim anlaşmalar yapıp kanıtlan mış sistemleri Unity”nin fiyatına fazla yansıt madan geliştiri cilere sunu yorlar. Ve geliş tiricinin konforuna yönelik editör ve son oyun tekno lojilerini içeren çekirdek motora yönelik iyileştirmelere odaklanabiliyorlar. Bunlardan daha önemli olan bir şey, Unity 3.0 Pro versiyonunun editör rengi, koyu gri!
 

iphone ve unity
Şekil 3
 

iPhone ve Unity

iPhone güçlü işlemcisi, grafik özellikleri ve özellikle oyun çeşitliliği ile oyun konsolu kabul edilmeye başladı. Şu anda 300.000″e çıkmış ve %80i bedava olan uygulama çeşitliliği ile önemli bir platform haline geldi. Şu anda geliştiriciler açısından, ilk zamanlardaki gibi bir “altına hücum” durumu kalmadıysa da, halen kaliteli bir oyun geliştirerek zengin olma ihtimaliniz var. örneğin son zamanlarda çıkan Angry Birds isimli oyun 12 milyon adet sattı ve satmaya da devam ediyor (Şekil 3). “Yakında oyuncakları çıkar oradan da kazanmaya başlarlar.” yazacaktım. İçime bir kurt düştü ve Google yapıp geldim. çıkmış ve Amazon”da 99$”a satılıyor. “Yakında filmini de çekerler oradan da kazanmaya başlarlar” yazmadan evvel bir baktım. Sanırım o da olacak.

Unity ile iPhone (aypon) için bir şeyler geliştirmek istiyorsak Apple yolundan yürümemiz gerekiyor.

iPhone için kullanacağımız geliştirme ortamı Mac OS X işletim sisteminde çalışıyor. Bu yüzden bir Mac sahibi olmamız gerekiyor. Mac almak istemiyorsanız, PC”nize eğitim amaçlı da olsa, legalliği kuşkulu olan Hackintosh kurarak bir başlangıç yapılabiliyor. Bunu bir iş olarak görüyorsanız, legal yolu seçmenizi ve ona göre yatırım yapmanızı tavsiye ediyorum.

 

iPhone geliştiricisi olmak için developer.apple.com adresine girip kendimize bir geliştirici hesabi açmamız gerekiyor. Sonra yillık 99$ verip IOS development programa katılmalıyız. Bu aşamadan sonra ücretsiz IOS SDK”yi indirip uygulama geliştirmeye başlayabiliriz. Eğer standart bir program geliştireceksek XCode yazılım geliştirme ortamında objective-C dilini kullanmamız gerekiyor. Fakat Unity ile objective-C öğrenmeden de iPhone uygulaması geliştirebiliriz, Unity gerekli kodu bizim için oluşturacaktır.

Uygulamamız telefonumuzda çalışır hele geldikten sonra geliştirici hesabımız aracılığı ile yazdığımız uygulamayı Apple”a yolluyoruz. Apple test elemanları test edip onaylarsa yazılımımız App Store”da yerini alıyor.

Yani özetleyecek olursak Bir Mac, bir iPhone, iPhone Unity lisansı ve biraz Apple bürokrasisi ile boğuşma sonucu yarattığımız uygulamayı 70 milyon iPhone kullanıcısının beğenisine sunabiliyoruz.
 

ördek proje
 

Eğer iPhone bizi hiç ilgilendirmiyorsa da okumaya devam edebiliriz, çünkü bundan sonraki bölüm Unity”deki genel ve çok kullanılan işlerle alakalı olacak.

ördek Proje: Bölüm-1

Projemiz kapsamında bir zamanların favori oyuncaklarından olan şekil 4″te gördüğünüz sulu oyuncaklardan bir tanesini (en soldaki) biraz da kendimizce yorumlar katarak canlandırmaya çalışacağız. Bu amaçla öncelikle denizaltıya yerleş tireceğimiz dalgıç karak terimizi model leyeceğiz. Ardından Beatles”in ilgili şarkisini mp3 çalarımıza yerleş tirdikten sonra sarı-deniz altımızın model lemesine geçeceğiz. En son sulu ortamımızı da çizdikten sonra Unity”de sahneyi kuracağız. Simülasyon için gerekli fiziksel parametrelerimizi ayarlayıp script”ler yazacağız. ördek dalgıçtan başlayalım.

 

Herhangi bir formattaki 3D objeyi Unity”den import Etmek ve Poligon Bütçesi

Sekil 5″de gördüğünüz gibi Cinema 4D kullanarak uygulamamızın başkarakteri olan dalgıç ördeği modelledim. Modelleme kısmı üzerinde detaylı durmayacağım, primitif objeleri eğip bükerek yarattığım ve dergimizdeki modelleme ustaların affına sığınarak yarattığım bir karakter. Düşük poligon sayısında olması için elimden geleni yaptım.
 

3d objeyi import etmek
Şekil 5
 
Poligon bütçesi oyun geliştirmede özellikle planlama aşamasındaki en önemli konulardan biridir. Unity ile gerçek zamanlı 3B uygulamalar yaparken dikkat edeceğimiz şeylerden bir tanesi, tahmin edilebileceği gibi, uygulamamızın gerçek zamanlı olabilmesidir. 3D Max”de bir render alırken render süremiz 10 dakika ya da 1 gün sürebilir. Ama gerçek zamanlı olabilmesi için saniye en az 24 kere render edilebilecek şekilde bir çok yazılım ve grafik optimizasyonları yaparken, sahnemizin toplam poligon sayısını da ayarlamalıyız. Şu anda oyun oynadığımız bilgisayarlarda ya da konsollarda milyonlarca poligon gerçek zamanlı gösterilebilirken, iPhone 3G için güvenli aralık 5000-10000 poligon arasındadır. iPhone 4 ve 3GS daha performanslı olsa da, şu anda piyasada çok fazla 3G olduğunu düşünerek, poligon bütçesini bu aralıkta tutmak risksiz bir strateji olabilir.

Bizim ördeğin poligon bütçesine gelecek olursak; 3 tane ördek, denizaltı, su kabı ortamdaki 3D objelerimiz olacak. 2000 poligon su kabına ayırsak, 2000 de denizaltı götürse, ördeklerimize 1000er poligon ayırsak yeter. Uygulamamızın performansını etkileyen tek element poligon sayısı değil elbette. Bu poligon sayılarına nasıl karar verdiğimizi ve performansı etkileyen diğer unsurlar konusunu gelecek sayıda biraz daha inceleyeceğiz.

 

Modelleme işlemi bittikten sonra dosyamızı FBX formatında export ediyoruz. Eğer modelimizi 3D Max, Maya, Cheetah 3D, Modo, Lightwave, Blender ya da Cinema 4D gibi modelleme programlarında yarattıysak doğrudan kendi formatında da kaydedip Unity”ye atabilirdik. Ama bu iş akışı, kullandığımız modelleme programının olmadığı bir bilgisayarda açtığımız zaman sorun çıkartabilir. O yüzden, modelimizi son derece uyumlu, hatta uyumluluk amacı ile geliştirilmiş FBX formatında kaydetmekte fayda var. Modelimizi kaydettikten sonra iki yöntemle Unity”ye yollayabiliyoruz.
 
modelleme
Şekil 6
 
1) fbx dosyasi ve ilgili dokuları doğrudan proje klasörümüzün içindeki “assets” klasörünün içine kopyalayabiliriz. 2) Dosyamızı kulağından tutup, sürükleyip Unity editördeki Project alanına bırakabiliriz. İki şekilde de Unity niyetimizi anlar ve import eder. Dosyanın büyüklüğüne göre import işlemi biraz sürebilir. Eğer becerebildiysek Project içinde “Ordek.fbx” dosyamızı görebiliyor olmalıyız. ördeği Project alanından tutup yukarısındaki Hierarchy alanına ya da doğrudan sahneye sürüklersek ördeğimiz o an açık olan Level”da belirecektir. (Şekil 6)

 

BİR CEVAP BIRAK

Please enter your comment!
Please enter your name here