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.
Yorum Gönder