Mathri’nin Külleri
Projenin tümü aşağıdaki iki “eğilim” tablosu üzerine kurulu:
Tablo 1)
sihirbaz
|
|
iblis—–+—–melek
|
|
serseri
Tablo 2)
güçlü
|
|
suçlu—–+—–masum
|
|
kurnaz
Bu tablolar üzerinden “azılı zorba iblis” rolünden “kurnaz ve iyiliksever büyücü” ye kadar geniş bir aralıkta karakter üretmek mümkün. Bu karakterlerin tümünün alt yapısı aynı ve hikaye hepsi için aynı başlıyor: bitkin bir halde bir gemiden yabancı bir adaya
inerek.
“Mathri” adlı bir deli büyücümüz var, aklı başından gideli asırlar olmuş ve ilk delirdiği günden beridir kendini ölümsüz olmaya adamış. Mathri, sonsuza kadar yaşamak için 2000 tane kadın ve çocuğun canını almak zorunda, ve bu kadınların ailelerini yok etmek zorunda. O yüzden binlerce askerini ortalığa salmış ve herkesi katletmiş. Kadınları da kaçırmış ve kalesinin dört bir yanına hapsetmiş. Bazı erkekler kaçmış, toplanıp daha bir güçlü saldırabilmek için ve hepsi de limandan çeşitli zamanlarda eski bir korsana ait bir gemiye doluşup uzaklardaki bir adaya gitmişler. İşte bizim oyunun geçtiği, Mathri’nin yıllardır arayıp bulamadığı denizin taa ortasındaki ada bu, “Söz Adası”.
Söz adasına her yeni gelen, yolculuğun yoruculuğundan ve çektiği acılardan dolayı hafızasını yitirmiş şekilde başlıyor macerasına. Böylece oyuncuyu baştan koşullandırmıyoruz, ne isterse başlangıçtan itibaren o oluyor. Girişte kendisini karşılayan karaktere kötü davranmak ya da iyi davranmak dahil bir çok kritik noktada davranışları puanlanıyor. Adada kaldığı sürece herkes bir konuda eğitim almak zorunda, böylece Mathri’ye saldırı başladığı gün herkes elinden gelenin en iyisini yapacak ve kadınları kurtarıp kötülüğü devirecekler.
Adayı bulanlar, ilk geldiklerinde adada bulunan ormanın bir kısmını harcayarak bir çok kulübe inşa etmişler. Her yeni gelene yatacak ve sığınacak yer var o yüzden. 200 tane kulübe var şimdilik ve hepsi de sahile yakın bir noktada. Adanın içerilerinde neler olduğu tam olarak bilinmiyor fakat haritalandığı kadarı ile bir orman, eski ve kilitli bir maden, çok eski bir arena ve küçük bir liman bulunuyor.
Şehir meydanında, herkesin notlar asabileceği, ve diğer oyunculara not bırakıp duyuru yapabileceği bir pano bulunuyor. Aynı zamanda ara sıra dışarıya gidecek olan ve dışarıdan gemiyle gelen malların bırakıldığı bir de ticaret binası var. Bunun yanı sıra, adanın en eskilerinde olan birkaç karakter silah, yiyecek ve diğer malzeme ve bilgileri oyunculara taşıyor. Birkaç tane de gözü pek nöbetçi var adada, herkes uyurken ya da kimseler şehirde değilken tehlikelere karşı (ve birbirlerine karşı) ada halkını ve eşyalarını koruyorlar.
Ara sıra ormandan ya da hayalet bir gemi ile beklenmedik konuklar saldırıyor şehre. Uykuda olanlar kulübelerinde gövendeler, çünkü o kadar sağlan yapılmış ki binalar hiç kimse onları yıkmaya yeten gücü bulamıyor.
Aynı liman ticaret işlerine de aracılık ediyor, ticaret merkezine bırakılan mallar günde iki kez gelen gemi ile dış diyarlara satılıyor, karşılığında yeni mallar ya da altın para alınıyor. Birşeyler satmak yerine sipariş de vermek mümkün oyunda. Örneğin adada hiç “sarı benekli kurbağa tükürüğü” kalmadı diyelim (ne işe yarıyorsa), ticaret odasına gidip sipariş vermek yeterli. Bunun yanında açık artırma usulü satış da mümkün, yani malı bırakıp en çok altını verene satmak olası.
Senaryonun şimdilik söyleyebileceğimiz ilginç bir yönü de, bizim de ara sıra oyuna girip ortalığı karıştırmamıza yarayan “ether” modu. Bu modda iken geliştiriciler oyuna girip, ortamın düzenini sabote etmeye yönelik olmamak kaydıyla ufak muzurluklar yapabilecek.
Oyunda zaman sistemi basit: 1 saat eşittir bir gün. Her 15 dakikada (6 saat) bir bir gemi geliyor ve ticaret işlemleri yapılıyor. Her 360 saatte bir karakteriniz bir yaş yaşlanıyor, bu da tam 15 gün demek. Yani bir aylık oyun sırasında karakter başlangıçtaki 18 yaşından 19 yaşına geçiş yapıyor. Karakterler yaşlılıktan ölmüyor, aksine yaşlandıkça alınan tecrübe miktarı daha da çok oluyor.
En ilginç bulunacağını düşündüğümüz olaylardan birisi de karakterlerin üzerinde oluşan yaraların kalıcı olması.
Daha da ilginci, bu senaryonun altında oyuncuların kendilerini başka bir “şey” le uğraşırken bulacak olmaları 🙂 Burası şimdilik sır.
Biraz da işin teknik yanı:
Tüm sistem şimdilik 200 oyuncuyu aynı anda desteklemek üzere kuruldu. Geçen gün yapılan testteki sunucu kablonet üzerinde 64Kbit çıkış bağlantılı 128Mb RAM’i olan bir Pentium 2’ydi ve 56K modem kullanarak bağlanan arkadaşlar bile takılma yaşamadıklarını söylediler. Buradan yola çıkarak final sunucunun gücü ve bant genişliği 200 rakamını oldukça rahat kaldıracak gibi görünüyor. Alt yapının temelinde “Xeng” adını verdiğimiz bir motor bulunuyor. Kendine has bir programlama dili olan motor, nVidia ve ATI kartların tıpkı bir konsol sistemi gibi yönetimini üstleniyor. Konsol konusuna değinmişken, test uygulaması MacOS X, Windows ve PS2 üzerinde denendi ve sorunsuz çalışıyor, fakat öncelikli olarak PC’ye yoğunlaşmış durumdayız. Grafik sistemi OpenGL üzerine kurulu, aslında DirectX olmaması için bir sebep yok fakat taşınabilir olması için bu yolu seçtik. Alt yapı, Geforce 1 sistemlere kadar geriye doğru uyumlu. Network sistemi oldukça hafif, çok az bir trafik yükü var ve eğer ikinci test de iyi giderse bu sistemi bir sonraki projemizde de kullanmayı düşünüyoruz.
Sistemin kendine has programlama dili, Türkçe’nin yapısına uygun şekilde fiil sonda ve gerektiği anda derlenip çalışıyor. Derlenen kod oldukça ufak ve her komut yaklaşık 8 byte’a dönüşüyor, ve arada bir “yorumlayıcı” olmadan doğrudan C/C++ fonksiyonlarını çağırarak işliyor. Bu da bizim ana oyun döngüsü ve kullanıcı arabirimi dahil bir çok şeyi hızlı çalışacağından emin olarak bu dilde programlamamızı sağlıyor. Çalışma sırasında oluşan hataları (bizim C/C++’da yapmış olabileceklerimiz dahil) script sistemi yakalıyor ve basit bir terimle “susturuyor”. Böylece hatalı kod hata vermiyor, ama çalışmıyor. Programlanabilirliğe yardımcı olmak için, programdan çıktığınızda log.txt dosyasına hata yaratan komutların olduğu satırlar ve sanal işlemcinin o anki durumu kaydediliyor. Sistemde bir MP3 ve 3D ses sistemi bulunuyor. MP3 sisteminin playlist özelliği sayesinde kullanıcı kendi parçalarını bir klasöre atıp sırayla dinleyebilecek. 3D ses sistemi de tekrarlayan, bir kez çalan, “yerel” ve “global” sesleri destekliyor, ve PC platformunda DirectSound üzerine kurulu. Giriş sistemi çok yönlü, yani iki boyutlu bir kullanıcı arabiriminden 3 boyutlu bir ortama kadar kullanıcıyı en az şaşırtacak şekilde geçiş yapıyor ve PC platformunda DirectInput üzerine kurulu.
3D ortamlarımızı LightWave’de oluşturduğumuz için bu ortama yönelik kendi yazdığımız bir çok gerecimiz var ve en önemli gördüğümüz gereç “export” filtremiz. Export filtremiz, bir LightWave sahnesini internet üzerinden parçalı transfer olanağı sağlayan kendimize ait bir formatta sıkıştırıyor ve ZIP’in aksine, dosyanın bir kısmı dahi elinizde olduğu zaman gelen kısmını açıp kullanmaya başlayabiliyorsunuz. Şu anda fizik sistemimiz oldukça süratli ve oldukça komplike fizik oyunları yapmamıza olanak sağlayacak kadar da esnek. Eklemler, motorlar, yaylar ve katı cisimlerin yanında yeryüzü ile çarpışma ve kesişme işlemlerinde fizik sistemi bize yardımcı oluyor.
RAM kullanımı, 44569 adet üçgenden ve 2.87Mb kaplama dokusundan oluşan bir sahnede, network bağlantısı aktif halde iken 11Mb, bu da benzeri sistemlerinkiyle kıyaslanınca (bu yük üzerinden) oldukça ufak bir rakam.