maio 222007
 
Estava conversando com um amigo sobre desenvolvimento de jogos, quando lembrei do bom e velho SpaceShooter, e o quão ficou “abafado” com o lançamento e a oficialização da última versão a 1.4 por causa causa do CDLivre[4] e do evento FLISOL.
Pois bem, aproveito a oportunidade agora para falar um pouco mais da experiência que o SpaceShooter me deu, além da diversão gerada tanto pela programação como pelo jogo em si.

História

Spaceshooter pra quem não conhece, é um divisor de águas para mim, ele inaugurou minha “nova geração” de jogos, agora produzidos com o framework GBF[5]. É um jogo simples e fácil no clássico estilo shoot’up, o qual foi muito venerado na época dos consoles Nes/SNes/Mega, tendo como base a temática de Star Trek.
O jogador tem como objetivo salvar seu planeta da extinção, e para isso deverá destruir a grande ameaça a nave Base Borg (Cubo Borg). Para poder enfrentar este desafio, o jogador contará com 04 naves estrelares, onde cada uma está melhor adaptada para as diversas zonas, além de contar com um arsenal de phaser e de alguns poucos torpedos. Para sua defesa deverá contar com sua habilidade, a velocidade dos motores de warp, além da força de seus escudos.
O jogo possui 07 fases, onde o jogador terá que enfrentar campos de asteróides, naves inimigas de várias raças, minas espaciais, e diversos outros desafios. Sua missão é destruir a ameaça cibernética, evitando assim que a extinção da raça humana.


Ficha Técnica

Aprendizado

O SpaceShooter, acabou sendo pra mim um grande laboratório, foram creio que quase 2 anos de desenvolvido, mas isso não quer dizer que o SpaceShooter é um jogo complexo ou que foi difícil de ser criado, muito pelo contrario, graças a sua simplicidade consegui superar tantas mudanças, sendo elas:
IDE, o inicio do SpaceShooter, se confundi que o inicio do framework GBF, os dois praticamente foram criados juntos, e se auto influenciaram, passei por muitas IDE, desde proprietárias a diversas soluções livres, só para ter uma idéia nesse projeto trabalhei com:
E minha opção em busca da unificação dos mundos foi o CodeBlocks, onde de fato consegui criar um projeto e utiliza-lo tanto no Linux quanto no MS-Windows, pois as outras IDEs, mesmo as que tinham versões para os dois S.O me obrigavam a criar projetos para cada S.O.
Sistema Operacional, o inicio do meu projeto se deu com MS Windows, e o Linux era utilizado apenas para compilação, e conforme fui me envolvendo com o Software Livre, pude conhecer mais a fundo o Linux e as ferramentas que eu poderia utilizar, graças a utilização de uma IDE completa para os dois mundos, pude inverter minha situação e ter como meu ambiente de trabalho e de uso domestico o Linux e ter o MS Windows apenas para compilação e testes, creio que graças as características do projeto consegui fazer essa migração de SO sem muitos problemas, porém tive que me adaptar as diversas rotinas que o Linux começava a me apresentar, pois eu queria de fato retirar o máximo possível das características do meu hardware e isso envolveu tempo e estudo, porém hoje estou satisfeito utilizando Linux em casa (Slackware 11.0 e comecei a testar o Ubuntu).

Uma coisa que pude constatar, ambiente mais robusto que o Linux e suas ferramentas não creio que tenha, era comum quando tentava depurar alguma coisa no MS Windows ter problemas ou a aplicação abortar, debugar jogos é complicado, e mesmo usando profilers ou qualquer outra ferramenta que tente ajudar a entender como o programa funciona no MS Windows a coisa ficava sempre muito complicada. Sem falar que se consegui compilar e rodar no Linux sem problema a chance de compilar e funcionar no MS Windows é alta, agora o contrario é complicado.

UML, comecei o projeto do GBF com o Power Designer, uma ferramenta proprietária de modelagem UML e de banco de dados, porém era complicado manter o código sincronizado, pois era necessário codificar dentro da ferramenta o corpo dos métodos, e não era fácil e pior que o suporte a estruturas do C++ não era muito bom (enumerações, structs, typedef), fiquei algum tempo utilizando ela, até que ficou inviável manter o projeto codificando e testando e copiando as implementações para a ferramenta, a engenharia reversa não funciona (ou se funcionava era uma porcaria, faz tanto tempo que não lembro), acabou tendo um lacuna muito grande entre os últimos modelos e o código implementado.
Achei que era hora de procurar outras ferramentas, achei uma chamada jumli[12], era uma ferramenta freeware e tinha versões para Linux e Ms Windows, era melhor que o Power Designer, porém possuía alguma limitação que não me recordo muito bem, sei que não me atendia como eu gostaria, creio que tinha algo relacionado com enumerações ou struct, e mais uma vez cai numa lacuna de tempo entre modelo e implementação monstruosa.

Por fim, consegui achar uma ferramenta francesa chamada BoUML, a qual gostei muito, era leve, prática e muito eficiente, atendia quase que perfeitamente minhas necessidades, sem falar que o desenvolver era muito acessível, troquei algumas mensagens no fórum com ele, e minhas dificuldades foram resolvidas, e chegou até ser implementado uma das minha solicitações que era referente aos includes de outras classes ficarem apenas no header(.h) e não no arquivo fonte (cpp), para isso foi criado uma marcação especial que definia isso, ou seja, é uma ferramenta que recomendo, sem falar que com ela é possível mesclar várias coisas comuns em C++ para produzirem a saída conforme eu queria, no caso jogar vários enums, structs num único arquivo, bastava apenas na parte de deploy informar o “artefato de destino”.

Hoje o modelo do SpaceShooter e do GBF estão mais próximos da implementação porém não posso garantir a fidelidade do modelo do SpaceShooter, porém pretendo nas próximas semanas atualizar e finalizar de vez o projeto.

Técnicas, além de tudo isso tive oportunidades de criar novos mecanismos pro framework GBF, além de desenvolver e aprender novas técnicas, das quais posso destacar:

  • Classes para gerenciadores de recursos: Audio, Imagens, Teclado, Joystick;
  • Classes para interface: Menus, Teclado Virtual (aqueles usados nos jogos de consoles)
  • Classes para efeitos especiais como sistema de partículas;
  • Classes para Sprite, Layers, Personagens;
  • Utilização de Sockets via SDL_net para envio e recebimento de dados com um servidor (na verdade uma página em php que tem acesso a um banco MySQL)
  • Utilização de designer patterns para criação do GBF e do SpaceShooter;
Após dois anos de intenso trabalho, ou quase, pois tive muitos períodos que não encostava em nenhuma linha de código desses projetos, consegui concluir este ano o SpaceShooter e entrega-lo para a comunidade, liberando seu source e agora, passando um pouco da experiência vivenciada com o seu desenvolvimento. Espero que esse relato possa ajudar ou direcionar os interessados em conhecer um pouco mais sobre desenvolvimento de jogos.

T+!
Vida Longa e Próspera!

———————————————-

Referência
[1] PJMOO no Código Livre – http://codigolivre.org.br/projects/pjmoo/
[2] Site SpaceShooter – http://pjmoo.codigolivre.org.br/site/spaceshooter/
[3] Wiki SpaceShooter – http://pjmoo.codigolivre.org.br/wiki/index.php/SpaceShooter
[4] CDLivre – http://cdlivre.codigolivre.org.br
[5] Framework GBF – http://pjmoo.codigolivre.org.br/wiki/index.php/GBF
[6] SDL – http://www.libsdl.org
[7] CodeBlocks – http://www.codeblocks.org
[8] BoUML – http://bouml.free.fr
[9] DevCPP – http://www.bloodshed.net/devcpp.html
[10] Eclipse CDT – http://www.eclipse.org/cdt
[11] KDevelop – http://www.kdevelop.org
[12] Jumli – http://www.jumli.de

maio 142007
 

Blz!

Pois é, sei que já passaram dias e dias, desde que prometi comentar alguns assuntos no post do relato semanal 04[1], os quais na verdade já comentei alguns, e que ainda continuo na árdua tarefa de transmitir um pouco do que pude passar e aprender durante este período, pois bem, agora vou falar do sufoco que passei no FLISOL, ou melhor, o sufoco que escolhi passar 🙂
Tem algum tempo que ajudo os amigos aqui de Fortaleza nos eventos, quer seja opinando, palestrando ou tentando colocar a mão na massa, pois bem, este ano o FLISOL não pode contar com as figurinhas carimbadas de sempre, pois como qualquer ser humano, as vezes acontecem imprevistos na nossa vida, e esses amigos, tiveram que se organizar ou investir seu tempo em coisas mais imediatas para poder retornar as atividades num futuro bem próximo, e eu espero que realmente seja próximo, pq quem perde de fato somos todos nós 🙂
Comecei tentando ajudar organizando algumas informações no wiki[2], nos tempos vagos de preparação do CDLivre e das minhas palestras, foi uma tarefa até que fácil porém trabalhosa e custosa, e creio que fiz foi um trabalho razoável, porém esse ainda não é o fato 🙂
Conforme a data do evento foi se aproximando vimos (foi enviado para toda a lista do PSL-CE[3]), que a grade das palestras estava meio pequena, se comparada as edições de todos os eventos que tivemos aqui em Fortaleza. E com isso, minha primeira reação ao ver foi um pouco de decepção, pois era óbvio que alguma coisa estava errada, e pude observar como algumas pessoas/amigos fazem falta, sabemos criticas, opinar e etc, mas realmente colocar a mão na massa não é fácil e poucos querem se sujar.
Acabei ficando o resto da noite com aquela sensação de que a coisa não estava legal, que se continuasse daquele jeito era desanimador… eu mesmo que sou empolgado com a coisa estava desanimado imagina as outras pessoas que estavam querendo conhecer a filosofia do SL.

Comecei a conversar com alguns amigos e alguns se sentiam da mesma forma, porém as respostas que ouvi foram coisas do tipo: “Não sei se vou participar”, “Vai ser bem paia“, e assim por diante, claro que posso ta exagerando um pouco, ou talvez muito, afinal minha memória não é lá grandes coisas e já tem tempo, o fato é que eu estava vendo que o desanimo estava ficando geral e que isso poderia se espalhar mais e mais.

Então resolvi criar coragem e colocar a mão na massa, conversei com o “Coordenador do Evento”, sobre a disponibilidade das salas, pq em reuniões anteriores tínhamos uma senhora idéia pra estrutura, pensávamos em coisas como:
  • 4 Salas de aula
  • 1 Mini Auditório
  • Aplicação da prova LPI
E de acordo com a grade, mal fechavamos 1 sala em todos os horários desejados, então comecei a tarefa de caçar na Internet possíveis palestrantes para alocar nos espaços em branco, comecei procurando as palestras já realizadas nos sites do 1 FCSL, II FCSL, III FCSL, FLISOL 2005, FLISOL 2006, e consegui de fato encontrar ótimas palestras que de fato complementariam a grade, ou melhor daria uma a+ a ela, pois eram palestras focadas nos iniciantes de Software Livre, e comecei então o trabalho de entrar em contato com eles.
Em paralelo comecei a conversar com amigos que costumam palestrar e que de fato poderiam apresentar conteúdo bastante interessante, porém não eram focados ao público iniciante, o qual de fato é alvo em eventos como o FLISOL.
Comecei a receber emails de algumas pessoas que eu tinha esperança de que pudesse honrar a comunidade com seus conhecimentos, porém a grande maioria das respostas foram informações que estavam sem tempo, ou que haviam mudado de cidade e até de país, ou que o projeto sobre o qual palestravam não existia mais.
De fato parecia que a coisa não tinha muita saída, que a grade seria aquela mesmo, e que por alguma razão pela primeira vez (que eu conheça), as submissões da comunidade não excediam os espaços alocados.
Conversando com um amigo meu, o Christiano[4] e suas teorias mirabolantes :), ele afirmava que a culpa era do mercado de trabalho, que este primeiro semestre de 2007 a coisa estava de fato pegando fogo, que as pessoas estavam mudando de emprego, estavam se ajustando as novas realidades e que isso causava uma certa complicação e falta de tempo.
Bem de fato creio que pode ter alguma coisa haver, pois de Agosto de 2006 até Fevereiro de 2007 de fato em Fortaleza tivemos muitas mudanças no mercado de trabalho, tivemos três concursos públicos na área de T.I, onde os três somados juntos alocaram mais de 250 pessoas (e ainda tem concurso chamando gente) o que ocasionou muitas mudanças em diversas empresas e até mesmo em órgãos públicos.
O fato foi que acabei recebendo sugestões e comecei a trabalhar algumas idéias, e comecei a alocar espaço nas grades com pessoas que conhecia e que estavam dispostas a palestrar, o maior problema que eu vi no momento foi o foco, acabei ajudando a transformar um evento de iniciantes em um nível intermediário e avançado e altamente focado no perfil de desenvolvedores, também sou desenvolvedor e de fato a maioria dos meus amigos e conhecidos são desenvolvedores
A primeira preocupação foi pq o tema acabou girando em torno de java, e na época o java ainda estava na novela de promessas para se libertar, ainda bem que a novela ta terminando.
Então acabei tomando coragem, já que o tempo estava curte, e resolvi alocar uma sala praticamente para palestras envolvendo java, de fato, se analizarmos podemos observar que pode ter sido uma saída oportuna, pois o java é muito respeita nos ambientes corporativos, e a comunidade cearense de java o Cejug[5], é bastante ativo, então vi a oportunidade de tentar um contato inicial entre as duas comunidades a de Software Livre e a de Java (Pra quem não sabe, também trabalho com Java).
Comecei de fato a alocar a grade e montando a grade do FLISOL com uma grande presença dos javeiros, e de fato creio que os palestrantes ficaram contentes, pelo menos o Christiano falou muito bem da sua palestra.
Acho que tem tanta coisa na mente que perdi um pouco o foco do post, mas o fato que quero transmitir é que o trabalho que o pessoal que de fato trabalha (e não aqueles que saem babando as pessoas para aparecer) , porque pense como é trabalhoso: “Organizar, Formatar, Procurar palestantes e se responsabilizar por n-coisas” não é nada fácil, é cansativo! e muito, e nem cheguei a passar por todas essas coisas. Então agora antes de criticar as coisas, pense duas vezes, será que teríamos a mesma coragem e disposição dessas pessoas que de fato se “matam” pelo Software Livre, pelo prazer de transmitir, de dar oportunidades as outras?
Bem eu particularmente vejo que muitos falam e poucos fazem de fato, e quero sair cada vez mais da “falação”, deixar isso só para minhas palestras e entrar a fundo na sujeira.
E pude observar com essa peregrinação o quanto as informações estão dispersas e que poderíamos de fato otimizar algumas coisas a médio e longo prazo com a utilização e construção de sistemas, e quero de fato cria-los e entrega-los a comunidade como Softwares Livres.

T+

Vida Longa e Próspera!

Referências

[1] Relato Semanal 04 – http://davidferreira-fz.blogspot.com/2007/05/semana-1704-3004.html
[2] Wiki PSL-CE – http://www.psl-ce.softwarelivre.org/flisol
[3] PSL-CE – http://www.psl-ce.softwarelivre.org
[4] Blog do Christianohttp://www.milfont.org/blog
[5] Cejughttp://www.cejug.org

maio 012007
 

Relato Semanal 04

Blz! Amigos com o corre-corre das duas últimas semanas acabei não publicando o relato semana na data correta, e agora vou relatar as ocorrências dos últimos dias, porém será um pouco diferente, como tem diversos assuntos que gostaria de abordar de uma maneira mais concreta, vou separa-los em outras publicações as quais devo fazer ainda esse semana.

Só para dar uma idéia do que vem por ai:

  • Palestra na Semana de Atualização Tecnologica na FIC, com o título “SpaceShooter: Anatomia de um jogo”;
  • Palestras no FLISOL 2007, com os títulos “Sistema de Controle de Versão” e “Desenvolvimento de Jogos Livres”;
  • Disponibilização do CDLivre na Internet;
  • Reta final da Organização do FLISOL, finalizando detalhes para preencher a grade de palestras;
  • Erro no SpaceShooter, lançamento do SDL Full Pack;
  • PDJzine, participação como avaliador do Concurso “Game PDJ Contest 2006”

Dessa vez fico por aqui, e em breve começo a postar sobre cada um desses assuntos.

Esse post é mais pra dizer que estou vivo 🙂

mar 252007
 
Iniciando hoje, neste novo universo, levei muito tempo até entender de fato pra que eu teria um blog, porém tendo uma mente mais aberta, vislumbrando o novo universo ao meu redor e agora mantendo diversos projetos de Software Livres, decidi que precisava de um local para falar de forma unificada sobre eles, tentar passar um pouco das motivações e conclusões de trabalhar em tais projetos, sendo assim, marco agora o meu BigBang neste universo digital.

Sendo assim, começarei citando os projetos que colaboro ou mantenho, eles são:

  • Framework GBF, é um framework em C++ para jogos 2D multiplataforma;
  • SpaceShooter, é um jogo clássico no estilo shoot’up, tendo como base a temática de Star Trek;
  • F2IBuilder, é uma ferramenta para geração de imagens contendo os caracteres de uma fonte (letra);
  • GamesToolsBr, é uma barra de ferramentas para o browser Firefox especifica para desenvolvedores de jogos;
  • CDLivre, é um cd contendo uma coletânea de softwares livres para a plataforma MS-Windows(r);
  • AutUBLaVe, é um aplicativo que tem como objetivo a autenticação no VeloxZone (ADSL – Telemar);

Além destes projetos existem informações diversas sobre desenvolvimento de jogos no meu wiki em: http://pjmoo.codigolivre.org.br/wiki

Além de manter estes projetos, sempre que possível colaboro com o PSL-CE (Projeto Software Livre Ceará), e neste momento estamos organizando o FLISOL 2007.
Se você mora em Fortaleza ou próximo, não perca dia 28 de Abril, na Faculdade Integrada do Ceará (FIC) a nossa terceira edição do FLISOL, mas se você mora longe não se preocupe, possivelmente terá uma edição do FLISOL mais próxima de você, já que o FLISOL é nada mais nada menos que “Festival Lantino-americano de Software Livre”, e ocorrerá simultaneamente em diversos paises e diversas cidades brasileiras.
Pra uma inauguração, acho que já esta de bom tamanho então finalizo aqui minha primeira participação, mas antes um agradecimento em especial a minha Aline, que hoje comemora 5 meses comigo de muita paciência tanto para eu trabalhar nesses projetos como para eu poder curtir meu sci-fi(StarTrek, BSG, e cia) em paz 😉 Bjão amor!