Dave Astle' dan Başlayanlar İçin Oyun Programlama Rehberi

Dave Astle' dan Başlayanlar İçin Oyun Programlama Rehberi

İçindekiler

  • Giriş
  • Dil Seçimi
  • Doğru Derleyiciyi Seçmek
  • Bir Hedef Platform Seçmek
  • İşin Güzel Yanı
  • İşi Bitirmek

1. Giriş

Bu yazı, kendi oyunlarını yapmak isteyen, fakat programlama deneyimi yok denecek kadar az ya da hiç olmayanlar içindir. Aslında, bu yazıyı hazırlarken, okuyucunun hiç programlama bilgisinin olmadığını varsayıyorum. Oyun yapımının sanatsal yönünden çok, programlama ve tasarım yönü üzerinde yoğunlaşacağım. Endüstri konusuna girmeye hiç tenezzül etmeyeceğim (çünkü zaten bunun için başka birçok kaynak var) ama oyunlar yapabilmeniz için yerine getirmeniz gerekenleri size açıklayacağım. Son olarak söylemeliyim ki, oyun yapımını öğrenmek için benim yürümüş olduğum bu yol, tek veya en iyi yol olarak düşünülmemelidir. Fakat bu yol, ben ve diğer birçok insanın istediğimiz yere gelmemizi sağladı.

2. Dil Seçimi

İlk olarak yapmanız gereken şey, programlama yapmak için bir dil seçmek olacaktır. Basic, Pascal, C, C++, Java vb. olmak üzere arasından seçebileceğiniz birçok dil var. Ve hangi dilin yeni başlayanlar için iyi olduğu konusunda sürüsüne bereket tartışma var. Bunun için John Hattan'nın popüler dilleri karşılaştıran, "Hangi Dili Kullanayım?" adlı muazzam yazısını okuyabilirsiniz.

Size C/C++ ile başlamanızı önereceğim. Bazı insanlar bu dillerin henüz başlayanlar için fazla ileri düzeyde olduğunu söyleyebilirler, fakat şahsen ben C++ ile başladığım için bu düşünceye zıt düşüyorum. Buna ek olarak, C/C++ bugün en çok kullanılan dil, bu yüzden bol bol yardım ve kaynak bulabileceksiniz. İlk olarak C/C++' yı öğrenip öğrenmemeniz o kadar mühim değil, çünkü herhangi bir dili öğrendiğinizde, diğer bir dili öğrenmek büyük bir sorun olmayacaktır. Bununla beraber, eğer ilk olarak C++' yı öğrenmeye karar verirseniz, nesne tabanlı programlamaya geçmeden önce işlemsel (prosedürel) programlamayı anladığınızdan ve kullanabileceğinizden emin olmalısınız.

Eğer C/C++ ile başlarsanız ve bu size çok zor gelmeye başlarsa, geri dönüp Basic veya Pascal gibi daha basit bir dil öğrenmenizin hiçbir sakıncası yok.Fakat bence C++' a iyice yapışırsanız ve doğru kaynakları bulursanız, onunla herhangi bir sorununuz olmaz.

Sıradaki sorunuz, "C/C++' ı nasıl öğrenirim?" olmalı. Bunu sorduğunuza sevindim. En iyi yol kurs almaktır. Sorularınızı cevaplayan ve takıldığınız yerlerde yardımcı olan bir öğretmenin olması öğrenimde büyük bir fark yaratır. Ayrıca, kursta verilecek olan programlama ödevleri, öğrendiklerinizi uygulamanızı sağlar.

Eğer bir sınıfta kurs almak sizin için uygun bir seçenek değilse, yapabileceğiniz en iyi diğer şey birkaç iyi kitap almaktır. "Mükemmel Kitap"ı seçmek için kendinizi çok fazla zorlamayın, çünkü muhtemelen birden fazla kitap almak zorunda kalacaksınız. Size tavsiyem, yerel bir kitap mağazasına gitmeniz ve anlayabileceğinizi, öğrenebileceğinizi düşündüğünüz bir tane buluncaya kadar rafları kolaçan etmenizdir. Zaman içinde, daha ileri düzeyde kitaplar kapmak isteyebilirsiniz, ve bu muhtemelen unuttuklarınızı hatırlamanız için kullanacağınız bir referans kitabı olacaktır, fakat bir kez bilgi sahibi olduğunuzda, neye ihtiyacınızın olduğu konusunda daha iyi muhakeme yapabileceksiniz.

Bu noktada, bir dakikanızı almak ve yeni başlayan birçok programcı için, özellikle de kitap vb. şeyleri almaya parası olmayan gençler için önem gerektiren birşeyi belirtmek istiyorum: Hepsinden önce, yerel kütüphaneniz de dahil olmak üzere ücretsiz kaynaklar var ve bununla beraber http://www.mcp.com/personal adresinde yüzlerce e-kitabı bulunan Macmillan Computer Publishing, İngilizcesi olanların işine yarayabilir. Şunu da söylemeliyim ki, iyi bir programcı olabilmek için, bu işe yatırım yapmalısınız.

Internette C/C++ öğrenmek için sayılı dersler bulunmakta. Fakat bence netteki dersler kendi başlarına kaynaklar olmaktan ziyade, kitaplardan öğrenilenlere ek vazifesi görüyorlar.

3. Doğru Derleyiciyi Seçmek

Yazdığınız programlar, ya da kaynak kod, metin dosyası olarak saklanır. Bir C/C++ programı yazmak için Windows'un Not Defteri'ni bile kullanabilirsiniz. Fakat bir şeyin bu kaynak kodu alıp, çalıştırılabilen bir dosyaya dönüştürmesi gerekir. Bu bahsettiğimiz bir şey derleyicidir. (İngilizce'de compiler olarak adlandırılır.)

Ücretsiz olanlar da dahil olmak üzere çok sayıda derleyici (compiler) bulunmaktadır. Rahat çalışabildiğiniz bir derleyici seçmeniz çok önemlidir. Ücretsiz olan derleyicilerin bir avantajı var, herbirini deneyip, hangisinin sizin için uygun olduğunu görebilirsiniz. Bununla beraber, genelde bu derleyiciler, ticari derleyiciler kadar özelliğe sahip olmuyorlar ve/veya yeterince desteklenmiyorlar. Neyse ki, çoğu ticari derleyicilerin tanıtım ya da akademik sürümleri bulunmakta ki, bunlar çok daha ucuz ve genellikle tam sürümlerin tüm özelliklerine sahipler, tek sınırlama, onlarla yarattığınız programların dağıtımına izin verilmemesi ki, zaten buna belirli bir süre ihtiyacınız olmayacak.

Sonuç olarak, seçeceğiniz derleyici, ne kadar harcayabileceğinize ve çalışmalarınızı hangi işletim sistemi ve platform için geliştireceğinize bağlı olacaktır. Eğer Windows için geliştirmeyi düşünüyorsanız, şiddetle Microsoft Visual C++ kullanmanızı öneririm. Sizin için birçok şeyi kolaylaştıracak güçlü bir geliştirim çevresine sahip, ve Windows uygulamaları geliştirmek için daha iyi bir derleyicinin olmadığı şüphesiz. Eğer öğrenciyseniz, azımsanılmayacak derecede ucuza elde edebilirsiniz. Eğer DOS'ta programlama yapacaksanız, muhtemelen yapabileceğiniz en iyi tercih, serbest yazılım statüsüne sahip olan (yani ücretsiz) olan DJPPG olacaktır.

4. Hedef Platformu Seçmek

Er geç çok sayıda platform için program geliştirecek olsanız bile, öncelikle öğreniminiz için sadece bir tanesini seçeceksiniz. Dili öğrenirken ve çizgeleri (grafikleri) içeren herhangi bir programlamaya geçmeden önce, muhtemelen DOS veya UNIX gibi Çizgesel Kullanıcı Arabirimi (GUI- Graphical User Interface)'e sahip olmayan işletim sistemlerini kullanmak isteyeceksiniz. Bu platformlar sizi, aslın ötesiyle (mesela Windows programlaması ile) uğraşmaktan kurtaracak ve sadece dilin kendisi üzerinde yoğunlaşmanızı sağlayacak.

Oyunlar yapmaya başlamak için hazır olduğunuzda, tabi ki, hedef platformunuzu değiştirmeyi düşünmelisiniz. Hadi şimdi şu meşhur platform seçeneklerine bakalım.

Windows: Eğer er ya da geç oyun endüstrisinde profesyonel olarak çalışmak istiyorsanız, veya sadece birçok insanın oyununuzu oynamasını istiyorsanız, o halde bu sizin seçmek istediğiniz platform olmalıdır. Hedef kitlenin çoğu Windows kullanmaktadır, ve bunun ileride dahi değişeceğini sanmıyorum. Bugün Windows için yapılan oyunların belirli bir çoğunluğunda, sizin de muhtemelen Direct-X olarak adlandırıldığını duymuş olduğunuz bir teknoloji kullanılıyor. Direct-X, donanıma direk olarak erişebilmenizi sağlayan bir kütüphanedir, ve bu da, onu kullanarak yüksek başarımlı (performanslı) oyunlar yazabilirsiniz anlamına geliyor.

DOS: DOS, oyunlar için olan en baskın platform idi, fakat o günler gitti. Bazı hobi tutkunları halen DOS için oyun yapmalarına rağmen, bu platform için hiçbir ticari oyun yapılmamaktadır, ve Microsoft onu desteklememeye devam ettiği sürece, o gerilemeye devam edecektir. Eğer hemen oyun yapmaya başlayacaksanız, DOS'u seçmeyin, ya da eğer seçerseniz, onunla uzun süre takılmayın. Not: DOS'ta oyun programlamak için yazılmış birçok kitap olması, DOS için oyun geliştirmeye iyi bir neden olabilir. Bununla beraber, Windows için oyun programlamayla ilgili yazılan kitaplar artmakta olduğundan, bu tartışma gün ve gün daha önemsiz hale geliyor.

Linux: UNIX'in bir başka şekli olan Linux, sabitlik, fiyat, ve Microsoft tersi düşünüş gibi sayılı sebeplerden dolayı tutulur hale geldi. Halen Linux kullanıcısı nispeten az olmasına rağmen, çevresindeki heves ve pazardaki potansiyel gelişme, onu bir platform olarak yaşayabilen, uygun bir seçim haline getiriyor.

Macintosh: Mac azımsanılmayacak sayıda sadık takipçiye sahip. Konuşmuş olduğum neredeyse tüm Mac ilgilileri, Mac için daha çok ve daha iyi oyunlar görmek istediklerini ifade ettiler. Mac için oyun yapmak adına pek kaynak görmedim, ama olduğundan eminim, o yüzden bu da geçerli bir seçim olabilir.

Konsollar: Konsol (Playstation2, GameCube, XBox, vb.) oyun pazarı devasa boyutlarda, ve konsol oyunu geliştiriminde kesinlikle gelecek var. Bununla beraber, bu zamanda ticari olmayan bir ortam içinde konsol oyunu geliştirmek (bazı nedenlerden dolayı) pek makul değil. Eğer konsol için oyun geliştiriyorsanız, muhtemelen ticari bir oyun stüdyosu adına çalışıyorsunuz demektir.

5. İşin Güzel Yanı

Şimdi sıra oyunları tartışmaya geldi. Her ne kadar bu söyleyeceklerim diğer seçimler için de uygun olacak olsa da, kolaylık olsun diye C/C++ ile Windows için programlama yaptığınızı varsayacağım.

Hepsinden önce, oyun yapmayı aklınızdan bile geçirmeden önce, C/C++ üzerinde iyi hükme sahip olmalısınız. İşaretçileri (pointers), dizgileri (arrays), yapıları (structures), işlevleri (functions), ve muhtemelen sınıfları (classes) anlamalısınız, ve bunları ustalıkla kullanabilmelisiniz.

Bu yazının size oyun yapmak için bilmeniz gereken herşeyi öğretmesi mümkün değil. Neyseki, öğretmek zorunda da değil. Konuyla ilgili birçok kitap var, ve yüzlerce ders ise internet üzerinde mevcut. Size nasıl başlamanız gerektiğini önereyim:

  • Bir ya da daha çok kitap alın. İngilizceniz varsa Windows'da oyun programlamaya başlamak için "Tricks of the Windows Game Programming Gurus" harika bir kitap. Yoksa; Windows'ta oyun programlamak için Türkçe kitaplar araştırın. Kitapları okuyun, örneklerini deneyin, ve anlamadığınız yerleri yeniden okuyun.
  • Kitaplardan öğrendiklerinizi internetteki derslerlerle takviyeleyin. Netteki dersler, kitaplardan okuduklarınızı açıklamalarının ötesinde, kitaplarda bulunmayan konuları da kapsarlar.
  • Uzmanlardan yardım isteyin. Eğer kitaplarda veya internet derslerinde sorularınıza cevap bulamazsanız, İngilizceniz iyi ise GameDev.net'in (www.gamedev.net) ileti panosunu ve sohbet odasını, İngilizceniz iyi değilse ya da hiç bilmiyorsanız oyunyapimi.org'un (yani buranın) ileti panosunu (forumunu) ve IRC sohbet odasını " #oyunyapimi " kullanabilirsiniz.(server: irc.enterthegame.com) Her iki yerde de size yardımcı olmak isteyen insanlar olacaktır.

Sadece öğrenmek yeterli değildir, beraberinde, öğrendiklerinizi uygulamalısınız. Basit bir oyun ile başlayın, ve oradan itibaren yavaş yavaş gelişin.

İlk önce, kendi başınıza çalışmayı planlayın. Bir ekibe katılmaya kalkmayın, çünkü bu sadece öğreniminizi yavaşlatır. Kemerinizin altında birkaç oyun olduktan sonra, kendinizi bir ekibe atabilirsiniz.

Oyunlarla ilgili bahsetmek istediğim birşey: Sadece oyun programlamayla ilgili olan kitaplardan daha ötesini okumalısınız. Mağaza raflarında gördüğünüz türden oyunlar yaratabilmeniz için oyun programlama kitaplarında anlatılanlardan daha ayrıntılı konular üzerinde araştırma yapmak zorunda kalacaksınız. İhtiyacınız olanların bazıları internet derslerinde bulunabilir, fakat ayrıca, çizgeler (grafikler), yapay zeka, ağ oluşturma, fizik, vb.konularla ilgili kitaplar almanız gerekir. İşte burada Bilgisayar Bilimlerinde bir derece sahibi olmak çok işe yarar, çünkü kurslar almak zorunda kalacaksınız ki, bunların oyun programlamayla alakası olmadığını düşünebilirsiniz, ama var.

6. İşi Bitirmek

Büyük farklılık yaratabilecek bir kaç ipucu daha:

  • Sadece bilgi biriktirmeyin, uygulayın. Bir şeyi kullanmadığınız sürece gerçekten bilmeniz veya anlamanız mümkün değil. Öğrendiğiniz şeyleri kullanan küçük deneme (demo) programları yapın. Daha doğrusu, kitapların bölüm sonlarında bulunan alıştırmaları yapın.
  • Birçok oyun oynayın. Böyle yapmak size fikirler verecek ve daha iyi oyunlar yapmanız için yardımcı olacaktır, ayrıca sizi programlamadan uzaklaştırarak bir süreliğine rahatlamanızı sağlayacaktır.
  • Başkalarına yardım edin. Başkalarına yardım edebileceğiniz noktaya geleceksiniz, ve başkalarına öğretme işi boyunca kendiniz daha da çok öğreneceksiniz.
  • Başladığınızı bitirin. Sakın şu çelişkiye düşmeyin, "Bu oyunu bitirebileceğimi biliyorum, ama daha iyi bir oyun fikrim var, o yüzden bunun yerine ona geçeceğim." Eğer başladığınız oyunları bitirirseniz, çok daha fazla öğreneceksiniz, ve sözde değil özde olduğunuzu kanıtlayabileceğiniz birşeyiniz olacak. Bunu birazcık kolay hale getirebilmek için, daha deneyimli oluncaya kadar çok büyük ya da karmaşık oyunlar yapmaya kalkmayın.

Hadi bakalım! Artık Quake 4'ü yapmak için yola koyulmalısınız. Pekala, o kadar da değil, ama en azından nasıl bir yol takip edeceğinizi ve bilgiye nereden, nasıl ulaşabileceğinizi biliyorsunuz, bu şekilde yıllarca çalışırsanız, neden olmasın.

Gelecek Döküman: Hangi Dili Kullanayım?

Bu dökümanın aslı Dave Astle tarafından yazılmış ve www.GameDev.net sitesinde yayımlanmıştır. Dökümanın Türkçe'ye çevirisi Görkem Mavigül tarafından www.oyunyapimi.org sitesinde yayımlanmak üzere gerçekleştirilmiştir.

This document is originally written by Dave Astle for GameDev.net ( www.gamedev.net ), which is the number one site devoted to game development. This document and all its content are translated into Turkish by Görkem Mavigül (UltraNoviceDeveloper) in order to help the people of Turkey, (some of whom don't know English) understand the art of making computer games. We would like to thank Dave Astle and GameDev.net as oyunyapimi.org .

Yazar: Dave Astle :: www.gamedev.net
Çeviren: Görkem Mavigül :: www.oyunyapimi.org :: 2003




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=31