Spis treści:
Publikacja: 10 lipca 2009
Polish translation by Amfidiusz.
Czym jest 0 A.D.?
0 A.D. jest darmową, wieloplatformową, aktywnie rozwijaną, trójwymiarową, historyczną grą strategiczną czasu rzeczywistego.
Co robicie?
Zmieniamy model rozwoju z zamkniętego na open source: upubliczniamy kod na licencji GPL oraz materiały artystyczne na CC-BY-SA, a także zachęcamy do niezależnego wkładu w rozwój projektu. Nad 0 A.D. pracowaliśmy przez lata w wolnym czasie, a teraz pragniemy pokazać, co osiągnęliśmy i ułatwić dostęp do projektu większej liczbie osób.
0 A.D. jest niezwykle skomplikowanym i ambitnym projektem. Włożyliśmy w niego wiele pracy, lecz wciąż większa część przed nami. Nie wydajemy grywalnej gry – będziesz musiał poczekać znacznie dłużej jeśli tego oczekujesz. W grze wciąż znajduje się wiele niewprowadzonych rozwiązań, poważnych błędów oraz mniejszych niedociągnięć. Wydajemy ją jako wersję pre-alpha skierowaną do deweloperów, których może ona zainteresować, mając nadzieję na dzielenie się zasobami ze społecznością, która w innym przypadku byłaby wyłączona z procesu rozwoju.
Jest to eksperymentalny krok i nie jesteśmy jeszcze pewni, jakie przyniesie on skutki. Będziemy więc posuwać się ostrożnie oraz próbować odnaleźć się w nowej sytuacji. Ten dokument opisuje nasze obecne plany; opinie będą mile widziane! Skontaktuj się z nami poprzez forum lub #0ad na QuakeNet IRC.
Dlaczego dotyczy to mnie?
Uważamy, że istnieje duża szansa na stworzenie całkiem przyzwoitej gry z unikalnymi możliwościami. Być może będziesz chciał pomóc doprowadzić projekt do jego finalnego etapu.
Być może pragniesz nauczyć się czegoś nowego poprzez doświadczenia w pracy nad złożonym projektem programistycznym. Oferujemy całą gamę kierunków rozwoju: grafika i dźwięk, AI i UI, zarządzanie plikami, skrypt gry, rozwiązania sieciowe itp. Podstawy już istnieją, w niektórych miejscach całkiem solidne, ale wciąż istnieje szeroki wachlarz możliwości do zanurzenia się w szczegóły i pracy nad poszczególnymi komponentami.
Być może chciałbyś ulepszyć działanie gry na swoim ulubionym systemie. Może chcesz nam udowodnić, jak bardzo głupi jesteśmy i pokazać nam sposób na pisanie o wiele lepszego kodu. (Daleko nam do doskonałości!)
Być może chcesz wykorzystać część naszego kodu lub grafiki w innym swoim projekcie. Może chcesz wykorzystać naszą grę jako przykład podczas zajęć informatycznych. A być może masz swoje własne powody.
Dlaczego to robicie?
Pracowaliśmy nad tą grą w tej czy innej formie od 2001 roku. Od tamtego okresu przebyliśmy długą drogą, jednak tworzenie tego typu gry jest dość trudne. W skład pierwotnego zespołu wchodzili głównie studenci, którzy obecnie prowadzą dorosłe życie i nie mogą poświęcić wiele czasu na ten projekt. Szukanie nowych deweloperów jest ciężkie i czasochłonne – niewielu ludzi ma czas i umiejętności do nauczenia się pracy z istniejącym kodem oraz wniesienia do niego znaczących poprawek. Postanowiliśmy więc obniżyć progi, ułatwiając ludziom dostęp do plików, a przez to zainteresowanie ich projektem.
Ponadto, posiadamy pewne pomysły, narzędzia i kod, które uważamy za całkiem przyjemne i którymi chcielibyśmy się podzielić. Powinniśmy go oczyścić i porządnie udokumentować, żeby był bardziej przydatny innym użytkownikom, ale publikacja kodu jest dopiero pierwszym krokiem. Także, w szczególności na Linuksie, open source ułatwia wiele spraw związanych z dystrybucją i debugowaniem. Jest więc to ułatwienie i dla nas, i dla użytkowników.
Aż do tego momentu, dostęp do projektu był ograniczony do 'oficjalnych' członków zespołu, jednak zawsze założeniem było wyprodukowanie niekomercyjnej gry, a członkostwo w grupie nie było trudne do uzyskania. po prostu koncept open source nie był uważany za interesujący kilka lat temu, ale czasy się zmieniły i obecnie wydaje się on naturalnym krokiem w kierunku rozwoju naszego projektu.
Jak zorganizowany jest rozwój projektu?
Po otwarciu projektu, zamierzamy szanować społeczność poprzez dostarczanie jej tyle informacji i wsparcia, ile to tylko możliwe, aby każdy mógł skorzystać w uczestnictwie z projektu (oczywiście zawsze mamy nadzieję na dalszą kontrybucję!). Jednocześnie chcemy ukończyć grę na wysokim standardzie związanym z naszą dotychczasową organizacją.
W przeszłości, wszyscy deweloperzy należeli do oficjalnej 'ekipy': każdy mógł dołączyć po krótkim wywiadzie na kanale IRC, aby poznać nową osobę i upewnić się, że ma czas, energię i umiejętności, aby wnieść coś pożytecznego. Utrzymamy więc podstawową grupę deweloperów i prywatne metody komunikacji – nie chcemy ryzykować rozpadu grupy, którą już stworzyliśmy. Zamierzamy dążyć do ustalonej już wizji projektu i nie chcemy zbytnio od niej odbiegać – nie chcielibyśmy wprowadzić (i rozwijać) funkcji, które nie są częścią naszych celów. Upubliczniamy więc grafikę i skrypty rozgrywki dla dwóch z sześciu cywilizacji dostępnych w grze, wstrzymując rozwijane części projektu do momentu, aż będą one bardziej kompletne i użyteczne.
Oprócz tych restrykcji, otwieramy dostęp do serwera kodu źródłowego (Subversion) oraz dokumentacji i trackera błędów (Trac), a całą dyskusję techniczną przenosimy na forum. Każdy może pobrać, zbudować i uruchomić najnowszą wersję gry. Nasz początkowy proces kontrybucji będzie bardzo prosty: Jeśli dokonasz jakichkolwiek zmian, powinieneś utworzyć patch i przesłać go do nas. Po weryfikacji i ewentualnych zmianach zostanie on przesłany do SVN.
Licencjonowanie kontrybucji jest wciąż tematem otwartym. Z jednej strony, akceptacja kodu GPL zagwarantuje deweloperom, że nie wykorzystamy ich pracy w nieuczciwy sposób. Z drugiej strony, chcielibyśmy zachować pole manewru akceptując jedynie kod licencjonowany pod BSD. Pozwoliłoby to na zabezpieczenie gry przed złośliwym umieszczaniem kodu ułatwiającym rozgrywkę wieloosobową, co w przypadku projektu open source nie byłoby trudne. Idealne rozwiązanie nie jest jeszcze sprecyzowane, zachęcamy więc do dyskusji na ten temat.
Jak wygląda kod?
Istnieje już blisko 150k linii kodu C++ opisujących silnik gry oraz dodatkowe 25k dla narzędzi edytujących. Skrypty rozgrywki korzystają z JavaScript. Bazujemy na bibliotekach niskiego poziomu (OpenGL, OpenAL, ENet, ...), a nie na istniejącym już silniku gry (typu OGRE).
Kod nie jest perfekcyjnie czysty czy modularny. Został on napisany przez wielu programistów i daleko mu do "kompletności". Chcemy kontynuować czyszczenie niektórych skryptów w ramach naturalnego procesu rozwoju. Nie jesteśmy przeciwni całkowitemu przepisaniu subsystemów, jeśli będzie to najwydatniejsza droga do sprostania naszym wymaganiom. Jednakże w wielu częściach jest on solidny.
Czy kod może być ponownie wykorzystany?
Większość kodu jest specyficzna dla samej gry i nie przyniesie korzyści jeśli zostanie wykorzystana poza projektem. Jednak niektóre części mogą zainteresować deweloperów pracujących nad innymi projektami. Kilka przykładów:
- Biblioteki niskiego poziomu ułatwiające wsparcie dla różnych platform przy zarządzaniu zasobami (ładowanie plików archiwalnych, tekstur GL i shaderów, ...), narzędziach debugujących (raportowanie błędów), zarządzaniu czasem, niesynchronicznymi IO, ...
- Konwertowanie modeli COLLADA przy wykorzystaniu animacji szkieletowej do prostego grywalnego formatu.
- Binarny system XML do zarządzania cache przyspieszający ładowanie zasobów.
- Zautomatyzowane narzędzia budowania przy wykorzystaniu Amazon EC2.
- Nudny kod matematyczny dla macierzy, wektorów, kwaternionów itp.
Jak gra wypada na tle innych projektów?
Jesteśmy świadomi istnienia kilku innych open source'owych gier RTS. Glest osiągnął status wersji stabilnej i jest osadzony w świecie średniowiecza/fantasy z mniej rozbudowanym trybem gry i grafiką, za to z przeciwnikami AI (co nie zostało jeszcze zaimplementowane w 0 A.D.). ORTS jest bardziej projektem nastawionym na rozwój AI niż na grywalność, podobnym do Total Annihilation. 0 A.D. próbuje się wyróżnić dostarczając nowe pomysły rozgrywki, szczegółową grafikę i tło historyczne.
Jak mogę zacząć?
Przeczytaj przewodnik Jak zacząć, aby znaleźć informacje o grze i forum dyskusyjnym, instrukcje dotyczące budowania i uruchomienia gry oraz odnośniki do dalszych szczegółów.