13 Mayıs 2010 Perşembe

0 A.D.'nin Alfa Öncesi İkinci Sürümü Yayımlandı

Hatırlarsanız lipstick geçen sene 0 A.D.'nin açık kaynak olduğunu haber vermişti bizlere. Kendisi ayrıca O A.D'nin açık kaynak olma duyurusunu da Türkçe'ye çevirmişti. lipstick'ten izin almamış olsam da duyuruyu buraya eklememe bir şey demeyeceğini tahmin ediyorum ve buna güvenerek ekiyorum :)

0 A.D. Nedir?

0 A.D ücretsiz, çok platformlu, geliştirilmekte olan, 3B, tarihi konu alan gerçek zamanlı bir strateji oyunudur.

Ne yapmaya çalışıyorsunuz?

Kapalı bir geliştirme ortamından açık kaynağa geçiyor; kaynak kodumuzu GPL ve sanatsal içeriğimizi CC-BY-SA ile lisanslayarak projeye katkı yapmak isteyenleri heveslendiriyoruz. Yıllardır 0 A.D. üzerinde çalışmaktayız ve artık neler başardığımızı göstermek, insanların katılımını kolaylaştırmak istiyoruz.

0 A.D. oldukça karmaşık ve iddialı bir proje; üzerinde gerçekten çok emek var. Fakat daha fazlasına ihtiyaç duyuyoruz. Maalesef şu an oynanabilir bir oyun sunamamaktayız -- eğer oyunu oynamak için hevesleniyorsanız UZUNCA BİR SÜRE beklemeniz lazım. Hala birçok temel özellik eksik, tamamlanan kısımlarda ise hatalar ve cilası atılmamış yerler var. Amacımız oyunu gelişmekte olan haliyle (alfa öncesi sürüm olarak) sunarak, bu tarz bir şeyle ilgilenmek isteyebilecek geliştiricileri cezbetmek, ve de projenin gelişiminde süreklilik sağlamak için kaynaklarımızı bir toplulukla paylaşmak.

Bunu deneysel bir süreç olarak görüyoruz ve açıkçası ne yapmamız gerektiğinden tam olarak da emin değiliz. Bu nedenle dikkatlice hareket edip tecrübe edinmeye gayret göstereceğiz. Bu belgede şu anki planlarımızdan bahsediyoruz; yani fikirlerinizi bizimle paylaşırsanız çok mesut oluruz! Bizimle forumlarımız ya da QuakeNet üzerindeki #wgf IRC kanalımız aracılığıyla iletişime geçebilirsiniz.


Neden ilgilenmeliyim?

Bizce bu benzersiz özelliklere sahip sıkı bir oyun yaratabilmek için iyi bir fırsat. Belki siz de bu oyunun gerçek bir deneyim haline gelebilmesi için bize yardım etmek istersiniz.

Büyük bir yazılım projesinde uğraşarak deneyim kazanmak istemez misiniz, özellikle bir oyun üzerinde? Grafik ve ses, YZ ve KA (kullanıcı arayüzü), dosya yönetimi ve oyun betikleri, ağ vs. bir çok alanı kapsayan büyük bir proje önünüzde duruyor. Temelleri iyi attık ve bir çok yeri de oldukça sağlam, fakat ayrıntıları detaylandırmak ve bir takım bileşenlerin üzerinde uğraşmak gerekiyor.

Oyunu favori platformunuzun üzerinde daha iyi çalışması için geliştirmek isteyebilirsiniz. Ya da yaptığımız aptallıkları suratımıza vururcasına çok daha iyi kodlar yazmak için sabırsızlanıyorsunuzdur (Kabul etmeliyiz ki mükemmellikten çok uzağız).

Belki de kendi projenizde bizim kodlarımızı kullanmak istiyorsunuzdur. Kim bilir derslerde öğrencilerinize örnek oyun geliştirme kodları olarak göstermek isteyebilirsiniz.

Kişisel sebepleriniz de olabilir.

Niçin böyle bir şey yapıyorsunuz?

Bu oyun üzerinde bir şekilde 2001'den beri çalışmaktayız. O zamandan beri çok yol kat ettik, fakat bu tip bir oyunu geliştirmek çok zor. Orijinal ekibin büyük çoğunluğu öğrenciydi, fakat onlar artık hayata atıldılar ve projeye çok fazla zaman ayıramıyorlar. Yeni geliştiricileri projeye dahil etmek ise oldukça uğraştırıcı -- çok az kişinin zamanı ve yeteneği bizim kodlarımızın üzerinde çalışıp katkıda bulunmasına olanak veriyor. İşte tüm bu nedenlerden dolayı engellerimizi kaldırıp, insanların projemizi rahatlıkla inceleyerek isterlerse bize katılmalarını kolaylaştırıyoruz.

Üstelik, bizim de paylaşmak istediğimiz güzel fikirlerimiz, araçlarımız ve kodlarımız mevcut. Onları kullanışlı hale sokup belgeleyerek insanların daha iyi kullanabilmesini arzuluyoruz, fakat kodları açmak ilk işimiz. Ayrıca belirtmeliyiz ki, Linux bize açık kaynak olan bu projenin dağıtım ya da hata ayıklamayla alakalı kısımlarını çok rahat halletme imkanı sağlıyor. Size de tavsiye ederiz.

Bu zamana kadar gönüllü olarak bir araya gelmiş bir ekiple ticari olmayan bir oyun geliştirmeye çalışmış olsak da gerçek şu ki koda sadece grubun 'resmi' üyeleri erişebilmekteydi. Açıkçası bundan birkaç yıl önce açık kaynak kavramı ilgi çeken bir şey değildi, fakat artık zaman değişti ve görünen o ki projemize en uygun geliştirme yönteminin bu olduğunu düşünüyoruz.


Geliştirme işini nasıl organize edeceksiniz?

Projeye başlangıç olarak, toplulukla mümkün olduğunca kuvvetli bir iletişim kurmalı, onlara gerekli bilgileri ve desteği sağlayarak saygılarını kazanmalıyız. Bu sayede siz de bu projeye katılmaktan fayda göreceksiniz (umarız bize de faydanızın dokunur). Amacımız, geçmişteki ilkelerimizden ödün vermeden yüksek standartlarda bir oyun ortaya getirebilmek.

Geçmişte, tüm geliştiriciler aynı zamanda 'ekibin' de bir parçasıydı. İsteyen herkes katılmak için başvurabiliyordu; önce onları tanımak için IRC üzerinden bir görüşmeye tabi tutar, sonra da yeterli zamanı, enerjisi ve kâbiliyeti olduğuna inanırsak onu projeye dahil ederdik. Geçmişteki bu çekirdek geliştirici ekibini ve iletişim metotlarımızı kullanmaya devam edeceğiz, çünkü elimizdeki ekibinin niteliklerini riske atmak istemiyoruz. Kendine has tasarım vizyonumuz var ve bu nedenle amacımıza uygun olmayan özellikleri projeye dahil etmemeyi tercih ediyoruz. Misal vermek gerekirse oyunda olması planlanan altı uygarlığın iki tanesini sürüme dahil ettik, fakat üzerinde çalışmaya devam ettiğimiz uygarlıkları tamamlayana kadar özgür kullanıma sunmayacağız.

Bu kısıtlamalar dışında, kaynak yönetim merkezimizi (Subversion), belgelerimiz ve hata takip sistemimizi (Trac) erişime açtık ve teknik tartışmalarımızı da herkese açık bir foruma koyduk. Bu sayede isteyen herkes oyunun en son versiyonunu indirip, derleyebilir ve çalıştırabilir. Gelecek katkılar için yürüteceğimiz iç protokol ise gayet basit; eğer elinizdeki kodlarda değişiklik yaptıysanız, bunu bir yama haline getirip bize gönderin, ve biz de bunu gözden geçirip üzerinde uygun gördüğümüz değişiklikleri yapalım veya doğrudan SVN depolarına koyalım.

Gelecek katkılar için nasıl bir lisans kullanılması gerektiği tartışılabilir. Bir taraftan, GPL'yi kullanarak katılımcıların kendi çalışmalarını adil olmayan bir şekilde kullanmayacağımızı garantilemiş oluruz. Diğer yandan da BSD tipi lisansların sağladığı seçeneklerden faydalanmak istiyoruz. Örneğin her ne kadar açık kaynak düşüncesiyle tezat oluştursa da yazılıma kapalı kaynak kodlu bir hile önleyici yazılımı ekleyerek çok oyunculu ortamlarda harita istismarı (hack) yapılmasının önüne geçebiliriz. Ya da sahipli bir dijital dağıtım sistemi koyarak oyunun daha fazla kitleye ulaşmasını sağlayabiliriz. Görünüşe göre henüz ideal bir çözüme ulaşamadık, yine de bu sorunu tartışmaya açığız.

Kodun şu anki durumu nedir?

Kabaca söylemek gerekirse oyun motoru için 150K, ve düzenleme araçları için 25K C++ kodu mevcut. Oyun betikleri JavaScript ile yazıldı. Halihazırdaki bir oyun motorunu (OGRE gibi) kullanmıyor, düşük seviyeli kütüphanelerin (OpenGL, OpenAL, ENet, ...) üzerine inşa ediyoruz.

Kodun tamamen tertemiz, modüler ya da iyi yazılmış olduğunu söylemek güç. Daha önce bahsettiğimiz gibi kodlar bir çeşitli düzeydeki bir çok programcının katılımıyla yazıldı ve "tastamam" olmaktan uzak. Bu nedenle kod üzerinde yapılacak düzeltmeleri geliştirme sürecinin normal bir parçası olarak görüyoruz. Hatta gerekirse ihtiyaçlarımızı karşılayabilmesi için tüm alt sistemleri baştan yazmaktan çekinmeyiz. Yine de projenin çoğu yeri oldukça iyi durumda.

Kodların ne kadarı başka yerlerde kullanıma uygun?

Kodlarımızın birçoğu oyuna özgü ve dış kullanıma çok uygun değil, yine de bazı kısımları diğer projelerdeki geliştiriciler için ilgi çekici olabilir. Örneğin:

* Kaynak yönetimi (arşiv dosyası yükleme, GL dokuları ve gölgelemeleri...) için çoklu platform desteği olan düşük seviyeli kütüphaneler, hata ayıklama araçları (hata raporlama, hafıza takibi, döküm yığınları), zamanlayıcılar, senkronsuz GÇ, dağıtıcılar...
* İskelet animasyonlu COLLADA modellerini oyun dostu basit bir biçime çeviren çevirici
* Daha hızlı kaynak yükleyebilmek için İkili XML önbellekleme sistemi
* AMAZON EC2 kullanan otomatikleştirilmiş inşa araçları
* Matrisler, vektörler, kuaterniyonlar gibi sıkıcı matematik kodları

Diğer Oyunlarla Karşılaştırırsak?

Piyasada başka açık kaynaklı RTS oyunlarının da olduğunun farkındayız. Örneğin Glest artık 'stabil' olarak anılıyor ve ortaçağ/fantezi dünyasında geçiyor. Her ne kadar 0 A.D'ye göre daha ilkel bir oynanışa ve grafiklere sahip olsa da oyundaki rakipler yapay zekalı (0 A.D.'ye uyarlanmış böyle bir özellik şimdilik bulunmamakta). ORTS ise oynanabilir bir oyundan çok yapay zeka çalışmalarını vurgulayan taslak halindeki bir projeyi andırıyor. Spring RTS motoru kullanan, oynanabilirliğini Total Annihilation'a yakın tutmaya çalışan bir diğer örnek. 0 A.D. ise yenilikçi oynanabilirliği, detaylı grafikleri ve gerçekçi tarihi konusuyla diğerlerinden farklı bir konumda.


Nereden Başlayabilirim?

Başlangıç Rehberi'ne göz atarak oyun hakkında daha fazla bilgiye sahip olabilirsiniz. Sorularınız için foruma, binalar ve oyunun çalıştırılması hakkında Açıklamalar bölümüne, diğer detaylar için ise dış bağlantılara bakmalısınız.

Tüh tüh, ahh ahh demenize gerek yok. Hala geç kalmış sayılmazsınız ve 0 A.D.'nin gelişimine katkı sağlayabilirsiniz. Dün alfa öncesi ikinci sürümü yayımlanan 0 A.D. daha şimdiden çok güzel özelliklerle gelse de daha yapılacak çok iş var.


Bu yeni sürüm de henüz (fazla) oynanabilir olmasa da güzel yenilikler içeriyor. Yeni bir yol bulma sistemi, dinamik bir küçük harita ekranı ve temel ses sistemi bu özelliklerden yalnızca bir kaçı. Özeliklerin tümünü ve gelişiminin ne aşamada olduğunu oynayış özellikleri durumundan görebilirsiniz.


0 A.D.'nin Pardus için paketlenmesi için açılan paket isteğine buradan, Arch için paketine şuradan, Ubuntu için paketine ise oradan ulaşabilirsiniz.

Özgür Yazılımın Gücünün İspatı: Lugaru

Lugaru'nun kaynak kodlarının açılması henüz bir gün olmasına rağmen pek çok gelişme yaşadı. Dünyanın dört bir yanından insanlar yamalarla, yeni tasarımlarla destek oluyorlar. Kaynak kodlar açılırken belirtilen Windows'ta derlenmeme sorunu daha birkaç saat geçmeden düzeltildi.

Benzer olarak King_InuYasha ve losinggeneration ise CMake inşa sistemi oluşturdular Lugaru için ve bu proje için bir Google Code sayfası açtılar.

Bunların dışında daha birçok iyileştirme bulunuyor, PNG dosyalarındaki sorunların düzeltilmesi, GNU/Linux'taki sistem kütüphanelerinin kullanılması, Windows'ta kütüphanelerin dinamik olarak bağlanması bunlardan sadece birkaçı.

Eğer 64 bit bir GNU/Linux dağıtımı kullanıyorsanız şuradaki projeye bakabilirsiniz, burada ise derleme konusunda bilgi bulabilirsiniz.   

Çok kısa bir sürede eminiz yeni grafik tasarımlar da hazırlanacaktır. Böylece yepyeni bölümler ve oynayış tarzlarına kavuşabileceğiz. Gelişmeleri YouTube üzerinden takip etmek isterseniz bu bağlantıyı kullanabilirsiniz :) Heyecan verici.

 
Kaynaklar:

12 Mayıs 2010 Çarşamba

Unutulmayacak Bir Açık Kaynaklaştırma Hareketi

Humble Indie Bundle'nin başarısı üzerine bu projeye katılan beş bağımsız oyun geliştiricisinden dördü oyunlarını açık kaynak olarak sunacaklarını açıkladı. Bu oyunlardan biri dün açık kaynak olarak internet üzerinden sunuldu, diğerleri için ise gerekli çalışmalar devam ediyor.

Humble Indie Bundle, bir hafta önce başlatılan bir projeydi. Bu projede World of Goo, Aquaria, Gish, Lugaru ve Penumbra Overture'yi Windows, Mac OS X veya GNU/Linux için sipariş edebiliyorsunuz ve fiyat olarak sadece içinizden geldiği kadar bir tutar ödüyorsunuz. Harika bir şey öyle değil mi? Ayrıca bu projeden elde edilen gelirin bir kısmı Electronic Frontier Foundation (EFF) ve Child's Play Charity'ye bağışlanacak.

Aquaria, Gish, Lugaru HD ve Penumbra Overture'nın geliştiricileri kaynak kodlarını açık kaynak olarak suncaklarını taahhaüt ettiler. Lugaru HD'nın geliştiricisi Wolfire Games, dün gece geç saatlerde kaynak kodları resmi günlükleri üzerinde yaptıkları duyuru ile açtılar. Tüm dünyada büyük sevinçle karşılanan bu olayın hemen akabinde oyun için katkıcılar tarafından yeni özellikler ve sorunları düzeltecek yamalar hazırlanmaya başladı. Açık kaynak ve özgür yazılımların gücü işte bu, başka nasıl olabilirdi ki. World of Goo'nun geliştiricisi 2D Boy ise oyunlarını açık kaynak olarak sunma konusunda henüz bir açıklama yapmadı. Ama bu oyun hakkında da sevindirici haberler duyabiliriz gibi ileride.

Bu dört oyunun açık kaynak olması şerifine Humble Indie Bundle projesi üç gün daha uzatıldı. Eğer GNU/Linux üzerinde daha fazla oyun görmek istiyorsanız lütfen bu oyunları gönlünüzden geçtiği kadar bir ücret ödeyerek alınız. Yaşasın özgür oyunlar.

Kaynaklar:

11 Mayıs 2010 Salı

JAMP

Bir başka açık kaynak fizik oyunu ile daha karşılaştım dün. İsmi JAMP. Şu ana kadar GNU/Linux üzerinde oynadığım en iyi fizik oyunlarından biri olduğunu rahatlıkla söyleyebilirim (evet söyledim, ne rahatmış ya, hiç zorlanmadım).

Oyun David Perrenoud tarafından Box2D ve Kore motoru kullanılarak hazırlanmış. Tam bir sanat eseri olan JAMP'ta bir sincabı yönetiyor ve gitmek istediği noktaya kadar ona arkadaşlık ediyorsunuz.


JAMP sakın gözünüze çocuk oyuncağı gibi gelmesin. Bazı yerleri geçmek için hile yaptım. Aslında yapmazdım, bileğimin hakkıyla geçerdim de oyunu tanıtmak için biraz ilerlemem gerekiyordu, tanıtımı da hemen yapmak istediğimden (tamam yeter savunma kendini anladık, harika bir oyuncusun, hileye hurdaya tenezzül etmezsin).


JAMP'ı oynarken hem klavyenizdeki yön tuşlarıyla sincabı yönlendirmeniz hem de farenizle çeşitli nesneleri işinize geldiği şekilde kullanmanız gerekmektedir. Bu özelliği ile JAMP diğer durağan fizik oyunlarından ayrılıyor ve platform türüne yaklaşıyor.

Kesinlikle oynamanızı tavsiye ettiğim bir oyun, JACK, kaçırmayın. Pardus kullanıcıları buradan, Gentoo kullanıcıları buradan, Ubuntu kullanıcıları ise şuradan kurabilirler JAMP'ı. Eğer dağıtımınız için bir paket bulamazsanız, kaynak kodlarından kendinizden kurulum yapabilirsiniz.


Oyun hakkında detaylı bilgiyi ise geliştiricinin yazmış olduğu belgeden edinebilirsiniz. Belgeyi Google İngilizcesi ile okumak içinse bu bağlantıyı kullanabilirsiniz.

1 Mayıs 2010 Cumartesi

sayi-tahmin

Hepimiz değilse bile çoğumuz programlamayı öğrenirken bir sayı tahmin oyunu yapmışızdır. Hani şu sizin sayıları tahmin etmeye, bilgisayarın da daha küçük, daha büyük diyerek yardım etmeye çalıştığı oyunlar var ya onlardan bahsediyorum işte. Sayı tahmin oyununun o kadar çok klonu var ki inanamazsınız, çünkü herkes öğrenmek için yeni bir tane yazıyor. Bundan şikayetçi filan değilim, bu harika bir şey.

Yalnız çeşitli taşınabilir platformlar için olanları hariç tüm sayı tahmin oyunlarında eksik olan bir şey var. Bir oyunun oyun yapan en büyük özellik. Eğlence. Ya ne olacaktı? Bilgisayar sayı tutsun 1 - N arası kullanıcı bu sayıyı bilgisayarın verdiği ipuçları ile M denemede bilsin. Bir oynadın, iki oynadın, ya sonra yine mi oynayacaksın, hadi oradan.

Ağır ağır (çok yavaş bir biçimde demeye getiriyorum) C++ öğrenirken bir sayı tahmin oyunu da ben yapayım dedim, takip ettiğim kitapta dört beş bölüm bitirmiştim ne de olsa, bunları uygulamaya geçirmeliydim.

Birkaç satır yazdıktan sonra ileride çok sevebileceğim bir sayı tahmin oyunu çıktı ortaya. İsmi oldukça ilginç: sayi-tahmin.


sayı-tahmin şu an fena sayılmaz. Türkçe ve İngilizce desteği var, terminal tabanlı sayı tahmin oyunları arasında en güzeli olduğunu söyleyebileceğim bir arayüze sahip, puan, bonus ve can olayları yerlerini almış ve bunlardan daha önemlisi oyuna bir parça heyecan katan zaman aşımlı kullanıcı girişi desteği var. Bu zaman aşımlı kullanıcı girişi hakkında daha sonra uzun bir yazı yazacağım ama şimdi de kısaca bahsedeyim. İlk bölümde kullanıcıya bir sayıyı tahmin etmesi için K saniye veriliyor ve her yeni bölüme geçildiğinde süre K-1 oluyor ta ki 3 saniyeye gelen kadar, çünkü üç saniyeden daha az bir sürede hiçbir klavye üstadının giriş yapabildiği henüz kanıtlanamamıştır.

sayı-tahmin mükemmel, harika anladık tamam. Şimdi neler eksik, neler yapılabilir onlara bakalım. Çoğul konuşuyorum çünkü eğer siz de sayı-tahmin için bir şeyler yapmak isterseniz, yapabilirsiniz.

  • Ağ üzerinden, kanlı canlı bir rakibe karşı oynama.
  • Bilgisayara karşı oynama (yani zamana karşı değil, bir bilgisayar bir siz tahmin edeceksiniz).
  • Yüksek puanların saklanması, hatta daha da güzel olarak internet üzerinden saklanarak herkeste görünebilmesi.
  • Sürpriz sayılar, bölümler, değişik oynayış biçimleri
  • ...