0 A.D.

Conteúdo:

Published: 10 July 2009

English 简体中文 Español Português Português Русский Français Deutsch Türkçe Polski Español de Chile Česky עברית Galego   Portuguese translation by Devil999.

Swamp Defense screenshot

O que é 0 A.D.?

0 A.D. é um jogo de Estratégia em Tempo Real (RTS), gratuito, multi-plataforma, 3D, baseado em eventos históricos, que está actualmente em desenvolvimento.

O que estão a fazer?

Estamos a mudar de um desenvolvimento fechado, para um de código aberto: disponibilizando o código como GPL e o conteúdo artístico disponível como CC-BY-SA, e encorajando contribuições externas. Temos trabalhado no 0 A.D. nos nossos tempos livres durante alguns anos, e agora queremos mostrar o que já alcançámos até agora e facilitar o envolvimento de mais pessoas.

0 A.D. é um projecto muito complexo e ambicioso. Muito trabalho foi feito, mas a maior parte está por fazer. Ainda não estamos a disponibilizar uma versão final do jogo – para isso terá de esperar algum tempo. Há muitas características em falta, muitos bugs e muitos aspectos por polir. Estamos a lançar o software em estado de desenvolvimento, pré-alpha, destinado a desenvolvedores que possam estar interessados, com esperança de partilhar recursos com uma comunidade que de outro modo seria excluída do processo de desenvolvimento.

Este é um passo experimental, e não sabemos o que irá funcionar melhor, por isso estamos a agir cuidadosamente e a tentar adaptarmo-nos com base na experiência. Este documento descreve os planos actuais; comentários são incentivados! Contactem-nos no nosso forum, ou no IRC em #0ad na QuakeNet.

Discovery screenshot

Porque é que eu me devo importar?

Pensamos que há uma grande hipótese de conseguirmos fazer um jogo bastante bom, com algumas características únicas. Talvez queira ajudar a criar esse jogo.

Talvez queria ganhar experiência ao trabalhar num projecto com software complexo ou, particularmente, num jogo. Há muitas áreas por onde escolher: gráficos e áudio, IA e UI, manuseamento de ficheiros, programação de jogabilidade e de rede, e muitas outras. A estrutura básica está pronta, e parte é já bastante sólida, mas há muitos detalhes e outros componentes onde pode ajudar.

Talvez queria fazer com que o jogo corra melhor na sua plataforma. Talvez o queria usar para ensinar os seus alunos numa aula de programação de jogos. Se calhar tem outras razões.

Gaugamela screenshot

Porque estão a fazer isto?

Nós temos trabalhado neste jogo de uma maneira ou outra, desde 2001. E já conseguimos muito desde essa altura, mas fazer este género de jogo é bastante difícil. Os membros da equipa original eram essencialmente estudantes, e seguiram com a sua vida, e já não podem dedicar muito tempo ao projecto. Atraír novos desenvolvedores é difícil e consome muito tempo – poucas pessoas têm o tempo e perícia para aprender como trabalhar com o código existente e como contribuir significativamente. Então, queremos baixar as barreiras de entrada, tornando mais fácil para todos verem o projecto, e verificar se realmente lhes interessa, com a esperança que alguém decida que sim.

Também temos algumas ideias, ferramentas e código que achamos que são bastante boas, e gostaríamos de partilhar. Devemos limpá-las e documentá-las para que sejam mais úteis para outras pessoas, mas disponibilizar o código é o primeiro passo. E, particularmente no caso de Linux, abrir o código simplifica uma quantidade de problemas em distribuir e depurar erros, tornando tudo mais fácil para nós e para os utilizadores.

Até agora, o acesso ao projecto foi limitado a membros "oficiais" do grupo, embora a ideia sempre tenha sido produzir um jogo não comercial, e a adesão sempre foi bastante aberta. O conceito de software aberto não era interessante à alguns anos, mas os tempos mudam, e agora parece um modo natural de desenvolver o nosso projecto.

Magna Graecia screenshot

Como é que o desenvolvimento vai ser organizado?

Ao abrir o projecto, temos de respeitar a comunidade e disponibilizar o máximo de informação, comunicação e suporte possível, para que todos possam beneficiar de participar no projecto (e de preferência, que possam contribuir e beneficiar o projecto, também!), em conjunto com o nosso desejo de completar o jogo com um nível de padrões bastante elevados, e com algumas restrições da nossa organização anterior.

No passado, todos os desenvolvedores faziam parte da equipa oficial: qualquer pessoa pode solicitar a entrada, teremos uma pequena entrevista no IRC para os conhecer, e se parecer que essa pessoa tem o tempo, energia e habilidades para contribuir, então torna-se um membro. Vamos manter o grupo cerne de programadores e manter os métodos de comunicação privados – não queremos arriscar destruir a equipa que já temos. Vamos manter os objectivos, e não queremos divergir muito deles – preferimos não adicionar (e ter de manter) características que não fazem parte dos objectivos. Vamos disponibilizar o conteúdo artístico e o código para duas das seis civilizações do jogo, mas manter o trabalho em progresso das outras civilizações até que estas estejam mais completas e prontas para uso.

Aparte dessas restrições, estamos a disponibilizar acesso ao servidor de controlo de código fonte (Subversion), à documentação e ao sistema de registo de problemas (Trac), e a mover as discussões técnicas para um fórum aberto. Qualquer pessoa pode fazer o download, compilar e correr a versão mais recente do jogo. O processo inicial para contribuição será bastante básico: Se tiver algumas alterações a propor, deverá criar um patch, e submetê-lo para nós, e depois da nossa revisão, daremos algumas sugestões de alteração, ou enviaremos para o SVN.

Licenciamento de contribuições é uma questão aberta. Se por um lado, aceitar código GPL deve garantir que aos contribuidores não iremos usar desonestamente o seu trabalho. Por outro lado, queremos manter as nossas opções em aberto, apenas aceitando código licenciado por BSD, talvez para produzir uma versão especial unida a um sistema proprietário de software anti-batota, para desencorajar o uso de hacks em mapas multi-jogador, que seriam elementares de criar a um jogo de código aberto, ou para unir a sistemas de distribuição digital proprietárias, para obter uma distribuição mais generalizada. A solução ideal não é clara, e por isso estaríamos interessados em discutir este assunto.

Savanna Biome screenshot

Existem aproximadamente 150K linhas de código C++ para o motor do jogo, e outras 25K para ferramentas de edição. Programação de jogabilidade utiliza JavaScript. Nós compilamos com base em bibliotecas de nível baixo (OpenGL, OpenAL, ENet, ...), e não num motor de jogo existente (como, por exemplo, OGRE).

O código não está extremamente limpo, modular ou bem escrito. Foi escrito por muitos programadores, e está longe de ser um código "final". Queremos continuar a limpar algumas partes, no processo normal de desenvolvimento. Não somos contra reescrever subsistemas inteiros, se essa for a maneira mais efectiva de as tornar satisfatórias para os nossos requerimentos. Mas em muitas áreas é bastante sólido.

Que código reutilizável existe?

A maior parte do código é específico para o jogo, e não muito útil fora dele, mas algumas parte podem ser interessantes para desenvolvedores que estejam a trabalhar em outros projectos. Alguns exemplos:

Como é que se compara a outros jogos?

Glest atingiu o estado "estável" e é baseado num mundo medieval/fantasia, com jogabilidade e gráficos menos complexos, mas com oponentes com IA (que ainda não estão totalmente implementados no 0 A.D.). ORTS tem mais uma estrutura mais de pesquisa de IA do que de jogo. Spring é outro motor de RTS que parece ter sido desenhado para uma jogabilidade semelhante à do Total Annihilation. 0 A.D. está-se a esforçar para se diferenciar, para fornecer novas ideias de jogabilidade, gráficos detalhados, e um ambiente histórico correcto.

Como posso começar?

Veja o Guia de Como Começar para encontrar mais informação sobre o jogo, fóruns para discussões, instruções para compilar e correr o jogo, e ligações para outros detalhes.