[imagem de um Admirável Mundo GNU]
Admirável Mundo GNU - Número 37
Copyright © 2002 Georg C. F. Greve <greve@gnu.org>
Traduzido para o português por Hilton Fernandes <fernandesh@yahoo.com> e
Fernando Lozano <fernando@lozano.eti.br>
A declaração de permissão está abaixo.

[DE | EN | FR | IT | JA | ES | KO | PT]

Bem vindo a mais um número da Admirável Mundo GNU, com uma variedade de projetos que deve causar uma ou duas inspirações para a maioria dos leitores.

Neste mês também vamos começar apresentando mais jogos que são Software Livre: existem mais jogos do que se poderia pensar.

Trophy

Andrew Mustun começou a desenvolver o Trophy [5] para preencher as lacunas de sua formação, depois de ter deixado o curso de ciência da computação. Trophy, ou "troféu", é um jogo de corrida de carros, em 2-D, visto do topo, no qual não basta apenas terminar a corrida.

Na verdade, também é importante terminar a corrida, pois, como em alguns filmes de James Bond, os carros são armados e vão querer usar essas armas.

Graças ao gráficos e sons de boa qualidade, o Trophy é um jogo muito completo que permite que os amigos dos jogos de ação possam se divertir. Contudo, é recomendável um computador poderoso para ter uma movimentação suave das figuras.

Trophy foi escrito em C++, e Andrew o liberou sob GPL, Licença Geral Pública do GNU. Sua maior falha é provavelmente a impossibilidade de jogar em rede. Andrew planeja cuidar disso assim que ele encontrar tempo, pois seus estudos foram retomados e ele está muito ocupado.

Deve-se dizer que na preparação deste número Andrew enfatizou ser uma pessoa da paz, que reprova as armas em geral, e que também considera os carros perigosos mesmo que não tenham armas. Apesar de que, não tendo aos 25 anos licença para dirigir, ele de qualquer modo não pode dirigir um carro de verdade.

Contudo, isto não deve tirar o prazer de passar horas se divertindo com o Trophy. Se você quiser um relaxamento criativo com o GIMP, para criar mais pistas, não há problema: há instruções sobre como fazer isso na página inicial do Trophy.

Se a falta de uma opção de rede fizer muita falta, os desenvolvedores interessados são obviamente benvindos para implementá-la. Andrew com certeza gostaria de ter ajuda nesse sentido.

Adonthell

O projeto Adonthell [6] está ocupado criando um jogo Livre de "roleplaying" em 2D, similar a consoles antigas, como o SNES -- apesar de que se pretende ter um grau de liberdade muito maior.

Muitos jogos consistem de duas partes conectadas que podem ser bem percebidas individualmente. É óbvia a importância do conteúdo, como estória, gráficos, músic etc. O componente técnico, que faz, de fato, a interface com o jogador, é em geral chamado de "engine", ou "motor" ou "dispositivo".

Existem analogias úteis com a relação entre programas e o sistema operacional, ou entre a pauta e os instrumentos musicais. Esta separação permite escrever jogos de forma abstrata, com a linguagem e as possibilidades determinadas pelo dispositivo do jogo.

O projeto Adonthell não desenvolve apenas um jogo com uma história fixa, ele pretende desenvolver um dispositivo para jogos de "roleplaying", além de estórias que são depois interpretadas por este dispositivo. Planeja-se que em todas as distribuições não estejam apenas fragmentos de código, mas também pequenos jogos completos, como amostra.

Respeitda a flutuação usual, a equipe permanente do Adonthall é composta dee Kai Sterker, Alexandre Courbot, James Nash, Benjamin Walther-Franks, Joel Vennin, Joseph Toscano e Mike Nieforth. Apenas três deles são programadores, os outros são músicos, artistas gráficos e autores. Graças a essa combinação e ao fato de que todos os membros insistem em se encontrar pessoalmente uma vez por ano, o jogo tem um "feel", ou um jeito, profissional, e ele é um bom exemplo de uma cooperação vívida pela Internet.

O código e os gráficos do Adonthell são distribuídos sob a GPL, Licença Geral Pública GNU. A linguagem de programação usada para esse dispositivo é o C++. Para o controle do jogo, expansões e criação de scripts durante o jogo, foi embutido no dispositivo um interpretador Python. Isto permite escrever jogos para o dispositivo Adonthell sem nem mesmo tocar em C++. Para música, usa-se o OGG Vorbis [7].

Uma das prioridades foi poder empacotar o dispositivo e os jogos separadamente. Basta instalar o dispositivo, e é possível criar um jogo completo, com alguma ajuda de ferramentas como editores de mapas e de diálogos, bem como um pouco de Python.

Para tornar isso ainda mais interessante, o grupo do Adonthell também trabalha em um mundo completo, com sua própria história, costumes e peculiaridades.

Alexandre Courbot, que respondeu ao questionário da Admirável Mundo GNU, informou que o próximo passo é reescrever grandes parte do código, baseado na experiência obtida até aqui.

A equipe está também procurando pessoas que queiram auxiliar no porte para outras plataformas. Sabe-se que o dispositivo executa sob GNU/Linux, FreeBSD, OpenBSD e BeOS, mas a longo prazo, planeja-se que ele também suporte sistemas operacionais proprietários, para dar a seus usuários um primeiro gosto de liberdade.

Internamente, o desenvolvimento está se dirigindo a uma arquitetura mais baseada no modelo cliente-servidor, que permita o jogo em rede. Apesar de não estar cogitado o suporte de um grande número de jogadores, Adonthell pode eventualmente ser capaz de permitir um número médio de jogadores, que interajam em um mundo persistente.

Desde os primeiros passos em 1999, Adonthell já progrediu bastante, e o desenvolvimento posterior dá esperanças de ainda mais progresso. A equipe do Adonthell encoraja que se juntem a ela todos aqueles que tenham as habilidades necessárias e que não tenham paciência para esperar o desenvolvimento [8].

Todos os outros já podem passar horas com o "Waste's Edge", a primeira distribuição na qual se pode jogar.

XBindKeys

Philippe Brochard escreveu o programa XBindKeys [9], que permite atribuir comandos de shell a teclas sob X11. Deste modo, programas usados com freqüência como a ferramenta de e-mail, o navegador da Web, ou o xterm, podem ser disparados sem qualquer desvio para um menu atreavés de uma única combinação de teclas. Uma vez que a gente se habitua a fazer certas coisas sem tirar as mãos do teclado, é difícil querer fazer de outro modo.

Alguns gerenciadores de janelas suportam nativamente a associação de comandos a teclas, mas muitas vezes tais teclas não podem ser escolhidas livremente -- por exemplo, só se podem escolher teclas presentes em alguns teclados. O próprio Philippe usa o XBindKeys para chamar um menu de desligamento quando ele pressiona a tecla "Power" de seu teclado.

Todos que tentem usar novos gerenciadores de janelas ou variar entre diferentes gerenciadores de janela conhecem os problemas de se ensinar a um gerenciador de janelas as combinações de teclas preferidas.

XBindKeys resolve ambos problemas: em combinação com o programa MoveMouse [10], também escrito por Philippe, ele pode até mesmo ser usado para trazer o mouse a posições específicas com um simples pressionar de teclas.

XBindKeys e MoveMouse foram ambos escritos em C e estão disponíveis sobre a GPL, Licença Geral Pública GNU, pois Philippe sente que eles são sua contribuição ao Sistema GNU.

A configuração do XBindKeys é feita diretamente pela edição de um arquivo de configuração em ASCII, com sintaxe fácil de entender, ou através da interface gráfica GTK do XBindKeys-Config [11], escrito por Laurent Vuibert.

Em parênteses deve-se dizer que XBindKeys deve ser iniciado antes do gerenciador de janelas. Isto garante que as teclas pressionadas não sejam interceptadas pelo gerenciador de janelas, e sejam vistas pelo XBindKeys.

Não há planos para desenvolvimento posterior, uma vez que o XBindKeys é estável e Philippe acredita que ele deve permanecer pequeno e útil. Isto claramente é um bom exemplo de combate ao "recursismo".
NT: "recursismo" é a tendência de se acrescentar mais e mais recursos aos programas, mesmo quando não são estritamente necessários.

Access Road

A área de segurança em tecnologia da informação (TI) é sem dúvida muito complexa, mas importante. Atualmente, é muito boa a informação sobre a possibilidades dos bugs nos programas, mas também é possível criar problemas de segurança combinando-se programas que estão funcionando sem bugs.

Ambientes e tarefas complexos às vezes requerem sistemas de informação muito complexos e obscuros.

Sem limitações de acesso, os dados podem ser secretamente abusados ou modificados. O problema disso se torna imediatamente aparente quando se pensa, por exemplo, em hospitais controlados por computador. O oposto, a limitação de todo acesso, também não é uma boa idéia, pois torna impossível qualquer trabalho.

Por isso, a tarefa que se tem é desenhar um sistema de tal modo que o uso necessário e util seja possível, ao passo que o abuso se torne impossível.

Uma vez que a concepção de tais sistemas é feita por humanos, existe sempre um potencial significativo de erro. Access Road [12], ou "via de acesso", criado por Patrick Thazard, tenta modelar o complexo ambiente dos sistemas de informação e permitir que seu administrador os visualize. Isto não incrementa a segurança em si, mas oferece ajuda na detecção de problemas de segurança que podem de outro modo passar desapercebidos.

Patrick Thazard tem trabalhado como consultor em segurança de computadores desde 1987, e escreveu Access Road em Java, sob a GPL, Licença Pública Geral do GNU. A documentação é liberada sob a FDL, Licença de Documentação Livre do GNU.

No momento, o Access Road suporta sistemas similares ao GNU/Linux, roteadores simples e sistemas similares ao Solaris e, mesmo sem ter havido atualização de dados desde o lançamento anterior, Patrick está convencido de que ele oferece uma estrutura útil para outros desenvolvedores.

Há planos adicionais de primeiro acrescentar a interação entre GNU/Linux e Apache, bem como uma entre sistemas operacionais e sistema de dados em uso. Em uma perspectiva de longo prazo, a possibilidade de se modelar sistemas como o CORBA ou o Windows 2000/XP deve completar o software.

Até lá ainda há muito trabalho a fazer, e Patrick está procurando por outros desenvolvedores que queiram suportar seu trabalho. Apesar do enfoque de modelagem gráfica em geral ter algumas limitações, este projeto parece ser muito fascinante e permite a exploração de novos caminhos.

GNU Cons

O GNU Cons [13] é uma alternativa a um dos programas mais antigos, o GNU Make [14]. Quem quer que tenha baixado software em código fonte para instalá-lo, ou apenas recompilou o kernel Linux, já usou o GNU Make apenas entrando o comando "make".

Make foi escrito em uma época na qual ainda era normal compilar programas manualmente, ou através de scripts de shell. Mas se você já tentou escrever um "Makefile", ou arquivo de make, certamente observou que a sintaxe é bem difícil de se entender. Por isso é que muitos desenvolvedores copiam arquivos de make que já estejam em execução em outros projetos para modificá-los para seus próprios projetos, ou criam seus arquivos de make automaticamente através de programas como o GNU Automake.

Além disso, make tenta detectar modificações apenas através do tempo do último acesso aos arquivos, o que é problemático, e falha com certeza quando se deseja recompilar com novas opções de compilação.

O nome GNU Cons foi escolhido porque ele com sua ajuda os programas podem ser "cons-truídos", e uma de suas metas é executar os serviços feitos pelo GNU Make do modo que deveriam ser feitos.

Um componente muito central disto é um bom mecanismo para detectar se os arquivos foram modificados - GNU Cons não apenas examina os tempos de acesso, ele trabalha com a assinatura MD5 dos arquivos, permitindo uma identificação muito boa.

Um bom exemplo destas capacidades é o comportamento do GNU Cons no seguinte cenário: o programa "test" consiste dos arquivos objeto "test1.o, " "test2.o" e "test3.o".

Depois da primeira compilação do programa, o arquivo objeto "test2.o" é danificado/corrompido deliberadamente. A próxima execução do GNU Cons vai reconstruir o "test2.o", mas não vai fazer com que o programa "test" seja novamente religado, pois o GNU Cons percebeu que a versão recém-gerada do "test2" é idêntica à que foi ligada anteriormente.

Caso o GNU Cons seja chamado com diferentes opções de compilação, todas partes do programa construído são recompiladas e religadas, pois não apenas os resultados, mas também os parâmetros usados para criá-lo são parte da comparação.

GNU Cons foi criado em Perl por Bob Sidebotham, que parou de trabalhar nele. Rajesh Vaidheeswarran e Steven Knight então assumiram a manutenção: Rajesh assumiu a versão estável e Steven a versão em desenvolvimento. Sendo parte do Projeto GNU, GNU Cons é liberada sob a GPL, Licença Geral Pública do GNU.

Graças ao uso de Perl, GNU Cons roda em Windows e derivados do Unix. Seus arquivos de configuração, o equivalente dos "Makefiles" comumente usados, permitem usar expressões muito dinâmicas e complexas para adaptar, tanto quanto possível, um programa a um certo sistema.

GNU Cons já é altavente utilizável, apesar de sua ênfase ser em C e C++. Outras linguagens de programação podem ser acessadas através do módulo Cons::Plus, criado por Johan Holmberg. Os arquivos de configuração têm, obviamente, ênfase em Perl, o que não é exatamente algo de bom para muitas pessoas.

Ao final desta seção, gostaria de expressar meu agradecimento à equipe do GNU Cons por ter dado respostas bastante longas às perguntas padrão da Admiravel Mundo GNU.

Rajesh Vaidheeswarran e Erich Waelde ofereceram grandes quantidades de informação, com muitos exemplos, que foram muito interessantes para mim, mesmo se pude por apenas pequenas partes delas neste número. Eu posso apenas esperar que pude comunicar algumas das mais importantes vantagens, e que graças a isso os desenvolvedores fiquem interessados em tentar experimentar o Cons.

SCons

A óbvia similaridade de nome entre o GNU Cons e o SCons [15] não é por acaso. O projeto do SCons é largamente baseado no GNU Cons e foi escrito em agosto de 2000 por Steven Knight, mantenedor da versão em desenvolvimento do GNU Cons, para a competição "Software Carpentry", ou "Carpintaria de Software"

Tendo sido um dos mantenedores do Cons já há algum tempo, para a competição ele tentou combinar as idéias do Cons com o poder do Python.

SCons é baseado neste trabalho. Como o Cons ele oferece capacidades superiores para detectar modificações e resolver dependências, mas seus arquivos de configuração são baseados em Python. Além disso, SCons já suporta a compilação em paralelo, com a possibilidade de se especificar o número de tarefas através de opção da linha de comando.

SCons é ainda um projeto muito jovem; o primeiro alfa foi liberado em 13 de dezembro de 2001. Por isso é que estão acontecendo liberações em intervalos muito pequenos, freqüentemente contendo apenas adições funcionais. Por isso, é possível experimentar alguns problemas de acabamento no dia a dia. Apesar do projeto estar trabalhando com uma infraestrutura de testes fortemente regressiva, para manter a qualidade e a compatibilidade com versões anteriores.

A lista de novos recursos é ainda longa e contém não apenas um bom suporte para Java, C# e Fortran, mas também a capacidade de geração de documentos em vários formatos, entre eles PDF, Postcript, TeX, além de arquivamento.

SCons está sendo liberado sob uma licença ao estilo do X11, que se sabe que não preserva as liberdades. É possível que a GPL, Licença Pública Geral do GNU, fosse uma escolha melhor, em uma perspectiva de longo prazo, mas SCons claramente se qualifica como Software Livre, e é uma boa idéia dar uma olhada nele ou participar de seu desenvolvimento.

Final

Ok, por ora é bastante de Admirável Mundo GNU. No próximo mês, tenho já um projeto na espera, que quero apresentar, pois ele tornou minha vida muito mais fácil. Espero que ele possa fazer o mesmo por você.

Fiquem bem até lá. Não deixem de fazer sugestões, idéias, comentários, retornos e apresentações de projeto; de preferência por e-mail [1]

Informações
[1] Envie idéias, comentários e questões para a coluna Admirável Mundo GNU <column@brave-gnu-world.org>
[2] Página inicial do Projeto GNU http://www.gnu.org/home.pt.html
[3] Página inicial da Admirável Mundo GNU de Georg Greve http://brave-gnu-world.org/brave-gnu-world.pt.html
[4] Campanha "Nós Rodamos GNU" http://www.gnu.org/brave-gnu-world/rungnu/rungnu.pt.html
[5] Página inicial do Trophy http://trophy.sourceforge.net
[6] Página inicial do Adonthell http://adonthell.linuxgames.com
[7] Página inicial do OGG Vorbis http://www.xiph.org/ogg/vorbis/
[8] Junte-se ào Adonthell http://adonthell.linuxgames.com/development/join.shtml
[9] Página inicial do Xbindkeys http://hocwp.free.fr/xbindkeys/xbindkeys.html
[10] Página inicial do MoveMouse http://hocwp.free.fr/movemouse.html
[11] Página inicial do Xbindkeys-Config http://www.netchampagne.com/xbindkeys_config/
[12] Página inicial do Access Road http://accessroad.sourceforge.net
[13] Página inicial do GNU Cons http://www.gnu.org/software/cons/
[14] Página inicial do GNU Make http://www.gnu.org/software/make/
[15] Página inicial do SCons http://www.scons.org

[ Número anterior | Página inicial da Admirável Mundo GNU ]

Retornar à página inicial do GNU.

Envie comentários & questões sobre a FSF & o GNU para gnu@gnu.org.
Também existem outras formas de contactar a FSF.

Envie comentários para a Admirável Mundo GNU de Georg Greve (em inglês ou alemão) para column@gnu.org,
envie comentários sobre estas páginas na Web para webmasters@www.gnu.org,
envie outras questões para gnu@gnu.org.

Copyright (C) 2001 Georg C. F. Greve
Traduzido para o português por H. Fernandes e Fernando Lozano.

É dada permissão para fazer e distribuir cópias literais deste transcrito desde que o copyright e este aviso de permissão sejam mostrados.

Last modified: Mon Mar 4 19:28:41 BRT 2002