Posts Tagged ‘strateji oyunu’

pyEmpires v0.1 bitti!

Yapımında pygame ve python kullandığım, aynı zamanda bitirme tez konumdur, oyunun V0.1’e gelmiş olmasını gururla duyuruyorum :). En kısa zamanda SVN sunucusuna atıp paylaşıma açmayı planlıyorum. Bu arada pyEmpires ismini şu dakikada uydurduğumu söylemem gerekir daha hiç isim düşünme çabasına girmemiştim, başlık atarken yazdım.

Oyundan biraz görüntü koyalım:

secim

Kurulum

Evet dosyayı anca rapidshare’e atabildim. Kaynak kodlarını şimdilik dağıtmıyorum, uygun bi lisans seçip dağıtabilirim. Neyse dosya şudur:
http://rapidshare.com/files/250004248/pyEmpires-v0.1.zip

Kaynak kodları: http://svn.assembla.com/svn/pars_soft/pyEmpires

Şimdi programı çalıştırmadan önce gerekli neler var onlara bakalım:

Python 2.6 sürümü: Windows kurulumu

Pygame: Pyton 2.6 sürümü için Windows kurulumu

Bunlar kuruluysa zip’i açın ve src klasöründeki Main.pyc dosyasına çift tıklayın. Eğer açmak için program istiyorsa python’u yüklediğiniz klasörden python.exe’yi seçebilirsiniz.

Linux kullanıcuları python ve pygame kurulumunu zaten biliyorlardır, çalıştırmak içinse:

cd oyunun_bulundugu_dizin/src

python Main.pyc

demek yeterli!

Unutmadan resources/music klasörüne de mp3 veya ogg’lerini atarak da oyunda müzik keyfini yaşayabileceğinizi belirteyim 🙂 music klasöründeki menu ve game klasörlerine menüde ve oyun içinde olmak üzere müzik atabilirsiniz. İsterseniz link olarak koyun. Müzikler karışık olarak çalacaktır.

Oyunu deneyip bana geribildirim yaparsanız çok iyi olur. Şurası olmamış, program şunu yapınca gümlüyo, şurasını çok beğendim, şöyle olsaydı daha iyi olurdu gibi. Yakında oyun yapımı hakkında bilgiler de vericem ve projeyi geliştirmeye devam edicem.

Oyun Nasıl Oynanıyor?

Genel click & go oyunlarında, diablo2, aoe2 gibi, karakterleri sol fare tuşu ile seçip, sağ tuşla yönlendiririz. Ben de fare’yi o şekilde ayarladım. Sol tuş basılı tutarak çoklu karakter seçimi yapabilirsiniz. (şekil 1A)

sağ tuşla götürmek istediğiniz yere götürürsünüz. Duvarlar hariç! (Evet o turuncu şeyler duvar)

ESC tuşu menüyü açar ve kapatır. Çıkmak için menüyü kullanın.

Diğer tuşlara sonra değinicem.

Oyunun Amacı

Siz mavi tasmalı köpekleri yönetiyorsunuz. Oyunda varsayılan olarak yeşil tasmalı bir düşman köpeği var. (Mavi dışındaki tüm renkler kötüdür)

En başta köpekleriniz agresif modda olduklarından yakındaki düşmana saldırabilirler, şaşırmayın.

Eğer kendi biriminiz saldırı durumda olup da düşmanın yanındaysa düşman üzerindeki yeşil bar azalacaktır. Bu durum düşman ölüp kaybolana kadar geçerlidir. (kendi birimlerinizin de yeşil yaşam çubuğu bulunmakta)

Arkaplanda neler oluyor?

Uzaktan basit bir oyun gibi görülebilir bunun nedeni herhangi bir senaryo hazırlamam büyük ihtimal ama kullandığım bazı yöntemleri buraya yazmak istiyorum.

İlki yol bulma. Bunu A* algoritmasıyla kullandım. Çok güzel değil şu an ama mükemmel hale getirmek mümkün.

İkincisi de sonlu durum makineleri.

A* ile kendi birimlerinizi bir yerden bir yere gönderirken en kısa yolu kullanılır. Hatta engelli bir yolda da engelleri en kısa şekilde aşar. Bilgisayar oyunlarında sıkça kullanılan bir algoritmadır ve sezgiye dayanır. Daha sonra yol bulma ile ilgili yazılar ekleyebilirim. Çünkü oyunda geliştirmem gereken kısımlar çok.

Sonlu durum makineleri de yapay zeka yazımında bir teknik olarak kullanılıyor. Yapay zeka kısmı o yüzden benim en kısa kodlama yaptığım yerlerden biri. Peki yapay zeka olarak ne işliyor?

Öncelikle SDM’ler sayesinde birimler belli bir durumda olup, belli koşullarda durumlarını değiştiriyorlar. Bu durumlar saldırı, kaçma, kovalama gibi durumlar olabilir. Koşullar ise düşman yakında mı, düşman benden çok mu kuvvetli gibi. Bunları tablolar halinde saklayıp, farklı tablolarla farklı davranışlar elde ettim.

Şimdi şu tuşları kendi birimlerinizi seçtikten sonra kullanın:
A tuşu – Agresif mod
S tuşu – Defansif mod
D tuşu – Hareketsiz mod
E tuşu – Ataksız mod

Bu  tuşlarla seçili birimlerin SDM’leri değişiyor. Bunları da açarsak:

Agresif mod

Birimin görüş alanı içindeki düşmana saldıracaktır. O yüzden sık sık takiplere başlar.

Defansif mod

Bulunduğu noktayı koruyan bir moddur. Eğer yakına bir düşman gelirse ona saldırır ancak koruması gerek noktadan çok uzaklaşırsa takibi burakıp bölgesine geri döner.

Hareketsiz modda ise sadece ona saldıran birime saldırır. Veya çok yakınındaki birime. Ataksız modunda ise hiçbir şekilde saldırı yapamaz.

Şimdilik yeterli yazdım sanırım. Daha sonra başka yazılarla devam edicem.

Bilinen hatalar:
– Oyun kaydet ve oyun yükle çalışmıyor
– Birimler iç içe geçiyor bu yüzden 2 birim sanki 1 birim gibi görünebiliyor. Tek bir birimi seçmek çok zor olabiliyor. Bu durumlarda 1,2,3 gibi tuşlara basıp sadece o sıradaki birimleri seçebilirsiniz.

Gerçek Zamanlı Strateji Oyunu

Bu blog’u açmamda ki asıl neden olan bu projede sonunda biraz yol kat edebildim. Bu sayede yazacak iki üç şey çıktı.

Madem blog yazıyoruz, yaptığım şeyleri de günlük gibi yazmakta yarar var aslında. Böylece sadece yaptığım güzel şeyleri değil aynı zamanda hatalarımı da paylaşacağım.

Bu kadar girizgah yeter sanırım projeden bahsedelim. Proje aslında bitirme tezi olacak. 1 dönem zamanım var. Çalışan güzel bir strateji oyunu yapmam lazım. Çok zor olduğunu biliyorum ama tez konuları da zaten zor oluyor genelde. Yıllardır oyunlarla ilgili bir şeyler yapmak istemiştim nihayet şimdi yapabileceğim.

Şimdi oyunu cross platform olarak yapmayı düşünüyorum ve açık kaynak olarak. O yüzden kullanacağım teknolojilerde şunlar olacak:

Python Dili
Pygame Modülü

Nedenlerine gelince: Basit, öğrenmesi kolay, özgür yazılım, yüksek seviyeli, nesne yönelimli, yorumlayıcı (derlenmiyor) ve
Geniş kütüphane desteği: Dokümantasyon, threadler, veri tabanları, web tarayıcıları, CGI, FTP, email, XML, HTML, WAV dosyaları, şifreleme, GUI (çekirdek özellikler)

Biraz da pyGame’den bahsedelim:
Pygame bir SDL sarmalayıcısıdır. Böylece SDL destekli tük platformlarda kodumuz değiştirmeye gerek kalmadan çalışır.

SDL (Simple Directmedia Library), 2B grafik ve multimedya kütüphanesidir. Yüzlerce açık kaynak ve ticari oyunlarda kullanılmıştır.

Pygame’in modülleri de şunlardan oluşuyor: Cdrom, cursors, display, draw, event, font, image, joystick, key, mouse, movie, sndarray, surfarray, time, transform

Age of empires 2

Age of empires 2

Şimdilik bu kadar teknik bilgi yeterli. Biraz da oyundan bahsedeyim. Başlıktaki gibi oyun gerçek zamanlı strateji oyunu. Örnek olarak: Age of empires, warcraft gibi. Daha çok age of empires tarzında birşey yapmak istiyorum. Yani kılıçlı, oklu ordumuz olacak, gelişmek için binalar yapacağız ve kaynaklar için de etraftaki maden, orman vb. kullanılacak.

Şimdiye kadar hep oyunun grafikleriyle uğraştım. Asıl önemli kısım aslında yapay zeka kısmı olacak. Oraya daha gelemedim tabi tembelliğim yüzünden 🙂