Dave Astle' dan Başlayanlar İçin Oyun Programlama Rehberi
(1647 kelime) (519 okuma)
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 .
|