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);
}

Windows XP Hizmetleri

Windows’a geçtiken sonra ince ayar yapmamıştım bilgisayara. Geçe gün aklıma bazı ayarları değiştirmek geldi ve aşağıda ki adımları uyguladım. Sizin bilgisayarınızda ne kullanılır bilmiyorum bu yüzden bunları uygulayıp uygulamamak size kalmış.

Başlat – Çalıştır düğmelerinden sonra “msconfig” isimli uygulamayı çalıştırdım. Ardından öncelikle hizmetler bölümüne geçtim ve aşağıdaki hizmetleri durdurdum. Kullanmadığım bu hizmetler gereksiz yere çalışıyordu.

Hata Bildirim Hizmeti
Olay Günlüğü
Hızlı Kullanıcı Değiştirme
Yardım ve Destek
Uzaktan Erişim Otomatik Bağlantı Yöneticisi
Uzaktan Erişim Bağlantı Yöneticisi
Uzaktan Kayıt Defteri
Akıllı Kart
Görev Zamanlayıcı
İkincil Oturum
Sistem Geri Yükleme Hizmeti
Otomatik Güncelleştirmeler
Kablosuz Sıfır Yapılandırma

Elbette işime yaramayan daha bir çok hizmet vardır ama ben bunlarla yetindim. Ardından başlangıç bölümüne geçtim ve yeni format atılmış bilgisayarda nelerin sistemi kastırdığına şahit oldum. O işleri hallettikten sonra anti virüs yazılımının otomatik güncelleştirmelerini kapadım. İnanın oyun oynerken o işin halledilmesini istemezsiniz. Daha sonra görüntü ayarlarıma geçtim. Masaüstüm zaten sade olduğundan ve kurulu bir temam olmadığından bir değişiklik yapmama gerek kalmadı. Eğer sizin bir temanız varsa ve çok görsel öğelere abanmışsanız sadeliği tercih etmenizi öneririm. Masaüstünde görünen her simge size kasış olarak geri dönecektir. Benim masaüstü resimlerimdende göreceğiniz üzere gayet derli toplu bir sistemim var. Buna rağmen çoğu zaman dosyalarımı çeşitli klasörlerde toplar hatta uzun süre kullanmayacağım verileri Cd’lere kaydederim. Ne olur ne olmaz hem yedek almış oluruz hemde boşuna yer kaplamalardan kurtuluruz.

PyS60 Konum Belirleme

Location Modülünü kullanarak pozisyon bilgilerimizi alabiliyoruz. Şimdilik bu modül sadece bir fonksiyona sahip, gsm_location() isimli bu fonksiyon şu şekilde kullanılabilir. Mobil ülke kodu, network kodu, bölge kodu ve telefon kimliği gibi bilgilere ulaşılır.

import location
print location.gsm_location()

PyS60 Audio Uygulamaları

Biraz zaman aldı yazının devam etmesi, farkındayım. Bunun sebebi pys60 dışında başka şeylerle uğraşmam. Bunların içinde işletme dersleri, oyunlar ve daha önce bahsettiğim çeşitli projeler var. Buraya yazı yazmıyorsam bilin ki o sıra PyS60 ile ilgilenmiyorumdur.

Eski telefonlarla yenileri ayıran başlıca özelliklerden birisi multimedya uygulamalarıdır. Eski telefonlarımızda resim görüntüleyemez ve karmaşık sesleri çalamazdık. S60 serisi telefonlar ile kavuştuğumuz bir çok özellikten bazılarını kullanmaya yarayan “audio” modülü hakkında bir kaç konuyu sizlerle paylaşacağım. Bu özelliklerden ilki “text to speach” olarak adlandırılan sizin yazdığınız yazıyı sesli olarak iletilmesidir. Yazdığınız yazı telefon tarafından okunur. Türkiye’de bize sunulan telefonlarda bu özelliğin olduğunu sanmıyorum(en azından ben karşılaşmadım) ama biz yinede not etmiş olalım, bakarsınız lazım olur. Bu özelliği kullanmak için auido modülünün say() fonksiyonunu kullanırız. Örnek olarak:

import appuifw
import audio

text = appuifw.query(u”yaz bisi:”, “text”)
audio.say(text)

İkinci özellikse mp3 ve midi dosyalarının çalınması. Mp3 türü dosyalar müzik dosyaları olarak kullanılırken, midi’ler genellikle zil sesi olarak kullanılır. Bu özelliği kullanmak için sound.open() ve sound.play() fonksiyonlarını kullanırız. Kullanım şekli play([times=1, interval=0, callback=None ])’dir times parçanın kaç kere çalınacağını gösterir. Callback’i önceki yazılarda örneklendirmiştik. Interval belirlenen süre parçaya ara verir. Örnek:

import audio

sound = audio.sound.open(“E:\xxxxx.mp3”)
def oynat():
^^^^sound.play()
^^^^print”oynatmaya basladik”

Not: “^^^^” işaretini arada dört karakter boşluk olduğunu belirtmek için kullandım.

Sound sınıfının play ve open fonksiyonlarının yanında stop, recort, max_volume, set_volume, state gibi fonksiyonları da vardır. Bu fonksiyonların listesini daha önce vermiş olduğum resmi dökümandan edinebilirsiniz. Kullanımları aynı olduğu için teker teker açıklamıyorum ama özellikle record fonksiyonu işinize yarayabiliceğinden işten kaytararak içinde çeşitli örnekler olan bir sitenin adresini veriyorum.

Kolay gelsin

Yapay Zeka Sıkıntısı

Kafam çok bozuldu çıktım tüm facebook gruplarından. Siyasi yazı yazmama kararımdan dolayı(öyle bir şey mümkünse) matrix filminin ikincisinin ardından bilim kurgudaki yapay zeka sıkıntıları üzerine birşeyler karalıyım dedim. İyi ettim ki okuyorsunuz bu yazıyı…

İnsanlığın yarattığı yapay zekaların nasıl ona karşı ayaklandığının örneklerini verelim:
Matrix, i robot, terminator, battlestar galactica ve belki blade runner vb… Hepsi belli bir noktada insandan kopyalanmış duygusal tepkiler göstererek(korku, korunma, nefret, merak) yaratıcılarına karşı ayaklanan yapay zekaları konu alıyor. Sorunun temelinde yaratıcısına benzeme arzusu yatıyor. Düşünün insanoğluda aynı çaba içersinde değil mi? Can veriyoruz, can alıyoruz, kendimizi tanrısal güçler bahşedilmiş halde hayal ediyoruz, herkesin bizi sevmesini bize saygı duymasını istiyoruz, süper kahramanlar yaratıp tüm hayallerimizi onun üzerinden gerçekleştirmeye çalışıyoruz, sanat eserlerini ortaya çıkarıyoruz(insanın bir sanat eseri olmadığını iddia edebilecek var mı?) ve son olarak tabiki yapay zeka ile uğraşıyoruz.

Kendimizi tanrılaştırmak için geliştirdiğimiz bu zekayı insana benzetmeye çalışıyoruz. Neden robotları insana benzetelim ki? Bunun altında ki sebep gerçekten sadece uyum sorununu gidermek mi? Amacımız bizimde bir insan yaratabileceğimizi göstermek, tanrı rolüne soyunmak.
Bunu yaptığımız için kendimizi eleştirme hakkını kendimde görmüyorum, sadece ne yaptığımızı belirtiyorum.

Gelelim işte hikayelerimizde yaşanan sıkıntıların kaynağına. İnsan eliyle yaratılmış ve insanı kopyalayan yapay zeka bir noktadan sonra isyan eder. Evet, çünkü insanında yaptığı ilk hata isyan etmek olmuştur. Emre itaatsizlik ve cennette bye bye! İnsan ürünü yapay zeka dışlanır belki yok edilmeye çalışılır, işte bu noktada iki tarafta korkuya kapılmıştır(insan-yapay zeka) birbirlerine saldırmaya başlar ve hikayelerde genellikle insanlık kaybeder. Peki sonra ne olur? Bize anlatılan direnişin hikayesidir ama karşı tarafa hiç bakılmaz. Yapay zekanın amacı nedir? Tüm insanlığı yok ettikten sonra ne olacaktır? Bu soruların bir cevabı var mıdır?

Yapay zeka kendine bir vücut oluşturur. Ardından insana benzemeye çalışır. İşte o yaratıcıya benzeme arzusu! Sonunda insanın şeklini kopyalar; organik yapılar üzerinde çalışır belki canlı birşeyler yaratabilecek, birşeylerin tanrısı olacaktır! İnsanlıkla olan savaşında ona benzemesi faydasını gösterir, aralarına sızar böylece daha fazla veri alarak daha iyi kopyalama yapar. Hikayeler devam etse insanlığın tamamen ortadan kalktığını görebiliriz. Peki sonra ne olur?

İnsanlık yok olmuş, yapay zeka gezegene hüküm sürmeye başlamıştır, karşısında bir düşman olmadığı için amaçsız kalmıştır. Araştırmalarına devam eder ve daha gelişmiş bir yapay zeka üretir, bu arada kendi toplumsal yapısını kurmuştur bile. Bir gün eserleri onlara ihanet eder ve savaş yeniden başlar.