Ekonomik Kriz ve Yeni Fırsatlar


Amerikada başlayan ve dünyaya yayılan kriz belki de yeni bir döneme girmemizi sağlayacak. Öncelikle firmaların bu kadar özgür bırakılamayacağı anlaşıldı. Prim, komisyon gibi kimi çıkarlar için firmaların kötü durumlarını gizlediği, bazı şeylerin görmezden gelindiği anlaşıldı. İnsanlar varolmayan paralarıyla çok büyük harcamalar yaptılar ve sıkıştıklarında herşeylerini kaybettiler. Burada tek suçlu kriz değil. Taksitle ev alıp daha taksidini bitirmediği evin senetleriyle oyun oynayan birisi banka batıp işten çıkarılınca emekliliği dahil herşeyi kaybetmişse suçlu olarak sadece banka ile işçisini işten çıkaran firmayı gösteremeyiz. Bunun yanında AIG’de yaşanan saçmalıklardan sonra devletlerin daha sert bir yaklaşım sergilemesinin gerekli olduğuda ortaya çıktı.

Başbakanın beceriksizler batıyor açıklaması kısmen doğru. İş, hesap-kitap bilmeyen kişilerin yönetiminde ki şirketlerin iflas süreçleri bilenlere göre daha çabuk oluyor. Yanlış hatırlamıyorsam Bora Güngören buna benzer bir olayı IT sektörü için örneklendirmişti. Gerçekte işleri yürütmek o kadar zordurki sipariş vermeden önce yaptığınız ufak bir hesap hatası sizi bitirebilir. Esas nokta burada kendi hataları sonucu batanlarla kriz karşısında çaresiz kalanları ayırmakta. Beceriksiz patronlar batabilir ama onların işçilerinin bunda bir suçu yok. İşsizlik fonundan yapılan ödemeler bu insanları bir iki yıl idare eder. Eğer kriz 2009 yılında son bulmazsa(son bulmaya başlamazsa diyelim) bu fondaki paralarda suyunu çekmeye başlayacaktır.

Kriz ve Linux bağlantısını araştırırken gözüme Cédric Godart’ın röpörtajında ki bir söz ilişti,
OLinux: Do you think that economic crisis which also involves open source enterprises will be reflected in Linux and open source news sites?
Cédric Godart: Of course. The Linux market is not mature yet. These are bad times for the whole IT economy. Only a limited number of companies focusing on Linux and Open Source solutions may claim to be profitable. Time will tell.

Bizler sürekli kriz sayesinde lisanslara ödenen bedellerin insanlara fazla geleceğini, bu yüzden özgür yazılım kullanan firmaların sayısının artacağını düşünüyoruz. Oysa kriz özgür yazılımı destekleyen firmaları da(bizde devleti) vuruyor. Düşünün Ubuntu’nun arkasında ki en büyük güç ne? Pardus’a Tübitak’ın desteği olmasa proje ne kadar devam eder? Büyük olduklarını düşündüğümüz dağıtımlar, açık projeler sponsorlarını kaybederlerse neler olabilir? Benzer bir tartışma şurada yapılmış. Wikipedia gibi projelerin finansmanını sağlayan bağışçılar ortadan kalktığı takdirde devam edemeyeceği söylenen birisinin sözleri üzerine uzun uzun konuşulmuş. Her ne kadar insanlar içeriği gönüllü olarak sağlasada küresel krize girdiğimiz şu zamanlarda bu tarz oluşumların hayatlarını sürdürmesi oldukça zorlaşıyor. Yazıya burada ara veriyorum, buna kısa bir giriş diyelim. Daha çok kriz üzerine durdum devamında yeni fırsatlar üzerine bir beyin jimlastiği yapacağım. İşletme derslerine çalışınca böyle yönetim süreçleri hakkında yazasım geliyor.

Bir sonraki yazıda görüşmek dileğiyle… Öptüm 😀

GPS Takip Sistemleri

İki güzel örnek var bu konuda bulabildiğim. Kodları açık olan. Birisi Open GPS Tracker diğeri OpenDMTP. GPS takibi ne işe yarar? Öncelikle bu sistem mobil hizmet sağlayacıları tarafından telefonunuzun yerini belirlemek için kullanılıyor. Buna göre sizlere çeşitli hizmetler sunulabilir. Bunun dışında ticari bir filosu olan kişiler filoların yerini anlık olarak öğrenmek için GPS takip sistemlerini kullanabilir. Bu şekilde hem kaçakçılıkla mücadele edilmiş olunur hem de daha iyi verim sağlamak için değerlendirmeler yapılabilir. Sadece yük taşıma işlerinde değil, örneğin bir yolcu taşıma aracının yeri ve hızı belirlenerek hedefe ne sürede ulaşacağı bulunabilir. Askeri alanda askeri araçlara ve birimlere yerleştirilebilir. Pozisyonları anlık takip edilerek üst yönetimin operasyonlara müdehalesi daha etkin biçimde kullanılabilir. İleri uygulamalarından uzaktan kontrol sistemlerinde kullanılabilir. Takip edilmek istenen hedeflere bu araçlar yerleştirilerek uzaktan yok etme işine girilebilir. Daha da gelişmişini düşünürsek, her vatandaşa özel bir cihaz verilerek bunun içerisinde tüm bilgileri saklanabilir belirli merkezlerde bu veriler düzenli olarak kontrol edilir ve suçla mücadelede önemli bir başarı sağlanabilir. Belki vücuda yerleştirilecek bu tarz cihazlarla suçluların kaçışı önlenebilir. Büyük alışveriş merkezleri metrolar gibi toplu kitlelerin bulunduğu alanların girişlerine bu tarz cihazların kontrolünü sağlayan birimler konarak terör olaylarının önüne geçilebilir.

Yazının hazırlanmasından sonra çeşitli güncellemeler oldu. Yazının devamı niteliğinde ki OpenGTS başlıklı yazımı okuyarak yeniliklerden haberdar olabilirsiniz.

Özgür Oyun Motorları


Panda3D: Python dili kullanılıyor isterseniz C++ da kullanabilirsiniz. İki türlüde işime geliyor hehe. Oldukça iyi bir döküman bölümü var. Disney’de oyunlarında bu motoru kullanmakta.

OGRE: C++ kullanıyor. Anarchy online oyunun yapımında kullanılmış. Hoş bir motor buda.

ika: Python kullanan başka bir motor. 2D oyunlar için ideal olabilir
ClanLib: C++ kullanan bir motor. cross-platform takılabilirsiniz.
Allegro Library: Oyun programlama için diğer bir kütüphane. C++ kullanılıyor
Agar: C++ kullanıyor. 2D, 3D oyun programlamada işinize yarayabilir.
Aleph One: FPS motoru. C++ olması lazım tam bilmiyorum deneyemedim.

İçlerinden Panda3D’yi deneme fırsatım olmuştu Python ile gayet başarılı işler yapılabiliyor, meraklısına ilk tavsiyem o olacak. Tabi öncelikle lisanslara dikkat edin. Açık kaynak oluyor ama hangi şartlarla?

XNA ile Oyun Macerası Bölüm 1

Ufak ufak başlamak istiyorum çalışmaya. 2D bir RPG oyunu yapmak ilk amacım. Fazla bilgi vermeden insanları bir beklentiye sokmadan olabildiğince anlatmaya çalışacağım. Amacım bu proje ile biraz kendimi pişirip, belki yol arkadaşları bulup ileride 3D ya da 2D Online bir oyuna imza atmak. Zor bir iş olduğunun farkındayım ama en azından gücümü biliyorum ve ona göre bir şeyler geliştireceğim. Bir süredir XNA Creators Club’ın sunduğu RPG starter kit’i inceliyorum. Bununla birlikte bazı elektronik dökümanlarla kitapları kurcalayarak bilgimi arttırıyorum. Bu sefer öyle internetten ders niteliğinde makaleler yayınlama yanlısı değilim. Merak eden açsın araştırsın dökümanlar ingilizce bilen herkese açık.

En büyük sıkıntım görsel öğeleri oluşturmak olacak gibi gözüküyor. Bu konuda kendime şu zamana bitireceğim şeklinde bir hedef koymadığım için olabildiğince rahat ve düzgün çalışacağım. Olabildiğince özgün bir oyun yapmak istiyorum bu yüzden önce işin alt yapısını oluşturma niyetindeyim. Senaryosunu hazırlıyorum, oyun kendi oluşturduğum Nysera isimli diyarda geçeceği için herhangi bir alıntı falan yapmayacağım. Kendi büyülerim, öyle bir şey olursa kendi level sistemim kendi şehirlerim, karakterlerim olacak. Müzik konusunda yeteneğim flüt çalmaktan öteye gitmediğinden kardeşimin yardımını isteyeceğim. XNA ile yapılmış güzel örnekler var. Starter Kit örneği güzel olmasına rağmen tam kafamdaki şeyler değildi. Oyunun debuglanmış halinin 500 MB olması beni düşündürüyor. Kullanıcının bir de .Net ile XNA’yı kurmuş olması gerekecek DVD mi dağıtacağız?

Güzel bir konusu olacağını garanti edebilirim. Hikayelerin nasıl bittiği benim için çok önemli. Bu açıdan şimdiden olabildiğince uğraşacağım. Daha fazla bilgi hatta belki görsel paylaşmak isterdim ama çok araklama oluyor bu net aleminde. Devador hikayesine devam etmeyişimin en büyük sebebi bu. Birileri alan adlarınızı alıyor, hikayelerinizden “esinleniyor”, sonra bir bakıyorsunuz farklı bir isimle ama aynı işi yapan bir ürün var karşınızda. Gizli çalışacağız, kıymetlimizi paylaşmayacağız sizinle hehehe(paranoyak mode:on). Tek tük ne yaptığıma dair haber yayınlarım burada ne aşamadayım bilirsiniz. Sonra bir bakmışsınız demo falan çıkarmışım auhauah.

XNA Geliştirin Diye Starter Kit Sunuyor

Bir kaç yerde gördüm XNA ile yapılmış oyunlar var. Starter Kit’ler üzerinde görsel modifiye yapılarak dağıtıma sunulmuş bir sürü oyun. Modifiye etmeyi oyun yapmak ile karıştırıyorlar, o rahatsız ediyor beni. Öyle olsa bende Platformer Starter Kit’i kullanarak sadece arka plandaki resimleri değiştiririm oldu size Türk oyunu. Piyasada böyle çok paket var ama satılırken bunlar paket olarak satılmıyor. Türk oyunu deniyor. Var olan oyunların data’larıyla oynayarak yapılan çalışmalar modifikasyondan öteye gitmez. Belki çok güzel bir modifikasyon yaparsınız ama o oyuna ayrı bir oyun diyemezsin şu oyunun mod’u dersiniz.

Dün bilişim rüzgarı programında bir kaç arkadaş konuşuyor “oyun yaptık, baya bir modifikasyona gittik” diyorlar. Güzel ama sonra içlerinden biri amaçlarının ilk öğretimde ki öğrencilere oyunlar sunmak olduğunu, şu an oynanan oyunların pek iyi olmadığını, basit olduğunu söyledi. O noktada tepem attı. Üniversite öğrencisi bir arkadaş herhalde benden büyük değildir ya da yaşıtızdır; ne hakla bu öğrenci diğer oyunları değerlendiriyor? Nasıl basit diyebiliyor bu oyunlara çok merak ediyorum. Hemen otorite mi olundu starter kit kullanılarak bir oyun yapıldıktan sonra? Şimdi arkadaşı bir kenara bırakarak söylüyorum, bu tarz insanları hiç sevmem eğer onlardan biriyseniz kusura bakmayın. Her şeyi eleştirebilirsiniz ama değerlendirip iyi-kötü deme ya da not verme noktasına gelirseniz size “Çizmeyi aşma!” demek zorunda kalırım. Bir oyuncu olarak beğenip beğenmeme hakkına sahip olabilirsiniz ama not vermek için otorite olmanız gerekir. Otorite, çalışmalarıyla kendini kabul ettirmiş, başarılı kimse demektir ki ben ortada bir otorite göremedim… Amatörce yapılmış bir sürü site otorite oluyor oyun konusunda, peh. Ya da sadece üniversitenin ilgili bölümünden mezun olan birisi herhangi bir programa not veriyor, geliştiricilere kötü diyor falan… Ne zaman otorite olduğu belli olmayan bu tarz kişiler sadece kendilerini tatmin etse sorun değil. Onları cidden otorite sananlarıda yanlış yönlendiriyorlar.

Bir de şu program devlet kanalında yayınlanıyor ne zaman görsem MS ürünleri hakkında konuşuluyor. Tamam MS’u bende severim ürünlerini kullanırımda yıllardır arada sırada seyretmeme rağmen bir kere bile Linux dağıtımları hakkında bir program neden görmem? Devlet kurumu olan TÜBİTAK bir dağıtım geliştiriyor ve bu devlet kanallarının umurunda değil! Ben olsam 7/24 Pardus’un reklamını döndürürdüm kanallarda. Sevmiyorum bu yüzden bu tarz işleri… Bir iş yapıcaksan tam yap kardeşim, kurumlar bir birlerini desteklemeli aynı vatandaşın parasıyla iş yapıyorsunuz ama bir birinize yardım etmiyorsunuz. Öpüyorum sizi…

Not: Birisi küfürlü bir yorum yapmış önceki yazılardan birisine. Yorumlar önce benim onayıma geliyor, yayınlanmadı. Yayınlamadığım ilk yorumun sahibini tebrik ediyorum.

XNA Music Play

Başlık İngilizce olduğu için kusura bakmayın. Çift dil olabilir yazı ilerde 🙂 Neyse, oyunlarda önemli olan öğelerden biridir müzik. Bu yazıda basitçe müzik oynatmayı öğreneceksiniz. Bu basit sistemi farklı fonksiyonlar kullanarak ileride diğer bölümlere adapte edebiliriz şimdi sadece temelini öğrenelim. Bu işi yapmak için LoadContent() metodunda çalışacağız. Öncelikle şarkımızı içeriğe ekleyelim. Tıpkı Backgrounds gibi şimdi Sounds isimli bir klasör açalım Solution Explorer’ı kullanarak ardından çalmak istediğimiz dosyayı yine sürükle bırak mantığı ile klasörün içine bırakalım. Ben Blind Guardian – Time Stands Still parçasını koydum. MP3 çalıyor mu merak ettim zira örnekte WMA formatı kullanılıyordu. Neyse LoadContent kısmına şu kodu ekleyin:

http://sudrap.org/paste/text/135/
şeklinde olacak.

MediaPlayer.IsRepeating = true; Bura MediaPlayer metodunun IsRepating özelliğini kullanıyoruz. Şarkı bittiğinde tekrar çalmasını sağlıyor.

Alt satırdaki kısmı yazamıyorum ama ordada içeri normal şekilde yüklüyoruz. F5’e basıp çalışdırdığımızda müzik çalıyor performansta bir kayıp olmuyor.

This article using 2(english, turkish) language. Music is a must in games. At this text you will learn how to play music with XNA. First of all you must add your file in the Content list at the Solutionn Explorer. Open a new directory with right click on the content section and add new folder. Make its name “Sounds” than drag/drop your music file on this folder. I choose Blind Guardian’s Time Stands Still song for trying to play a MP3 file. after that:

http://sudrap.org/paste/text/135/ use this in LoadContect section for playing sound

MediaPlayer.IsRepeating = true; this cause to repait our song MediaPlayer funciton is easy to learn 🙂

I cant write next line in blogger so i just explain what it means, you load content like any other one. You gave the music adress, “Sounds/AndSong’s Asset Name”After you wrote this code save file and press F5, you will hear the song and when it finished the music will start again till you close the game.

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: [email protected] 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 🙂