Projeyi İngilizce’ye çevirmiş olsam da bazı fikirlerimi paylaşmak istiyorum, böylelikle takip etmeye başlayan arkadaşlar ne yaptığımı anlayabilir. Öncelikle uzun zamandır oyun yapımı konusuna meraklı olduğumu söylemeliyim, tahminimce orta okul sonu – lise başları gibi internet üzerinden çeşitli oyun yapım ekiplerini takip ettim. Çoğu başarısız oldu, kimisi yön değiştirdi. Kendim bile lisede bir oyun yapmaya çalışmıştım hatta bu amaçla hazırladığım senaryo ayrı bir hikâyeye dönüştü ama oyun projesi durmuştu.
Linux ve Özgür Yazılım şenliğine konuşmacı olarak katılan Google mühendisi abimizin bazı söyledikleri bana fikir verdi. Öncelikle diğer ekiplerin hatalarını düşündüm. Ya gerekli bütçeleri yoktu ya da çok büyük işler yapmaya çalışıyorlardı, bu yüzden olsa gerek bir noktada tıkanıyorlar ve devam edemiyorlardı. Projeleri kapalı kaynak kodlu olduğu için kimse onların yerine projelerini devam ettirmedi. Mezara gömülmüş o kadar emek…
Mühendis abimizin ilk söylediği şey bir fikir ortaya atmadan önce bir şeyleri başlatmamızdı. Önce kodu yaz işe başla ondan sonra insanların katılmasını bekle. Çalıştığınızı bir şeyler ürettiğinizi görmeden kimse size durduk yere katılmaz. Hele hele oyun yapıyorum diye ortaya çıkarsanız çoğu kişi bir tarafıyla size gülecektir. Ama bir yerden başlarsanız… ufak da olsa bir şeyleri başarırsanız insanlar sizi takip etmeye başlar ve zaman içerisinde projeniz büyür. Benim yaptığımda o ilk adımı atmak oluyor.
APyGM şuan çok erken bir safhada. Sadece konsol üzerinde kullanıcının girdiği verilerle benim girdiğim veri tabanı değerleri arasında çeşitli hesaplamalar yapıp kullanıcıya döndürüyor. Şimdilik yaptığım “neyi nasıl yapacağıma karar vermek” ve süreçleri test etmek. Bu bir RPG oyunu olacak ama sizlere World of Warcraft gibi bir oyun sunmayı düşünmüyorum. Sonuçta ne ben profesyonel bir programcıyım ne elimde böyle bir şeyi başaracak ekip var ne de para var. PS oyunlarına benzeyen bir RPG olacak. Turn based bir savaş sistemi düşünüyorum ama onu oyun motoruna geçmeden test etmeyeceğim.
XNA ve PyGame ile yaşadığım tecrübelerden sonra hız konusunda sıkıntı yaşayabileceğimi fark ettim. C gibi bir dil kullanmadığımız sürece araya sürekli çeşitli katmanlar girmekte ve bu katmanları aşmaya çalışırken oyunumuz yavaşlamakta. Şimdilik sadece konsol üzerinde çalıştığım ve fazla değişken olmadığı için bir sorun yok ama oyun geliştikçe bu sorunu yaşayacağım. İşte bu yüzden kodlama sırasında olabildiğince az modülü import edeceğim. Belleğe minimum düzeyde veri atıp işlemleri en alt düzeyde yapmayı planlıyorum. Gereksiz hesaplamalar olmamalı, işlemler hemen yapılıp bitmeli.
Önümde iki seçenek var en azından şimdilik PyGame ve Panda3D. Bunlar başarılı projeler ama kendimde OpenGL üzerinde çalışabilirim. Sonuçta geliştireceğim oyun fazla karmaşık olmayacağı için kendi yazacağım ufak bir motor yeterli olabilir, deneyerek karar vereceğim zaten sizlerde benle öğreneceksiniz.
Sınıf yapısını kullanmaya gerek görmemiştim ama dün sabah yaptığım commit ile ilk sınıfı oluşturdum. Oyuna görsel ögeler eklemeye yaklaştıkça kodları sınıf yapısına geçireceğim. Zaten temiz kodluyorum ve her şey fonksiyonlar üzerine kurulu, onları sınıfların altına almak zor olmayacaktır.
Şimdilik yaptıklarım düşününce daha uzun bir yolum olduğu görüyorum. Kullanıcıyla etkileşim sonunca çeşitli verileri alıp savaşıyor, savaş sonunda da experience alıp bunların toplamıyla level alıyoruz. Level alınca da statleri birer puan arttırıyoruz. Bundan sonrası için karakterimize kıyafet giydirmeye ve elimize birer silah almaya çalışacağım. Onlara göre savaş sistemini yenileyeceğim. Elbette bunu yapmak için öldürdüğümüz yaratıklardan bir şeyler elde etmemiz gerekecek. Çoğu oyunda küçücük solucanlardan ya da diğer hayvanlardan çeşitli kıyafetler düşüyor. Ben onun yerine bu hayvanlardan deri falan elde edip onları bir yere satmayı ve oradan gelen parayla kuracağım bir market üzerinden alışveriş yaptırma yolunu seçeceğim. Bu mesela şimdi geldi aklıma 😀 Nasıl yapacağım diye düşünüyordum yazarken aklıma geldi 😀
Neyse bizi izlemeye devam edin efendim. İyi geceler!