13 Ağustos 2009 Perşembe

Başlarken

İnternet üzerinde oyun programlama dendiğinde özellikle C++ dilinin sağladığı avantajlar çok ön plana çıkıyor. C++ dilinin çok güçlü bir programlama dili olduğunu yadsıyamayız, tabi ki getirdiği bazı sıkıntıları da.

Bir takım kaptanı olarak benim değerlendirme kriterlerim oldukça farklı. Bunları sizinle paylaşmak ve fikirlerinizi almak istiyorum.

Genellikle oyun projelerinin uzun soluklu projeler olduğunu görüyoruz. Ortalama iki ila üç yıl süren projeler. Elle tutulur bir piyasa başarı sağlamanız halinde, ek paketler vs. ile bu süre daha da uzamakta.

Bu üç yıllık süre içinde nelerle karşılaşılabildiğini bir düşünelim:

firmalar; yönetim, ilgi alanı değiştirebilir, maddi sıkıntıya düşebilir, kapanabilir.

insanlar; evlenebilir, çocuk sahibi olabilir, iş değiştirebilir, taşınabilir, hastalanabilir, sakatlanabilir ve hatta hayatlarını kaybedebilir.

Tüm bu ve benzeri faktörleri, proje risklerini öngörmeye çalışırken göz önünde tutmanız gerekmektedir. Bu kadar uzun soluklu hiç bir proje, başladığı takımla bitmez; özellikle de yazılım sektöründe. Benim tecrübelerimde bu oran 4/10. Yani on kişilik bir takımda sadece 4 kişi işin başlangıcını ve bitişini görebiliyor. Bu oran, ilk bakışta yüksek bir sirkülasyon oranı gibi görünebilir, fakat üç yıl için düşündüğümüzde oldukça makul bir oran.

C++ gibi öğrenmesi ve okunması zor bir dilin, salt taşınabilirlik ve hız avantajı sağladığı için oyun projelerinin olmazsa olmazı gibi görünmesi göz yanıltıcıdır. Düşünün her altı ayda çekirdek kadronuzdan biri ayrılıyor ve yerine projeye tamamen yabancı biri geliyor. Halefinin bıraktığı yerden bayrağı devralması için bu kişinin, mevcut sistemi analiz etmesi, yapılan işleri ve kodları anlaması, hataları bulabilecek seviyede bilgiye sahip olması gerekiyor. Tüm bunları yapabilmek için de efor ve zaman harcamak zorunda. Tabii ki bu zamanın finansmanı da proje bütçesine ve planlamasına yansımakta.

Üç yıl sonra kullanacağımız oyun ekipmanlarının (bilgisayar, konsol, mobil cihazlar vs), şu an kullandıklarımıza göre ciddi kaynak avantajlarının olacağını yadsıyamayız. Yani üç yıl sonra 10-50 GHz frekans aralığında çalışan terabyte ile ölçülen hafızalara sahip cihazlarımızın olması varsayımı oldukça gerçekçi.

Şu anda bize büyük bir avantaj gibi görünen HIZ, projeye yansıyan vakit ve nakit maliyetleri açısından oldukça ciddi bir dezavantaja sahip. Bu noktada, farklı diller problemin çözümünü kolaylaştırabilir.

Pek çok büyük oyun üreticisi firmanın da, probleme bulduğu çözüm bu yönde. Pek çok firma ürünlerinde C++ gibi dillerin yanı sıra Lua gibi öğrenmesi ve okuması kolay betik (script) dillerini de kullanıyorlar.

Daha önce kullandığım tüm dillerin yerine geçen ruby'nin bu alanda da kısa süreler içinde büyük işler çıkarmaya imkan sağlayacağını düşünüyorum. Bu yüzden yeni başlayan projede Ruby dilini mümkün olan her yerde kullanmayı amaçlıyorum.

Tecrübelerimi buradan paylaşmaya devam edeceğim.

Vaktinizi ayırdığınız için teşekkür ederim.

3 yorum:

  1. Oyun yapımı için c++ eskisi gibi zorunlu bir değil artık. Buna katılmama rağmen hala kişisel tercihim c++, ama bu gayet rahat ettiğim için yoksa endüstri dayattığı için değil. Ama yeni nesil script dillerinden birini kullansaydım kesinlikle python'u kullanırdım. Dilin kendisi bir yana pygame ve benzeri eklentileri ile oyun geliştirmek için çok güzel bir seçenek. Sizin projenizin nasıl gideceğini merak ediyorum. Umarım yazmayı sürdürürsünüz.

    YanıtlaSil
  2. Sevgili Ragnor,
    python, ruby ve lua birbirlerine oldukça yakın, akraba script dilleri, ayrıca seninde belirttiğin gibi python ile oyun yazılımına yönelik oldukça gelişmiş araçlar da mevcut.

    Benim burdaki seçimim oldukça kişisel. son yedi yıldır python ile tek satır kod yazmamış olmama rağmen, ruby ile hergün çalışmaktayım.

    Özellikle dikkat etmiyorum ama eminim burada vereceğim örnekler vb bilgiler dillerin akrabalığı sayesinde python ve lua ile de kolayca uygulanabilecektir.

    ilgin için ayrıca teşekkür ederim.

    YanıtlaSil
  3. oyun yapta neyle yaparsan yap demekle yetiniyorum
    misal bir projeye basliyicam ilk onde dusunurum hangi dille yazsam daha kolay olur diye. uzerine alinma dostum ama buna benzer konularda her bir birey kendi popiler dilini baskasina tavsiye ediyor bu dogru degil. sunu tavsiye et assagida yazan dillerde size uygun olani kullanin
    misal

    C,c++ java,python unity game engine vs gibi
    size neden tepki gosterdim acikliyim cunku bende onca zaman boyle yazilar ardindan kostum.

    sizin yazinizi ne kotuluyorum nede ovuyorum ikisinin arasi bir yorum yaptim umarim bugun moralinizi bozmamisimdir. iyi gunler

    the_prodigy
    nick ismi demoscene partisinde tanisiriz diye verdim

    YanıtlaSil