4. SORULARIMIZ
• Neden oyun yapıyoruz?
• Elimizde ne var?
• Elimizde ne yok?
• Neden böyle bir oyun?
HEDEF
• 3 Ayda mobil platformlarda oynanabilecek bir
oyun yapmak
• Grafik kalitesini olabildiğince korumak
5. OYUN MOTORU SEÇİMİ
Neden
• Maya ile olan benzerliği
• Kısayollar ve sahne düzeninin önemi
• Genel hatları ile öğrenme süresinin kısa olması
• Çoklu Platform desteği olması
• Fiyat-Performans olarak uygunluğu
9. PROBLEM:
• 60’den fazla kemik sayısı
ÇÖZÜM:
• Düşük sayıda bir iskelet daha yapıp animasyonları
aktarmak (MEL)
AVANTAJLARI:
• Yapılan animasyonları koruyabildik
• Varolan bilgiyi kullanarak zaman kazandık
12. ANİMASYONLAR ve EXPORT
• Tüm Animasyonlar 30 FPS çalışıldı
• Animasyonların transferi için, tüm bone’lar bake
edildi. (Rig’deki aktarma bizi zorunlu bıraktı)
13. LOWPOLY MODELLER
• Hedef : 2.000 Polygon sınırını geçmemek
• Polygon Sayısı için Performans-Kalite tercihi
14. PROBLEM:
• Unity – Maya arasındaki birim sorunu
• Unity içindeki FBX Scale Factor parametresini
değiştirme tedirginliği
ALIŞKANLIKLAR:
• Görsel Efekt’ten gelme alışkanlık : Herşeyi gerçek
ölçüsünde modelle!
• Maya’da birimi cm’den farklı bir şey yapma!
SONUÇ:
• Unity’ye herşey gerçek ölçüsünde geldi
• FBX Scale Factor 0.01 kaldı.
17. AVANTAJLARI:
• Birbiri ardına eklemelerde kolaylık sağladı
• Tasarım aşamasında varyasyon yapmak kolay oldu
• Oyun kamerası açısından bakıldığında, en fazla iki
modul yüklenmiş oldu
22. KAPLAMLAR
• Maksimum kaplama boyutu 1024 x 1024
• Neredeyse tüm kaplamalar için Atlas üretildi, UV alanı
olabildiğince iyi kullanıldı
• Bazı sektorlerde Karakter de dahil olmak üzere 3 texture
kullanıldı
• Tüm kaplamları için Mip-map oluşturuldu.
23. KAPLAMA SIKIŞTIRMA ORANLARI
PROBLEM:
• Kaplama Sıkıştırmaları ve kapladıkları yer (Mb)
• Iphone-Android arasındaki format farklılıkları
• Android için Alphalı sıkıştırma
• Geçişli kaplamalarda 16-bit RGB yeterli olmadı(Arayüz)
ÇÖZÜM:
• İki farklı platform için en Optimize olanı seçmek
• Android için Alphalı kaplamaları 16-bit RGB sıkıştırdık
• Geçişli kaplamaları 32-bit RGB yaptık
25. UNITY REMOTE
• Engellerin sıklığını ve zorluk derecesini klavye ile
test etmek yeterli olmadı
• Touch-pad ‘i gerçek zamanlı test etmek önemli
• Kazandırdığı zaman ile kalite artışı oldu
27. ARAYÜZ - GRAFİK TASARIMLARI
Yanlışlar:
• Tüm tasarımları 960 x 640 çözünürlüğünde
çalıştık
Sonuçları:
• Android tarafında, farklı çözünürlükten
kaynaklanan onlarca sorunla zaman kaybettik
28. ARAYÜZ TASARIMI - EZGUI
Neden EZ-GUI?
• Tüm tasarımı grafik olarak kullanacaktık
• Tasarladığımız grafik sisteminde çok fazla eleman
olacaktı
• OnGUI çalışmak zor ve okuduklarım beni tedirgin
etti
29. ARAYÜZ TASARIMI
PROBLEM
• Hassas geçişler kullanmak, grafiklerin az yer
kaplamasını istemek
ÇÖZÜM
• Daha az geçiş kullanmak ve sıkıştırılmış dosyaları
kullanabilmek
31. IŞIKLANDIRMA
• FG ve GI taklidi yapan
yüzlerce ışık
• Tüm ışıklar sadece
«bake mode»da aktif
32. GERÇEK ZAMANLI IŞIKLAR
• Gerçek zamanlı ışıklar sadece karakter
aydınlatmasında ve hareketli objeler için kullanıldı
• Gerçek zamanlı gölgeler kapalıydı (Unity Basic ile
zaten kapalı)
• Gerçek zamanlı ışıklar vertexLight aydınlatması
yaptı
33. PROBLEM:
• Windows – Mac arasında Lightmap taşımak
ÇÖZÜM:
• Tüm Levelları tekrar bake etmek
34. SHADING
• Neredeyse tüm objeler Unity’nin hazırda gelen
«MOBILE» shaderları ile kaplandı
• MOBILE olmayan shader tipleri MOBILE için
optimize edildi
• Tüm shaderlar ( hazırda olmayanlar) vertexLight
tipine çevrildi
35. IPHONE - KISITLAMALAR
PROBLEM:
• Kutu patlamalarındaki partiküller
• 3D yapmak zorundayız. Çünkü derinliğe doğru
içinden geçiyoruz. Fake etmek çok iyi çalışmadı
• Elektrik panelleri çok fazla ve FPS’i çok etkiliyor
ÇÖZÜM:
• Partikülleri azaltıp, yapısını değiştirdik. Optimize
edilmiş shaderlar yazdık
• Elektrik panellerini tek polygonluk objelere
dönüştürdük. Sprite animasyonu yaptık
36. OPTİMİZASYONLAR
FİZİK HESAPLAMALARI:
• Fizik tabanlı engeller için, rigidbody
hesaplamalarını minimuma indirmek için
«OnVisibility» ile açma-kapama yaptık.
KAMERA:
• Kamera Far-clip ile ekrandaki görünen polygon
sayısını azaltmak
• Fog kullanarak kesik gözüken ufuk çizgisini
kapatmak ve atmosfere destek vermek
37. SİS:
• Lineer FOG ile Exponantial arasındaki fark
• Lineer fog kullanarak 15 fps kazandık
DİĞER:
• GC.Collect() Çok fazla model giriş çıkışı
olduğundan memory seviyeleri arasındaki
geçişlerde 1 frame’lik tıklamalar
• Çözüm : Elle kontrol etmek
38. SES ve SES EFEKTLERİ
PROBLEM:
• Ses Sıkıştırmaları ve kapladıkları yer (Mb)
• Iphone-Android arasındaki ses oynatma farklılıkları
ÇÖZÜM:
• Ana Menüdeki ve oyun içindeki müzikleri kısaltmak (loop
edebilecek bir şekilde)
• Android için seslerin sıkıştırma oranlarını arttırmak
• Performans arttırmak için sesleri Level başında
«Decompress» etmek
39. YAP(A)MADIKLARIMIZ
• Oyunu doğru kişilere test ettirmek önemli
• Oyunu yapan kişiler olmak, oyunu analiz etmeye
yetmiyor
• Oyunun hikayesini anlatmadık. Atmosferi
güçlendirmek için en önemli silahlardan birini
kullanmadık
• Pazarlama ve tanıtım