XNA Background

Ufak ufak notlar alıyorum. XNA konusunda Türkçe fazla kaynak yok, bari biz yazalım. Bu yazıda basitçe bir background oluşturacaz ve bunu oyunumuzda görüntüleyecez. Başka hiç bir amacımız yok ona göre 🙂 Öncelikle yeni bir WindowsGame projesi açın sayfa oluştuktan sonra sağda Solution Explorer penceresi olmalı eğer yoksa menüden Wiew’a tıklayın oradanda Solution Explorer’a böylece gözükecek. Neyse, genelde oyunda tek bir background(arka plan) olmadığından bu dosyalar ayrı bir klasörde tutulur. Bizde öyle yapalım, content sekmesine sağ tıklayıp add-new folder yapın ardından oluşan klasöre “Backgrounds” adını verin. Arkaplan olarak kullanacağınız resmi bulun png formatı iyidir, örneklerde bu kullanılmış genelde. Bulduğunuz dosyayı sürükle bırak mantığı ile programın içersindeki backgrounds klasörü üzerine atın. Böylece listeye eklenmiş olacak. Bu örnekte dosyanın adı Layer1.png ama kodun içersinde Layer1 olarak konulacak. Explorer da dosyanın üstüne tıklarsanız Name Asset: Layer1 yazar, oradaki özelliği kullanıyoruz dosyanın adresini değil.

Şimdi sıra geldi kodlamaya. Mantık şöyle demiştim: önce yükle sonra çiz. Bu yüzden Game1.cs isimli dosyamızı düzenleyelim. Load content kısmı şöyle olacak:

http://sudrap.org/paste/text/132/ şeklinde olacak bu kısım

Burada spriteBatch kısmı otomatik olarak oluşturulmuş halde geliyor. Biz sadece backgrounTest isimli bir nesne oluşturduk ve bu nesneye Backgrounds isimli klasördeki Layer1 isimli nesneyi yüklettik. Şimdi gelelim Draw kısmına:

http://sudrap.org/paste/text/131/ şeklinde olacak bu kısım

En üst ve alt satır otomatik olarak geliyor. Biz aradaki kızmı yazdık. Burada sahnemizi başlatıyoruz ardından arka planın pozisyonunu belirleyen “pos” nesnesini oluşturuyoruz. Sonra sahnemizin için backgroundTest nesnemizi yüklüyor ve pozisyonu ile default rengini belirliyoruz. Sonra sahneyi sonlandırıyoruz.(c#’da ne deniyor tam bilmiyorum isimlere takılmayın) spriteBatch’a bir şeyleri çizme görevini Begin ile verdik Draw ile görevi yerine getirdik End ile görevi bitirdik. Şimdi dosyayı kaydedip F5’e basalım.

Blogger içersinde c# kodları nasıl yazılır bilen varsa mail atsın: ceyhunalyesil@gmail.com bende başka bir yere yapıştırıp link vermek zorunda kalmam. İyi çalışmalar 😉

XNA Başlangıç Metotları

Visual Studio ile yeni bir proje başlattığımızda ana dosyamızın içersinde bir kaç metot var. Bu yazıda bu metotlardan bahsetmek istiyorum zira oyunu geliştirirken temelde bu metotları kullanıyoruz. Bu yazı hem yeni başlayanlara işin mantığı konusunda bir fikir verebilir. Bunun yanında Microsoft’un bizlere sunmuş olduğu örnekleri de incemekte fayda var ama o konu sonra.

PyGame yazılarını okumuş olanlar ya da başka bir platformda oyun programlayanlar için oldukça kolay gelecektir. Şimdi açtığımız Windows Game uygulamasında Game.Cs isimli dosyaya tıklayalım. Kullanılan sınıflar falan geçelim, isimlerinden belli zaten ne oldukları 🙂 ilk metodumuz şu satırda:

protected override void Initialize()

Initialize() metodu oyunu başlamaya hazır hale getirdiğimiz bölümdür. İlk ayarların yapıldığı bir kısım gibi düşünebiliriz burayı. Oyun başlamadan önce yüklenmesi gereken içeriği veya servisleri buradan yükleyebilirsiniz.

protected override void LoadContent()

LoadContent() metodu oyun için gerekli olan tüm objelerin yüklenmesini sağlar. Şu aşamada oyunu yüklemiş oluyoruz. PyGame’de sahneyi yüklediğimizi hatırlayın. Onun gibi bir şey.

protected override void UnloadContent()

UnloadContent() ise oyundan çıkış aşamasında uygulanan bir metotdur. Oyundan çıkarken kullanıcıya “emin misiniz?” şeklinde sorulan soruların eklendiği bir kısım diyebiliriz.

protected override void Update(GameTime gameTime)

Update() metodu ise oyun sırasında bir güncelleme yapmanızı sağlar. Kullanıcı ile etkileşim, veri girişi, ses çalma gibi aktiviteler için gerekli fonksiyonlar bu bölümde barındırılır. Bu oyun oynanırken çalışan bölümdür ne load edersiniz ne unload oyun içersinde zaman kontrolünü gameTime ile sağlarsınız.

protected override void Draw(GameTime gameTime)

Draw() metodu adından anlaşılacağı gibi çizimlerimizin yapıldığı kısımdır. Draw modülü vardı tey tey sattık Python’u da C# ile uğraşıyoruz hehe. Bunlar temel metotlardır arkadaşlar yeni proje açtığınızda bunlar hazır halde gelir. Platformer örneğinde olduğu gibi(XNA Developer Center üzerinden indirebilirsiniz) bunlara yardımcı çeşitli metotları bizlerde kendi oyunlarımız için geliştireceğiz. Çizim yeteneğim sıfıra yakın olduğundan sanırım ilerki yazılar bu bahsettiğim örnekler üzerinden ilerleyecektir.

WPFBrowser Application vs Silverlight

Visiual Studio üzerinde çalışırken bu neymiş diye bir bakıyım dedim. Web uygulamalarıda geliştirilebildiğini biliyodum ama bu kadar rahat olduğunu bilmiyordum. Programı kullandıkça daha da hayran oluyorum. WPFBrowser uygulamalarını kendimce silverlight ile karşılaştırmam gerekti. İkisininde benzer bir iş yaptığı düşünülebilir ki temelde öyle. İkiside XAML tabanlı ve browserda çalışmakta. İkisi arasında ki fark WPF’yi çalıştırmak için sisteminize .Net ortamını kurmuş olmanızın gerekmesi. Silverlight için player gibi bir eklenti kuruyorsunuz o kadar. Bu Silverlight’ı cross platfrom yaparken WPF’nin sadece windows yüklü makinelerde çalışması demek. Umursamayanlar olabilir ama ticari uygulamalar geliştiricek kişiler için bence Silverlight daha iyi bir seçenek. Dökümanı da sağlam hani 🙂

GmsPlay Versiyon 0.1

Programı geliştirirken esas amacım Tv yayınlarını izlettirmekti. Fakat tüm televizyonların bu yayınları özgürce dağıtmadıklarını öğrendikten sonra bu özelliği programdan kaldırdım ve onu sade bir shockwave görüntüleyiciye dönüştürdüm. Örnek olması açısından uygulamayı GPL ile yayınlıyorum.

Programı çalıştırmak için elbette .Net Framework’ü gerekmekte. Setup oluşturmakla uğraşmadım. Programı indirip içersindeki Deneme123 isimli dosyayı çalıştırmanız yeterli olacaktır.

Dosya açmak için sol üst köşedeki menüyü kullanabilirsiniz.

Proje sayfasına ulaşarak programı indirebilirsiniz.

C# adı – CTS Karşılığı -Açıklama- Max ve Min Aralık
sbyte System.Byte 8 bit işaretli tamsayı -128 : 127
short System.Int16 16 bit işaretli tamsayı -32.768 : 32.767
int System.Int32 32 bit işaretli tamsayı -2.147.483.648 : 2.147.483.647
long System.Int64 64 bit işaretli tamsayı -9.223.372.036.854.775.808 : -9.223.372.036.854.775.807
byte System.Byte 8 bit işaretsiz tamsayı 0 : 255
ushort System.UInt16 16 bit işaretsiz tamsayı 0 : 65.535
uint System.UInt32 32 bit işaretsiz tamsayı 0 : 4.294.967.295
ulong System.UInt64 64 bit işaretsiz tamsayı 0 : 18.446.744.073.709.551.615
float System.Single 32 bit tek kayan sayı +yada – 1,5*10-45 : + ya da – 3,4*1038
double Sytem.Double 64 bit çift kayan sayı +yada – 5*10-324 : + ya da – 1,7*10308
decimal System.Decimal 128 bit ondalıklı sayı +yada – 1,5*10-28 : + ya da – 7,9*1028
bool System.Boolean true ya da false
char System.Char Karakterleri temsil eder 16 Unicode karakterleri

not
cts: common type system, not etmiş olayı lazım oluyor

XNA Game Studio 3.0

XNA yazısından sonra meraktan çatladım ve kotamın dolu olmasına rağmen Game Studio 3.0’ı indirdim. İlk olarak express edition’ı indirmem gerektiğini düşüp hata ettim çünkü o VS 2005 Express Edition içinmiş oysa bendeki 2008. Bu bir eklenti gibi düşünülebilir, var olan visual studionuza gerekli paketler yükleniyor. Bunun yanı sıra ses kontrol programları gibi çeşitli araçlarda mevcut. Developer Center da çeşitli örnekler mevcut, bu örnekleri kullanarak olayın mantığını kavrayabilir ve kendi oyunumuzu geliştirebiliriz. Ben şimdilik 2D olayları nasıl işliyor ona bakıyorum 🙂 Nasıl oyunlar yapılabileceği konusunda bir ss ekledim. Size iyi bir fikir verebilir.

XNA Nedir?

XNA nedir? Yenir mi içilir mi? Bu yazıda sorulara cevap vermeye çalışacağım. C#’a başlamam ile birlikte neler yapabileceğimi araştırmaya başladım. Bir önceki yazıda resimde gördüğünüz proje gibi masaüstü uygulamaları, db uygulamaları geliştirilebileceği gibi C# ile oyun da yazabilirmişiz. C++’a göre birazcık yavaş kalıyor diyorlar ama Python kadar değildir, PyGame yazılarında bahsetmiştim bu konuda. Neyse geçeyim ne olduğu konusuna. XNA kelimesinin açılımı:

XNA’s Not Acronymed – XNA Bir Kısaltma Değil!

Şaka değil gerçek. Bu sadece bir isim, kısaltma değil. XNA’yı bir çatı olarak tanımlayabiliriz. .Net alt yapısını ve C# dilini kullanıyor ve PC ve XBox 360 için oyun geliştirmeye yarayan çeşitli araçları barındırıyor. PC derken tabiki Windows işletim sistemi kullanan bilgisayarlardan bahsediyorum, XNA kullanarak yazdığınız bir oyunu çalıştırmak için bilgisayarda hem XNA hem de .Net 2.0’ın kurulu olması gerekiyor.

2004 yılında San Jose kentinde yapılan oyun geliştiricileri konferansında duyurulan XNA günümüze kadar gelişmesine devam etti. Microsoft XNA Game Studio adlı bir araç bile çıkardı ve sıkı durun Express versiyonu ücretsiz olarak indirilebiliyor! PC için yapılan oyunlarda herhangi bir şart aranmazken Xbox için oyun yaparken kulüp üyeleği almanız gerekiyor(4 aylık 49, senelik 99 dolar). Bunun dışında dediğim gibi pc oyunları için herhangi bir lisans ücreti ödemeniz gerekmiyor. Bir sürü kütüphaneyi kullanabiliyor ve Microsoft’un kurduğu Developer Center sayesinde dökümanlara ve örneklere ücretsiz bir şekilde ulaşabiliyorsunuz.

Bu konuda fazla Türkçe kaynak olmadığı için bu yazıyı yazıyorum. Şuan XNA ile bir şeyler yapmaya çalışmıyorum ama “belki” önümüzde ki ay ya da Nisan ayında bu konu ile ilgili çeşitli yazılar yazmaya başlar ve “belki” ufak bir oyun yazmaya çalışabilirim! O zamana kadar önceliğim başladığım projeyi bitirip ilk versiyonunu dağıtmak.

C# Kontrol İfadeleri

Kitaptan okurken arada göz atmak için bulunsun dedim. Bir yere not edip arada bakmak gerekiyor.

if(koşul) ifade;
else ifade;

switch(deyim){
case sabit1:
ifade sekansı
break;
case sabit2:
ifade sekansı

default:
ifade sekansı
break; //döngüden çıkmak için kullanılıyor

for(başlangıç;koşul;iterasyon)ifade;

while(koşul)ifade;

do{
ifadeler;
while(koşul);
}