Eveeeet bir önceki Devlogda bahsettiğim üzere oyuna pek fazla bir ekleme yapamayacağımı söylemiştim. Lakin bugün fazladan zamanım oldu. İsterseniz yavaştan yaptıklarıma geçelim.

Geçen devlgda bahsettiğim üzere oyunun kodlarında bir düzenleme yaptım. Yeni eklediğim dosyalar oyunu çok daha modüler hale getirdi. Bu da oyunu kodlama işini bir hayli kolaylaştıracak. Yeni Şeyler eklemek daha kolay olur mu bilemem ama daha da karmaşıklaşıp yeni şeyler eklemenin imkansız hale gelmesinden önce bunu halletmem iyi oldu.

Öncelikle oyunda gözüken ve bir texture a sahip olan her nesne Entity.hpp klasörünün içerisinde yer almaktaydı. Bu da her bir nesnenin içinde fazladan hiçbir işe yaramayan değişkenleri tutmasına sebebiyet veriyordu. mesela hiçbir fonksiyonu olmayan toprağın içinde can bilgisini taşıması için bir integer bulunuyor ve ya bir slime ın içinde sağında solunda yukarısında aşağısında başka bir çim bloğu var mı yok mu bilgisini tutan değişkenler bulunuyordu. Arka plan objelerinin sayısı çok fazla olduğu için özellikle onların ayrı bir sınıfa taşınması oyunun ilerisinde oluşabilecek performans sıkıntılarını şimdiden gidermek için ayrı bir BG.hpp dosyası oluşturdum.

Daha sonra oyunda main.cpp dosyası yaklaşık 550 satır koddan oluşmaktaydı. ve bazı düzenlemeler için sürekli yukarı aşağı kaydırmak kodlama performansını ve konforunu baya düşüren bir durum. Hem bunun için hem de daha modüler bir kodlama için iki ayrı dosya oluşturdum. Bunlardan biri oyun ilk çalıştığında sahneyi kurması için başlangıçtaki objelerin konumunu ve durumunu belirleyen WorldInit.hpp diğeri ise oyunun ana döngüsünde sürekli olarak güncellenen karakterin konumu gibi değişen parametreleri güncelleyen StepEvent.hpp dosyası oldu.

Eklediğim Bir başka dosya ise farenin hareketleri ve tıklamalarını takip eden ve onun sonucunda oluşacak etkileri kontrol eden ClickEvent.hpp dosyası oldu bu dosya ileride çok işime yarayacak.

Bunlar kodlarımdaki başlıca düzenlemelerdi. Şimdi ise gelelim neler eklediğime.

Her şeyden önce artık Slimelarımızın bir canı var ve bu can üzerlerindeki can barında gözükmekte. Canları 0 a ulaştıktan sonra sihirli bir şekilde yok olmakta.

Envanterde artık farenizde bir eşya tutarken envanterde bir slotta duran eşya ile direk değiştirebiliyorsunuz. Önceden bunu yapabilmek için fazladan 1 boş slota ihtiyacınız vardı. Videoda daha rahatça gözüküyor yazıyla açıklaması biraz zor.

Ve o yenilik…. yıllarca beklendi… çok istendi…. Ve işte o GÜNCELLEME! KAMERA GÜNCELLEMESİİİİİ!!!! Evet artık bir kameramız var ve ana karakterimizi takip ediyor. Ve kodalarken farkettiğim üzere bunu çok çok önceden yapsaydım şimdiki kadar uğraşmayacakmışım. Bir sürü fonksiyonu değiştirmem gerekti bu yüzden.

Yukarıda yazdıklarımı tek bir video ile göstereceğim Çünkü canım öyle istiyor.

Ve Bunları yaptıktan sonra son kez de bir performans testi olarak saniyede 60 adet slime olşturan bir kod yazdım. Verimlilik durumumuz ne durumda diye ve ben bile bu kadar iyi bir performans beklemiyordum. 10 yıllık külüstür bilgisayarımın gıkı bile çıkmadan sorunsuz çalıştı. 8 çekirdekli cpu kullanıyorum ve sadece tek çekirdekte çalışan oyunum %50 yi bile zar zor geçmekte.

Tabi Bundan sonra oyuna ecs eklemeyi düşünüyordum lakin ecs oyunun performansını arttırmak için eklenen bir şey ama yakın zamanda sorun yaratacağa benzemiyor. Eğer boş bir vaktimde canım sıkılırsa ekleyebilirim. Şimdilik aciliyeti yok gibi duruyor.

Oyunun v0.3 versiyonu bitti. Yakında v0.4 için çalışmalara başlayacağım. Kendinize iyi bakın….