Upload
gamedevelopersturkey
View
719
Download
8
Embed Size (px)
DESCRIPTION
Citation preview
GRAVITY PROJECT
Alper SARIKAYA 3B Model-Animasyon ve Kodlama
Burç PULATHANELİ 2B Grafik Tasarım
• Neden oyun yapıyoruz? • Elimizde ne var? • Elimizde ne yok? • Neden böyle bir oyun?
• 3 Ayda mobil platformlarda oynanabilecek bir oyun yapmak
• Grafik kalitesini olabildiğince korumak
HEDEF
SORULARIMIZ
• 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
Neden
OYUN MOTORU SEÇİMİ
KONSEPT ÇALIŞMALARI
KARAKTER MODEL
EKLEMLEME ve ANİMASYON
• 60’den fazla kemik sayısı
PROBLEM:
ÇÖ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
İLK ANİMASYON TESTLERİ
• İlk kez hareketli olarak karakterimizi gördük
OYUNUMUZA FARKLI BİR AÇIDAN BAKIŞ
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ı)
LOWPOLY MODELLER
• Hedef : 2.000 Polygon sınırını geçmemek • Polygon Sayısı için Performans-Kalite tercihi
• Unity – Maya arasındaki birim sorunu • Unity içindeki FBX Scale Factor parametresini
değiştirme tedirginliği
PROBLEM:
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ı.
LOWPOLY MEKANLAR
• 40m’lik birimler
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
KAPLAMALAR
UV lerin yerleşimi
Kaplama yerleştirmesi
Kaplanmış model
Kaplanmış model
Kaplama yerleştirmesi
Kaplanmış model
Kaplama yerleştirmesi
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.
KAPLAMA SIKIŞTIRMA ORANLARI
• 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)
PROBLEM:
ÇÖ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
İLK TESTLER
v.0.01 v.0.08
v.0.13 v.0.18
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
ARAYÜZ - GRAFİK TASARIMLARI
ARAYÜZ - GRAFİK TASARIMLARI
• Tüm tasarımları 960 x 640 çözünürlüğünde çalıştık
Yanlışlar:
Sonuçları:
• Android tarafında, farklı çözünürlükten kaynaklanan onlarca sorunla zaman kaybettik
ARAYÜZ TASARIMI - EZGUI
• 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
Neden EZ-GUI?
ARAYÜZ TASARIMI
• Hassas geçişler kullanmak, grafiklerin az yer kaplamasını istemek
PROBLEM
• Daha az geçiş kullanmak ve sıkıştırılmış dosyaları kullanabilmek
ÇÖZÜM
IŞIKLANDIRMA
IŞIKLANDIRMA
• FG ve GI taklidi yapan yüzlerce ışık
• Tüm ışıklar sadece «bake mode»da aktif
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ı
• Windows – Mac arasında Lightmap taşımak
PROBLEM:
• Tüm Levelları tekrar bake etmek
ÇÖZÜM:
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
IPHONE - KISITLAMALAR
• 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
PROBLEM:
• 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
ÇÖZÜM:
OPTİMİZASYONLAR
• Fizik tabanlı engeller için, rigidbody hesaplamalarını minimuma indirmek için «OnVisibility» ile açma-kapama yaptık.
FİZİK HESAPLAMALARI:
• 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
KAMERA:
• Lineer FOG ile Exponantial arasındaki fark • Lineer fog kullanarak 15 fps kazandık
SİS:
• 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
DİĞER:
SES ve SES EFEKTLERİ
• Ses Sıkıştırmaları ve kapladıkları yer (Mb) • Iphone-Android arasındaki ses oynatma farklılıkları
PROBLEM:
ÇÖ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
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
İSTATİSTİKLER ( Mart Ayı için)
• IOS : ( $ 0.99)
• ANDROID : ( Free + AdMob)
SATIŞ:
• IOS : 50+
• ANDROID : 2.000+
KULLANICI DERECELENDİRMELERİ
TEŞEKKÜRLER
• Oyunumuzu oynayan herkese
• Bahçeşehir Üniversitesi
• Elife Sarıkaya • Oya Pulathaneli
• Boğaç Pulathaneli • Ömer Faruk Çolak
• Ekin & Yasemin Arşiray • Yavuz & Nesrin Ünlü
• Umut Ozan • Cenk Şanlıoğlu
• Anıl Abbak
• Emrah Özer