İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Zafer Teker
tekzaf@yahoo.com

Java'da Oyun Programlama

Hemen hemen her programcı oyun geliştirmek ister. Çünkü oyun yapmak ve kendi yaptığın oyunu oynamak çok zevklidir. Oyun oynamayı sevmememe rağmen oyun yapmak istemişimdir. Kendi yaptığınız oyunlarla oynamak daha zevkli oluyor. Belki kendi yaptığım oyunlarla toplam oynama sürem diğer oyunları oynama süremden daha fazladır.

Javayı az çok öğrendiğim zamanlarda oyun yapmaya çalışmamıştım. Çünkü oyun yapmanın normal programları yapmaktan daha zor olduğunu düşünüyordum. Ama hiçte öyle değilmiş. Oyunlar çok çeşitli olmasına rağmen kullandıkları teknik alt yapı hep aynı. araba yarışı,dövüş oyunu,bowling,penaltı atmaca oyunu vs.. hep aynı teknikler ile yapılıyor. Tek değişen oyunun mantığı.

Eğer aşağıdaki olayları gerçekleştirebiliyorsanız oyun yapmanız için gerekli alt yapınız hazır demektir. Yani un ve şeker var sıra helvaya gelmiş demektir.

Eğer nesne yönelik programlamayı biliyorsanız ve yukarıdaki olayları gerçekleştirebiliyorsanız artık oyun yapabilirsiniz demektir. Ancak şunu hemen belirteyim. Oyun programlamak için nesneye yönelik programlamayı bilmeniz şart gibi. Çünkü class yaratmadan oyun yapmak çok zordur. Oyundaki her eleman bir class'ın nesnesi olmalı.

Oyundaki Nesneler

2D oyunlarda nesneleri ikiye ayırabiliriz. Birinci nesneler oyunun ortamını oluştururlar. Bu nesneler değişmeyen konumlarda dururlar. Örneğin yarış oyununda pist, futbol oyununda saha vs.. oyunun ortamını oluşturur. Diğer nesneler ise bu ortamın üstünde hareket eden nesnelerdir. Örneğin yarış oyununda hareket eden arabalar veya futbol oyunundaki futbolcular.

Oyunun ortamı açısından da oyunlar iki çeşite ayrılabilir. Bazı oyunlarda ortam her zaman sabittir ve ekrana sığar. Bazı oyunlarda ise tüm ortam ekrana sığmaz. Öndeki nesneler hareket ettikçe ortam da hareket eder. Her zaman çevrenin bir kısmı görünür. Yarış oyununda her zaman böyledir. Yarış arabaları hareket ettikçe yol değişir.

Ön kısımda hareket eden nesneler ise kullanıcı tarafından hareketleri kontrol edilen nesneler ve kendi kendine hareket eden nesnelerden oluşur. Yarış oyununda kullanıcının arabasının yeri klavye veya fare ile değiştirilebilir. Diğer yarış arabaları ise kendi kendine hareket etmektedirler. Bu nedenle kendi kendine hareket eden nesnelere belirli bir yörünge veya zeka vermeniz gerekir.

Oyun Ortamı

Oyunların ortamı genellikle belirli resimlerin değişik yerlere döşenmesinden oluşur. Örneğin yarış oyunlarında sağda solda görülen ağaçlar için hep aynı ağaç resmi kullanılır. Veya bir deniz görüntüsü aynı resmin belirli kere tekrarı ile oluşturulur. Bu nedenle tüm ortam ızgara şeklinde hücrelere bölünür. Örneğin bir oyun ortamı 16*16 lık bölümlere ayrılabilir. Ortam için genellikle iki boyutlu bir dizi tutulur. Bu dizi int değerler tutar. Bu int değerler o hücrede hangi resmin görüleceği bilgisidir. Genellikle 0 değeri o hücrede bir resim olmadığı zaman kullanılır. Çoğu oyunda tüm ortam ekrana sığmaz. Sadece ortamın bir kısmı görünür. Bu nedenle tüm ortamı çizmek yerine ekranda gözüken kısım tekrar çizilir. Oyun yeniden çizileceği zaman önce oyunun ortamı çizilir. Daha sonra öndeki diğer nesnelere çizilir.

Öndeki Nesneler

Ortamın üzerinde hareket eden nesneler bir vector'de (veya ArrayList'te) tutulabilir. Bu nesnelerin hepsinin kendisine ait bir origin'i , bir genişlik ve yüksekliği bulunmalıdır. Ve bu nesnelerin kendisini çizebilme yeteneği olmalıdır. Böylece tüm oyun yeniden çizlirken bu nesneler de kendilerini ekrana çizerler. Sonuç olarak önce ortam çizilir. Daha sonra nesnelerin tutulduğu vector'deki nesneler sırasıyla çizilir. Ancak genelikle nesneler z-index denilen bir değişken tutarlar. Bu değişken hangisinin daha arkada hangisinin daha önde olacağına karar vermek içindir. Bu nedenle nesneler çiziliriken önce z-index değeri küçük olanlar çizilir.

Bazı nesneler tek bir resimden oluşmaz. Birden fazla resim içerebilir. Bu resimler peşpeşe çizilirek bir animasyon görüntüsü elde edilebilir. Örneğin yürüyen bir insan nesnesi için üç resim olabilir. Bunun için şu yapılabilir. Nesne bu farklı resimlerin bir dizisini tutar. Her çizimde hangi resmi çizdiğinin index'ini tutar. Örneğin ilk çizimde 0. index'li resmi çizer ve index'i bir arttırır. Bir dahaki çizimde diğer index'li resim çizilir. Eğer dizinin sonuna gelinmişse index yeniden 0 yapılır. Bu şekilde bir animasyon görüntüsü elde edilir.

Son Söz

Görüldüğü gibi oyun yapmak için gerekli teknik bilgi fazla değil. Java'yı az bilen bir kişi bile bir oyun yapmak gerekli bilgiye sahiptir. Ancak iyi oyun yapabilmesi için nesne yönelimli programlamayı bilmesi şart. Eğer nesne yönelik programlamayı da anlamışsa oyun yapması için önünde hiç bir engel yok demektir.

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır