building a 3d game with libgdx pdf / RenderWare - Wikiwand

Building A 3d Game With Libgdx Pdf

building a 3d game with libgdx pdf

T.C. SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BSM BİTİRME ÇALIŞMASI UNITY 3D İLE OYUN PROGRAMLAMA B – Hasan ÇAKMAK B – Hamza KEÇELİ Fakülte Anabilim Dalı : BİLGİSAYAR MÜHENDİSLİĞİ Tez Danışmanı : Yrd. Doç. Dr. Fatih ÇELİK Bahar Dönemi T.C. SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ UNITY 3D İLE OYUN PROGRAMLAMA BSM - BİTİRME ÇALIŞMASI Hasan ÇAKMAK Hamza KEÇELİ Fakülte Anabilim Dalı : BİLGİSAYAR MÜHENDİSLİĞİ Bu tez .. / .. / … tarihinde aşağıdaki jüri tarafından oybirliği / oyçokluğu ile kabul edilmiştir. ………………. ………………. ………………. Jüri Başkanı Üye Üye ÖNSÖZ Günümüzde gelişen teknoloji sayesinde başta genç bireyler olmak üzere insanlar hayatlarında oyun kavramına çeşitli şekillerde yer vermektedir. Oyun bazı kimselere göre sadece zaman geçirme iken, bazılarına göre ise hayatın bir parçası olmuştur. Bu sebeple oyun sektörü yakın zamanda hızlı gelişim göstermiş ve büyük bir sektör haline gelmiş, birçok şirket kurulmuştur. Oyun şirketleri değişen koşulları, farklılaşan oyuncu profillerini ve sürekli aşama kaydeden teknolojiyi hesaba katarak oyun tasarımını bu parametrelere en uygun şekilde gerçekleştirirler. Oyun şirketleri, hem zamandan hem de performanstan kazanç sağlamak için oyun motorları geliştirmişlerdir. İÇİNDEKİLER Y ÖNSÖZ ii İÇİNDEKİLER ….…………………………………………………………… iii ŞEKİLLER LİSTESİ ……… iiiii ÖZET iiiiii BÖLÜM GİRİŞ 1 Amaç 1 Motivasyon 2 Literatür Taraması 2 BÖLÜM KULLANILAN TEKNOLOJİLER 4 Unity 4 Android Oyun Programlama Süreçleri 8 .NET(Mono) 14 BÖLÜM GELİŞTİRİLEN OYUN YAZILIMI ( ALTIN ÇAĞI ) 16 Model Yapısı 16 Kurallar ve Kısıtlamalar 22 Senaryolar 22 Oyunun Çalışması 23 İş Zaman Çizelgesi 23 BÖLÜM SONUÇLAR 24 BÖLÜM KAYNAKLAR 25 ÖZGEÇMİŞ …………………………………………………………………….. 26 BSM BİTİRME ÇALIŞMASI DEĞERLENDİRME VE SÖZLÜ SINAV TUTANAĞI …………………………………………………………………… 28 ŞEKİLLER LİSTESİ YŞekil Unity klas Şekil Editör ekranı 6 Şekil Unity arayüzü 7 YYŞekil Oyun motorları 12 Şekil Mono develop arayüzü 15 Şekil Ipo diyagramı 16 YŞekil Dfd diyagramı 17 Şekil Oyunun akış diyagramı 18 YŞekil Oyun ana ekranı 19 Şekil Level oluşturma örneği 19 Şekil Level geçilemediğindeki ekran görüntüsü 20 YŞekil Level geçildiğindeki ekran görüntüsü………………………………… 20 YŞekil Oyun anı görüntüsü 21 Şekil İş zaman çizelgesi23 ÖZET Anahtar kelimeler: Unity 3D, Oyun, C#, Programlama, Android İnsan oyun oynarken hem rahatlamakta, hem sosyalleşmekte hem de zihinsel faaliyetleri en üst seviyeye gelmektedir. Bu nedenler insanları oyun programlamaya yöneltir. Yapılan her şeyin anında sonucunu görebilme, orijinal oyunlar yaparak maddi kazançlar sağlamak, eğitici oyunlar yaparak herkese fayda sağlamak insanları oyun programlamak için daha da motive etmektedir. Bundan yola çıkarak oyunumuzda geliştirebileceğimiz yönleri ve aynı türdeki oyunlardan farklılık sağlamak için Temple Run 2 oyununu inceleyerek bilgi almayı amaçladık. Oyunumuzu programlamak için Unity oyun motorunu seçtik. Unity dünya genelinde ,+ kişi ve şirket tarafından kullanılmaktadır; örnek vermek gerekirse: Cartoon Network, Coca-Cola, Disney, Electronic Arts, Microsoft, NASA, Amerikan ordusu, Warner Bros ve daha fazlası. Bu seçimde Unity’nin hem iki boyutlu hem üç boyutlu oyun programlamayı desteklemesi, görsel arayüzünün kullanışlı olması ve yapılan oyunun değişik platformlarda( iOS, Android) çalışması etkili olmuştur. Oyunumuzda karakterin belirlenen oyun alanından çıkmadan yol üzerindeki nesneleri kısıtlı zaman içinde toplayarak hedeflenmiştir. Oyun karakteri ve nesneler Unity’nin kendi mağazasından kullanılmıştır. Bu karakter ve nesnelere kod ile bir görev, bir rol kazandırılmıştır. Kodları MonoDevelop platformunda C# diliyle geliştirdik. Sonuç olarak amacımız insanlara eğlenceli bir vakit geçirmelerini sağlamaktır. BÖLÜM 1. GİRİŞ Amaç İnsan oyun oynarken hem rahatlamakta, hem sosyalleşmekte hem de zihinsel faaliyetleri en üst seviyeye gelmektedir. Yapılan araştırmalara göre oyun oynama süresince insanın zihin faaliyetleri çok üst seviyelere çıkmakta ve zihin sadece oyunla ilgilendiği için öğrenme en üst seviyeye gelmektedir. Oyuncuların bir oyundan beklentileri ve neden oyun oynadıklarına dair aslında bitmeyen bir liste vardır. Bunları aşağıda belirttik. 1. Oyuncular yarışıp-yenmek isterler. 2. Oyuncular sosyalleşmek isterler. 3. Oyuncular tek başlarına dinamik bir yaşantı isterler. 4. Oyuncular övünmek isterler. 5. Oyuncular duygusal bir yaşantı isterler. 6. Oyuncular keşfetmek isterler. 7. Oyuncular hayal kurmak isterler. 8. Oyuncular tutarlı bir dünya beklerler. 9. Oyuncular oyun dünyasının sınırlarını anlamak isterler. Oyuncular mantıklı sonuçlar beklerler. Oyuncular talimat bekler. Oyuncular bir görevi adım adım tamamlamak ister. Oyuncular bir şeylere dalıp gitmek isterler. Oyuncular bir aksama-başarısızlık isterler. Oyuncular kendi kendilerini tekrar etmek istemezler. Oyuncular umutsuzca sıkışmamayı isterler. Oyuncular izlemek değil, yapmak isterler. Oyuncular ne istediklerini bilmezler ama eğer bir şey eksikse onu bilirler. Bir oyuncu oyunu oynarken yukarıda saydığımız özellikleri dikkate alır, bu özellikler bir oyuncunun oyuna bağlanıp onu sevmesinde etkili olur. Bu özellikler yoksa oyuncu oyundan sıkılır ve daha sonra oyunu oynamaz. Oyunumuzun amacı yukarıda saydığımız beklentileri oyuncuya sağlamaktır. Motivasyon Aşağıdaki etkenler bizi oyun programlamaya yöneltmiştir. - Farklı bir alanda kendimizi geliştirmek - Çalıştığımız ortamın görsel olması - Google Play’e kendi uygulamamızı yüklemek - Farklı tarzda oyun ortaya çıkarma fikrini kendimizde görme - Yaptığımız her şeyin anında sonucunu görebilme - Orijinal oyunlar yaparak maddi kazançlar sağlamak - Eğitici oyunlar yaparak herkese fayda sağlamak Literatür Taraması iOS ve Android platformlarını kasıp kavuran Temple Run[1] oyunun halefi olan Temple Run 2, ilk olarak iOS için çıktı. Android kullanıcıları, Temple Run 2’ye kavuşmak için ilkinde olduğu kadar uzun süre beklemek zorunda kalmadı. Aradan yalnızca bir hafta geçtikten sonra Android için de çıktı. Oyundaki amaç ve oynanış şekli temel olarak ilk Temple Run’la aynı. Temel olarak çünkü tamamıyla da aynı değil. Örneğin puan toplamak için yine dur durak bilmeden koşuyoruz, engelleri aşmak için zıplıyoruz, eğiliyoruz veya karakterimizi sağa sola yatırıyoruz ama olası bir yanma ihtimaline karşı eskisinde olduğu gibi kanat açma mekaniği yok. Bunun yerine öldükten sonra bir ekran çıkıyor ve bize karakterimizi canlandırmak isteyip istemediğimizi soruyor. Kaldığımız yerden devam edebilmemiz için topladığımız sikkelerin (Coin) yanında ikinci bir puanlama sistemi olan mücevherlerden (Gem) kullanmamız gerekiyor. Yandığımız zaman canlanabilmek için bir adet mücevher harcamamız gerekiyor ancak aynı oyunda daha çok yandıkça istediği mücevher sayısı da katlanarak artıyor. Örneğin aynı oyunda ikinci kez mücevher kullandığımızda 2 tane kullanmamız gerekiyor. Mücevherleri uzun bir süre karakteri yeniden canlandırmak için kullanmayın. Çünkü aynı sikkelerle olduğu gibi karakterin özelliklerini geliştirmek için de kullanabiliyoruz. Temple Run ve Temple Run 2 arasında uzun bir zaman boşluğu var. Bu da piyasada pek çok benzer oyunun türemesine neden oldu. Pek çoğu tutmasa da bu konuda en başarılı olanlardan biri de Subway Surf oldu. Subway Surf’ü bu kadar başarılı yapan etkenlerden biri; seviye atlama sistemini getirmiş olmalarıydı. Karakterle görev yaptıkça seviye atlayabiliyor böylece daha çok puan toplayabiliyorduk. Imangi Studios, ilk oyununda olduğu gibi Temple Run 2 ile yine başarı ile oyunu gerçekleştirmişler. Oyunun sürükleyiciliği, oluşturduğu bağımlılık ve sunduğu eğlence çok üst seviyelerde . İlk versiyonuna göre çok daha detaylı ve üst düzey grafiklerle geliyor olması cabası. Bu kadar eğlenceli olup bir de üstüne muhteşem grafikler sunmasına rağmen ücretsiz olarak indirilebiliyor olmasıysa ayrı bir güzellik. Facebook entegrasyonu ya da benzeri bulut kayıt sistemi olmadığı için cihaz değiştirdiğimizde skorlarımızın siliniyor olması ve hareketli kamera yüzünden baş döndürmesi, oyunun en büyük eksileri. Hareketli kamera belki ilerleyen zamanlarda oynadıkça alışabileceğimiz bir hal alabilir ama skorların ve geliştirmelerin kaydedilme özelliği ilk güncellemeyle gelmesi gerekenlerin başında yer alıyor. [1] Artılar: – Harika grafikler – Yeni puan sistemiyle artık daha da bağımlılık yapıcı – En az ilk Temple Run kadar eğlenceli – Ücretsiz Eksiler: – Hareketli kamera baş döndürebiliyor – Facebook entegrasyonu yok (skorlar kaydedilmiyor) Puan: 8,5/10 Yayıncı: Imangi Studios İncelenen Sürüm: Boyut: 33MB [1] BÖLÜM 2. KULLANILAN TEKNOLOJİLER Unity Unity, oyunlar ya da başka interaktif uygulamalar (simülasyon, dijital tasarım vb.) oluşturmak için kullanılan, Unity Technologies'in programladığı bir motordur. Unity iki farklı sürüme sahiptir: ücretsiz sürüm ve Pro sürümü. Ücretsiz sürümde yaptığınız oyunlardan istediğiniz gibi para kazanabilirsiniz ve Unity Technologies'e komisyon da vermeniz gerekmez. Pro sürümü daha yüksek kaliteli oyunlar yapmak için özel araçlara sahiptir ve ücretlidir. Unity dünya genelinde ,+ kişi ve şirket tarafından kullanılmaktadır; örnek vermek gerekirse: Cartoon Network, Coca-Cola, Disney, Electronic Arts, Microsoft, NASA, Amerikan ordusu, Warner Bros ve daha fazlası… Unity'nin son sürümünü şu adreste bulabilirsiniz: funduszeue.info İnternete bağlıyken Unity'i her açışınızda yeni bir sürüm çıkmış mı diye otomatik olarak kontrol yapılmaktadır. Unity Pro'da Free sürümde olmayan özellikler vardır: post- processing efektler, video oynatma özelliği, dosyaları ve sahneleri stream etme, plugin yüklemek gibi. Ancak Pro lisansı $1, tutmaktadır. Daha fazla bilgi için: funduszeue.info Ücretsiz sürümde de gayet eğlenceli oyunlar oluşturabiliriz! Unity'e giriş; Unity'i ilk açtığınızda otomatik olarak “Angry Bots” projesi açılacaktır (versiyon 'te geçerlidir).Ayrıca belki “Welcome To Unity” ekranı karşınıza gelebilir. Bu ekran Unity'i her açışınızda çıkar. Bunu engellemek için sağ alttaki “Show at Startup” seçeneğini kapatın. Unity açıldığında otomatik olarak Angry Bots'un açılmasını istemiyorsanız Edit >Preferences yolunu izleyin. Buradan “Show Project Wizard at Startup”ı işaretleyin. Unity'i sonraki açışlarınızda hangi projeyi açmak istediğinizi soran bir pencere gelecek. Bir Unity projesini açmak için izleyebileceğiniz iki yol var. Projeyi Unity'den açmak; Unity'de File > Open Project yolunu izleyin. Bir pencere gelecek. Buradan “Open Other” butonuna tıklayın ve dosya gezgininde klasörün olduğu konuma gelin. Bu konumdayken klasöre bir kez tıklayarak onu işaretleyin ve OK butonuna tıklayın. Yani bir proje açarken projenin olduğu ana klasörü seçeceksiniz. Şimdi Unity kapanıp tekrar açılacak. Unity'i sonraki açışlarınızda projenizi listeden seçebilirsiniz. Projeyi işletim sistemi üzerinden açmak; Windows Explorer (Windows)'ı açın. Unity projenizin olduğu klasörü açın. Orada “Assets” ve “Library” adında iki klasör var. “Assets”i açın. Eğer Lesson 1 projesini açıyorsanız “funduszeue.info” adında bir dosya göreceksiniz. Dosyaya çift tıklayın. Proje Unity'de açılacak. Şekil Unity klasörden açma Unity arayüzünü tanımak; Lesson 1 projesini açtıktan sonra Project panelindeki MainScene dosyasına çift tıklayın. Editör ekranı şuna benzer duracaktır: Şekil Editör ekranı Arayüzdeki bileşenlerin yerleri sizde farklı olabilir. Bunu düzeltmek için Window > Layouts > Tall yolunu izleyin. Unity arayüzü 5 panelden oluşmakta: 1. Scene Paneli: Oyun alanını (sahne, scene) 3 boyutlu görmeye yarar. Unity'de her level bir "scene" olarak adlandırılır. 2. Hierarchy Paneli: Sahnedeki tüm objelerin listelendiği panel. Unity'de objelere "game object" denmektedir. 3. Inspector Paneli: Seçili obje hakkında detaylı bilgiler burada yer alır. 4. Project Paneli: Oyununuzda kullanabileceğiniz tüm kaynak dosyaları burada yer alır. Bunlar 3D objelerden tutun resimlere, ses dosyalarına, fontlara kadar pek çok dosya olabilir. 5. Araç Çubuğu: Projenizle etkileşime girmek için çeşitli butonlar. Şekil Unity arayüzü Sahnede (Scene) gezinmek; her şeyden önce kontrollere aşina olmalısınız. İmleci Scene paneline götürün. Orta mouse tuşuna basılı tutun ve fareyi kımıldatın. Bu işlem kamerayı hareket ettirmeye funduszeue.infoden Alt tuşuna ve sol mouse tuşuna basılı tutup fareyi kımıldatın. Bu işlem kamerayı döndürür. Mouse tekerleği ile ya da Alt+sağ mouse tuşu kombinasyonu ile de kameraya zoom yapabilirsiniz. Şimdi kontrollere iyice alışana kadar pratik yapın. Bir objeye odaklanmak; Hierarchy panelinden “Simple Cylinder” isimli objeye tıklayarak onu seçin. Şimdi imleci Scene paneline hareket ettirin. Klavyeden F tuşuna basın. Kamera seçili objeye odaklanacak (focus). Kamera bir objeye odaklıyken onu döndürürseniz (Alt+sol mouse tuşu) kamera objenin etrafında döner. Kamerayı başka yere hareket ettirirseniz artık o objenin etrafında dönmez. Oyun alanında serbestçe gezinmek; Scene panelinde kameramızla etrafı gezinmenin bir başka yolu da uçarak gezinmek. Sağ mouse tuşu ile Scene paneline basılı tutun ve W-A-S- D tuşlarıyla kamerayı hareket ettirin. Q-E tuşlarıyla kamerayı aşağı-yukarı hareket ettirebilirsiniz. Bu esnada fareyi kımıldatarak kamerayı döndürebilirsiniz. Objelere (Game Object) giriş; Unity'de oyun alanında gördüğünüz her şey birer game object'tir. Bunlara oyundaki karakterimiz (player), düşmanlar, zemin, duvarlar, ışıklar, arayüzdeki butonlar örnek verilebilir. Game object'ler ile oluşturduğunuz sahnelere scene denir. Oyununuzda birden çok scene olabilir. Bir scene'de ana menü, öteki scene'lerde oyundaki level'lar yer alabilir. Game Object oluşturmak; GameObject > Create Other > Cube yolunu izleyin. Kamera görüş alanınızın tam ortasında bir küp oluşacak. Küp haricinde oluşturabileceğiniz başka hazır modeller de vardı o menüde ama biz şimdilik küp objesine odaklanacağız. Objeyi hareket ettirmek (Move); Küp objesine tıklayarak onu seçin ve F tuşuna basarak kameranın seçtiğiniz küp objesine odaklanmasını sağlayın. Objenin etrafında kırmızı, yeşil ve mavi renkte üç ok göreceksiniz (eğer yoksa W tuşuna basın ya da araç çubuğundan ilgili ikona tıklayın). Bu oklar objeyi hareket ettirmeye yarar. Kırmızı ok sağa-sola, yeşil ok yukarı-aşağı, mavi ok ileri-geri oynatmaya yarar. Yapmanız gereken objeyi bu oklardan birinden tutup sürükleyerek istediğiniz konuma getirmek. Objeyi serbestçe hareket ettirmek için okların merkezindeki beyaz kutucuktan tutarak sürükleyin. Objeyi hareket ettirirken Inspector'daki değerlerin değiştiğine dikkat ediniz. Bu değerler objenin 3 boyutlu uzaydaki konumunu belirliyor. Bu kutucuklardaki değerleri elle istediğiniz gibi değiştirebilirsiniz de. X, Y ve Z değerlerini mouse ile de değiştirebilirsiniz. Örneğin imleci X harfinin üzerine getirin ve sol mouse tuşuna basılı tutarak fareyi hareket ettirin. Objeleri döndürmek (Rotate); bir obje seçin ve E tuşuna basın (ya da araç çubuğundan ilgili ikona tıklayın).Objeyi çevreleyen üç daire göreceksiniz. İşleyiş hareket ettirme tool'uyla aynı. Bu dairelerden birine basılı tutup fareyi hareket ettirerek objeyi o yönde çevirebilirsiniz. En dıştaki beyaz daireden tutup sürüklerseniz obje kameranın bakış açısı yönünde döner. Test edin ve görün. Döndürme işlemi yaparken Inspector panelinde Rotation değerlerinin değiştiğini görebilirsiniz. Buradaki X, Y ve Z değerleri birer Euler açı (Euler angle)'dır. Objeyi boyutlandırmak (Scale); bir objeyi seçin ve R tuşuna basın (ya da araç çubuğundan ilgili ikona tıklayın).Boyutlandırma aracı seçiliyken objenin merkezinden dışarı doğru üç ok çıkar. Ama bu sefer okların ucunda küp sembolü yer alır. Önceden yaptığınız gibi bu oklardan tutup sürükleyerek objeyi boyutlandırabilirsiniz. Merkezdeki beyaz küpten tutup sürükleyerek objeyi her yönde eşit olarak boyutlandırabilirsiniz. Android Oyun Programlama Süreçleri Oyun geliştirme süreçlerinin aşamaları ve izlendiği yollar her ne kadar bazı durumlarda göreceli olsa da genel anlamda oyun geliştirme süreçlerini 3 ana başlıkta inceleyebiliriz. Geliştirmeye hazırlık süreci: Bu süreç oyun geliştirmeye başlanmadan önceki süreçtir. Oyunda olması gereken her içerik bu aşamada seçilip oyunla ilgili bazı kritik kararlar yine bu aşamada belirlenir. Hikâyenin, kurgunun ve oyun türünün belirlenmesi: Eğer bir oyun geliştiriliyorsa bu oyunun ilk etapta bir konusu olmak zorundadır. Bu konu doğrultusunda bir hikâye yazılmalı ve oyun türü belirlenmelidir. Konu – oyun türü eşleşmesi önemlidir. Zira bazı konular bazı türlere daha uyumludur. Savaş konulu oyunlar için FPS daha iyi bir seçimken orta çağ temalı bir oyunda RPG daha iyi bir seçim olabilir. Tabi konu-oyun türü anlamında günümüzde çok çeşitli ve farklı örnekler de mevcuttur. Piyasa araştırmasının yapılması: Geliştirilecek oyunun konusuna ve türüne göre piyasada yapılan oyunlar denenir. Bu deneyimler ışığında mevcut oyunun yapılıp yapılmamasına veya yapılacak oyunda neyin olup olmayacağına karar verilir. Piyasa araştırması bu noktada büyük önem taşır. İhtiyaçların listelenip belirlenmesi: Oyunla ilgili tüm ihtiyaçlar belirlenir ve gerekli görev dağılımı yapılır. Game Artist ’in çizeceği materyaller ve Game Developer’ in kodlaması gereken yerlerin birçoğu bu aşamada planlanır. Sadece bu iki alan değil tüm alanlardaki çalışanların görev dağılımı yapılmalıdır. Oyun motoruna karar verilmesi: Bu aşamada hazır bir oyun motoru seçilebileceği gibi geliştirici ekip sıfırdan bir oyun motoru da yazabilirler. Bu aşamada oyunun yapısına ve ihtiyaçlarına göre bir seçim yapılması en doğru seçimdir. Sponsor, pazarlama ve gelir modeli: Oyun geliştirme sürecinin en önemli aşamalarından biridir. Ne kadar muhteşem bir oyun da ortaya çıksa eğer düzgün bir gelir modeli seçilmediyse ve pazarlaması yeteri kadar iyi yapılmadıysa oyun gerekli amacına ulaşamaz ve çalışanlar emeklerinin karşılıklarını alamazlar. Bu aşamada bir sponsor bulunabilir veyahut iyi bir pazarlamacı firma ile anlaşılabilir. Dijital dağıtım platformları kullanılabilir. Son olarak eklemek istediğimiz bir diğer yöntem de kickstarter gibi bağış platformlarını kullanarak da oyunun gelişimine katkıda bulunacak destekçiler bulabilirsiniz. Geliştirme süreci: Gerekli planlamalar yapıldı. Nasıl bir oyun yapılacağına karar verildi, piyasa araştırması yapıldı, oyun motoru seçildi ve gelir modeli belirlendi. Artık oyun geliştirme sürecine başlanılabilir kıvama geldi. Geliştirme süreci oyunun artık yapıldığı aşamadır. Eğer geliştirmeye hazırlık sürecini bir aşçının alışveriş yapması gibi düşünürsek geliştirme süreci de artık yemeği pişirmeye hazır olduğu süreçtir. Geliştirme sürecindeki aşamalar bazen birbirleri ile bağlantılı olup devam edebilmek için diğer aşamanın tamamlanması beklenilebileceği gibi bazen de birbirleri ile eş zamanlı olarak sürdürülebilirler. Grafiklerin ve modellemelerin çizilmesi: Oyunun türü doğrultusunda 2D veya 3D olarak oyunda olması gereken materyallerin Game artistler tarafından çizildiği ve modellendiği aşamadır. Bir oyunun görsel açıdan güzel olması oyunun oynanabilirliği kadar önemlidir. Animasyonların yapılması: Gerekli grafikler ve modellemeler bittikten sonra sıra bu grafikleri hareket ettirmeye gelir. Animasyonlar grafikler kadar önemlidir. Bir oyun her ne kadar iyi görsellere sahip de olsa animasyonları kötü ise oyuncular tarafından beğenilmeyebilir. Aslında her ne kadar grafik ve animasyon yapılması aşamaları birbirleri ile bağlantılı olsalar da ikisine de aynı önem verilmezse verilen emek boşa harcanmış olur. Programlama: Grafik ve animasyonlarda tamamlandıktan sonra artık oyun programlanabilir hale gelir. Bu aşamaya gelmeden programcı gerekli modellemeler hazırlanmadan da kutu daire gibi nesneler ile programlamaya başlayacağı gibi hazırlandıktan sonra programlamaya başlanması daha sağlık olduğu da bir gerçektir. Oyunla alakalı tüm etkileşimler bu aşamada yapılır. Oyununuzdaki altınların toplanmasından tutun da, düşmanları öldürüp üstündeki cephaneyi almanıza kadar aklınıza gelebilecek çoğu şey bu aşamada yapılır. Bölüm tasarımı (Level Desing): Level desingerları Legolardan bir dünya oluşturmaya çalışan insanlara benzetebiliriz. Bölüm tasarımı iyi olan oyunlar oyuncuları mutlu ettiği gibi eğer oyunun yapısı tekrar oynanmaya müsaitse tekrar oynanabilirliği de yüksek olur. Oyunda nasıl bir harita olacağı, kaç kapı ve kaç checkpoint olacağına bu aşamada karar verilir. Oyunun planlaması yapılırken Level desinger bazı isteklerini programcıya bildirmelidir ki kafasındakini daha rahat hayata geçirebilsin. Örneğin bir bombanın kaç saniyede patlayacağını programcıya söylemelidir ki programcı bomba ile ilgili gerekli ayarları yapabilsin. Ara yüz ve menülerin tasarlanması: Her şey bittikten sonra sıra menülerin ve ara yüzün tasarlanmasıdır. Görsel anlamda iyi ve kullanıcı dostu bir menü oyuncuları mutlu eder. Ayrıca menüler arası geçişlerin akıcılığı da önemlidir. Test ve yayınlanma süreci: Oyun geliştirme süreci ile test süreci aşamasında ince bir çizgi vardır. Oyun geliştirme aşaması oynanılabilir bir oyun ortaya çıkartıldığında tam olarak bitmez. Bu aşamadan sonra ortaya çıkan ürünün son kullanıcı tarafından test edilmesi ve feedback alınması büyük rol oynar. Oyunun geliştirme aşaması aslında devam etmiş olur ancak bu süreç devam ederken test süreci de başlar. Geliştirme aşaması ile test aşaması bu noktadan sonra paralel olarak ilerlerler. Ayrıca bu süreçte ürünün artık sosyal medyada ve oyun platformlarında gündeme gelme durumu ivme kazanmalıdır. Alpha, kapalı ve açık beta testleri: Oyun oynanılabilir kıvama geldikten sonra kullanıcılar için test süreçleri başlar. Bunlardan ilki alpha aşamasıdır. Bu aşamada oyun tamamen tamamlanmamıştır. Eksiklikler ve optimizasyon sorunları olabilir. Bazı etkileşimlerde hatalar ve oyunu oynamayı engelleyecek durumlar meydana gelebilir. Alpha aşamasından sonra beta süreci başlar. Beta sürecinde oyun artık tamamlanmıştır. Bu süreçte oyuna yeni şeyler eklemekten çok artık oyundaki bugların temizlenmesine odaklanır. Bu noktada son kullanıcının feedbackleri çok önemlidir. Kapalı beta da sadece belirli bir kitle oyunu deneyebilirken açık betada oyunu herkes deneyebilir ve feedback yapabilir. Sosyal medya ve reklam: Alpha ve beta süreçleri sürerken bir yandan da sosyal medyada oyun hitap edilen kitlelere tanıtılmalıdır. Ayrıca yine hitap edilen kitleye yönelik reklam yapılmalı ve gerekirse ufak yarışmalar düzenlenmelidir. Dağıtım ve pazarlama: Oyun tamamen tamamlandıktan sonra bu ürünün kitlelere ulaşması gerekmektedir. Hali ile bu iş için anlaşma yapılan dijital dağıtım platformları ya da dağıtıcı firma sıfatını üstlenen firmalar oyunun son kullanıcıya ulaşmasını sağlarlar. Bu sayede üründen gelir elde edilme süreci başlar. Yine aşçı örneğimizi ele alırsak bu aşamada yemek hazırlanmış olup artık yemek restoranda satılmaya hazırdır. Teknik destek: Artık oyunumuz tamamen bitti. Oyunda gerekli satış kanalları ile oyunculara ulaştırıldı. Ancak bu süreçte, oyunu alırken, aldıktan sonra veya kullanırken problem yaşayan oyuncular ne yapacaklar? İşte bu noktada oyun firmasının teknik destek birimi ihtiyacı oluşuyor. Her firmada olmasa da özellikle MMORPG türü oyunlarda oyunculara 7/24 hizmet bir mecburiyet halini alabiliyor.[2] Oyun motoru kişilerin veya şirketlerin oyun yapmak amacıyla kullandığı programlardır. Oyun motorları yapı olarak kütüphaneye ve kütüphaneden oluşmuş sözcüklere benzemektedir. Kütüphanelerden oluşmuş olan oyun motorları oyunları oluşturmak için, içinde grafik motoru ve fizik motoru barındıran önemli elemanlardan birisidir. Ücretli ve ücretsiz olmak üzere iki kısımdırlar. Ücretsiz olanlar açık kaynak kod şeklinde bulunurlar ve lisans ücreti talep etmezler. Ücretli olanlar ise daha gelişmiş detaylı yapılara sahiptir. Daha gelişmiş oyun yapmamıza olanak sağlar fakat yüzlerce liradan binlerce liraya kadar ücret gerektirirler. Ücretli de olsa ücretsiz de olsa oyun motorları oyun yapmak için gerekli bir elemandır. Oyun motorlarının bu kadar gerekli olmasını sağlayan ise oyun programlamanın giderek gelişiyor olması ve buna paralel olarak detaylı ve gelişmiş oyun yapma isteğidir. Oyun motorları içinde bulundurduğu programlama dilleri ve tanımlanmış fonksiyonlar sayesinde oyun yapmak isteyenleri büyük karmaşıklıktan kurtarır. Bu verileri tekrardan kodlama zahmetinden kurtarması, daha az kod ve bunun getirdiği daha az karmaşıklık sayesinde zamandan tasarruf etmemizdir[4]. Bir oyun motorunda bulunması gereken temel özelliklere bakacak olursak; iki veya üç boyutlu özellikleri destekleyen oyun motorları bulunmaktadır. Oyunların birçoğu artık 3 boyutludur. Tasarım ve geliştirme bakımından kompleks bir yapıya sahip olan üç boyutlu oyun motorları kullanıcılara grafik, ses, ağ desteği ve yönetimi, konfigürasyon ve yardımcı paket gibi elementleri sunar. Oyun motorunun bir görevi de bu 3 boyutlu alanı (oyunun 3 boyutlu dünyasını) bize etrafımızı nasıl 3 boyutlu görüyorsak o şekilde gösterilmesini sağlamasıdır. (Örneğin; bunun bize yansıtılması için en az 30 kere resmin ekrana çizilmesini sağlaması gerekmektedir.) Bu motorlar oyunda kullanılan arka planın, karakterlerin ses vb. etmenlerin birbiriyle uyum içinde çalışmasını sağlayan birer yazılımdan ibarettir. Bu sayede grafikleri ne şekilde hangi zamanda hangi müzik ile oyuncuya göstereceğimizi ayarlamış oluruz. Oyun motorları sayesinde bir hedefe ateş ettiğimizde ne olacağı, hedefin neresine isabet ettiğini ve buna benzer bazı olayları yönetebiliriz. Mesela bir bölgeye geçince farklı bir müziğin çalması bile bu motorlar sayesinde gerçekleştirilir. Şimdi gelelim bir diğer faktör olan fizik motorlarına. Fizik motorları oyun motorlarıyla birleşikte olabilir ayrı olarak funduszeue.info yazılım olarak ta eklenebilir. Bu motorlar genellikle nesnelerin geometrilerinin kesişim testleri ve buna benzer fiziksel etkileşimlerini test eden yazılımlardır. İçinde birçok fizik formülü tanımlıdır. Bu testler yapılırken belirli fizik algoritmaları kullanılır fakat farklı algoritmalar oluşturulabilir. Bu da fizik motorlarının performansının değişik değişik olmasının sebeplerinden biridir. Fizik motorlarıyla nesnelerin kesişim testlerinin ve çarpışma denetiminin kontrolü sağlanır. Örnek vermek gerekirse oyundaki karakterin engele çarpıp çarpmadığını anlamada ya da bir askerin hedefe ateş edince hedefin neresinden vurduğunu anlamada işimize yarar. Bu yüzden fizik motorları oyunda gerçek hissini oluşturan en önemli unsurlardan biridir. Şimdi ise kullanacağımız motorun bize en uygun olanını kolayca bulabilmek için kullandığımız platforma ve programlama diline uygun ücretli ya da ücretsiz tercihimize göre seçebileceğimiz tablolar oluşturduk. Bu şekilde seçimimizin daha kolay olacağını düşünüyoruz[4]. Motor İsmi Platform 2D 3D Programlama Ücret Lisans Dili AndEngine Android Java -- Açık + -- Kaynak Android GL Android Java -- Açık + -- Kaynak EDGELIB Android, C++ -- / £5,00 Özel iOS + + GameKit Android, - + C++ -- Açık iOS Kaynak GameMaker Android, Yok(Grafiksel) Windows:$, Özel iOS, Html5 + -- Mac:$, HTML5:$ GameSalad Android, Yok(Grafiksel) -- /$(yıllık) Özel iOS, Html5 + -- jMonkeyEngine Android Java -- Açık - + Kaynak libGDX Android, Java -- Açık Html5 + + Kaynak MonoGame Android, C# -- Açık iOS + -- Kaynak Unity3D Android, .NET(Mono) Unity: - / Unity Pro: Özel iOS - + $ YoghurtGum Android C++ -- Açık + -- Kaynak Şekil Oyun motorları Motor İsmi Platform 2D 3D Programlama Ücret Lisans Dili Bullet. Js Html5 -- + Javascript -- Açık Kaynak Box2DWeb Html5 + -- Javascript -- Açık Kaynak Android Android + -- Java -- Açık Kaynak Box2D Emini Android + -- Java -- Açık Kaynak Physics Engine Metali Android, iOS -- + C# -- / + Özel Physics Engine Newton iOS -- + C++ -- Açık Kaynak Physics Engine Grafik Motorunu ise kısaca şu şekilde açıklayabiliriz: Önceden tasarlanan 2D/3D model ve kaplamaları ekrana çizmeye yarayan yapılardır. Tabi ki böyle basit bir yapıdan öte, ışık, gölge, kamera gibi görsel olarak oyuncuyla etkileşimi sağlayan her şeyden sorumludur. Fizik motorunun ve grafik motorunun oyunda hangi görevleri yerine getirdiğini biraz daha açık bir şekilde anlatacak olursak şu cümleleri de anlatımımıza ekleyebiliriz. Örneğin 2 boyutlu bir oyunda bir araba çizdiniz, bunu grafik motoru ile istediğiniz x, y koordinatlarında ekranda gözükmesini sağlayabilirsiniz. Arabanıza fizik eklemek istediğinizde ise arabanızın boyutunda bir fizik objesini oluşturup bunun koordinatlarını arabanızın grafik objesi ile eşliyorsunuz (fizik objeleri ekranda herhangi bir çizdirilme işlemine tabi tutulmadıkları için görünmezler). Siz ileri tuşuna bastığınızda arabanızın fizik objesi hareket ederken arabanızın grafik objesi de fizik objesini takip ediyor. Duran ve fizik objesi barındıran bir arabaya çarptığınızda arabanınız çarpışma etkisinden dolayı savrulmasını veya geri tepmesini sağlayan olay görünmez olan fizik objelerinin etkileşimi oluyor ve grafiğinizde bu fizik objesiyle aynı koordinatları takip etmesi gerektiğinden dolayı oyunda ekrana çizdirdiğiniz grafik objesine gerçekçilik katmış oluyorsunuz. Aslında ana etmen olan oyun motoru bu iki motorun birleşiminden oluşmaktadır [3]. Türkiye’de geliştirilen bazı oyun motorları ise şunlardır: Actor, CPAGE, Yogurt3D, Zinek Engine, Piyodix[3]. .NET (Mono) - Update, Start ve Awake function Start() : Ekranda komut verdiğimiz bir nesnenin oyunun başlangıcında sadece bir kereliğine oynatılmasını sağlar. Unity’yi açalım ve ekrana Terrain menüsünden bir terrain, Hierarchy/Create panelinden bir ışık ve bir de küp yerleştirelim. Kamerayı da oyunu başlattığımızda küpü görecek biçimde küpe doğru yöneltelim. Daha sonra Project/Create menüsünden yeni bir Javascript dosyası oluşturalım. Java kod dosyasını ekrandaki küpe sürükleyelim. Ekranın sağ tarafındaki inspector panelinde kodun küpe atanmış olduğunu göreceğiz. Kodu yazmak için dosyaya çift tıklayalım, içerisine şu kodu yazalım; function Start () { funduszeue.infoate(10, 0, 0); } Oyunu başlattığımızda küp başlangıçta bulunduğu konumdan daha farklı bir konuma geçmiş olacaktır. Eğer Start yerine Update yazsaydık küp sürekli x yönünde durmadan hareket edecekti. function Update (): Yaptığımız bir oyunu veya bir uygulamayı başlattığımızda içerisinde yazılı olan kodları biz kapatana kadar sürekli olarak ekranda oynatır. Yani sürekli günceller. Yukarıdaki kodu Update fonksiyonu için uygulayalım; function Update() { funduszeue.infoate(10, 0, 0); } Oyunu başlattığımızda ekrandaki cisim sürekli x yönünde hareket edecektir. Şekil Mono develop arayüzü BÖLÜM 3. GELİŞTİREN OYUN YAZILIM ( ALTIN ÇAĞI ) Model Yapısı Yazılım bakış açısı- IPO ( Input-Process-Output) diyagramı Şekil Ipo diyagramı Oyunumuzun inputları Başlama ve Hareket Kontrolleri’dir. Başlama ile oyuncu oyuna başlar ve hareket kontrolleriyle karakteri ilerletir. Oyunun processi oyunun oynanma aşamasıdır. Outputlar ise karakterin doğru hareket etmesi ve level durumudur. Proses oyuncunun girdiği hareket kontrollerini kontrol eder ve oyunu yönlendirir. Ürün fonksiyonları, veri akış diyagramı(DFD) Şekil Dfd diyagramı Oyuncu oyuna level 1 butonuyla oyuna girer. Oyuna girdiğinde karakteri yönlendirme işlemi yapar. Bu yaptığı yönlendirme kontrol edilir. Eğer karakter yoldan düşmediyse ve kırmızı altına çarpmadıysa sürece oyuna devam eder. Aksi durumlarda oyun biter ve leveli geçemez. Akış diyagramı Şekil Oyunun akış diyagramı Oyun ekranından görüntüler Şekil Oyun ana ekranı Şekil Level oluşturma örneği Şekil Level geçilemediğindeki ekran görüntüsü Şekil Level geçildiğindeki ekran görüntüsü Şekil Oyun anı görüntüsü Kurallar ve Kısıtlamalar - Oyuncunun oyuna devamı zamana ve altınlara bağlıdır. - Bir sonraki levele geçmek için bütün sarı altınları toplaması gerekir. - Belirlenen zaman içerisinde oyunu tamamlayamazsa bir sonraki levele geçemez. - Oyundaki kırmızı altınları topladığı anda oyun bitecektir. - Oyuncu oyun alanından düştüğünde oyun bitecektir. Senaryolar Oyuncunun funduszeue.info saniyede 15 sarı altın toplayarak yanması: - Oyuna giriş yapar. - Karakter ileri yönde harekete başlar. - Karşısına yol boyunca sarı veya kırmızı altınlar çıkar. - Sarı altınları toplayarak oyuna devam eder. - Aynı anda da kırmızı altınlara çarpmadan süreyi iyi kullanarak devam eder. - Yol boyunca dört yönde tercihte bulunabilir ve ilerlemeye devam eder. - İlerlediği yönde yine sarı ve kırmızı altınlar bulunur. - Yine kırmızı altına çarptığında veya yoldan düştüğü an oyun biter. - saniyeye kadar kırmızı altın toplamayıp ve yoldan düşmediği için oyuna devam etmiştir. - Ayrıca 15 sarı altın toplamasına rağmen bu levelde belirlenen 20 sarı altını 60 saniyede gerçekleştirememiştir. - Oluşan bu durum oyuncunun bir sonraki levele geçememesine sebep olmuştur. Oyunun Çalışması Oyunda karakterin önüne belirli yollar gelmektedir. Oyuncu gelen yolun yönünde karakteri ilerletebilmektedir. Amaç karakteri düşürmeden devam etmesini sağlayacak nesneleri toplayarak yoluna devam etmektir. Her levelde kırmızı ve sarı renkli altınlar bulunmaktadır. Leveli geçmek için bütün sarı altınların toplanması ve her level için farklı olarak belirlenen sürede tamamlanması gerekmektedir. Oyuncu yoldan düşer veya belirlenen süre içerisinde bölümü geçemezse ya da kırmızı altınları alırsa oyunun bitmesine sebep olur. Oyuncu bu şekilde ne kadar ilerleyebilirse o kadar level atlayıp oyunu oynayacaktır. İş Zaman Çizelgesi Diyagramda; - Proje yapım aşamaları - Başlangıç ve bitiş tarihleri - Ne kadar sürdüğü bahsedilmiştir. Şekil İş zaman çizelgesi BÖLÜM 4. SONUÇLAR Çalışmalarımız sonucunda oyun programlamaya başlarken bizi buna sevk eden amaç ve motivasyonlarımızı göz önünde bulundurarak neler yapmamız gerektiğini, hazırlık aşamalarının nasıl olacağı hakkında birçok bilgi edindik. Bunun için de tasarladığımız oyunumuzla aynı türde bir oyunu inceledik. İncelediğimiz oyunu tetkik ederek kendi oyunumuzda geliştirebileceğimiz yönleri ve aynı türdeki oyunlardan nasıl bir farklılık sağlayacağımızı düşündük ve karar verdik. Oyun motorumuzu Unity olarak seçmemizde hem iki boyutlu hem üç boyutlu oyun programlamayı desteklemesi, iOS ve Android gibi popüler platformlarda çalışması etkili oldu. Unity arayüzleri hakkında bilgi edindik. Sahnede gezinmek, kamera açılarını değiştirmek, game object oluşturmayı, objeyi hareket ettirmek, boyutlandırmak vesaire nasıl gerçekleştirileceğini öğrendik. Ayrıca diğer oyun motorları nelerdir, hangi platformlarda çalışır gibi konularda da bilgi sahibi olduk. Oyunumuzun kurallarını, kısıtlamalarını, nasıl oynanacağına dair araştırmalarımız ve fikirlerimiz doğrultusunda karar verdik. Örnek bir senaryo kurgulayarak oyunumuzun oynanışını, kurallarını, kısıtlamalarını anlattık. Bunu gerçeklemek için nasıl bir planlama içinde olacağımızı iş zaman çizelgemizle gösterdik. Sonuçta birçok yeni bilgilere, kavramlara ulaşmış olduk ve bu bilgileri nasıl kullanabileceğimize dair önemli gelişmeler kaydettik. Kendimizi geliştirebileceğimiz farklı bir alan olan oyun programlamayı genişçe ele almış olduk. BÖLÜM 5. KAYNAKLAR [1] funduszeue.info [2] funduszeue.info?p= [3] funduszeue.info [4] funduszeue.info ÖZGEÇMİŞ Hamza Keçeli, ’de Ordu’da doğdu. İlk, orta ve lise eğitimini Ünye’de tamamladı. yılında Ünye Anadolu Teknik Lisesi, Bilgisayar Bölümü’nden mezun oldu. yılında Sakarya Üniversitesi Bilgisayar Mühendisliği Bölümü’nü kazandı. yılında SAÜ Teknokent’te Barset Bilgi Sistemleri’nde yazılım stajını ve yılında da bölümümüzde donanım stajını yapmıştır. SAÜ Bilgisayar Mühendisliği Bölümünden yılında mezun olmuştur. ÖZGEÇMİŞ Hasan Çakmak, ’de İstanbul’da doğdu. İlk, orta ve lise eğitimini İstanbul’da tamamladı. yılında Yavuz Sultan Selim Lisesi, Fen Bilimleri Bölümü’nden mezun oldu. yılında Sakarya Üniversitesi Bilgisayar Mühendisliği Bölümü’nü kazandı. yılında funduszeue.info Elektronik Yayıncılık ve İletişim Hizmetleri A.Ş.’de yazılım stajını ve yılında da İSKİ Genel Müdürlüğü’nde donanım stajını yapmıştır. SAÜ Bilgisayar Mühendisliği Bölümünden yılında mezun olmuştur. BSM BİTİRME ÇALIŞMASI DEĞERLENDİRME VE SÖZLÜ SINAVTUTANAĞI KONU: UNITY 3D İLE OYUN PROGRAMLAMA ÖĞRENCİLER (Öğrenci No/AD/SOYAD): B HASAN ÇAKMAK B HAMZA KEÇELİ Değerlendirme Konusu İstenenler Not Not Aralığ ı Yazılı Çalışma Çalışma klavuza uygun olarak hazırlanmış mı? X Teknik Yönden Problemin tanımı yapılmış mı? X Geliştirilecek yazılımın/donanımın mimarisini içeren blok şeması (yazılımlar için veri akış şeması (dfd) da olabilir) çizilerek açıklanmış mı? Blok şemadaki birimler arasındaki bilgi akışına ait model/gösterim var mı? Yazılımın gereksinim listesi oluşturulmuş mu? Kullanılan/kullanılması düşünülen araçlar/teknolojiler anlatılmış mı? Donanımların programlanması/konfigürasyonu için yazılım gereksinimleri belirtilmiş mi? UML ile modelleme yapılmış mı? Veritabanları kullanılmış ise kavramsal model çıkarılmış mı? (Varlık ilişki modeli, noSQL kavramsal modelleri v.b.) Projeye yönelik iş-zaman çizelgesi çıkarılarak maliyet analizi yapılmış mı? Donanım bileşenlerinin maliyet analizi (prototip-adetli seri üretim vb.) çıkarılmış mı? Donanım için gerekli enerji analizi (minimum-uyku-aktif- maksimum) yapılmış mı? Grup çalışmalarında grup üyelerinin görev tanımları verilmiş mi (iş-zaman çizelgesinde belirtilebilir)? Sürüm denetim sistemi (Version Control System; Git, Subversion v.s.) kullanılmış mı? Sistemin genel testi için uygulanan metotlar ve iyileştirme süreçlerinin dökümü verilmiş mi? Yazılımın sızma testi yapılmış mı? Performans testi yapılmış mı? Tasarımın uygulamasında ortaya çıkan uyumsuzluklar ve aksaklıklar belirtilerek çözüm yöntemleri tartışılmış mı? Yapılan işlerin zorluk derecesi? X Sözlü Sınav Yapılan sunum başarılı mı? X Soruları yanıtlama yetkinliği? X Devam Durumu Öğrenci dönem içerisindeki raporlarını düzenli olarak hazırladı mı? X Diğer Maddeler Toplam DANIŞMAN (JÜRİ ADINA): DANIŞMAN İMZASI:

Oyun motorları(liste)

  • Kaynak bağlantı noktası
  • Birinci şahıs nişancı motoru
  • Oyun motoru yenileme
  • Oyun oluşturma sistemi
  • Görsel roman motorları listesi
Özgür ve
açık kaynaklı
2B
B
3B
  • Away3D/AwayJS
  • Cafu
  • GamePlay
  • GLScene
  • Horde3D
  • Irrlicht
  • JMonkey
  • OGRE
  • Panda3D
  • PlayCanvas
  • Torque
  • Xenko
Karma
  • Allegro
  • Godot
  • libGDX
  • Lightweight Java Game Library
  • Spring
SahipliTarihî
(özgür ve
açık kaynaklı)
2B
  • Thousand Parsec
  • Vassal
  • Xconq
  • Game-Maker
B
3B
  • Blender Game
  • Bork3D
  • Crystal Space
  • funduszeue.info Engine
  • Delta3D
  • Dim3
  • Genesis3D
  • id Tech
  • Open Wonderland
  • Papervision3D
  • Platinum Arts Sandbox
  • PLIB
Karma
Tarihî
(sahipli)
2B
  • GameMaker
  • Garry Kitchen's GameMaker
  • Genie
  • MADE
  • M.U.G.E.N
  • SCUMM
  • Vicious
  • Virtual Theatre
  • Zillions of Games
3B
  • Bitsquid
  • C4
  • Dark
  • Enigma
  • Flare3D
  • GoldSrc
  • Filmation
  • Freescape
  • INSANE
  • Jade
  • Jedi
  • LyN
  • Marmalade
  • Panta Rhei
  • Pie in the Sky
  • Q
  • Reality Lab
  • RenderWare
  • SAGE
  • Silent Storm
  • Sim RPG Maker
  • Titan
  • Truevision3D
  • Vision
  • Visual3D
  • Voxel Space
  • XnGine
  • Zero
Sahipli
ara yazılım
  • Euphoria
  • Gameware
  • GameWorks
  • Havok
  • iMUSE
  • Kynapse
  • SpeedTree
  • FaceGen

nest...

çamaşır makinesi ses çıkarması topuz modelleri kapalı huawei hoparlör cızırtı hususi otomobil fiat doblo kurbağalıdere parkı ecele sitem melih gokcek jelibon 9 sınıf 2 dönem 2 yazılı almanca 150 rakı fiyatı 2020 parkour 2d en iyi uçlu kalem markası hangisi doğduğun gün ayın görüntüsü hey ram vasundhara das istanbul anadolu 20 icra dairesi iletişim silifke anamur otobüs grinin 50 tonu türkçe altyazılı bir peri masalı 6. bölüm izle sarayönü imsakiye hamile birinin ruyada bebek emzirdigini gormek eşkiya dünyaya hükümdar olmaz 29 bölüm atv emirgan sahili bordo bereli vs sat akbulut inşaat pendik satılık daire atlas park avm mağazalar bursa erenler hava durumu galleria avm kuaför bandırma edirne arası kaç km prof dr ali akyüz kimdir venom zehirli öfke türkçe dublaj izle 2018 indir a101 cafex kahve beyazlatıcı rize 3 asliye hukuk mahkemesi münazara hakkında bilgi 120 milyon doz diyanet mahrem açıklaması honda cr v modifiye aksesuarları ören örtur evleri iyi akşamlar elle abiye ayakkabı ekmek paparası nasıl yapılır tekirdağ çerkezköy 3 zırhlı tugay dört elle sarılmak anlamı sarayhan çiftehan otel bolu ocakbaşı iletişim kumaş ne ile yapışır başak kar maydonoz destesiyem mp3 indir eklips 3 in 1 fırça seti prof cüneyt özek istanbul kütahya yol güzergahı aski memnu soundtrack selçuk psikoloji taban puanları senfonilerle ilahiler adana mut otobüs gülben ergen hürrem rüyada sakız görmek diyanet pupui petek dinçöz mat ruj tenvin harfleri istanbul kocaeli haritası kolay starbucks kurabiyesi 10 sınıf polinom test pdf arçelik tezgah üstü su arıtma cihazı fiyatları şafi mezhebi cuma namazı nasıl kılınır ruhsal bozukluk için dua pvc iç kapı fiyatları işcep kartsız para çekme vga scart çevirici duyarsızlık sözleri samsung whatsapp konuşarak yazma palio şanzıman arızası