Script Dilleri ve Oyun Yapımı

Script Dili Nedir?

Script dilleri genel programlama dillerinin aksine, direk olarak çalıştırılabilir kod üretmeyen, ancak script yorumlayıcısı (interpreter) tarafından çalıştırılabilen programlar yazmamıza olanak veren programlama dilleridir.

Genel programlama dilleri olarak C/C+,Pascal (Delphi..),Basic(Visual Basic,Dark Basic..),Java,Ada gibi birçok dil sayabiliriz. (Aslında Java 'nın konumu script dillerine biraz daha yakın durmakla beraber Java bir script dili olarak değerlendirilmemektedir. JavaScript denilen dilin script diline indirgenmiş bir versiyonu vardır.) .En çok bilinen script dillerinden birkaçını saymak gerekirse; Phyton, Perl, PHP, VBScript, JavaScript gibi diller ilk olarak aklımıza gelenler.

Script Dillerinin Artı ve Eksileri Nelerdir?

Artıları:

  • kolay öğrenilme
  • kolay kullanılma
  • çoğunlukla platformdan bağımsızlık
  • derleme ve bağlama zamanına ihtiyaç duymaması

Eksileri:

  • kendi kendine çalışan kod üretmez (fakat bazı gelişmiş script dillerinin derlyicileri bulunmakta..)
  • derlenmiş dillere göre yavaş çalışırlar

Script Dilleri Nerelerde Kullanılır?

Script dilleri iki ana kategoride incelenebilir:

  • genel amaçlı script dilleri
  • özel amaçlı script dilleri

Günümüzde genel amaçlı script dilleri ile yukarıda belirttiğimiz genel programlama dilleri ile yapılabilecek çoğu iş gerçekleştirilebilmektedir. Bir script dilinin en önemli dezavantajı olan hız sorunu da, gelişmiş interpreter ve üst düzey anında derleme (just in time compiling) teknikleri ile büyük oranda aşılmaktadır. Üst seviye script dilleri: hızlı prototiplendirme, GUI tasarımı, text işleme, program akış kontrolü ve genel programlama amaçlı olarak kullanılmaktadırlar. Phyton, Perl, VBScript, JavaScript gibi diller genel amaçlı script dillerine örnektirler.

Özel amaçlı script dilleri, genel amaçlı dillerin aksine bir konu üzerinde hızlı/kolay uygulamalar yapmak için özelleşmişlerdir. Bu diller yazılım üreticileri tarafından kendi işlerini kolaylaştırmak, program üretim süreçlerini hızlandırmak, esnekleştirmek, bakımı kolaylaştırmak, gelişime olanak sağlamak gibi amaçlar ile genelde her proje 'ye özgü bir biçimde yazılırlar. Bu diller çoğu zaman piyasaya sürülmez, üreticisi dışında kullanıcı bulamaz. Oyun programlarında otomasyonu ve dizaynı kolaylaştırmak için sıkça yazılan script dilleri bu türe örnek oluşturmaktadırlar..

Oyun Programlamada Script Dillerinin Yeri

Öncelikle şunu iyice anlamalıyız: Script dilleri günümüzde oyun programlama sektöründe yoğun olarak kullanılmaktadırlar. Üreticiler çoğunlukla kendi yazdıkları script dilleri ile: level dizaynı, program akış kontrolü, yapay zeka programlaması, aktör yönetimi gibi yazılım parçalarını kolayca ve gelişmeye uygun biçimde gerçekleştirebilmektedirler. Örneğin: Bir frp oyununda ana programcı oyun motoru üzerinde çalışmakta, level dizayn eden kişiler ise oyununa özgü script dilini kullanarak senaryolar, levellar, NPC 'ler yaratmakta, oyun akışını yönlendirmektedirler. Bu şekilde ana oyun motoru üzerinde, yapılan oyun ile ilgili daha çok genel amaçlı bilgiler bulunmakta, aynı motor başka oyunlarda az bir değişiklikle rahatlıkla kullanılabilmekte, senaryo hazırlama işi programcı yerine dizayn uzmanları tarafından rahatlıkla gerçekleştirilebilmektedir.

Biz Kendi Oyunlarımızda Script dillerinden Nasıl Faydalanabiliriz?

Kendi oyunlarımızda kullanmak üzere genel script dillerini seçebilir yada oturup kendimize oyunuu yönetmeye yarayan bir script dili geliştirebiliriz. Doğal olarak ikinci seçeneğin uygulanması birincisine nazaran zor olacaktır. Çoğu uygulama için birinci seçenek seçilebilir. Hazırda bulunan hiçbir script dilinin ihtiyaçlarınızı karşılamayacağını düşünüyorsanız, veya işlevselliği yada performansı uygulamanız için daha verimli olacak bir dil yazabileceğinizi düşünüyorsanız ikinci seçeneği seçebilirsiniz.

Peki, genel script dillerinden biri ile programımızı nasıl kontrol edeceğiz? Günümüzün gelişmiş script dilleri, çalıştırılabilir kodlu programlarınız ile iletişim kurabilme ve veri alışverişinde bulunabilme yetisine sahiptirler. Bu özellikler ile programınız içerisinden script diline geçit verecek uygun ayarlamalar yapıldıktan sonra, programınızla beraber çalışan bir script içerisinden oyununuza ilişkin verilere erişebilir, fonksiyonları çağırabilirsiniz. Bu şekilde scriptler ile program işleyişinize yön verebilirsiniz.

Scriptler text dosyaları halinde bulunduğu için kolaylıkla değiştirilip anında kullanılabiliyor, ve her değiştirmede oyun projenizin işleyişini değiştirmiş oluyorsunuz. Projenizi yeniden derlemeden yeni bir işleyiş düzeni elde edebiliyorsunuz.

Bir script dilini seçerken kullandığınız programlama diline (C/C++,pascal vb..) uygun bağlantı arayüzünü içermesine dikkat etmelisiniz. Aksi taktirde o script dilinden faydalanamassınız.

Nereden Başlamalıyım?

Öncelikle bir script diline ihtiyaç duyup duymadığınıza karar verin. Aslında her koşulda sırf yeni bir programlama olanağını denemek, yeni bir şeyler öğrenmek/uygulamak için bile script dilleri konusunda çalışabilirsiniz.

Daha sonra bir script dili seçmelisiniz. Phyton, Perl gibi dillere bir göz atabilirsiniz. Bunlar piyasada uzun süredir bulunan ve oldukça popüler olan dillerdir. Bu dillerin aynı zamanda birçok programlama dili için bağlantı arayüzleri bulunmakta.

Ben şu anda LUA script dili ile çalışıyorum. Bu dil Phyton ve Perl gibi alternatifler ile karşılaştırıldığında çok daha yalın ve basit bir dil olarak karşımıza çıkıyor. Diğer diller kadar olanak içermese de sade, zarif ve hızlı yapısı ile bir göz atmaya değer. Üstelik bu dil birçok oyunuda script dili olarak ta kullanılmış ve kendini kanıtlamış durumda. Bir örnek vermek gerekirse: Baldur's Gates II oyununun dizaynında LUA script dilinden faydalanılmıştır. Dilin web sitesinde bu dili kullanarak geliştirilmiş oyun yazılımlarının bir listesini bulabilirsiniz.

İlgili Linkler

PYTHON: www.python.org
PERL: www.perl.org
LUA: www.lua.org

M.Deniz Aydınoğlu :: 2002 ::




Bu yazının bulunduğu site: OyunYapimi.org
http://www.oyunyapimi.org

Bu yazı için adres:
http://www.oyunyapimi.org/modules.php?name=Sections&op=viewarticle&artid=14