Oyun Programlama
Oyun programlama, oyun yapımının bir alt aşmasıdır. Profesyonel ve orta derecedeki oyun programcılarının çoğu oyun programlamaya bir hobi olarak başlamaktadır. Aslında oyun programlamak, kullanılan derleyicinin ve bilgisayarın yapısını anlamak için iyi yöntemlerden birisidir. Başlangıç olarak oyun programlamayı anlatmak için programlamayı aşamalara ayırmak faydalı olacaktır.
1.Oyun Geliştirme
1.1.Prototip (İlk Örnek) Üretme
1.2.Oyun Dizayn
1.3.Programlama Dili
1.4.Arayüzler ve Yardımcılar (API)
1.4.1.Grafik Arayüzleri
1.4.2.Diğer Arayüzler
1.5.Oyun Döngüsü
1.6.Üretim
1.7.Demo
1.8.Oyunu Bitirme
1.9.Oyuna Eklentiler
2.Kültür
3.Araçlar
4.Yapım Zamanı
5.Hobi Olarak Oyun Programlama
1. Oyun Geliştirme
İyi bir oyun geliştirmek genel olarak oyun dizaynı ile başlamaktadır. Burada bizim için önemli olan geliştirme aşamasında oyun fikrini iyi seçmektir. Oyunun grafiği, ses sistemi istediği kadar mükemmel olsun sağlam bir fikri (Yapay Zekâsı) olmayan oyunların yaşam süresi pek az olacaktır. Mesela geçmişe bir göz gezdirecek olursak mükemmel grafiği ve ses düzeni olmayan tetris tipi oyunlara bakalım. Bir zamanlar Türkiye’ de çok popüler bir oyun idi. Çoğu insan geçmişte bu oyunu birkaç saat oynadıktan sonra bağımlısı olabiliyordu. Ki o zamanları gören birisi olarak doğruluğunu da adım gibi biliyorum. Buradan oyun fikrinin ne denli önemli olduğunu az çok anlamış oluyoruz. Bu yüzden oyun programlayacak bir kimsenin, tasarlayacağı oyun ile ilgili küçük ayrıntıları yakalaması şarttır ve bunları bir yere not etmekte büyük fayda vardır. Bazen 40 yıl düşünülse akla gelmeyecek şeyler bir zaman kesitinin etkisiyle akla gelebilir. Bunları yakalamak gereklidir. Ve geliştirme aşamasında çok iyi gözlem yapmak gereklidir. Programlamaya başlamadan önce birçok fikir üretmeli ve bunu tartışmalıyız. Programlama enerji gerektiren bir iş olduğu için baştan temeli sağlam atarsak ilerisi da rahat geleceği için aksiliklerle karşılaşıp kısa zamanda yılmayız. Profesyonel firmalarda sırf düşünen, fikir üreten birimler vardır. Bunlar oyunun kusursuz ve uzun ömürlü olması için çalışmaktadırlar.
1.1 Prototip Üretme
Programlamanın bu aşamasında (en önemli parçalardan biri) oyunla ilgili fikirler, algoritma ve önemli özellikler test edilmektedir. Prototip üretme genellikle oyun üretimi sürecinde başlamaktadır. Özellikle oyun dizaynı oluşturulmadan öncedir. Nedeniyse oyun ile ilgili detayların, fikirlerin, algoritmasının ve galiba en önemlisi de oyun yapay zekâsının değişmesinde ve gelişmesinde büyük rol oynadığı için olabilir. Prototip üretme oyun yapım boyunca devam etmektedir ki yeni oluşan fikirleri test etme, gerekli ve gereksiz özelliklerin tespit etmek için. Prototip in yazıldığı programlama dilinin oyunun programlandığı asıl dil ile aynı olması şart değildir. Çünkü bunun amacı test etmektir.
1.2 Oyun Dizayn
Profesyonel firmalarda oyun programcılarının ve grafik tasarımcılarının asıl işi oyun dizayn değildir. Bu işe sadece fikirsel katılırlar. Oyun dizaynı bir takım işi olduğu, çalışan tüm kişilerin fikirleri önemlidir. Çoğu firmada olmamakla birlikte Electronik Arts gibi büyük firmalar hariç.
Oyun dizaynı sürekli değişen, gelişen bir yapıdadır. Esnek olması gereklidir. Yani başlayanlar için oyun dizaynına kısaca değinmekte yarar olacaktır.
Bu oyunun hangi ana temeller üzerine konulduğuna dair bir plan oluşturur.
Oyun taslağı için en iyi yöntem kendi kendimize sorular sormaktır. Mesela;
vKarakterler kim, ne ve ne kadar büyük?
vKarakterler neye benziyor?
vOyun alanı
vOyun grafikleri kaç boyutlu olacak?
vOyunu ilerleme ve gelişim hızı
vOyundaki leveller, aşamalar ve görevler nelerdir?
vFarklı karakterlerin karşılaşma anlarındaki birbirlerine verecekleri tepkiler nelerdir?
vOyunun kontrolü nasıl olacak(mause, klavye, gamepad)?
vOyunun yapay zekası nasıl olacak? Oyunun uzun ömürlü ve bağımlılık katsayısını arttırması için çok önemli bir yer teşkil etmektedir.
vOyundaki serbest karakterlerin hareketleri
vOyundaki skor, puanlama.olacak mı veya nasıl olacak?
Elimizi kod yazmaya başlatmadan önce tüm bunları yazmamız gereklidir.
Bu aşamada fazla derine girmek, çözümü olmayan sorulara dalmakta iyi olamayacaktır. Çünkü bu aşamada neyin nasıl olacağı daha bellidir. Her şey daha yeni yeni şekillenip, bir kılıfa oturmaktadır. Bir oyunu nasıl dizayn ederiz.
§Oyuna Bir Kod Adı Vermek: Oyun ismi de sizin için ciddi bir sorun oluşturmaktadır. Bu sorunu şimdilik ortadan kaldırmak ve ileride düşünmek için oyuna geçici bir ad verin.
§Genel Açıklama: Bu genelde oyunun neye benzediğini, hangi karakterlerin olduğunu basit bir şekilde açıklayarak programlamayla alakası olmayan bir insanın da olayı anlaması ve sıkılmadan okumasıdır.
§Ekran Detayları ve Kullanıcı Arayüzü: Artık olayı biraz daha derinlemesine incelemeye başlıyoruz. Ekran çözünürlüğü ne olacak, kullanıcılar ekranı nasıl görecek, yardım tuşları, güç seviyesi… nerelerde olacak. Bazı ufak detaylar. Mesela kullanıcının oyun ile saklamak istediği şeyler (save dosyası, ekran görüntüleri, kısa yollar). Bu gibi ufak şeyler oyunun albenisini arttırmada etkilidir.
§Sanatsal Detaylar: Ne tür grafikler kullanılacak. Herhangi bir grafik motoru kullanılıyorsa ondan bahsetmek. Ekran yazıları hangi renkte, büyüklükte ve ekrandaki yerleri ne olacak. Karakter çizimleri nasıl olacak. Bu gibi göz ahengi veren kısımları göz ardı etmemek lazım. Dış görünüş insanları etkilemede çok büyük rol oynamaktadır. Şöyle düşünülelim herhangi bir işe personel alımında genelde bilgisinden çok insanın karakterine ve olaylara yaklaşım şekline bakılmaktadır.
§Müzik ve Ses Detayları: Nasıl ses efektleri kullanılacak? Oyunun farklı karelerindeki müzikler nasıl olacak? Oyun müziği ve ses efektleri için hangi programlar kullanılacak? Bu soruların yanıtlarını bulmamız gerekecek. Ses çok önemlidir. En sevdiğiniz bir oyunu sessiz oynayın ve başarı yüzdenizi bir kontrol edin bakalım. Mutlaka düşecektir. Ayrıca ses oyun sıkıcılığını da arttırarak oyunun yaşam süresine bir + katar.
§Proje Uygulama Detayları: Proje nasıl yürüyecek, sorumluluklar, birden fazla kişi için proje üzerinde çalışanların iletişim sağlaması, kişilerin sorumlulukları. Çalışanların görevleri ve bitirme zamanları ne olacak? Oyunu programlamaya nasıl ve nerden başlanacak? Projeyi bölümlere ayırıp her bir bölümüm bitiş zamanı ne olacak. Bu gibi detayları belirleyerek kendimize bir rota, takvim çizmiş oluruz ve baştan savma bir proje üstünde çalışmamış oluruz. Düzen her şeyin başında gelmektedir.
§Yapay Zeka Detayları: Oyundaki karakterlerin davranışları, birbirlerine karşı olan tepkileri ne olacak? Karakterlerin yetenekleri, yetkileri, yaşam ile ölüm sınırları gibi şeyler… Kullanıcıyı düşünmeye itecek her şey bu kısımda göz önünde olacaktır.
1.3 Programlama Dili
Oyunu programlayacağımız dil. İşte bu kısımda epey önemlidir. Bunun için :
Güç: Programlama dilinde güç, matematiğin hangi fonksiyonlarını desteklediği, pointerlar, hatalara karşı verdiği tepkiler ile çözüm yolu gibi bizim için kolaylık sağlayabilecek tüm + özellikler bu aşamada göz önünde bulundurulacaktır.
Taşınabilirlik: Programlama dilinin başka programlama dilleriyle uyumu, başka işletim sistemleriyle uyumu. Mesela Windows‘ta yazılan kodun Linux’ te çalışıp çalışmayacağı veya oyunun bazı fonksiyonlarını başka bir dilde yazıp daha sonra onları ana dilde birleştirme imkânı gibi şeyler göz önünde olacaktır.
Hız: Kodun işlemci tarafından koşulma süresi…
Kullanılabilirlik: Öğrenmesi ve okunması kolay mı? Kodun anlaşılabilirliği, farklı bir zamanda bakıldığında tekrar hatırlanabiliyor mu? Bu gibi faktörler bu kısımda etkilidir.
Nesne Yönlendirmesi:
Programlama dili seçiminde oyun konsolları, hangi platforma hitap ettiği (Windows veya Playstation gibi), nesne oryantasyonu, hız gibi faktörler dil seçiminde rol oynamaktadır. Örneğin nesne oryantasyonu nedeniyle C++, hızı arttırmak amacıyla bazı kısımlarda Assembly, bazı programcılar ise kendi geliştirdikleri dilleri kullanmaktadırlar. Burada önemli olan neyi, nasıl, ne şekilde en mükemmel olarak yapabilirim sorusunu yanıtlamaktır.
1.5 Oyun Döngüsü
Oyun programlamayı diğer programlardan ayıran en büyük farklılık oyunun döngüsüdür. Misalle açıklayacak olursak örneğin bilgisayarda bulunan Office programlarını ele alalım. Biz bir girdide bulunmadıkça programlar öylece bekler durur, oysa oyunda bu farklıdır. Oyun bir kere başladınız mı artık birtakım şeyler işlemeye başlayacaktır. Zaten çoğu oyunda zaman çok önemlidir. Bu yüzden oyun sizi beklemez. Siz dursanız da oyun kendi döngüsünde bir şeyler yapar. Bundan siz etkilenir ve ya etkilenmezsiniz. Bunu basit olarak açıklayacak olur isek:
While(kullanıcı yok iken)
Kullanıcının veri girişlerini kontrol et
Yapay zekâyı çalıştır
Düşmanları hareket ettir
Olayların kesişimler ini hesapla, grafikleri çiz.
Müzik çal
end While
1.6 Üretim
Üretim aşamasında programcılar oyun dizaynına göre artık kod yazma işlemine başlarlar. Bu programcının yeteneğine ve oyun senaryosunda değişikliklere bağlı olarak farklılık gösterebilir.
1.7 Bitirmeye Yaklaşırken
Bu aşamada oyun test esiliyor ve raporları gelmeye başlamaktadır. Hatalar ortaya çıkmaya başlamıştır artık. Tüm testler yapılıp hatalar giderildikten sonra oyun hazır demektir.
1.8 Sonradan Eklenenler
Consol oyunlara sonradan ekleme yapma şansımız neredeyse hiç yoktur. O yüzden consol versiyonlar piyasaya geç çıkar. Hataları gidermek ve eklentiler yapmak için yamalar oluşturulur.
0 yorum:
Yorum Gönder