XNA ve Directx'i tanıyalım ve Oyun yapım mantığını kavrayalım

erimpower

Yeni üye
21 Kas 2009
41
0
Allah Biliyor!
Merhaba arkadaşlar,

Forumda çok gereksiz tartışma konuları oluyor ve herkes motorlar ile oyun yapma sevdasındadır. Fakat şimdi size call of duty gibi battlefield gibi oyunların nasıl yapıldığını değil ne ile yapıldığını biraz anlatmaya çalışacağım.

Öncelikler birkaç terimi anlatayim

XNA = Microsoftun ürettiği .net dilleri için bir oyun programlama kütüphanesi demek sanırsam yanlış olmaz. kısacası c# ve vb.net ile oyun yapımını kolaylaştıran bir alet diyebiliriz. Yani directx kullanımını kolaylaştırıyor.

Directx = En kısa hali ile yazdığınız kod ve ekrana koyduğunuz grafik-resimlerinizin ekran kartını kullanmasını sağlayan lib lerimizdir. Siz c# ta windows form açıp resim koyar yada başka bir grafik koyarsanız onlar %90 ını ram ve işlemci üstlenir fakat directx kullanarak yaparsanız %30-40 hatta 70 lere kadar oranda ekran kartını kullanacaktır. bu hem performans hemde hızlandırır. (Tabi bu grafik ile ilgili programlar için kalkıpta soketi directxle yapan görmedim :D )

OpenGL = Kendisiyle ilgili detaylı bir bilgim yok ama genel bir bakış ile özellikleri, Her platformda çalışır(win-linux-mac), güncel değildir(dx e göre) ve direct x e göre daha kötüdür (şahsi fikrim.) Syntax olarak incelemediğimden birşey söyliyemiyorum.


Peki ben xna veya direct x ile nasıl oyun yapacağım?

İşte burası zor. Xna ile ufak tefek oyunların yapımının videoları internette var. Burada size şuraya şu kodu yaz şunu şuraya yapıştır demeyeceğim. Yani balık vermiyeceğimde balık tutmayı öğreteceğim.

Öncelikle oyununuzda önemli olan şeylerden biride FPS'dir. bu first person shooter olarak anlamayın :D. Frame per Second'dır. Yani saniyede değişen ekran sayısı. Aksiyon sahnelerinde fpsnin düşmesi demek kısacası rezalet demektir. bu yüzden buna dikkat edilmesi gerekiyor.


Oyun yapımına başlamak

Oyun yapımına başlamadan önce birşeyler öğrenmeniz gerekiyor. Bunlar sadece kodlama yada grafik çizme değil. İşin mantığınıda bilmeniz gerekiyor.
Sıralama şöyle olmalı

İlk önce biraz kodlama bilgisi (C# yada C++ önerim) sonrasında mantık için oyun algoritmaları(yani bunu nasıl yapmışlar). Oyun yapımı sadece bilgi değildir bunu unutmayın dandik bir oyunda yapmak isteseniz, zaman ister elbet. Burda önemli olan nekadar iyi c++ bildiğin değil nekadar sabırlı olduğundur. Ayrıca önerim bu işi gruplarla yapmanız yani grafiği başkası kodlamayı başkası vs. yaparak.

Aklınıza bir fikir geldimi onu direk bir yerlere söylemeyin bir yerlere konu açarak tanıtmayın. Veya " xxxx oyunu geliyor hazırlanın " vs. başlıklara gerek yok. Siz işinizi gizli yürütmelisiniz ve grup üyeleride gizli olmalıdır. belli bir noktaya gelince konuyu ve reklamları yapmalısınız. Yoksa elalemin maskarası olmaktan kurtulamazsınız.


Oyun motorlarınımı kullansam acaba?

Bu seçim sizin kendinize şu soruyu sormanızdır : "Kolay yoldanmı oyunumu yapayim, zor yoldanmı."
Tabi zorun faydası , kolayın zararı var. Bunlara birazdan değineceğim.
Ben oyun motorlarını sadece mantığı kavramanız için öneriyorum. Oyununuzu oyun motorlarıyla yapmanız büyük hatadır. Bakın burda kastım öğrenme amacı yaptığınız oyunlar değil. Asıl oyununuzu motorlarla yapmamanızdır.

Avantajları/Dezavantajları

Oyun motorları

Avantajları

  • Kolaydır. Ve grafiksel arayüz ile daha iyi kavrayarak oyun geliştirilir.
Aklıma başka bir özelliği gelmedi varsa siz yazın


Dezavantajları

  • Oyununuz bittikten sonra yayınlarken ücret alınır ve sonraki gelirlerinizdende % alırlar ayrıca oyununuuzn her yerine reklamlarını koyarlar.
  • Oyun motorlarının sınırları vardır. Yani yapabileceğiniz şeyler bellidir. Belli seviyeye kadar geliştirilir.
  • Profesyonellikten bahsedilemez.


Directx ise tam tersidir. Size önerim önce bir dil öğrenmeniz. (C# önerim.) Sonra oyun yapımı algoritmasını öğrenmek için oyun motorlarıyla kendinizi geliştirme amaçlı küçük oyunlar yapmalı. Sonraa grafiklerle biraz haşır neşir olup istediğiniz oyunun temellerini atmanız.




NOT : Hayaliniz ile amacınız bir olmasın. Hayaliniz battlefield gibi oyun yapmak olabilir fakat amaçlarınızda çıtanızı alçak tutunki hayal kırıklığı ve moral bozukluğu yaşamayın. Hayallerinizde elbet bir gün gerçekleşir ama yılmadan pes etmemelisiniz. Yazılım dilleri size zor geliyor diye bırakmayın bazen işkencede olabilir, ama bugün bir bill gates, bir steve jobs olmak için önünüze gelen engelleri geçmeniz gerekir.



" Önemli olan nekadar çok yıkıldığın değil, ayağa kalkıp dimdik durup duramadığındır."


Sorulara açığım teknik sorularada.

BAŞTAN SONA KENDİ YAZIMDIR. KOPYALIYIP ADIMI BELİRTMEYENE HAKKIM HARAM OLSUN.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.