Texture | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar texture

Unity3D ile oyun geliştirme ortamını tanımaya başlamak

23 January 2016 Yorum yapılmamış

Unity3D cross-platform bir oyun geliştirme aracıdır. Unity3D‘yi kullanarak geliştirdiğimiz oyunu çok basit bir şekilde Windows, Android, iOS, Linux, Xbox, Playstation, vs. ortamlarına yükleyebiliriz.

logo

Öncelikle http://unity3d.com/get-unity adresinden Unity3D kurulum dosyasını indiriyoruz ve bilgisayarımıza kurulumu gerçekleştiriyoruz.

İsmi Unity3D olmasına rağmen, 4.3 versiyondan itibaren 2D oyunlar da yapabilmemize olanak tanıyan yeni yapılar içeriyor. Böylece 2D oyunları da Unity3D‘yi kullanarak yapabiliyoruz.

Unity3D‘yi açıp, hemen yeni bir oyun projesi oluşturalım;

Pencerenin üstünde yeralan New butonuna tıklıyor, gelen ekrandaki alanları doldurarak oyun projemizi oluşturuyoruz.

00

Unity3D editörü karşımıza geliyor. Editör‘ün içinde yeralan panelleri istediğimiz gibi özelleştirebiliyoruz. Böylece oyun projesindeki dosyaları pencerenin altına değil soluna yerleştirmemiz veya oyun sahnesini küçültüp oyunun önizlemesini ekrana koymamız mümkün.

01

Unity3D Editörünün panellerine hızlıca bakalım;

  • Hierarchy: Oyun sahnesinde bulunan tüm nesnelerin listesinin gözüktüğü panel. Yeni bir oyun projesi oluşturduğunuzda bu panel’de Main Camera nesnesi gözükür. Eğer sahneye Cube, Sphere, Cylinder, Spotlight, vs gibi nesneler ekleyecek olursak, bu panel’de listelenecekler. Bu panel’de listelenen nesneleri sürükleyip diğer bir nesnenin içine bırakarak nesneleri birbirleri ile ilişkilendirebilir ve parent/child yapısı oluşturabiliriz.
  • Scene: Oyun alanını bu alanda görür, modeller, tasarlarız. Herhangi bir nesneyi sahnede bulmak için Hierarchy panelindeki ismine çift tıklamamız yeterli.
  • Project Assets: Oyun içerisinde kullanabileceğimiz herşey (Texture, 3D Model, Script, vs) bu panelde listelenir. Bu panelde yeralan dosyalar oyun projesinin diskteki dizini ile birebir aynıdır. Oyun projesinin dizininde yeni bir dizin veya dosya oluşturursak aynı anda Project Assets panelinde gözükmeye başlar.
  • Inspector: Hierarchy veya Scene panellerinden seçilen nesne veya nesnelerin özelliklerini görebildiğimiz ve değiştirebildiğimiz paneldir. Inspector paneli sayesinde bir nesnenin oyun sahnesindeki konum, boyut, renk, kaplama, vs gibi özelliklerini görebilir, değiştirebiliriz.

Unity3D‘de bir oyun sahnesi oyuncuya kamera’nın bakış açısından gösterilir. Böylece ekrandan daha büyük alanlarda hareket etmek için aslında kamera’yı hareket ettiririz. Unity3D bir oyun projesi oluşturduğumuzda bizim için sahneye bir tane kamera (Main Camera) ekler. İstersek biz de sahneye ikinci veya üçüncü kameralar ekleyebiliriz.

02

3D oyunlarda kamera’nın Projection özelliği (kamera seçili iken Inspector panelinde görüntülenir) Perspective seçili iken, 2D oyunlarda kamera’nın Projection özelliği Ortographic seçili olmalıdır.

03

Eğer istersek Hierarchy panelinde görüntülenen nesnelerin isimlerini değiştirebiliriz, bunun için ilgili nesnenin üzerine sağ tuşla tıklayıp Rename menüsünü seçmemiz yeterli. Böylece Directional Light nesnesinin ismini Güneş olarak veya Cube nesnesinin ismini Sandık olarak değiştirebiliriz.

04

Unity3D‘de sahnede olan bir nesneye kendi özelliklerinin dışında yeni özellikler eklemek istiyorsak Inspector panelinde bulunan Add Component butonuna tıklamalı ve gelen listeden eklemek istediğimiz özelliğe göre bir öğeyi seçmeliyiz. Örneğin; Cube nesnemizin yerçekimi kanunlarına uymasını istiyorsak nesneye Rigidbody component’ını eklemeliyiz.

05

Eğer sahneye yeni nesneler eklemek istiyorsak basitçe Hierarchy panelinde boş bir yere sağ tuşla tıklayıp 3D Object menüsü altından Cube, Sphere, Cylinder, vs seçerek sahneye ekleyebiliriz.

06

Hierarchy panelinde sahneye eklediğimiz birden fazla nesneyi başka bir nesnenin içerisine sürükleyip bırakarak bir bütün olarak ele alınmalarını sağlayabiliriz. Böylece birlikte hareket ettirilip, birlikte döndürülebilir veya boyutlandırılabilirler.

07

Project Assets paneli içerisinde boş bir alana sağ tuşla tıklayıp oyun projesine yeni dizin, yeni script dosyası, yeni materyal, vs eklemek mümkün.

08

Genelde Project Assets panelinde ismi Scenes olan bir dizin oluşturulur ve oyun’daki sahneler bu dizine kaydedilir.

09

Eğer aktif sahneyi oynamak istiyorsak Unity3D editörü ekranının üstünde yeralan başlat (oynat) butonuna tıklanır ve oyun kamera’nın bakış açısından oynanmaya başlanır.

10

Oyuna eklemek istediğimiz çeşitli nesneler veya özellikler ile ilgili daha önce oluşturulmuş paketleri oyuna Assets menüsü altında bulunan Add Packages alt menüsü içerisinden ekleyebiliriz. Böylece oyuna hızlı bir şekilde ağaçlar, deniz, çeşitli arabalar, efektler veya duman / alev / havai fişek gösterisi, vs ekleyebilmemiz mümkün.

11

Windows Phone uygulamalarında EnableFrameRateCounter özelliği

26 April 2013 Yorum yapılmamış

Windows Phone uygulamaları geliştirirken elimizin altında basit ama önemli performans ipuçlarının olması işimize yarar.

EnableFrameRateCounter özelliğini açmak

  • Render Thread FPS
  • User Interface Thread FPS
  • Texture Memory Usage
  • Surface Counter
  • Intermediate Texture Counter
  • Screen Fill Rate

değerlerinin ekranda gözükmesini sağlar;

Bu değerler şu anlamlara gelir;

Render Thread FPS
Ekran’ın güncellenme sıklığı. 60 fps civarı güncelleme hızı son kullanıcıya iyi bir deneyim sunacaktır, 30 fps ve üzeri ise kabul edilebilir bir deneyim sunacaktır. Ekran güncelleme hızı 30 fps altınaa düştüğünde bu değer kırmızı olacaktır, dikkat etmek lazım!

User Interface Thread FPS
O esnada çalışan UI thread’in güncellenme sıklığı. Data Binding, animasyonlar ve property change notifications bu thread’de işletilirler. Eğer 15 fps altına düşerse bu değer kırmızı olacaktır, dikkat etmek lazım!

Texture Memory Usage
Çalışan uygulamada kullanılan Texture’ların kullandığı grafik hafıza miktarı

Surface Counter
Graphical Processing Unit (GPU) tarafından işlenecek yüzey miktarı

Intermediate Surface Counter
Önbelleklenmiş bellekler dahil işlenecek yüzey miktarı

Screen Fill Rate
Ekranda güncellenecek piksel miktarı. 1 değeri ekran çözünürlüğü kadar anlamına geliyor, örneğin 480×800. Eğer 1’in altına düşerse veya 2’nin üzerine çıkarsa kırmızı olur, dikkat etmek lazım!

App.xaml.cs dosyasında yeralan

Application.Current.Host.Settings.EnableFrameRateCounter = true;

satırı ile performans ipuçlarını ekranda göstermeye başlayabiliriz.

Uygulamanın son halini MarketPlace‘e göndermeden önce performans ipuçlarının ekranda gözükmediğinden emin olmamız gerekiyor.

Yukarıda ekranın bir parçasının gözüktüğü örnek uygulama için MainPage.xaml dosyasını aşağıdaki şekilde güncellemek gerekiyor;

<phone:PhoneApplicationPage
	x:Class="EnableFrameRateCounterTest.MainPage"
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
	xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
	xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
	xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
	mc:Ignorable="d"
	FontFamily="{StaticResource PhoneFontFamilyNormal}"
	FontSize="{StaticResource PhoneFontSizeNormal}"
	Foreground="{StaticResource PhoneForegroundBrush}"
	SupportedOrientations="Portrait" Orientation="Portrait"
	shell:SystemTray.IsVisible="True">

	<phone:LongListSelector Name="lstMessages" />

</phone:PhoneApplicationPage>

MainPage.xaml.cs dosyasında aşağıdaki değişiklikler yapılmalı;

public MainPage()
{
	InitializeComponent();

	var messageList = new List<string>();

	for (int iLoop = 0; iLoop < 150; iLoop++)
	{
		messageList.Add("Long message line #" + iLoop);
	}

	lstMessages.ItemsSource = messageList;
}