2d Oyun Geliştiricileri için LUA, Gideros, Love
Steam için geliştirdiğimiz oyunumuz BoxTheTop için ne ile yazabiliriz acaba derken karşıma tekrar çıkan LUA dan bahsedeceğim bugün.
Eski bir amatör action script oyun yazılımcısı olarak flash ın piyasadan silinmesinden sonra bu arayışım aslında daha eski zamanlarda da olmuştu. O zamanlar Corona + LUA ile tanışıp ufak çaplı denemelerim olmuştu fakat işim gereği oyun yazılımına yeni bir dil ile tekrar baştan başlamak için gerekli boş vakti kendime ayırmamıştım. Ama 2d oyunlar için kullanılabilir veya denenebilir bir dil olduğunu o zamanda düşünmüştüm.
Şu an tekrar karşıma çıkması artı bir de Türk bir yazılımcının geliştirdiği ve yine daha önceden bir haber vasıtası ile deneyimlediğim Gideros la birlikte seçenekler arasında yeralması bu sefer ciddi şekilde deneme isteği uyandırdı. Aşağıda şu an ne durumda olduğumu kısa şekilde de olsa paylaşacağım ama önce alternatiflerden de biraz bahsedeyim. Bu arayış içinde karşıma çıkan diğer seçeneklerden de bahsedeyim belki benim gibi bir arayış içinde olanlara ufak da olsa bir yardımı dokunur.
Tabi creating 2D games başlığı altında ilk sıralarda piyasanın devleri karşınıza çıkıyor. Unity, game maker vs.. bunların çoğu paralı yazılımlar. Yani direk para istemeselerde yayın aşamasında bubu haklı şekilde istiyorlar. Haklı diyorum çünkü open source kavramı bende hala hayret uyandıran bir şey. Günümüz yazılımcıları için çok doğal ama ürettiği bir şeyi açık şekilde herkesin faydalanması için ortaya koymak çok büyük bir fedakarlık ve insan üstü bir iyi niyet göstergesi. Neden böyle birşey yapar diye düşünürüm hep neyse. Az kazanan bir yazılımcı olara ben harcama yapmadan önce ücretsiz kaynakları araştırdım tabiki.
Burda karşıma LUA dili ve oyunu geliştirebileceğim Gideros, Love, ve eskiden kullandığım ve paralı olan Corona çıktı. Corona sanırım şu an ücretsiz ama bu seçeneği daha önce bir kere kullandığım için sona bıraktım ve şu anda da gerek kalmadı.
Evet gelelim Gideros ve Love da neler yaptım ne sonuçlarla karşılaştım kısmına. Love aslında daha kullanılabilir bir kaynak diye düşünüyorum. Tek eksiği bir editörünün olmaması. Komut tabanı ile çalışan yeteri kadar yazılı ve görsel tutorial a ulaşabileceğiniz bir platform. Teknik karşılaştırmasını tam olarak yapamam ama basit bir kullanıcı olarak öğrenmesi ve ortaya birşeyler çıkarması kolay bir platform. Giderosla aralarındaki bence en önemli fark Love un fps tabanlı bir update fonksiyonu ile işlemesi. Yani her fps de fonksiyon içindeki kodlar çalıştırılıyor ve bu oyun yazılımı için önemli bir şey. Gideros da durum biraz faklı.
Gideros, Flash daki gibi frame bazlı bir update sistemi kullanmış. Yani her frame için yapılacalar listesi yazıyorsunuz. Benim fikrime göre bu bir eksi ama benimki gibi basit 2d oyunlar için çok önemli olmuyor. Yazım şeklinin action script olması ve türk bir yazılımcının elinden çıkmış olması benim tercih sebebim diyebiliriz. Gerçek bir neden gibi gözükmese de bu tercihi yapacak kişilere şunu söyleyeyim. Asıl olan neyi kullandığınız değil oyunu öyle yada böyle bir şekilde çıkarmanız gerektiğidir. Yani eğer jQuery biliyorsanız onunla çıkarın ama yeterki çıkarın sonrasında gereksinimlerinize göre bir tanesini seçip devam edersiniz ama önce mutlaka oyununuzu bir şekilde hayata geçirin.
Giderosla şu an ne durumdayım. Başlamadan önce bir steam oyunu için basit olarak nelere ihtiyacım olacak onları çıkarıp denemelerime başlamıştım. Tam ekran, ekran çözünürlüğü, dosya boyutu ses, sahneler ve geçişleri, class yapısı animasyonlar, fizik gibi gibi. Bunları hızlı şekilde deneyip bir problemle karşılaşmadığımı görünce hemen kendi kütüphanemi yazmaya başladım. Bu saydığım tüm şeyleri içinde barındıran, sonraki projelerimde direk içine kopyalayıp çoğu şeyi yeniden yazmamam için gerekli olacak basit game manager kütüphanemi yazmayı bitirdim. Şu an tasarım kısmına geçmiş bulunuyorum. Prototip olarak oyunum sorunsuz şekilde oynanıyor ve windows ve apple için oyunumun exportunu yapmış bulunuyorum.
Yazıyı bitirmeden önce şundan da bahsedeyim. Steam içindeki skor tablosu, achievement leri falan kullanabilmeniz için steam developer ücretini ödedikten sonra tabiki bir LUA kütüphanesine ihtiyacınız olacak. Bu resmi olarak yok sadece c için bu desteği vermişler ama yine o open-source cu muhteşem insanlar bu kütüphanenin javascript versiyonunu çıkarmışlar. Benim için gerekli olan LUA kütüphanesi tabi. Araştırmam sonucu onu da buldum ama henüz hesap satıl alma aşamasında olmadığım için kullanma fırsatım olmadı. Sorun çıkacağını düşünmüyorum ama onu da zamanı geldiğinde sizinle paylaşırım.