5
Mar

Tam iki sene önce yani ben daha lise hayatıma yeni başladığım zamanlarda, Python öğrenme çabalarım sürüyordu. O günlerde öğrendiğim yeni şeyleri oturup, uygulamam akılda kalması için ve pratikleşmem için çok gerekliydi. Ben de bir oyun yapayım dedim. Arkadaşlarımla nasıl bir şey yaparız diye fikir yürütürken en son aklıma – Bir odadan kaçış oyunu yapalım, karakter bir şekilde odadan kaçmaya çalışsın, kendini yesin, şeklinde bir konsept geldi.

Nasıl yapılır demeden oturup, direk başladık. Henüz Okan ile Furkan’ın Python’dan haberi olmadığı sıralarda oturup ana harita çizimleri yapıp, üzerinde x,y de hareket ettirdim. Hikaye konusunda fikirlerini alarak bilgisayar odasında çalışarak bitirdiğimiz,(inanılmaz bir şekilde ilkeldi, o yüzden kayboldu diyebilirim.(görmek bile istemiyorum)) projemizin adı F(urkan)O(kan)D(oğan) projesi oldu. Google Code sayfası fod-project idi. Neyse bir sene sonra Furkanlar Eskişehir’e taşındıklarında OD – project olarak kaldık. Baş harfi eksikti.

Yeni proje arayışlarıda olan ben, bir ada-yaşam oyunu yapalım diye bir fikir ortaya attım. Kareli deftere haritayı çizdik. Okan artık Python hakkında az da olsa bilgiliydi. Okan’a harita tasarımcılığını üstlendi. OD olarak kalan projenin başına Mert’in (sözde) katılması ile proje “mod-project” oldu. (hala adı da öyle)

İşleri svn deposundan götürdük. Kayıtlara şuradan(ilk zamanları) bakabilirsiniz. Yeni öğrendiğim dictionary(sözlük) nesnesini kullanarak şöyle bir harita sistemi oluşturdum.

elf.map11 = {
“15,2″:[ "             ___","            /  X","         __/    ","        /       ","   ____/        ","  (             "],
“14,2″:[ "             ___","            / X ","         __/    ","        /       ","   ____/        ","  (             "],

gibi  bir yapısı vardı. Yani x,y’de kordinatı veriyordunuz o konumda X’in durduğu haritayı alıyordunuz. Bu zahmetli yazım işini Okan üstlendiği için benim için pek problem olmadı. Ama bu tüm yapı hem zaman kaybı hem de büyük bir karmaşıklığa sürükledi oyunu.  mod-tra yani mod-training aslında haritası planladığımızdan küçük olan ve bizim için denemelik alt proje idi. En son bütün bir karmaşıklık beni deli etti. Her şey birbirine girdi sinirlenip geliştirmeye ara verdim. Zaten M ve O’da pek oralı olmamıştı. :)

Bu arada ben, o mod-project deposunu çok ilginç denemelerde kullandım. Örneğin QTCPServer kullanarak internet üzerinden oynanabilen bir taş-makas-kağıt oyunu yaptım. (Sunucu tarafında yaptığım hileden sinirlenen arkadaşlarımın hala o “Nasıl ya?” diyişleri kulaklarımda)

Okan da bu arada “Rus Ruleti” çalışmalarına başladı “Ek” klasörü altında. Ben de PyQt denemelerime devam ettim. En son mod-xml diye XML’den de haritayı çağırıp üzerinde oynatabilmiştim.

Ocak ayında Okan ile eski günlerin anısında mod-xmlv2 yapalım dedik. O bir daha harita tasarımcısı oldu. Oturdu uğraştı. XML biçimini değiştirdi. Ben de mini bir oyun motoru yazdım. W-A-S-D-E-Q ile anında konsoldan oynanabilen, oyun bitişinde şu kadar saniye de kaçtın diye zevkli bir oyun denemesiydi. Oyun motoru aslında oyun yapmak isteyenler için örnek olabilir, hatta istediğiniz büyüklükte harita yapabilirsiniz. Onun dışında en son oyunu bitirdiğimizde aklımda XML’de oyunu bitirebiliriz gibi fikirler geldi. Tüm o karakter hareketlerini vs. Kısacası yeni bir dil gibi bir şey olacaktı. Ama zaman yetmedi.

Şu an oyunu proje sitesinden svn ile çekip mod-xmlv2′den oynayabilirsiniz.(mod-project’in M’si olan Mert ise 14 saniyelik rekorunda çok iddaalı.)

Oyunun hikayesinden sonra biraz teknik detaya inersek oyun, XML’i okuyan minik bir motoru var. Bu parça XML’deki tagleri parçalayıp alan ve harita olan kısmı okuyan bölüm. xml.dom.minidom ile yapıldı. Oyun aslında gitmek için sadece bir ileride verdiğiniz ilerleme komutuna bağlı olarak kordinatın yürünebilir (-,/ vs) işareti olmayan yer varsa boşluk ise yürüyor. Nesneler Y(yatak), M(masa) şeklinde isimlendirilmiş şekilde. Üzerine geldiğinizde nesne hakkındaki bilgiler, eğer yapabiliyorsanız masanın altına bakabiliyorsunuz. En son odadan çıkmaya çalışıyorsunuz.

Mantık olarak böyle biz yaparken çok eğlendik, denerseniz sizde eğlenebilirsiniz. Oyun projeleriniz varsa alıp, bu mini oyun motorunu ilham alarak(ya da direk kopyalayıp) kendi oyununuzu yapabilirsiniz. Bizim 3 senedir uğraştığımız, en doğru yöntemi nasıl buluruz diye harcadığımız 3 yılı kazanabilirsiniz. (Baya ara verdik ondan 3 sene oldu.)

Bu arada sadece tek bağımlılığı var o da Python :) Konsoldan güzel güzel oynamanızı ve odadan kolay kaçmalar diliyorum.

svn checkout http://mod-project.googlecode.com/svn/trunk/ mod-project

‘i konsola yazıp direk indirebilirsiniz.

(Bunu unutmadan yazmam gerekiyordu. :) )