XNA Oyun Programlama Platformu Hakkında

Günümüzde tüm yazılım sektörü gibi oyun dünyası’da çok hızlı gelişmeye ve şekillenmeye başladı. Artık insanlar yeni bir oyun için aylarca beklemeye tahammül etmiyor.

Böyle zamanlarda yapılması gereken ürünü mümkün olan en hızlı yollardan tüketiciye ulaştırmaktır. Bu durumun farkına varan oyun evleri birkaç yıl öncesine göre çok daha kısa sürelerde yeni oyun üretmenin yollarını aramaya başladı.

2004 yılında Microsoft, Indie olarak kısalttığımız Independent Game Developer‘lar (yani Bağımsız Oyun Geliştiriciler) için hızlı oyun geliştirme platformunu duyurdu ve 2006 yılının ikinci yarısında da XNA Game Studio ismi ile yayınladı. 2007 yılından beri oyun evleri ve bağımsız geliştiriciler XNA Framework ile hem 2 boyutlu hem de 3 boyutlu oyunlar geliştiriyorlar.

XNA, mümkün olan en az kod değişikliği ile şu platformlar için oyunları geliştirmemize yardımcı olur;

  • Windows üzerinde çalışan 2 boyutlu ve 3 boyutlu oyunlar
  • Microsoft’un oyun platformu olan XBOX üzerinde çalışan 2 boyutlu ve 3 boyutlu oyunlar
  • Microsoft’un mobil platformu olan Windows Phone ailesi üzerinde çalışan 2 boyutlu ve 3 boyutlu oyunlar

Özellikle mobil oyunların son yıllarda izlediği trende bakacak olursak, oyun geliştiriciler için çok güzel bir pazar olduğunu farkederiz.

XNA sayesinde, çok az kod değişikliği yaparak birden fazla platforma oyunlarımızı yayınlayabiliyoruz.

Üstelik oyun geliştirmeye başlarken ihtiyaç duyacağımız tüm araçlar (XNA Framework’un kendisi, Visual Studio’nun Express sürümü) Microsoft tarafından ücretsiz olarak sağlanıyor.

Tüm maddeleri özetleyecek olursak, XNA ile başlangıç maliyetleri olmadan, Microsoft tarafından desteklenen tüm platformlara hem 2 boyutlu, hem 3 boyutlu oyun geliştirebiliyoruz.

Neden XNA tercih etmeliyiz?

Geliştirici açısından düşünecek olursak, XNA, .Net Framework temelleri üzerine kurulduğu için, C#, VB.Net ve C++.Net gibi .Net ailesi diller ile geliştirilebiliyor.

Eğer zaten .Net dünyasına ve .Net ailesi dillere aşina iseniz, XNA ile oyun geliştirmeye hemen başlayabilirsiniz.

Üstelik XNA’de kazandığınız tecrübeler ve .Net dillerinde kazandığınız tecrübeler, birleşerek tüm yazılım geliştirme yeteneklerinizi olumlu yönde etkileyecektir.

Ayrıca Oyun Yaşam Döngüsü dediğimiz, bir oyun’un başlatıldığı andan sonlandırıldığı ana kadar geçen tüm süreçler XNA içerisinde çok net bir şekilde tanımlanmıştır.

Haliyle XNA ile oyun geliştirmeye başlamanın yanı sıra, XNA ile oyun geliştirme sürecinin kendisi de en az efor ile öğrenilecek kadar kolaylaştırılmıştır.

XNA ile geliştirilen oyunlar, minimum efor ile, Windows - XBOX - Windows Phone platformlarına taşınabiliyor. Böylece hedef kitlemizi artırabilir, oyunumuzun çok daha büyük kitlelere ulaşmasını sağlayabiliriz.

Çok Oyunculu oyunlar geliştirme süreçleri de XNA sayesinde çok kolaylaştırılmıştır. XNA Framework, Yerel ağ üzerinden tek sunuculu veya tüm oyuncuların sunucu olduğu senaryo ve internet üzerinden tek sunuculu oyunların yazılması için hazır yapılar barındırmaktadır.

Tüm maddeleri özetleyecek olursak, .Net ailesi dil biliyor olmak XNA ile oyun geliştirmeye başlamak için büyük avantajdır.

Yazılım geliştirme ve oyun geliştirme tecrübelerinin transfer edilebiliyor olması aynı şekilde büyük avantajdır. Çok oyunculu oyunların yazılması için kolay kullanıma sahip sınıflar framework ile birlikte gelmektedir.

Ocak 2013 INETA TechDays Etkinliği

26 Ocak 2013 tarihinde Microsoft Türkiye Ofisinde INETA TechDays etkinliği yaptık.

Windows Phone 8 konulu oturumuma katılan herkese teşekkür ederim.

INETA TechDays Etkinliği, Microsoft Türkiye, Windows Phone 8 Oturumu

Ocak 2013 Hacettepe Üniversitesi Windows Phone Etkinliği

INETA Etkinlikleri kapsamında 05 Ocak 2013 ve 06 Ocak 2013 tarihlerinde Hacettepe Üniversitesi Ankara‘da Windows Phone 8 konulu etkinlik yaptık.

Etkinliğe katılan öğrenci arkadaşlara teşekkür ediyorum.

Hacettepe Üniversitesi Ankara, Windows Phone 8 Etkinliği

Windows Phone 8 için Share Task'larının kullanımı

Windows Phone 8 için share task‘ları kullanacağımız bir uygulama geliştireceğiz.

Bu uygulamanın geliştirilmesi sırasında ShareStatusTask, ShareLinkTask, ShareMediaTask, CameraCaptureTask gibi yapıları kullandığımız kodlar yazacağız.

Öncelikle ShareTasks isimli yeni bir Windows Phone App projesi oluşturalım;

Share Tasks Windows Phone Application Project

Proje oluşturduktan sonra gelen Windows Phone Platform versiyon seçim penceresinde Windows Phone OS 8.0 seçeneğinin seçili olduğundan emin olmalıyız;

Windows Phone 8.0 SDK

Ekran tasarımı için MainPage.xaml dosyasını aşağıdaki gibi güncelleyelim;

<Grid x:Name=”LayoutRoot” Background=”Transparent”> <Grid.RowDefinitions> <RowDefinition Height=”Auto” /> <RowDefinition Height=”Auto” /> <RowDefinition Height=”Auto” /> <RowDefinition Height=”Auto” /> <RowDefinition Height=”Auto” /> <RowDefinition Height=”Auto” /> <RowDefinition Height=”Auto” /> <RowDefinition Height=”Auto” /> <RowDefinition Height=”Auto” /> <RowDefinition Height=”Auto” /> <RowDefinition Height=”Auto” /> </Grid.RowDefinitions>

&lt;Grid.ColumnDefinitions&gt;
    &lt;ColumnDefinition Width="125"  /&gt;
    &lt;ColumnDefinition Width="*" /&gt;
&lt;/Grid.ColumnDefinitions&gt;

&lt;TextBlock Text="SHARE TASKS" Style="{StaticResource PhoneTextNormalStyle}" Margin="15,0" Grid.Row="0" Grid.ColumnSpan="2" /&gt;

&lt;TextBlock Text="share status" Margin="10,0,0,10" Style="{StaticResource PhoneTextExtraLargeStyle}" Grid.Row="1" Grid.ColumnSpan="2" /&gt;
&lt;TextBlock Text="STATUS" Margin="30,20,0,0" Style="{StaticResource PhoneTextTitle3Style}" Grid.Row="2" Grid.Column="0" /&gt;
&lt;TextBox Margin="0,0,0,0" Name="txtShareStatus_Status" Grid.Row="2" Grid.Column="1" /&gt;
&lt;Button Content="PAYLAŞ" Name="btnShareStatus" Margin="0,0,0,0" Grid.Row="3" Grid.ColumnSpan="2" Click="btnShareStatus_Click" /&gt;

&lt;TextBlock Text="share link" Margin="10,0,0,0" Style="{StaticResource PhoneTextExtraLargeStyle}" Grid.Row="4" Grid.ColumnSpan="2" /&gt;
&lt;TextBlock Text="TITLE" Margin="30,20,0,0" Style="{StaticResource PhoneTextTitle3Style}" Grid.Row="5" Grid.Column="0" /&gt;
&lt;TextBox Margin="0,0,0,0" Name="txtShareLink_Title" Grid.Row="5" Grid.Column="1" /&gt;
&lt;TextBlock Text="MESSAGE" Margin="30,20,0,0" Style="{StaticResource PhoneTextTitle3Style}" Grid.Row="6" Grid.Column="0" /&gt;
&lt;TextBox Margin="0,0,0,0" Name="txtShareLink_Message" Grid.Row="6" Grid.Column="1" /&gt;
&lt;TextBlock Text="LINK URL" Margin="30,20,0,0" Style="{StaticResource PhoneTextTitle3Style}" Grid.Row="7" Grid.Column="0" /&gt;
&lt;TextBox Margin="0,0,0,0" Name="txtShareLink_Url" InputScope="Url" Grid.Row="7" Grid.Column="1" /&gt;
&lt;Button Content="PAYLAŞ" Name="btnShareLink" Margin="0,0,0,0" Grid.Row="8" Grid.ColumnSpan="2" Click="btnShareLink_Click" /&gt;

&lt;TextBlock Text="share media" Margin="10,0,0,0" Style="{StaticResource PhoneTextExtraLargeStyle}" Grid.Row="9" Grid.ColumnSpan="2" /&gt;
&lt;Button Content="KAMERA ÇEK ve PAYLAŞ" Name="btnShareMedia" Margin="0,0,0,0" Grid.Row="10" Grid.ColumnSpan="2" Click="btnShareMedia_Click" /&gt; &lt;/Grid&gt;</pre>

Butonlara basıldığında tetiklenecek method’ları MainPage.xaml.cs dosyasına ekleyelim;

private void btnShareStatus_Click(object sender, RoutedEventArgs e)
{
    var Status = txtShareStatus_Status.Text;

    ShareStatusTask task = new ShareStatusTask();
    task.Status = Status;

    task.Show();
}

private void btnShareLink_Click(object sender, RoutedEventArgs e)
{
    var Title = txtShareLink_Title.Text;
    var Message = txtShareLink_Message.Text;
    var Url = txtShareLink_Url.Text;

    ShareLinkTask task = new ShareLinkTask();
    task.Title = Title;
    task.Message = Message;
    task.LinkUri = new Uri(Url, UriKind.RelativeOrAbsolute);

    task.Show();
}

private void btnShareMedia_Click(object sender, RoutedEventArgs e)
{
    CameraCaptureTask task = new CameraCaptureTask();
    task.Completed += CameraCaptureTask_Completed;

    task.Show();
}

private void CameraCaptureTask_Completed(object sender, PhotoResult e)
{
    ShareMediaTask task = new ShareMediaTask();
    task.FilePath = e.OriginalFileName;

    task.Show();
}


ShareStatusTask, ShareLinkTask, ShareMediaTask sınıflarından yeni bir örnek oluşturulup, Show() method'u çağırıldığı zaman, telefonuna bağlı hesaplardan oluşan *bir liste* ekrana gelir ve *seçilen hesap* üzerinden *paylaşım gerçekleştirilir*.

Uygulamayı çalıştırdığımızda ve Paylaş butonlarından birine bastığınızda aşağıdaki aşağıdaki ekran görüntülerini görüyor olmamız lazım;

![Share Tasks Windows Phone 8 Application](/assets/uploads/2012/12/ShareTasks3.png) ![Share Tasks Windows Phone 8 Application](/assets/uploads/2012/12/ShareTasks4.png)

Projenin kodlarını buradan indirebilirsiniz.

Windows Phone 8 Static Resource Text Style listesi

Windows Phone 8 için static resource text style listesini görebileceğimiz bir uygulama geliştireceğiz.

Öncelikle TextStyles isimli yeni bir Windows Phone App projesi oluşturalım;

Text Styles Windows Phone Application Project

Proje oluşturduktan sonra gelen Windows Phone Platform versiyon seçim penceresinde Windows Phone OS 8.0 seçeneğinin seçili olduğundan emin olmalıyız;

Windows Phone 8.0 SDK

MainPage.xaml dosyasını aşağıdaki gibi güncelleyelim;

<Grid x:Name=”LayoutRoot” Background=”Transparent”> <Grid.RowDefinitions> <RowDefinition Height=”Auto”/> </Grid.RowDefinitions>

&lt;StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"&gt;
    &lt;TextBlock Text="TEXT STYLE 1" Style="{StaticResource PhoneTextBlockBase}" Margin="12,0"/&gt;
    &lt;TextBlock Text="TEXT STYLE 2" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/&gt;
    &lt;TextBlock Text="TEXT STYLE 3" Style="{StaticResource PhoneTextSubtleStyle}" Margin="12,0"/&gt;
    &lt;TextBlock Text="TEXT STYLE 4" Style="{StaticResource PhoneTextTitle1Style}" Margin="12,0"/&gt;
    &lt;TextBlock Text="TEXT STYLE 5" Style="{StaticResource PhoneTextTitle2Style}" Margin="12,0"/&gt;
    &lt;TextBlock Text="TEXT STYLE 6" Style="{StaticResource PhoneTextTitle3Style}" Margin="12,0"/&gt;
    &lt;TextBlock Text="TEXT STYLE 7" Style="{StaticResource PhoneTextSmallStyle}" Margin="12,0"/&gt;
    &lt;TextBlock Text="TEXT STYLE 8" Style="{StaticResource PhoneTextLargeStyle}" Margin="12,0"/&gt;
    &lt;TextBlock Text="TEXT STYLE 9" Style="{StaticResource PhoneTextExtraLargeStyle}" Margin="12,0"/&gt;
    &lt;TextBlock Text="TEXT STYLE 10" Style="{StaticResource PhoneTextGroupHeaderStyle}" Margin="12,0"/&gt;
    &lt;TextBlock Text="TEXT STYLE 11" Style="{StaticResource PhoneTextContrastStyle}" Margin="12,0"/&gt;
    &lt;TextBlock Text="TEXT STYLE 12" Style="{StaticResource PhoneTextAccentStyle}" Margin="12,0"/&gt;
    &lt;TextBlock Text="TEXT STYLE 12" Style="{StaticResource PhoneTextHugeStyle}" Margin="12,0"/&gt;
&lt;/StackPanel&gt; &lt;/Grid&gt;

StaticResource olarak kullanabileceğimiz ThemeStyle‘ların ve TextStyle‘ların listesine MSDN‘de yer alan Theme Resources for Windows Phone sayfasından erişebiliriz.

Uygulamayı çalıştırdığımızda aşağıdaki ekran görüntüsünü görüyor olmamız lazım;

Text Styles Windows Phone 8 Application

Projenin kodlarını buradan indirebilirsiniz.

Engin Polat hakkında

Chief Architect, Microsoft RD, Microsoft MVP

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 458

Creative Commons Lisansı