Son zamanlarda neredeyse tüm boÅŸ zamanımı ayırdığım bir aktiviteye dönüştü benim için XNA Framework. Microsoft’un oyun geliÅŸtirme için sunduÄŸu bu platformun ve bu platformu kullanarak oyun geliÅŸtirmenizi saÄŸlayan XNA Game Studio aracının bir ön incelemesini ÅŸurada yapmıştım. Benim için oyun geliÅŸtirme her zaman üzerinde çalışmak istediÄŸim bir alan olmuÅŸtur. Yazılım geliÅŸtirmeyi öğrendiÄŸim yıllarda yaptığım kısa süren ve berbat grafikleri olan (çizimleri ben yapmıştım çünkü) bir platform oyunundan sonra bu iÅŸle hiç ilgilenememiÅŸtim. Türkiye’de bir sektörünün olmaması, oyun geliÅŸtirme iÅŸinin zor olması(vakit ayırmak için), geliÅŸtirme için bir ekip gerektirmesi ve zorunlu olarak baÅŸka iÅŸlere yönelmem gerekmesi gibi sebepler beni buna itmiÅŸti. Oysa bugün eskisi kadar zorlanmadan ve herÅŸeyini kendim hazırlayarak oyun geliÅŸtirebileceÄŸim bir platform var ve bu beni heyecanlandırıyor.
XNA Game Studio’nun iki versiyonu var : Express ve Professional. Express sürümü ücretsiz. Åžu adresten 3.0 Beta’yı indirebilirsiniz.  Yanlız bunu kurmanız için önce Visual Studio 2008′in (XNA Game Studio’nun 3.0 versiyonundan önceki sürümleri Visual Studio 2008 de çalışmıyor) sisteminizde kurulu olması gerekiyor.
Peki XNA ile oyun geliÅŸtirebilmek için nereden baÅŸlamamız lazım :Â
- İlk olarak .Net platfomunu ve C# dilini öğrenmek gerekecektir. Bunun nasıl yapılabileceğini sanırım herkes biliyor. Eğer C# biliyorsak devam edelim,
- Oyun geliÅŸtirme terminolojisine aÅŸina olmamız lazım. Temel kavramlar ve bu kavramların çalışma presipleri çok önemli. Bu temel kavramlar içinde oyun motoru, fizik motoru gibi ÅŸeyler sayılabilir. Kısacası oyun geliÅŸtirmenin mantığını öğrenmek lazım.Â
- Geliştireceğiniz oyunun özelliklerine göre değişik terminolojileride öğrenmeniz gerekir. Mesela 3D bir oyun geliştirirken; polygon, vertex, shadow, render vs gibi birçok matematiksel kavramı bilmeniz gereklidir. 2D oyunlarda bu kavramlar daha az olduğundan 2D oyunlarla işe başlamanızı öneririm.
- Matematiksel konularda (özellikle 3D oyunlar için) kendinizi geliştirmenizi ya da unuttuklarınızı hatırlamanızı öneririm.
- DirectX kütüphanesini öğrenebilirsiniz. Ben bir projede kullandığım için bu bilgim çok iÅŸe yaradı.Â
- XNA ile oyun geliştirmeyi öğrenmeniz gerekir.
Xna Framework içerisinde bir oyun motoru barındırıyor (Aynı Managed DirectX gibi). Ama isterseniz kendi geliÅŸtirdiÄŸiniz ya da üçüncü parti .Net destekli motorlarıda kullanabilirsiniz. Ben kendi motorunu kullanmanızı öneririm. Her istediÄŸinizi fazlasıyla karşılıyor. Grafik motorları 2D oyunlarda her türlü nesneyi yükleyip onlar üzerinde çalışmanıza izin veriyor. 3D oyunlarda ise, 3D Studio Max, Maya veya (Microsoft tarafından satın alınıp bedava dağıtılmaya baÅŸlanan) SoftImage XSI gibi 3D modelleme yazılımlarıyla oluÅŸturduÄŸunuz modelleri yüklemenize izin veriyor. Ses olayları içinse her türlü ses düzenleme yazılımını kullanabilirsiniz (ÅŸurada baÅŸarılı açık kaynak kodlu yazılım Audacity’i bulabilirsiniz).
İlk etapta 2D projeler üzerinde çalışmanızı öneririm. Bunun sebebi, hem grafiksel işlemlerin nispeten kolay oluşu, hemde fizik kuralları, gölgelendirmeler, kaplamalar vs gibi ağır şeylerle çok fazla uğraşmanız gerekmemesi.
Åžimdi altta vereceÄŸim linklerden tutorial dünyasına dalabilirsiniz! BaÅŸtan söylemeliyim ki bütün adresler ingilizce. “Bir yazılım geliÅŸtirici zaten az çok ingilizce bilmelidir” önermesinden yola çıkarak bunun pek bir porblem yaratmayacağını düşünüyorum. EÄŸer ingilizceyi fazla bilmiyorsanız kodları çözerek ilerleyebilirsiniz.
- http://creators.xna.com/ - XNA Game Studio kullanıcıları için microsoftun açtığı site. Buraya üye olup videoları izlemekle işe başlayabilirsiniz.
- http://forums.xna.com/forums/ - XNA Creators Club’ın kullanıcı forumu.
- http://msdn.microsoft.com/en-us/xna/default.aspx - Microsoft’un yüce referans kaynağı Msdn (Microsoft Developers Network) üzerindeki XNA Developer Center. Burası daha çok XNA Framework için. Buradaki How to Start kısmından temel bilgileri öğrenebilirsiniz.
- http://www.ziggyware.com/readarticle.php?article_id=170 - Burada -tek bir sayfada!- eskilerin hatırlayacağı space impact oyunun bir klonunun baştan aşağıya geliştirilmesi anlatılıyor. İnanılmaz faydalı.
- http://www.ziggyware.com/articles.php?cat_id=6 - Çok sayıda tutorial var. Kesinlikle incelenmeli.
- http://www.afrigraph.org/content/xna-tutorials - Çok fazla tutorial içermemesine rağmen kaliteli bir içeriğe sahip.
- http://xnaresources.com/ - StarDefence adlı bir oyunun geliştirme aşamaları anlatılmış.
- http://www.xnadevelopment.com/alltutorials.shtml - Genellikle XNA Game Studio 3.0 (Beta) için tutoriallar var.
- http://www.bluerosegames.com/xna101/Â Â - XNA ile ilgili bir blog.
- http://www.bluerosegames.com/brg/xna101.aspx - Çok yararlı tutoriallar var.

Böyle biliÅŸim terimlerinde ilk baÅŸvurduÄŸum ve güvendiÄŸim kaynak Türkiye BiliÅŸim DerneÄŸi’nin hazırladığı sözlük. “tutorial” için önerileri “eÄŸitmen”.
Tıpkı bir öğretmen gibi eğitici bilgi verdiğinden olsa gerek böyle bir karşılık bulunmuş. Unutmamak gerek ki bu yeni kelimeler benimsenerek, kullanılarak dilde yer ediyor.
Burayı bilmiyordum. Dün yine aklıma gelmeyen bir kelimeyi (generic) arattım. Soysal olarak çevirmişler. Bence güzel bir karşılık.
Teşekkürler
Güzel yazı için teşekkürler. oGame, savasim.com gibi tarayıcı ile oynana oyunları bilirsiniz. Benzer bir şey yapmak istiyorum. Fakat tarayıcı kullnılmayacak. Yani bir site şeklinde değil. Bilgisayar programı olacak. Ancak Animasyon vb gibi teknikler olmayacak tabii.
XNA bu iş için uygun mudur?
XNA ile doom,nfs vb tarzı oyunlar mı yapılır sadece?
Evet o tarz bir oyun içinde XNA Game Studio kullanabilirsin. Ama buna mecbur değilsin, çünkü grafik anlamında çok fazla bir yük olmadığından normal yollardan da (Mesela C#, Java vs) halledebilirsin işi. XNA Game Studio içerisinde grafik barındıran oyunlar için çok daha uygundur.
güzel çalışma olmuş teşekkürler.