5 Ağustos 2007 Pazar

Hazır Olmak

Bu yazı sert bir yazı olabilir şimdiden uyarmak isterim. Çünkü konu çok uzun zamandan beri canımı sıkan bir sorun. Sorun oyun yapmaya heves edip bu işle ilgilenmeye başlayan yeni acemi arkadaşlarımızın çoğunluğunun yanlış yöne sapıp kolay yolu seçmeleri. Daha oyun yapımının temellerini öğrenmeden direk oyun yapımcılığına soyunmaları, tabiri caiz ise "cin olmadan adam çarpmaya" çalışmaları.

Bu oldukça can sıkıcı bir durum, çünkü bu arkadaşlarımız hem oyun yapımıyla ciddi olarak uğraşıp bu ülkede birşeyleri değiştirmeye çalışan arkadaşlarımızın inanılırlığını zedeliyor hem de iyi niyetle (bazen yumuşak bazende sertçe bile olsa) kendilerine doğru yolu göstermeye çalışan daha deneyimli ve bilgili arkadaşlarımızı hiç dinlemiyorlar. Ve bu böyle sürüp daha da sıkıcı olaylara neden olarak devam ediyor.

Bu yazıda amacım oyun yapımının çeşitli alanlarında yeterli seviyeye gelmeden önce temel olarak öğrenmeniz gereken şeyleri az çok açıklamak. Ne yazık ki oyun yapımının her alanında yeterli bilgiye sahip değilim ama bildiklerimle iyi kötü bir yol çizmeye çalışacağım. Umarım bu yazıyı okuyan bilgili arkadaşlarımız hata ve eksiklerimi yazıya yapacakları yorumlar ile kapatırlar.

Programlama

İlk olarak programcılık alanından başlayayım. Öncelikle kullandığınız programlama diline hakim olmanız gerekmekte. Algoritma geliştirme yeteneğide en önemli şeylerden biri. Oyun yapımında bir programcının üzerine düşecek görevler oyun mekaniği, grafik programlama, veri yapıları, network programlama ve ses/müzik programlama gibi konular olacaktır. Bu tip konuların hepsini bilmeniz gerekmekte. Ayrıca iki konu grafik programlama ve oyun mekaniği özellikle kendinizi geliştirmeniz gereken konular. Oyun mekaniği genel olarak en çok uğraşacağınız konu olduğu için ve grafik programlamada bir oyunun ilk göze çarpan ve teknik olarak (sizin karşılaşacağınız) en kompleks konu olduğu için. Oyun mekaniği konusunda yapmanız gereken minik oyunlar kodlamak. Tetris, Pacman, Snake vb. bilindik oyunlarla başlayarak oyunların temel mantığını iyice kavrayabilirsiniz. İlerledikçe bilindik birkaç türe ait mini oyunlar (mesela 1-2 saat süren mini-rpg'ler iyi birer örnektir bu konuda) kodlamayı da deneyebilirsiniz. Bir süre sonra zaten sizde hazır olduğunuzu anlayacaksınız.

Grafik programlama konusunda ise size tavsiyem yine kolaya kaçmadan önce işin temelini öğrenmeniz. Günümüzde ister 2D ister 3D olsun grafik programlama işini oldukça kolaylaştıran birçok hazır kütüphane var. Ama siz bu çözümlerle kolaya kaçmak yerine önce bu iş temelde nasıl diye sorup, bunu öğrenmeye çalışın. 2D konusunda çeşitli oyunların kullandığı grafik modlarını (izometrik, topdown-tam tepeden yani- vb.) kodlamayı öğrenmelisiniz. Ayrıca çeşitli 2D efektleri kodlamayıda öğrenin. 3D konusunda ise öncelikle bu işin teorisini öğrenmenizi tavsiye ederim. Hazır bir kütüphane ile başlamanız daha kolay gelebilir ama işin temelinden öğrenmeniz o konu hakkındaki bilgilerinizin daha sağlam olmasını sağlar. Bu aşamadan sonra DirectX ya da OpenGL'de uzmanlaşmanız doğru bir hamle olacaktır. Son olarakta popüler grafik motorları üzerine çalışmanızda faydalı olacaktır. Hem ileride bir projede kullanırken hem de genel olarak grafik motorlarının tasarımlarını görmeniz açısından faydalı olacaktır. Bunun dışında grafik programlama konusunda programcılara önereceğim yegane şey Demoscene ile ilgilenmeye başlamaları. Hem grafik programlama üzerine çalışan insanlarla tanışmak açısından hem de direk öğrendiklerinizi uygulamak açısından faydalı bir ortam olacaktır.

Grafik

Grafik çizimi konusunda pek fazla tavsiyede bulunamayacağım. İlk vereceğim tavsiye her konuda olduğu gibi temelden başlamak olacaktır. 2D grafik konusunda sadece statik grafikler değil (menu vs. gibi) oyun içerisinde kullanılacak sprite vb. animasyonlarada ihtiyaç olacaktır. O yüzden 2D çalışacaksanız başta pixel grafik çizimini öğrenin. Pixel Art diyince aklınıza kutu kutu grafikler gelmesin. En iyi örnekleri hem eski oyunlarda hem de demoscene'de yayınlanmış ürünlerde bulabilirsiniz. 3D konusunda ise olay kullanacağınız programda değil sizin yeteneğinizdedir. Verebileceğim diğer ve son tavsiye ise oyun içi modeller için low poly modeller üzerinde çalışmanız gerekmekte, low poly modellerle çalışırken bile tarz sahibi güzel grafikler çıkarabilmek için çalışın.

Tasarım

Oyun tasarımı konusunda verebileceğim tavsiye basit, biraz klişe ve uzun ama daha iyi bir yolunu bilmiyorum. Okuyun, izleyin, dinleyin, oynayın ve hayal edin! Bu kadar. Bol bol kitap okuyun, kişisel tavsiyem dünya mitolojilerini okuyun, klasikler her zaman her konu ve alan için okunması gereken şeylerdir ve son olarak fantastik kurgu ve bilim kurgu kitaplarıda ilham verici maceralar sunacaktır ama sadece bu türlere bağımlı kalmayın. Bol bol film izleyin ve özellikle anlatım tekniklerine dikkat edin. Müzik dinleyin. Bir Rock sever olarak birçok rock şarkısı bir çok güzel hikaye anlatmaktadır, bunlara dikkat edin. Oyun oynayın, elbette başka oyunları oynamak size ilham sağlamakta kesinlikle faydalı olacaktır ama dikkat edin ilham almak ile kopyalamak farklı şeylerdir, yanlış tarafa düşmeyin. Ve hayal edin. Yapabileceğiniz en kötü oyun hayal gücünüzü kullanmak yerine bir başka oyunu kopyaladığınız zaman yapacağınız oyundur ve sadece hayal gücünüzün sağlayacağı şeyler sayesinde basit grafikler ve basit bir sunuma sahip bir oyun bile çok güzel bir oyun olabilir, çok sevilebilir.

Sanırım hepsi bu kadar. Başka alanlarda var tabi ama benim her alan konusunda bilgim yok. Bu konuda sizden yardım bekliyorum. Arkadaşlar bilgilerinizi bizimle paylaşın lütfen. Ve yukarıda yazdığım gibi lütfen yazıdaki hata ve eksiklerimi yorumlarınızla düzeltmekten çekinmeyin.

2 yorum:

Adsız dedi ki...

abi ben oyun yazmak istiyorum
bana yardımcı olurmusun ben ilk defa başlıycam bana yardım et
şu anda internet kafeden mesaj atıyorum eve gidince tekrar atcam ayrıca senin cevabını görebilecegimiz bir sayfa var mı...

fredi dedi ki...

Selam, sanırım yazıyı okumadın. Zaten nasıl başlanacağı hakkında bazı bilgiler veriyor. Bu yazının haricinde tonlarca döküman var internette başlangıç hakkında. Fakat bu kadar hazırcı bir toplum için yeterince kolay ulaşılabilir değiller sanırım.