Obsah:
Publikováno: 10 července 2009
Co je 0 A.D.
0 A.D. je svobodná, multiplatformní, historicky věrná, 3D strategie hraná v reálném čase, která je stále ještě ve vývoji.
Co jsme udělali?
Přešli jsme z procesu vývoje s uzavřeným kódem na vývoj s otevřeným kódem (open source). Kód jsme uvolnili pod licencí GPL, grafický obsah pod licencí Creative Commons (CC-BY-SA) a vyzýváme tímto k externím příspěvkům a spolupráci. Na vývoji hry 0 A.D. jsme roky pracovali v našem volném čase. Nyní chceme ukázat, co je již hotovo, a usnadnit zapojení dalších lidí.
0 A.D. je velmi komplexní a ambiciózní projekt. Vložili jsme do něj již mnoho práce, ale mnoho je také ještě nutné udělat. Zatím nevydáváme hratelnou verzi - pokud to je to, co vás zajímá, budete muset ještě počkat. Ve hře je mnoho chybějících důležitých funkcí, chyb a nedodělků. Vydáváme tuto verzi jako stále rozpracovanou, ve fázi pre-alpha. Je určena pro vývojáře, kteří by mohli mít zájem, a doufáme ve sdílení zdrojů s komunitou lidí, kteří by jinak byli z našeho vývojového procesu vyloučeni.
Toto je experimentální krok a my vlastně pořádně nevíme, jak by to mohlo fungovat nejlépe. Budeme proto postupovat opatrně a proces přizpůsobovat podle získaných zkušeností. Tento dokument popisuje naše současné plány. Uvítáme vaši zpětnou vazbu. Kontaktovat nás můžete na našem fóru nebo #0ad na QuakeNet IRC.
Proč by mě to mělo zajímat?
Myslíme si, že máme docela dobrou šanci vytvořit kvalitní hru s jedinečnými funkcemi. Možná byste nám chtěli pomoci uvést hru do života.
Možná byste se chtěli přiučit prací na komplexním softwarovém projektu či přímo herním projektu, který zahrnuje množství různých oblastí: grafiku a zvuk, umělou inteligenci a uživatelské prostředí, zpracování souborů, herní skriptování a síťování atd. Základní struktura už existuje a část z ní je již ve velmi solidním stavu, ovšem je tu množství prostoru pro ponoření se do jednotlivých detailů a práci na různých komponentách.
Možná by hra mohla fungovat lépe na vaší oblíbené platformě. Možná byste nám rádi ukázali, jak jsme neschopní, a o kolik lepší kód dokážete napsat. (Zdaleka nejsme dokonalí!)
Možná byste chtěli použít část našeho kódu nebo grafiky ve vašich vlastních projektech. Možná byste chtěli použít tuto hru k praktické výuce vývoje her. A možná máte zcela jiné důvody.
Proč jsme to udělali?
Na této hře pracujeme tak či onak již od roku 2001. Ušli jsme od té doby již dlouhou cestu, ale tvorba tohoto druhu her je velmi náročná. Původní tým byl složen většinou ze studentů, kteří se postupně zapojili do běžného pracovního života a již nemohli věnovat projektu tolik času jako dříve. Přilákání nových vývojářů je obtížné a časově náročné - jen málo lidí má dostatek času a dovedností, aby se naučili pracovat s našim již existujícím kódem a významně do něj přispěli. Chceme proto zmenšit překážky bránící zapojení, zjednodušit sledování našeho projektu, aby lidé mohli zkusit, jestli by je mohl zajímat. Doufáme, že některé by zajímat mohl.
Máme také množství nápadů, nástrojů a kódu, o nichž si myslíme, že jsou povedené, a o které bychom se rádi podělili. Měli bychom je ještě trochu pročistit a řádně zdokumentovat, aby byly pro vývojáře užitečné, ale zpřístupnění kódu je ten první krok. Především na operačním systému Linux zjednodušuje otevřený kód řadu problémů s distribucí a odstraňováním chyb, což pomáhá nám i uživatelům.
Až dosud byl přístup k projektu omezen na „oficiální“ členy naší skupiny, ačkoliv vždy bylo naším záměrem vytvořit nekomerční hru a členství bylo vždy docela otevřené. Koncept otevřeného zdrojového kódu pro nás proto ještě před pár lety nebyl zajímavý, avšak časy se mění a nyní se zdá být přirozené rozvinout projekt tímto způsobem.
Jak bude vývoj organizován?
V začátcích tohoto projektu je nutné respektovat komunitu a poskytovat jí tolik informací, zpětné vazby a podpory, kolik jen bude možné, tak abyste mohli těžit z účasti na projektu (a pochopitelně doufáme, že potom naopak také vy přispějete). To však také musí být v rovnováze s naší touhou dokončit hru při udržení vysokého standardu a s některými omezeními vyplývajícími z naší organizace v minulosti.
Dříve byli všichni vývojáři součásti oficiálního „týmu“. Kdokoliv smí zažádat o přijetí. Projde krátkým pohovorem na kanálu IRC, abychom ho poznali a dozvěděli se, jestli to vypadá, že má dostatek času, energie a dovedností, aby byl přínosem. Pak se může stát členem. Hodláme zachovat základní skupinu vývojářů a soukromou komunikaci - nechceme riskovat zničení týmu, který již máme. Hodláme se zaměřit na konkrétní designové vize a nechceme se od nich příliš odchylovat - raději nebudeme přidávat (a udržovat) funkce, které nejsou součástí vytyčeného cíle. Uvolňujeme grafiku a herní data pro dvě z šesti civilizací ve hře, ovšem dosud zadržujeme tato data pro civilizace, na kterých se pracuje, dokud nebudou kompletnější a použitelnější.
Kromě těchto omezení otevíráme přístup k serveru pro správu zdrojového kódu (Subversion), k dokumentaci a systému pro sledování problémů (Trac) a přesunujeme naše technické diskuse na otevřené fórum. Kdokoliv si může stáhnout, zkompilovat a spustit nejnovější verzi hry. Náš počáteční proces pro přispívání kódu bude velmi jednoduchý. Pokud uděláte nějaké změny, měli byste vytvořit patch a předložit nám ho. My ho pak zkontrolujeme a možná navrhneme nějaké změny, nebo ho postoupíme do SVN.
Licencování příspěvků kódu je dosud otevřenou otázkou. Užití kódu pod licencí GPL na jedné straně zajistí přispěvatelům, že jejich práci nezneužijeme. Na druhé straně bychom si chtěli nechat otevřené možnosti přijímáním kódu pod licencí BSD. Možná bychom mohli vytvořit speciální verzi napojenou na uzavřený software pro detekci podvodů, abychom odradili hráče od nedovoleného upravování map při hře pro více hráčů, které by bylo triviální, kdyby hra měla otevřený kód. Nebo bychom třeba mohli napojit hru na uzavřený digitální distribuční systém, abychom pro ni získali rozsáhlejší distribuci. Není zcela jasné, které řešení by bylo ideální, proto vítáme diskusi na toto téma.
Jak vypadá kód?
Máme zhruba 150 000 řádků kódu herního modulu v jazyce C++ a dalších asi 25 000 řádků editovacích nástrojů. Herní skriptování používá jazyk JavaScript. Stavíme na nízkoúrovňových knihovnách (OpenGL, OpenAL, ENet,...), nikoliv na již existujícím herním modulu (jako třeba OGRE).
Kód není příliš čistý, příliš modulární ani extrémně dobře napsaný. Byl vytvořen množstvím různých programátorů a základ kódu má daleko k dokončení. Jako součást procesu vývoje chceme pokračovat v pročišťování kódu. Nebráníme se ani přepisování celých subsystémů, pokud je to nejefektivnější způsob, jak dosáhnout našich požadavků. Nicméně v mnoha oblastech je kód poměrně solidní.
Lze části kódu použít i jinde?
Většina kódu je napsána speciálně pro tuto hru a není příliš užitečná pro jiné použití. Některé části však možná mohou být zajímavé pro vývojáře pracující na jiných projektech. Několik příkladů:
- nízkoúrovňová knihovna poskytující podporu pro správu zdrojů (načítání archívů, textur a shaderů GL,...), nástroje na odstraňování problémů (hlášení chyb, sledování paměti, výpisy zásobníku), časovače, asynchronní V/V, alokátory atd.;
- konvertor z modelů ve formátu COLLADA se skeletální animací do jednoduchého formátu použitelného ve hrách;
- binární systém ukládání do mezipaměti založený na XML umožňující rychlejší načítání zdrojů;
- automatizované kompilační nástroje používající prostředí Amazon EC2;
- nudný matematický kód pro matrice, vektory, kvaterniony atd.
Jak jsme na tom v porovnání s jinými hrami?
Víme i o několika dalších strategiích v reálném čase s otevřeným zdrojovým kódem. Hra Glest je již ve stabilní verzi a je zasazena do středověkého/fantastického světa. Nemá tak komplexní herní systém a grafiku, ale disponuje počítačovými protivníky (ti ještě v 0 A. D. implementováni nejsou). ORTS je spíše rozhraním zaměřujícím se na vývoj umělé inteligence než hratelnou hrou. Spring je další strategií hranou v reálném čase podobnou hře Total Annihilation. 0 A.D. se snaží odlišit nabídkou nových herních nápadů, detailní grafiky a historicky věrného prostředí.
Jak začít?
Chcete-li získat více informací o hře, instrukce ke kompilaci a spuštění hry, odkazy na další podrobnosti či navštívit diskusní fórum, podívejte se na Getting Started guide (Začátečnickou příručku).