Showing posts with label C#. Show all posts
Showing posts with label C#. Show all posts

Thursday, September 26, 2013

Kinect ve İlk WPF Uygulaması - Derinlik Algılayıcı - [Proje]

Herkese merhaba, 1 yıldan beri Kinect teknolojisini takip ediyorum. Uzun zamandır bir Kinect alıp aklımdaki projeleri uygulamaya geçirmek istiyordum. Ve yaklaşık 1,5 ay önce çok uygun bir fiyata Kinect buldum. Daha önce duymayanlar için kısaca tanıtmak gerekirse Kinect ya da Project Natal, Microsoft'un, Xbox 360 platformu için geliştirdiği ve herhangi bir uzaktan kumanda ya da kontrol aygıtı olmadan oyun oynama imkanı veren alet. İlk olarak 4 Kasım 2010'da, Kuzey Amerika'da satışa sunulmuştur.

Projenin amacı bilgisayar ortamında herhangi bir kontrol çubuğu veya kumanda kullanmadan, sadece el hareketleriyle oyun oynayabilmektir. Bunun yanında ses de ayrı bir işletimi için geçerlidir. Kinect sisteminin el, kol hareketlerini algılaması ise kızılaltı ışın yayan projektörlerle gerçekleşiyor. Bu ışınlar görünmüyor. Işınların elde ettiği veriler, CMOS algılayıcılarında komuta çevriliyor. Bu sayede oyuna komut gidiyor. İşletim sisteminin kalitesinin yanı sıra bu komutlar bir saniyeden çok daha kısa zamanda ulaşmaktadır. 3. boyut grafiğinde gerçekleşmesi gereken hızlı komutları ise bilgisayara ait olan yazılım sağlıyor. Yani Kinect, sadece komutları ulaştırmakla sorumlu bir aygıt.

Saturday, June 15, 2013

Oyunlarda Yapay Zeka - Artificial Intelligence for Battle City [Proje]

Bu yıl üniversitedeki son dönemim, hatta bu yazıyı yazarken diplomayı alıp mezun olamama yaklaşık 1 ay gibi kısa bir süre kaldı. Mezun oluyorum diye seviniyorum, ama buruk bir sevinç. Bir çok kişinin aksine üniversitede geçirdiğim yılları özleyeceğim. Normalde geçmiş yıllardan aldığım fazladan dersler ile kredimi ziyadesiyle doldurmuştum. Aslında bu hazırlıkların hepsi son yılımın çok rahat geçmesi için yapılan yatırımlardı. Ancak geçmiş yılların yoğunluğunun verdiği alışkanlık ya da açılan seçmeli derslerin cazibesinden olsa gerek son yılım pek rahat geçmedi. Bilakis, diğer yıllara nazaran daha yoğun olduğu zamanlar bile oldu. Çünkü 1 adet bitirme projesinin yanında 2 adet projeli ders aldım. Bu projeli derslerden birisi "SE 354" kodlu, "Oyunlarda Yapay Zeka" dersiydi. Ders ilk defa verilmekle birlikte, öğretim görevlisi, üniversiteye ilk başladığım sıralar okulumuzda asistanlık yapan ve SDL ile tanışmama vesile olan Kaya Oğuz hocamızdı. Pojemiz Unity oyun motoru üzerinde C# programlama dili ve Standart Unity kütüphanelerini kullanarak "Battle City" benzeri bir oyun yapmaktı. Aslında belli bir arayüz hocamız tarafından bize sağlandı. Bizim yapmamız gereken ise bu arayüz üzerinde bulunan tanklara yapay zeka yazmak idi. Arayüzden kastım, harita, harita üzerinde bulunan çeşitli eşyalar(silah, sağlık) ve 4 tane tank bulunmaktaydı. Daha detaylı bilgi projenin anasayfasında mevcuttur. Aslında oyunun tamamını hocamız yazmış, sadece tanklar için gerekli yapay zekanın yazılmasını bizden istemişti. Proje aşaması çok eğlenceliydi. Ancak bazı noktalarda insanın kafası karışabiliyordu. Sonsuz olasılıkları düşününce iş içinden çıkılmaz bir hal alıyordu.

Saturday, June 9, 2012

Knuckles Adventures - [Proje]

Herkese merhaba! Hazır yazın bol vaktim varken, bahsetmek istediğim diğer bir projede üniversite 3. sınıfta "SE 350" kodlu, "Oyun Programlama" dersinde Unity oyun motoru üzerinde C# programlama dili ve Standart Unity kütüphanelerini kullanarak bir arkadaşımla beraber yazdığım 2 boyutlu platform oyunu. Kısa ve klasik hikayemizdeki oyunun ana kahramanını hemen hemen hepiniz biliyorsunuz. Karakterimiz Knuckles. İşin bu kısmının tamamen farklı bir hikayesi var. Uygun bir vaktimde bu konuyuda sizinle paylaşmak istiyorum. Zira anlatacağım bazı şeyler disiplinler(branşlar) arası uyuşmazlığın projeyi götüreceği yer açısından önemi ile ilgili. Aslında oyunumuzun hikayesi çok farklıydı fakat kimi sebeplerden dolayı oyunun konusu ve akışı çok değişti bu yüzden oyunu çalıştırdığınızda oyunun ismini görmeyince şaşırmayın. Knuckles Adventures ismi ise şu an benim tarafımdan koyulmuş ismidir. Daha güzel isim önerilerine açık olduğumu belirterek oyunla ilgili ufak bilgiler vermeye devam ediyorum. Oyunumuzdaki temel amaç; ana karakterin türlü engeller içeren bölümleri geçerek kız arkadaşına ulaşması. Oyunda 5 farklı bölüm var. Her bölümde oyuncu engelleri aşarak hedefe ulaşmaya çalışıyor. Oyun içinde kullanıcı için arka planda bilgiledirici resimler de bulunmaktadır. Karakterimizi yön tuşları ile hareket ettiriyoruz. "Space" tuşu ile zıplayan karakter, herhangi bir kutunun yanına gelip "CTRL" tuşuna basınca kutuyu çekip, itebiliyor. Tekrar "CTRL" tuşuna basınca kutuyu bırakıyor. Oyunumuzda bir üst katlara geçmek için varolan asansörü çalıştırmak için ise, asansörün düğmesine "X" tuşu ile basmamız yeterli. Bu arada oyunumuzun mekanı olarak basit bir şantiye belirlemiştik. Ancak yaşanan bir takım sorunlar nedeniyle garip bir mekan ortaya çıktı. Bu oyun, diğer yaptığım oyunlara nazaran çok daha profesyonel ve görsellik açısından çok daha iyi. Oyun motoru kullanmak, yapacağımız işlerin gerçekten hafiflemesi anlamına geliyor. Bu noktada kodlamadan ziyade fikir ve tasarım ön plana çıkıyor. Oyun içinde kullandığımız sprite yukarıda da bahsettiğim gibi Knuckles karakteri, bunun dışında bazı ses dosyaları ve scriptler, bu oyunu(olurda) geliştirip ticari bir boyut kazandırmak isteyecek kişiler için sıkıntı yaratabilir. Bunun farkında olup paylaşacağım kaynak kodlarını ona göre yorumlarsalar herkes için daha iyi olur. Çok fazla uzatmadan oyunu resimler eşliğinde tanıtmak istiyorum.