1 Ağustos 2011 Pazartesi

3B Mobil Oyun Grafiklerinin Anatomisi

Cep telefonları artık “Alo” demekten daha fazla işleve sahip. Çılgınlık seviyesindeki yaygınlığı ve gelişme ivmesi ile mobil cihazlar, bizlere yeni bir mecra sunmuş oldu.


Bu mecra doğalı bayağı oldu aslına bakarsanız, yazdıklarım yeni şeyler değil. Piyasadaki en düşük telefon bile internete giriyor, e-posta kontrol ediyor, PDF okuyabiliyor, ofis yazılımlarını barındırıyor hatta oyun oynatıyor. “Oyun oynamak” yapılabilecek diğer şeylerden farklı bir yere sahip. Çünkü eğlenmek en temel dürtülerimizden. Apple ‘ın App Store ‘unda satılan binlerce oyun bunun kanıtlarından biri.

Oyun işinin ciddiyetini görmek için madalyonu çevirdiğimizde, vizyona girecek filmlere ait oyunların kendinden önce piyasada yerini aldığını görebiliriz. Sadece App Store değil, diğer mobil işletim sistemleri için de yüzlerce (hatta binlerce) oyun mevcut. Yeni çıkan oyunlar ile sınırlamayın kendinizi, mobil işletim sistemleri üzerinde çalışan emülatörler ile eski konsol oyunlarını oynamakta mümkün. Hepsini toplayınca cepteki oyun sayısı on binleri buluyor.

Bitirme tezi şeklinde yaptığım bu girişin sebebi, oyun işinin “çocuk oyuncağı” olmadığını göstermek. Sektörün çarklarını döndüren meblağlar bir kenara bilinçaltına verilen mesajlar, aşılanan kültürler de cabası. Genç nesle baktığımızda “Alıcı” olarak gayet iyi bir konumda olduğumuz aşikâr. Ama “Alıcı” konumdan, “Üretici” konuma geçmek zorundayız. Aslında sektör “Üretici” sancısını senelerdir çekmekte. Geçiş dönemindeyiz hatta sonlarındayız, yavaş yavaş ayağa kalkmaya başlıyoruz. Neyse ki, “-Emekleme aşamasındayız” muhabbetlerini aştık! Son dönemde kurulan firmalar, peş peşe çıkan oyunlar, devletin ve büyük holdinglerin konuya eğilmesi (TRT çocuk kanalının kurulması / yerli yapım yayınlama mecburiyeti, yerli oyun firmalarının holdinglerin bünyesine katılması) çok güzel hareketler ve konunun gittikçe ciddiye alındığının göstergesi.

Neticede bilgisayar ve teknoloji konusunda bir türlü “Üretici” olamamanın sıkıntısını atmak üzereyiz. Tabi bilgisayar oyunları, sadece ağacın bir dalı. Filmler, canlandırma filmler (çizgi film) ile yelpazeyi genişletmek mümkün.


Topla Gel

Bunları yazarken, ekranımın sağ altındaki saati kontrol ettiğimde, 70’lerde yaygınlaşan kişisel bilgisayarlardan bu yana 40 sene geçmiş olduğunu ve konuyu çok dağıttığımı fark ediyorum. Büyükçe nokta koyarak, odak noktamıza dönmeye çalışalım. 40 sene dedik, azımsanacak bir rakam değil. 80’lerde yurdumuza geldiğini varsayarsak, bilgisayarlar yaklaşık üçüncü nesildir kullanılıyorlar. Yani kültür ve bilgi birikiminden söz edebiliriz. Birikim önemli çünkü o olmadan üretimde olmuyor.

Eminim süreç herkes için farklıdır. Yazdıklarım kendimden biçtiğim paylar. Bünyesinde bulunduğum firmalarda edindiğim deneyimler, başarılı / başarısız oyun projelerinden sonra elimde kalanları son dönemdeki birkaç mobil oyun tecrübesi ile harmanlayıp aktarmaya çalışacağım.


Analiz

Her şeyden önce oyun mu yapacağız, motor mu yazacağız sınırına keskin bir çizgi gerekiyor. Popüler oyun motorlarının mobil mecralar için hazır modülleri olduğunu düşününce için bu kararı vermek zor olmasa gerek.

3B oyun üretiminde gördüğüm en önemli nokta kullandığınız 3B modelleme yazılımı ile motorun entegrasyonu. Büyük firmaların böyle dertleri yokken, orta ve küçük projeler için sıkıntıların başında geliyor. Kendi motorunuzu yazsanız bir dert, satın alması başka bir dert. Kendiniz yazmaya çalıştığınızda, ciddi zaman ve enerji gerektiriyor. 3B teknolojilerinin gelişme ivmesini göz önüne aldığımızda, yazdığınız motoru yeni teknolojilere göre senede 1-2 defa güncellemek gerekecek. Crytek firmasının geliştirdiği CryENGINE ‘i güncel tutmak için ayrı departman kurup onlarca kişiyi görevlendirdiğini ve ekran kartı üreticileriyle dirsek temasında olduğunu hatırlatmak gerek.

Gözünüz yükseklerde olmayabilir ama yazdığınız oyunun 3-4 sene içinde oynanamaz hale geldiğini düşünmek insanı demotive etmeye yetiyor. Motorun sahip olacağı özelliklere ek olarak, 3B yazılımlar ile entegrasyonu top onda yine liste başı. Mobil mecranın sınırlarını düşününce görsellik altından kalkılabilir gibi gözükse de, mobil işletim sistemleri üzerinde motor yazmak (Symbian, iOs, Android…) hangimizi sudan çıkmış balığa çevirmez? İlk paragrafın üstüne bu kadar propaganda ile hangi motoru satın alacağız diye düşünmeye başladığınızı tahmin ediyorum. Tavsiyem kullanacağınız 3B modelleme yazılımına en az gümrük uygulayan, en fazla özelliği destekleyen, ithal ve ihraçta en az sorun yaşayacağınız motor olmalı. Firmaların web sitelerinden ki dokümanlar, deneme sürümleri sizleri bekliyor. En popüler olan, Unity.

Hakkı yenilmemesi gereken Virtools. Shiva3D, Panda3D, Torqu3D. Açık kaynak kodlu Ogre3D, Irrlicht ilk aklıma gelenler.

Satırlarca motor üzerine yazdıktan sonra, 3B modellemeden bahsetmemek olmaz. Motor kadar önemli görmesem bile, modelleme işin yarısı. Günümüz modelleme yazılımları yetenek ve bütünleşik çalışma konusunda oldukça geliştikleri için ekibinizde birden fazla yazılım bile kullansanız problem teşkil etmeyecektir. Autodesk ‘in satın almaları ile üç büyüklerin (3DS Max, Maya ve Softimage) tek elde toplanması. Yine Autodesk ‘in satın aldığı FBX dosya takas formatı. FBX ‘in açık yapılısı COLLADA. Artık standart haline gelen OBJ, 3DS formatları süreçleri hiç olmadığı kadar kolaylaştıran doneler.


Taslak

Açıkçası bu bölüme başlık bulmakta zorlandım. Fikir, ana düşünce, omurga… Yani oyunu etrafında şekillendireceğiniz iskelet. Şimdiye kadar yapılmamış bir şeyleri ortaya koymanın cazibesi büyük olsa da, pratikte kolay değil. İnovasyon kavramı çerçevesinde, var olanın üzerine bir şeyler koyabilirsiniz. Eski popüler oyunları yeniden yorumlamak daha kolay ve keyifli. Saatlerce keyif alarak oynadığımız birçok oyun eskilerin yeniden yorumundan ibaret. Yapılacak şey, akışa yeni handikaplar eklemek, oynanabilirliği arttırmak ve dengeleri doğru kurmak. Bunlar insanın saatlerini çalmak için yeterde artar.

Mesela Zuma. Büyük bir oyun olmadığı için duymamış olabilirsiniz. Ama duyduktan daha doğrusu bir kere oynadıktan sonra bırakamayacağınızı garanti ederim. Amacı, eğri yol üzerinde, farklı renklerde gelen topları, en az 3erli gruplayarak patlatmak. Bir manada tek kanallı tetris diyebiliriz. Ama kurulan dengeler oyuncuyu esir edecek seviyede. Oyun o kadar popüler oldu ki, Browser üzerinde oynananı, mobil hatta konsol sürümü bile çıkarıldı. Bizi ofiste esir etti. Bitirmek için girmediğimiz şekil kalmadı. User Data ‘larını yedekleyip, kayıt dosyası gibi kullanan arkadaşımızın bitirdiğini anımsıyorum. Eve getirince, eşim esiri oldu. Zuma ‘nın yanında, Rocket Mania, Chicken Invaders, Chase Ace yine esiri olduğum mini oyunlar arasında yer alıyor.

İnternet üzerinde “Indie Gaming” (“Independent” kelimesinin yuvarlanmasından geliyor, bağımsız oyun geliştiricileri için kullanılan genel bir tabir) üzerine yapacağınız araştırmalar sizi esir etmeye hazır yüzlerce oyuna ulaştıracaktır. Oyunları incelediğinizde göreceğiniz ortak noktalar, sağlam dengeler üzerine kurulmuş akış, tadında grafikler ve oynanabilirlik. Bu üçünü bir araya getirdiğinizde oyununuzun beğenilmemesi için sebep kalmıyor.

Hayatımızın vazgeçilmez parçası haline gelen internet sayesinde, popülerleşen oyunlar da var. Zengin görselliği ve 3B grafikleri ile Warcraft çoğul oyunculu türün ilk örneklerinden olsa gerek. Diğer ve daha önce çıkan çoğul oyunculu oyunlardan, farkı ise, milyonlarca kullanıcıyı aynı anda buluşturacak dengelere sahip olması. Warcraft ‘ın yanı sıra, daha basit grafiklere sahip ama kurduğu mantık ile insanları paylaşmaya sevk eden ve esir eden Farmville.

Bu iki oyun farklı uçlarda gözükse de, kullanıcılarını damardan yakalama konusunda örtüşüyorlar.


3B Modelleme

Taslak aşamasından 3B’ye geçişteki en büyük sıkıntı, kâğıt üzerindekine az benzemesi olacaktır. Kendi içinizde bunu büyük bir tevekkül ile kabul ederken müşteri tarafında sorun çıkabilir. Mobil mecranın sunduğu kısıtları doğru şekilde anlamak ve anlatmak gerekiyor. Kısıtlarımız neydi? Modelleri oluştururken on binlerce polygon kullanamıyoruz. Günümüz 3B oyunlarında olduğu gibi; karışık kemik sistemleri, simülasyonlar, kabartı (Normal / Displace), parlama (Specular), yansıma (Reflection) haritaları… vb kullanamıyoruz. Eğer müşteriniz Amiga / Commodore zamanlarından kalma dinozor ise işiniz kolay.

Ama bilgisayar dünyasına Playstation ya da Xbox gibi yeni nesil konsol ile başlayana ekrandaki düşmanların köşeli görünümünü nasıl tarif edeceksiniz?

Basit. Üçgenler ile! 3B uzayda, yüzey oluşturmak için ihtiyaç duyduğumuz en az nokta ve kanar sayısı üçgende var. Bilgisayarın 3B şekilleri oluşturmak içinde kullandığı yapı taşı da üçgenler. Düzen ve kurallar eşliğinde bir araya geldiklerinde ekranda gördüğümüz 3B görüntüleri elde ediyoruz. Kullandığız 3B yazılımın temel işlevi de bu aslında. Üçgen yığınlarına şekil vermek. Dikkat edilmesi gereken, mobil mecranın maksimum üçgen (ya da polygon) sayısının oldukça düşük olması. Oyunu tatminkâr hızda oynatabilmek için bunu dikkate etmeliyiz. Bilgisayarınızda bulunan ekran kartı aynı anda milyonlarca üçgeni çizebiliyor iken mobil mecrada bu sayı binlere kadar düşebiliyor. Aynı anda ekranda görüntülenecek nesnelerin polygon sayısını buna göre hesaplamalısınız. Polygon bütçesinin bir kısmını oyunun içinde geçtiği mekâna, bir kısmını ana karaktere diğerlerini de düşman ve karşısına çıkacak diğer elementlere. Başrol karakteri bakış açımıza en yakın konumda olacağı için ona kıyak geçebilirsiniz. Tek bir düşmanın polygon sayısını, ekranda aynı anda bulunacak toplam düşman sayısına göre ayarlamalısınız. Aksi durumda oyun kıpırdamaz hale gelebilir.

Kaplama konusuna geçmeden

ZBrush ve muadili yazılımların gerçek zamanlı model üretimine katkılarına kısaca değinmek istiyorum. ZBrush ile başlayan furya, Mudbox ve 3D-Coat ‘ın desteği ile devam etti. Şimdilerde ana 3B yazılımlara da benzeri araçlar eklendi. Ana yazılıma bütünlemiş olanlar milyonlarca polygonu işleyemeseler de harici yazılım desteğine gerek duymadan heykeltıraş tarzı şekillendirmeye izin veriyor. Milyonlarca polygon ile gerçek zamanlı 3B grafiklerin nasıl hazırlanacağı konusunu açmaya çalışalım. Önce fırça tabanlı teknik ile modellediğiniz süper detaylı modelin, düşük polygonlu kopyasını üretmeniz gerek. Ardından düşük polygonlu modeli yüzeyleri en az deformasyona uğrayacak sahip şekilde açmalısınız (UVW Mapping / Kaplama eşleştirme). Son aşamada, yüksek çözünürlükteki detaylar, düşük polygonlu modele aktarılıyor. Aktarılan bilgiler arasında yüzey kabartı (Normal / Displacement) bilgileri önem taşıyor. Çünkü düşük polygonlu modeli, yüksek çözünürlükteki abisi gibi göstermeye yarıyor

(© 2008, Biser Parashkevov). Ama mobil 3B motorların henüz bu görselleştirme tiplerini desteklememesi konuyu burada noktalayıp, kısa kesmemin nedeni.

Kaplama (Texturing)

Düşük Polygonlu modelleme yaparken, kaplamayı sonraki aşama gibi görmek mümkün değil aslına bakarsanız. Detayları Polygonlar ile veremeyeceğimize göre model ve kaplamayı aynı anda düşünmek gerekiyor. Biri diğerini kotaracak kusurlarını örtecek, onu gerçekmiş gibi gösterecek şekilde tasarlamak. Gerçeklik zaruri değil ama en çabuk kabul gören algı şekli. Algıyı kolaylaştırmak için, görselliği çizgi film tarzı tasarlayabilirsiniz. Düşük çözünürlükte kaplama, kötü ışıklandırma ve belirgin üçgen görünüme rağmen, stil gibi algılanacaktır.

Photoshop veya muadili 2 boyutlu boyama yazılımlarına 3B desteği eklenmeye başladı. CS3üncü sürümünden bu yana PS ile 3B nesne boyayabiliyorsunuz. Klasik 2B boyama yazılımları dışında 3B boyamaya özelleşmiş yazılımlarda mevcut. İlk aklıma gelen Maxon BodyPaint. En az PS kadar yetenekli ve gelişmiş 3B araçlara sahip.

Nesneyi boyarken katman kullanmakta ayrı bir güzellik tabi. Karakterinizin elbiselerini ayrı katmanlarda saklayarak, bir tıkla kıyafetini ya da rengini değiştirmek büyük keyif.

Bu noktada aklınıza şu soru gelebilir. 2B boyama ile 3B boyama arasındaki fark nedir? Bunu cevaplayabilmek için UVW Mapping kavramını açmamız gerek. Mapping ‘i Türkçeye haritalama / eşleştirme bilgisi olarak aktarabiliriz. Kısaca 2 boyutlu resim üzerinde boyadığımız alanların 3B nesne üzerinde nereye tekabül edeceği bilgisi. Kitabı kaplamak ya da hediye paketi yapmak gibi düşünün. Kırtasiyede aldığınız kaplama kâğıdı 2 boyutlu düzlem. Katlayarak kutu ya da kitaba kaplıyorsunuz. Yani kâğıt üzerindeki noktalar ile kitap / kutudaki noktalar eşleştiriyorsunuz. Gerçek zamanlı 3B grafiklerde polygon sayısı azlığından ötürü kaplama eşleştirme basit ama kesinlikle hatasız olmalı.

En ufak bir kayma ve oransızlık hemen göze batacaktır. Günümüz 3B yazılımların da gelişmiş kaplama eşleştirme araçları mevcut. Ek olarak harici yazılımlarda var. Aklıma gelenler, Roadkill UV, Ultimate Unwrap 3D, Unfold 3D, Deep UV ve UVLayout. Kişisel tercihim, altından kalkılabilecek her modeli ana yazılımın içinde kaplama eşleştirme işlemine tabi tutmak. Sürece yeni bir yazılım daha katmak anlamlı gelmiyor.

Amacınız gerçekçi görünen mekânlar oluşturmak ise işiniz biraz daha zor. Gerçek zamanlı 3B grafiklerde aydınlatma meselesi hala tam çözülebilmiş değil. En azından pratiğe indirgediğimizde. Gelmişmiş 3B motorların teknoloji şovları etkiliyor ama piyasadaki oyunlarda bunları görebilmek için biraz daha beklememiz gerek. O yüzden ışık etkilerini yüzeye yedirmeniz gerekiyor. Bu da bir sonraki paragrafın konusu.


Aydınlatma ve Işığı Sindirmek (Baking)

Aydınlatma her sanat dalında önemli unsurların başında geliyor. Çünkü subjenizi nasıl gösterirseniz öyle algılanır. Kızgın bir yüz ifadesini kırmızı ışıkla desteklerseniz intikam duygusu hissetmemek içten değil. Bu bağlamda ışığı iyi kullanmamız gerekiyor. Gerçek zamanlı grafiklerde ortam aydınlatması oldukça önemli. Karakterler hareket halinde olduğu için dinamik ışık etkisi gösterirler ama mekânlar durağan olduğu için daha fazla dikkat çeker. Mekânı inandırıcı göstermek için kullandığımız onca ışığı ve fenomenleri (Photon Mapping, Global Illumination… gibi) göstermenin pratik yolu ışığı pişirmektir (Baking). Bildiğim 3B yazılımların hemen hepsinin güncel sürümleri bu işi halledebilecek araçlara sahip. Bir iki tıkla altından kalkılabilecek gibi dursa da dikkat edilmesi gereken noktalar var. Oyunun geçtiği mekânın büyüklüğü ve maksimum polygon sayısına göre parçalara ayırmanız gerekebilir. Kaplama ve eşleşme bilgisini de ona göre düşünmelisiniz. Hatta tek mekânı bile birden fazla parçaya ayırmanız gerekebilir. Kaplama eşleşme bilgisinin en az hataya sahip olması gerekiyor. Özellikle düz yüzeylerde kaplama bozukluğu hemen göze çarpacaktır. Ayrıca birden fazla nesneyi tek kaplama altında toplarken oranları korumaya dikkat etmeniz gerek. Oyun mekânında bulunan, kapının kendisi ile kolu aynı büyüklükte olursa kaplama alanını israf etmiş olursunuz.

Eğer 3DS Max kullanıyor iseniz, TexTools adındaki script paketini denemenizi şiddetle tavsiye ederim. Sahip olduğu araçlar ile kaplama eşleştirme sürecini en aza indireceksiniz.

Son

Öncekilerin aksine teorik tarafı ağır basan yazımızın sonuna geldik. Son dönemde mobil oyun mecrasına artan merakınızı bir nebze tatmin etmişsem ne mutlu bana. Üç boyutlu olmak zorunda değil, bilgisayar grafiği konusunda aklınıza gelen her konuda yazmayı unutmayın (osmansafi@gmail.com). Bir sonraki yazıda beraber olabilmek dileğiyle, hoşça kalın.

Hiç yorum yok:

Yorum Gönder