Oyun yapımı için hangi diller(MAKALE)

Oyun yapımı için hangi diller(MAKALE)

Azalin

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.

2004-08-07 08:10:18

Re:Oyun yapımı için hangi diller(MAKALE)

j-joey

Fena değil... Makalenin asıl yazarı kim ve izin aldın mı? :)

2004-08-06 08:55:06

Re:Oyun yapımı için hangi diller(MAKALE)

drekon

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.

2004-08-07 05:27:31

Re:Oyun yapımı için hangi diller(MAKALE)

nacho_grande

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?

2004-08-07 08:03:10

Re:Oyun yapımı için hangi diller(MAKALE)

j-joey

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...

2004-08-07 08:10:18