27 Ocak 2009 Salı

Nintendo DS: Ninja Gaiden, Feel the Magic vs.

# Abi'ye Amerikalardan Nintendo DS getirttirdim. DS: Dual Screen. Sony'nin PSP'ına (Playstation Portable) rakip bu cihaz, daha düşük işlem gücüne sahip ama daha çok oyun, stylus'la kontrol, çift ekran, daha hızlı oyunlar ve kırılmaya müsait yapısıyla gönüllerimize taht kuruyor.
# Wikipedia'da yazdığına göre piyasaya çıktığı 2004 yılından bu yana tüm Dünya'da 84 milyon tanecik satmış. Bir ticari işletmenin, ürünün çapı bu kadar büyüyünce ne olup bittiğini aklım almıyor. Ben Nintendo'nun bir yetkilisi olsaydım herhalde kafayı yerdim.
# Oyuncak geleli bir iki ay oluyor. Bu arada bitirdiğim oyunlar: Electroplankton, LEGO Batman: The Videogame, Feel The Magic - XY XX, Prince of Persia: The Fallen King, From The Abyss, Ninja Gaiden - Dragon Sword. Bunları da oynadım ama bitirmek nasip olmadı: n+, Sprung.
# Özellikle DS için hazırlanmış oyunlar epey keyifli oluyorlar. Feel The Magic ve Ninja Gaiden böyle oyunlardı.# Stylus'la çizdiğin çizgiler Ninja'nın kılıcını savurma hareketleri oluyor. Aşağıdan yukarıya doğru çizgi zıplatmak oluyor. Muhtelif kombolar var. Bu da daha önce hiç tatmadığım bir oyun deneyimi verdi. Ayrıca oyun hardcore absürt B-tipi Ninja klişeleri ve dizaynlarıyla dolu. Zannımca Japonların ironi, kendiyle dalga geçme potansiyelleri bizden daha yüksek.# Feel the Magic'in grafikleri Another World gibi ve AW'nin vektörel grafiklerine hala tapmaktayım. Acayip soyutlamalar, oyun dizaynları, absürtlüklerle dolu mini oyunların birleşiminden oluşuyor. Adamın midesinden yanlışlıkla yuttuğu akvaryum balıklarını çıkarmaktan, (mikrofona) üfleyerek tekneni etrafında köpek balıklarının dönendiği sevgilinin yanına yetiştirmeye, stylus'a çemberler çizdirerek direksiyonu döndürdüğün, ve yolda topladığın insanları mancınıkla rakip arabaya fırlattığın oyuna kadar binbir acayiplik silsilesi ben bayıldım.
# Elektroplankton, oyun denemez..., muhteşem bir ses enstelasyonu denebilir. Bir kaç tane elektroplankton var, muhtelif etkileşimlerle ses çıkartıyorlar. Görmek lazım:

# Prince of Persia: The Fallen King'te ilk iki prens oyunundan kalma bir çok unsuru görünce hoş bir nostaljik tad aldım. Ama prensimize ve oyuna duvarlara tırmanmak gibi binbir yeni atraksiyon katmışlar. (Acep Sands of Time'ı oynasam mı? Bilgisayarım kaldırır mı? Bu DS'le oynadıkça dijital oyundan beklentilerin değişiyor. Bilgisayar oyunları daha ciddi projeler gibi gelmeye başlıyor.) Prens de sadece stylus'la oynanıyor. Bu da zevki arttırıyor. Ama hem Prens de hem de aynı hissiyatı vereceğini anladığım Assassins Creed'te, bu oyun aslında çok daha kapsamlı bir proje olan konsol/PC oyunundaki bir takım öğelerin kırpılıp kuşa çevrilmiş bir halinin "DS'tekiler de oynadıklarını zannetsinler" diye sunulmuş hali gibi geldi.

24 Ocak 2009 Cumartesi

How things in nature tend to sync up


# Steven Strogatz TED'te konuşma yapmış. Muhtelif senkronizasyon örnekleri veriyor. 1) Seyircilerin aynı anda ellerini çarparak alkış tutabilmeleri. Senkronizasyonu başarabilmek için aslında canlı olmaya bile gerek yok diyerek cansız maddeye doğru örnekler veriyor. 2) Balık ve kuş sürülerinin 3-4 maddeyle açıklanabilen karmaşık davranışları. i) Her ajan sadece yakınındakileri görüyor ii) ajanlar aynı doğrultuya gelmeye çalışıyorlar iii) birbirlerine aralarında N boy mesafe kalana kadar yaklaşmaya çalışıyorlar. Tüm o kareografi gibi görünen danslar vs. bu öğeleri içeren bilgisayar simülasyonunda görülebiliyor. 3) Kitabında da anlattığı aynı anda yanıp sönen ateş böcekleri. 4) Yatmış su şişelerinin üstündeki satha konmuş iki metronomun aynı anda tiklemeye başlaması. (satıh aralarında mekanik bir iletişim sağlıyor) ve 5) Londra görece yeni yapılmış bir asma köprünün yanlarından asılı olması nedeniyle sağa sola sallanması, sallanma nedeniyle dengelerini kurmaya çalışan insanların davranışlarının sallanmayla pozitif geribesleme yapması.(*)
# İlginç olaylar bunlar. :-) Atomik düzeydeki teorize edilememiş bir çok olayın bu yaklaşımlarla anlaşılabileceğine inanmaya devam ediyorum.

(*) S. H. Strogatz, D.M. Abrams, A. McRobie, B. Eckhardt, and E. Ott. Crowd synchrony on the Millennium Bridge. Nature 438: 43-44 (2005) (.pdf)

Kaotik Senkronizasyon

# Kaotik sistemler başlangıç koşullarına hassas duyarlılıklarıyla tanımlanıyorlar. Farklı koşullarda başlayan iki sistem (başlangıç anında çok yakın dahi olsalar) üç vakit içinde, belli bir strange attractor etrafında döneniyor da olsalar, görece bambaşka hareketler yapıyor olacaklar.
# Nonlinear Dynamics and Chaos kitabının yazarı Steven Strogatz'ın bir öğrencisi kuple (yani birinin değişkenleri diğerininkilere bağımlı) iki sistem arasında senkronizasyon yapılabileceğini göstermiş ve bir uygulamasını geliştirmiş.
# Uygulama şu: Alıcıdan vericiye giden sinyali şifrelemek. Öyle şifrelemek ki dinleyenlerin sadece parazit duyması.
# Şöyle yapılıyor. Vericide bildiğimiz Lorenz sisteminin analogu olan bir devre, program vs. var. Bu çalışınca (sistem 3D olduğundan) 3 tane kaotik sinyal üretiyor. Göndermek istediğimiz mesajı kısıp 2. veya 3. kaotik sinyalle topluyoruz. Vericiye maskelenmiş sinyali ve 1. kaotik sinyali gönderiyoruz. Köstebekler sadece paraziti duyuyorlar.
# Alıcıda Lorentz sisteminin biraz değiştirilmişi var. 2. ve 3. bileşenin denklemlerindeki 1. bileşen olarak alıcının kendi 1. bileşeni değil vericinin gönderdiği 1. bileşen kullanılıyor. İşte bu girdi kısa zamanda iki sistemin senkronize olmasını, aynı t anında aynı değere gelmelerini sağlıyor. Ki bence bu olay çok çok ilginç.
# Alıcı paraziti maskeli sinyalden silmek için basitçe kendi 2. bileşenini maskeli sinyalden çıkarıyor. Time domain'de bu şekilde çalışan bir filtre görmek göz yaşartıcı.
# Doğru bir terminoloji mi bilmiyorum ama, gönderilen 1. bileşen public key, Lorenz sisteminin parametreleri ise private key'dir, diyebilir miyiz hocam? Bilmem...

# Yağmur Hoca'dan nonlinear dinamik dersini alırken bu konuya gelememiştik. İçimde kalmıştı. Sevinç de bu dersi alınca, dönem sonu projesinde bu sistem soru olarak gelmesin mi? Yılların hasretini beraber gidermiş olduk. Lorenz sistemini kendi yazdığım bir Euler metoduyla simüle ettik. Yukarıda anlattıklarımı uygulayarak bir ses dosyasından aldığımız sinyali önce vericinin 2. bileşeniyle toplayıp, sonra alıcının 2. bileşenini ondan çıkarıp orjinal sesi elde ederek bu fenomeni modellemiş olduk. Aferin bize!

# Senkronizasyonla ilgili Wikipedia makalesi.

23 Ocak 2009 Cuma

Ses API'leri

# Bugün sabahtan beridir cross-platform, realtime, open source bir ses kütüphanesi, API'si arayışındayım. Aslında epey zamandır bu arayıştayım. Farklı zamanlarda portaudio'yu indirip Windows'ta build etme denemelerim hep hüsranla sonuçlandı.
# Alpar Hoca'nın Beauchamp'a zamanında gösterdiğim freqazoid projeme yeniden başlamam konusundaki ısrarları üzerine bu işi baştan, dil olarak Java yerine C/C++ kullanarak, hızlı grafikler için (osiloskop, spektroskop vs.) Java2d yerine OpenGL, javasound yerine de şu anda aramakta olduğum bir ses API'si kullanarak yapmaya karar verdim.
# Aslında Juce kullanarak bu işe başlamıştım. Ama ne oldu? Galiba ses sinyallerini programın modülleri arasında taşımak için uygun class'lar olmayınca, kusursuz bir istikrarla çalışması gereken bu modülü yazmaya üşenip işi yarıda bırakmıştım.
# Piyasadaki denk geldiğim kütüphaneler şunlar (editlenecek):

Low-Level, Platfrom Dep.
==================
Windows: ASIO, MME, directsound
Linux: ALSA, OSS, Jack
Mac: CoreAudio(?)

High-Level, Cross-Platform
====================
Open Source: RtAudio, PortAudio, Juce, OpenAL, Audiere, sndlib, Pulseaudio, libao,
Closed Source: Irrklang, fmod

Global Game Jam Türkiye

# Barış'ın hatırlatmasıyla son anda Global Game Jam'in Türkiye bölümüne başvurmayı başardım. GGJ'de Dünya'nın muhtelif şehirlerinde toplanan insanlar aynı anda, verilen tema üzerinde iki gün gibi kısıtlı bir zaman içerisinde doğaçlama oyun geliştiriyorlar. O gün kurdukları küçük gruplarla kısa zamanda yazılan oyunların ilginç bir şekilde özgün, yenilikçi ve deneysel oldukları görülmüş.
# Biz Başar, Barış ve ben ayrı ayrı başvurmuştuk. Bugün öğrendik ki üçümüz de kabul edilmişiz. Heyecanlandık. Haftasonu toplaşıp prova yapacağız. Bakalım neler yapabileceğiz. Ben de o zaman bilgisayarıma .xm formatında parça yapabileceğim bir Tracker kurayım. SuperCollider ile ses dizaynı yapayım. Laylay...

vxi11 Ethernet Protocol üzerinden Tektronix AFG'ı kontrol etmece

# Dönemin bitmesiyle Taylan Hoca'nın bana verdiği ilk mini-proje, Tektronix marka sinyal üretecimizi ethernet üzerinden bilgisayarla kontrol etmek. Modelimiz AFG3000 serisinden. AFG: Arbitrary Function Generator. Yanisi aslında osiloskop ama sinuzoid, kare dalga, terstere gibi dalga biçimleriyle kısıtlı değiliz. Hafızasına N tane 16-bit integer gönderiliyor ve alet istenen frekansa gelecek şekilde interpolasyon uygulayarak sinyali üretiyor.
# Pek de marifetli. "Burst Mode"unda "1-Cycle" seçeneği seçildiğinde hafızadaki dalga şeklini trigger edildiğinde tek bir kez gönderebiliyor. Ardışık trigger'lar arasındaki süre de ayarlanabiliyor. Bilgisayardan paratmetreleri belli bir aralık içinden rastgele seçilmiş dalga biçimleri (muhtelif pulse'lar ve ardışık darbe'ler arası süreler) üretilip alete gönderilecek. Alet de bu sinyali test aşamasında bizim tasarlayacağımız donanıma, gerçek dünya verisi yerine verecek ki analiz ederek darbenin üretim parametrelerini bulsun.
# Deney edevatları için standart iletişim kanalı GPIB denen nane imiş. Özel bir kablosu ve kartı var bilgisayarlar için. Ama aynı komutlar ethernet üzerinden de gönderilebiliyor. vxi11 protokolü sayesinde ağ üzerinden de gönderilebiliyor. Bu kütüphaneyi hazırlayan kardeş linux için doğru dürüst bir programlama ortamı olmadığından dert yanmış. Dert yanmakla kalmayıp oturup "madem yok, ben de kendi kütüphanemi yazarım" demiş ve sorunu halledip kamuyla paylaşmış. Kendisine bolca teşekkür. Böyle bir kütüphane olmayınca bu aleti (sadece üzerindeki düğmelere basarak) tüm gücünün hakkını vererek kullanmak imkansız.
# Epey ilerledim. Pazartesi günü bu iş biter herhalde.

20 Ocak 2009 Salı

Lost'un senaryo tutarlılaştırıcısı

# Lost'un 5. sezonunun başlamasına bir gün kaldı. Heyecan dorukta.
# NY Times'ta Greg Nations diye biriyle bir söyleşi yayınlanmış. Nations'ın görevi daha önce yayınlanan bölümlerde tüm olanların bir arşivini tutmak, geçmişte, şimdide ve gelecekte olanları tarihlemek ve yeni bölümlerin yazımında oluşacak mantık hataları ve kopuklukları engellemek. "Keşke bilgisayar mühendisi olsaydım da bir database kurup insanlar, olaylar ve mekanları ilişkilendirebilseydim. Her şeyi hödö hödö düz yazıyla dökümanlara yazıyorum." diyor. Ki Net'te bolca "hatalar" sitesi mevcut.
# Diziyi o kadar karmaşıklaştırdılar ki, herkes tek bir insanın tüm külliyatı aklında tutamayacağı konusunda hemfikir. Laylay...

17 Ocak 2009 Cumartesi

Opengl

# Yükseklisans zorunlu derslerimin bitmesi, hem de ilk defa bir temel fizik dersinden AA almam, hem hem de dönem ortalamamın 4.0 olması beni epey motive etti. Dün gece yılları özlemi OpenGL kullanabilen bir program yazma hevesimi sonunda gerçekleştirdim. Başlangıç adımlarını daha sonra bakıp hatırlayabilmek üzere buraya "tespit" edeyim.
# Netbeans 6.5'in C/C++ paketi kurulur. (Nasıl kurulur? vs.)
# Cygwin'in setup.exe'si indirilir ve şu paketler kurulur: gcc-core: C compiler, gcc-g++: C++ compiler, gdb: The GNU Debugger, make: the GNU version ve opengl. Cygwin'in bin klasörü "system environment"taki PATH'e eklenir.
# Nehe'ye gidilir. İlk derslerden birinin Cygwin kodu indirilir. Cygwin'deki user'in altinda bir klasöre açılır. .exe dosyası denenir, çalışınca mutlu olunur. Sonra .exe'nin ismi değiştirilir ve "make" denerek kendi .exe'mizi oluşturabiliyor muyuz diye bakılır. Olumlu netice alınınca göbek atılır.
# Netbeans açılır, Tools > Options > C/C++ > Build Tools'ta cygwin'nin bin/ klasörü eklenir ve geliştirme programları Netbeans'e tanıtılmış olur.
# "existing code" seçeneği seçilerek yeni proje yaratılır. makefile olarak Nehe dersiyle gelen makefile seçilir. Run Project'te tıklanır. Build edilip çalıştığı görülünce IDE kullanabilmenin rahatlığıyla huzura kavuşulur.
# Evet, Visual Studio kullanmamak, Windows kütüphanelerine bağlı kalmadan sanırım platformdan bağımsız kod yazabilmek için ilk adımı attık.