Torque Game | 6. ve 7. Aşamalar

UPBGE ile yapımına devam ettiğim bilgisayar oyununun 6. ve 7. aşamaları…


İndir “Torque Game Step 7” 7-Hareketli_Objeler.rar – 13 defa indirildi – 79 MB


LİCENSE / LİSANS


Hami Cihat SERTCAN isimli yazarın Torque Game başlıklı eseri bu Creative Commons Atıf-GayriTicari-AynıLisanslaPaylaş 4.0 Uluslararası Lisansı ile lisanslanmıştır.
https://hamisertcan.com/2020/06/29/torque-game-6-ve-7-asamalar/ bağlantısındaki esere dayalı olarak.


6. aşamayı paylaşamamıştım. Sadece videosunu paylaşmıştım. Yukarıdaki indirme linkinden 6. aşamanında dahil olduğu 7. aşamayı indirebilirsiniz.

6. aşamada neler yapmıştım kısaca değineyim. Oyuna biraz aksiyon katmak açısından karakterimize ateş edebilecek bir şey düşünüyorum. Aklıma yüzüklerin efendisi serisindeki Sauron’un gözü geldi 🙂 Bende oyundaki taş objelerin yapımı için kullandığım materyali ve taş obje oluşturucuyu kullanarak bir kule modelledim.

Herhangi bir obje için animasyonlu doku yapımı

Kulenin üzerine aslında göze benzer bir şey yapacaktım ancak sonradan vazgeçtim. Bunun yerine animasyonlu bir doku kullanarak efekt yapmayı düşündüm ancak burada bir sorun vardı ben küre şeklinde bir objeye animasyonlu doku kaplamak istiyordum bu sebeple işler biraz zorlaştı. Konu ile ilgili biraz araştırma yapmam gerekti. Sonuçta blender da objelerin kaplama koordinatlarına keyframe atamakta kullanılabilen bir addon keşfettim. Bu eklenti sayesinde kürenin kaplama koordinatlarını sürekli değiştirerek bake etmek suretiyle istediğim animasyonlu dokuyu elde ettim. Bu yöntem kullanılarak herhangi bir objeye animasyonlu doku eklenebilir. İlgili dokuyu indireceğiniz blender dosyasının içerisinde bulabilirsiniz.

Parentlenmiş objeleri parentten ayırmak

Kulenin yıkılabilmesi noktasında cell fracture eklentisini kullandım. Dokuları kendim ürettiğim için objelerin yüzeylerinde dokunun tekrar yerleri belli olmuyor ancak bu yöntemin de dezavantajları var. Her obje için ayrı bir doku kullanmanız gerekiyor. Yani bir anlamda dokular objelere özel oluyor. Ayrıca dokuların kalitesi de 4096×4096 pikselden aşağıda olduğunda kaliteli bir sonuç elde edilemiyor. Buda oyun için gerekli dosya hacmini arttırıyor maalesef.

Evet cell fracture eklentisi ile oluşturduğum kuleyi parçalara ayırmayı başardım ancak oyun içerinde normalde bu parçaların bir arada durmaları onlara metal küre ile çarpıldığında bu kulenin yıkılmasını istiyordum. Bu noktada oyunun yapımına başlamadan önce birkaç deneme ve biraz da araştırma yapmam gerekti.

Sonuç olarak removeParent() kodunu buldum. Bu kodu kullanarak kulenin parçalarını bağlı oldukları ebeveynden ayırabiliyordum. Böylelikle herbiri sahip oldukları rigid body fizik tipine göre hareket ederek kulenin yıkılması sağlanabiliyordu. Tabi bu noktada öncelikle bir kaç işlem daha gerekiyor. Şöyleki ebeveynden çocuk objeleri ayırabilmek için öncelikle hangi objelerin çocuk olduğunun tespit edilmesi ve bir matris oluşturulması gerekiyor. Bu işlem yapıldıktan sonra eğer bu objelerden herhangi birine çarpan karakterimiz de demir özellikte ise çocuklar ebeveynlerinden ayrılıyorlar.

Objeler arasındaki mesafenin ölçümü

Oyunun stabil halde çalışabilmesi için ciddi anlamda kafa yormak gerekiyor. Eğer logic bağlantı kullanmadan yapılabilecek bir işlem var ise mutlaka kod ile yapılmalı. Mümkün olan en az logic bağlantı yapılmalıdır. Kulenin kapasama alanına girilip girilmediğinin tespiti içinde bu kurala riayet ederek near sensor kullanmadım. Bunun yerine birçok yerde işe yarayabileceğini düşündüğüm mesafe ölçümü kodunu kullandım. Yani getDistanceTo komutunu…

Bu koddan yararlanarak hem karakterimizin kulenin ateş mesafesine girip girmediğini öğrenebiliyoruz hem de kuleden karakterimize yönelen ışının boyunu ayarlayabiliyoruz.

Slow parent seçeneği

Oyun motoru içerisinde son derece kullanışlı olabilecek birde slow parent özelliği mevcut. Bu özelliğe çocuk objenin object properties – relations bölümünden ulaşmak mümkün. Slow parent aktif edildiğinde çocuk obje bağlı olduğu objeyi biraz daha geç takip ediyor. Böylelikle düşman ateşlerinden manevralar yaparak kaçınmak mümkün oluyor. Bu özellik birçok farklı oyun çeşidinde kullanılabilecek bir özellik. Örneğin fps tarzı oyunlarda düşman ateşinin sürekli karakterimize isabet etmemesi için kullanılabilir.

Bütün objeleri tek bir kod ile yönetmek

Evet şimdi birazda 7. aşamadan bahsetmek istiyorum.

Bu aşamada yaptığım en önemli özellik oyun içerisinde benzer isimde olan bütün objeleri manipüle edebilecek bir yazılım yapmam oldu. Bu kodlar sayesinde oyun içerisinde istenen objelerin tamamı herhangi bir logic bağlantı yapmaya veya onlar için animasyonlar oluşturmaya gerek kalmadan hareket ettirilebiliyorlar. Tabi ki çok kompleks hareketler yapılamaz ancak basit hareketler bu kodlar sayesinde yapılabilirler.

Bir örnek vermek gerekirse oyununuz içerisindeki onlarca kapıyı, kapılara herhangi bir animasyon veya logic bağlantı yapmanıza gerek kalmadan bu kodlar ile yönetebilirsiniz. Karakterinize bağlayacağınız bir near sensör sayesinde kapılara yaklaşınca kapıların açılmasını sağlayabilirsiniz.Oyun içerisinde üzerinde durunca alçalan taşlar bu söylediklerime benzer şekilde tasarlandı.

HDRI doku yapımı

Oyunun arka planı için bulutların üzerindeymiş hissi veren bir doku aradım ancak kullanımı tamamen ücretsiz olan ve benim isteğime uygun bir görüntü bulamadım. Bu sebeple bende kendi dokumu oluşturmaya kara verdim. Öncelikle blender da bulut yapımını araştırmam gerekti. Daha sonra blender da gökyüzü yapmayı ve en sonunda da panaromik render almayı… 🙂 Bulut yapımı konusunda birçok video ders izlediğimi ve çoğunun işe yaramaz olduğunu söylemem gerek. Ancak sonunda bu iş için yapımı kolay bir yöntem bulduğumu söyleyebilirim.

İşte burada da hdri render almak için bir video ders var. İşin tek kötü yanı eevee içerisinde hdri render alınamıyor olması. Cycles da render almak biraz uzun sürüyor 🙁

Video içerinde de biraz gösterdiğim gibi oyun için birçok model yaptım. Aslında çeşitliliği sağlamak için aynı tarzda objelerden birden çok tane modellemeye çalışıyorum. Şimdilik bunların hepsini oyuna eklemedim ancak bundan sonraki aşamada yeni bölümler oyuna eklemeyi planlıyorum bu bölümlerde modellediğim bütün objeleri kullanacağım…

Bir cevap yazın