Oyun yapımı için hangi diller(MAKALE)
Oyun yapımı için hangi diller(MAKALE)
Geoff HOWLAND
Hangi Dili Kullanmalıyım
Bu soru her Oyun Programlama sitesinin Sıkça Sorulan Sorular bölümüde bulunur. Oyun
geliştirme forumlarında haftada bir kaç kez sorulur. İyi bir sorudur lakin cevabı kolay
değil. Bilgisayar dilleri vardır ki bazı programlar için diğerlerinden daha uygundur. İşte,
tanımları, avantajları, dezavantajlarıyla belli başlı programlama dillerinin bir listesi.
Umarım bu size bir karar vermenizde yardımcı olur.
C
C yapısal programlayı destekleyen bir dildir. GOTO´larla dolu tek bir blok parçasındansa,
aşağı yukarı hareket eden fonksiyon çağırımlarından oluşur. Gerçekte C´de de GOTO vardır,
ama bu sınırlıdır ve yapısal çözümlerin çok daha karmaşık olduğu durumlarda son çare olarak
kullanılır.
Sistem programlama kökleri sayesinde C´yi assembly dilleriyle birleştirmek kolaydır.
Fonksiyon çağırma ara yüzü çok basittir, ve assembly kodu C kodunun içine yerleştirilebilir.
Avantajları: Küçük hızlı programlar yazmak için iyidir. Assembly´le kullanmak kolaydır.
Standartlaşmıştır, başka platformlardaki versiyonlarıyla benzerdir.
Dezavantajları: Nesneye yönelik (Object Oriented) programama tekniklerini kolayca
desteklemez. Yazımı (syntax) zordur ve kendini karmaşıklaştırır.
C´yle Yazılan Oyunlar: Çok çok fazladır.
C++
C´nin nesneye yönelik tipidir. Nesneye Yönelik programlar (NY), yapısal programların bir
adım ötesindedir. NY programlar, fonksiyonlardan ve verilerden oluşan paketlerden
(nesnelerden) oluşur. Program yazmayı "program bloklarını bir araya getirmek" kadar
kolaylaştıran bir çok nesne kütüphanesi mevcuttur (en azından teoride). Örneğin, nesne
toplulukları haline getirilmiş bir çok veri tabanı ve grafiksel arayüz kütüphanesi vardır.
Avantajları: Büyük programlar yazmak için C’den daha uygundur. Nesneye yönelik programlamayı
etkin kılıyor. Genel veri yapısı kütüphaneleri sayesinde bizi, bağlı liste (linked list) ve
genişleyebilen dizin (grow-able array) gibi alt düzey detaylarla uğraşmaktan kurtarıyor.
Dezavantajları: Çok fazla geniş ve karışık. C gibi, yazımı zor. C´den daha yavaş olabiliyor.
Tam olarak doğru derleyebilen derleyiciler fazla değil.
C++´la Yazılmış Oyunlar: Çok çok fazla. Hemen hemen tüm ticari oyunlar C++´la yazılıyor.
C++´I MI ÖĞRENMELİYİM YOKSA C´YLE Mİ BAŞLAMALIYIM?
Bu da ikinci en çok sorulan sorudur. Maalesef cevap çok açık değil. C öğrenerek kendinize
çok zaman kazandırabilir, programlar yazabilirsiniz. Ama bunun 2 dezavantajı var:
Oyununuzdaki verilerin modellenmesinde size çok daha fazla kolaylık sağlayacak bir yolu
kaçırıyorsunuz.
NY programlama öğrenmeyerek, kendinize ileride düzeltemeyeceğiniz kötü programcılık
alışkanlıkları kazandırabilirsiniz. Bu konuda bana güvenin.
En büyük ticari oyunlar, first-person shooter’lar dahil, C++’la yapılmakta. Ama
programcıları, sadece C kullandıkları halde, NY programlama kullandıklarını iddia
etmektedirler. Eğer sadece C öğrenmek istiyorsanız, en azından NY programlama tekniklerini
de öğrenin. NY programlama simülasyonlar için mükemmel bir metottur, ve NY programlamayı
öğrenmezseniz, işi “zor yolla” yapmayı seçmiş olursunuz.
Visual Basic
6 versiyon sonra Visual Basic gayet başarılı. Kullanıcı arayüzü biraz değişmesine rağmen
hala “kullanıcı arayüzüne kod ekle” mantığıyda çalışır. Anında derleme olduğu için mükemmel
bir deneme ortamı (environment for prototyping) olanağı sağlar.
Avantajları: Temiz, öğrenmesi kolay. Anında derleme, hızlı ve kolay deneme ortamı sağlıyor.
Bir çok eklentiler (add-on) mevcut. DirectX eklenti desteği var.
Dezavantajları: Uygulamalar geniş ve bir çok çalışma zamanı DLL’si (runtime DLL)
gerektiriyor. Form ve diyalog tabanlı uygulamalar yapmak kolayken, iyi grafikli uygulamalar
yazmak zor. Windows API’leri cagirmak zahmetli. NY özellikleri var ama tam olarak
desteklemiyor. Microsoft patentli.
Visual Basic’le yazılmış Oyunlar: Birkaç tane. Bir çok shareware oyun ve bir miktar ticari
uygulama var.
John HATTAN
Benim Yorumum:
Aslında VB ile yazılmış programlar bu kadar az değil. Ayrıca DirectX kullanmak çok kolay
olduğundan güçlü programlar da yazılabiliyor. Ben bunun örneklerini çok gördüm. Eğer
ilgilenirseniz birkaç örnek yollayabilirim. İyi grafikli uygulama yazmak da çok zor değil,
DirectX kullanarak çok hızlı ve gelişmiş 3 boyutlu ortamlar yaratmak mümkün.
Sonuç olarak, eğer gerçekten iddialı programlar yazmak, ses getirecek, ilgi çekecek işler
başarmak istiyorsanız C++´ı mutlaka öğrenmelisiniz. Diğer taraftan bu da ‘ha’ diyince
öğrenilmiyor. Ama internet elimizin altında, Merlin´in Kazanı gibi bir de buluşma noktamız
varken bu olanakları değerlendip birbirimize yardımcı olabiliriz. Mühim olan bir ucundan
başlamak, üşenmemek, "çok zor" dememek. Azmin elinden ne kurtulmuş!
Eğer “ben çok denedim, bir türlü C++’ı kafam almıyor” diyorsanız, o zaman Visual Basic
öğrenin derim. En azından onu kullanarak yapacağınız birkaç güzel uygulama kendinize olan
güveni yerine getirecektir. Size bu işin ne kadar kolay olduğunu göstermek için, kendim
sağdan soldan öğrendiğim tekniklerle yaptığım manasız bir DirectX çalışmasını
gönderebilirim.
Ben sürekli yabancı internet sitelerinde bu işlerle ilgili yazılar okuyorum, insanların
yapıp gönderdikleri oyunlara bakıyorum ve sadece hobi olarak yaptıkları oyunları görünce
ağzım açık kalıyor. Türkiye´de C++´ı ya da Visual Basic´i bu kadar iyi kullanabilen insanlar
yok mu, tabi ki var. Porgramlarını profesyonelce yapan mühendislerin kodlarını gördüm. Tam
anlamıyla organize olup müthiş bir şekilde optimize edilmiş programlar yazmışlar. Peki ama
bu insanlar neden bilgisayar oyunlarına el atmıyorlar. Bunun nedeni basit, Türkiye´de bu
şekilde para kazanılmıyor. Ne kadar çıkış olduysa hepsi de bir şekilde başarısızlıkla
sonuçlandı. Ya beklenen ilgiyi görmedi ya kopyaları piyasayı doldurdu ya da alanlar
arkadaşlarına kopyaladı; yani el birliğiyle bindiğimiz dalı kestik. Bizim ihtiyacımız olan
iyi bir reklam ve insanlarda "bizi destekleyin" bilincini uyandırmak. 2-3 kere McDonalds´ta
yemek yemek yerine o parayla yerli yapım bir oyun alsak, ne açlıktan ölürüz ne de iflas
ederiz.
Re:Oyun yapımı için hangi diller(MAKALE)
Fena değil... Makalenin asıl yazarı kim ve izin aldın mı? :)
Re:Oyun yapımı için hangi diller(MAKALE)
azalin bana sorarsan bir programcı kendi başına ufak çaplı da olsa iyi bir oyun çıkarmadan bu tip işlere girmemeli.
eskiden oyunlar tek disketlik oluyordu ve tüm oyunu bir kişi yazabiliyordu. mario gibi basit oyunları hala zevkle oynarı mesela. bu tipte oyunlarla başlanabilir.
Re:Oyun yapımı için hangi diller(MAKALE)
Joey en başta Azalin vermiş ismi: Geoff HOWLAND Acaba gerçekten telif haklarını ihlal ediyor muyuz buraya makalenin tamamını veya bir kısmını koyarak?
Re:Oyun yapımı için hangi diller(MAKALE)
Makalenin 1. Bölümünün sonunda John HATTAN adı yazıyor. 1. bölümün yazarı bu.
2. bölümde de Türkiye´den Türkiyeli biri gibi bir anlatımla bahsediliyor... Geoff HOWLAND ismiyle tezat oluşturuluyor...
Birilerinin makalelerini izin almadan biryerde yayınlamak sorunlar yaratabilir... Dikkatli olmak gerekli arkadaşlar...