Amigos estamos na reta final para o flisol, e como de costume nos últimos quatro anos, temos trabalhado no projeto do CDLivre, este anos apesar dos atrasos conseguimos gerar uma versão que está show, inclusive este anos estamos com algumas novidades, conseguimos um maior apoio da comunidade para seleção dos programas, conseguimos mais hosts para replicação da iso, novo site com uma hospedagem com mais freatures (falta só o domínio, quem sabe ano que vem) e novos materiais de divulgação.

Porém, nem tudo é perfeito, descobrimos recentemente uma pequena incompatibilidade do arquivo iso do CDLivre 4.0 quando a gravação é feita no K3b, o qual aparentemente informa que o arquivo (CDLivre_4.0.iso) não é um arquivo válido, após aproximadamente seis (06) horas de upload conseguimos colocar uma nova iso no ar, com o nome de “CDLivre_4.0.fix.iso” o qual está 100% compatível com a gravação via K3b.

Se você, está organizando um grupo para gravação e distribuição de Softwares Livres para ms-windows no flisol da sua cidade, ou com seus amigos, gostariamos de indicar o CDLivre para que seja avaliado e quem sabe nos ajudar na elaboração ou divulgação ;)

Obrigado pela confiança no nosso trabalho.

Referências:

 

Amigo, é com prazer que anunciamos a liberação oficial do download do CDLivre – Quatro Ponto Zero.

Conseguimos apesar de todas as dificuldades conquistar um novo marco, estamos felizes por completarmos quatro anos de trabalho dedicado a selecionar, montar e apresentar a você alguns dos melhores Softwares Livres disponíveis para que você possa utilizá-lo no seu dia-a-dia na frente do computador.

Pensando nos mais variados usos do computado, chegamos a conclusão que se você necessita de softwares para navegar na Internet (Firefox), conversar com seus amigos (Pidgin, Xchat e AMsn), baixar (TrueDownloader) seus arquivos favoritos  e seus torrents (Azureus), descompacta-los ou compata-los (7zip) para enviar por email (Thunderbird) aos seus amigos enquanto você escuta sua música (Songbird) favorita, e nas horas vagas tentando enfrentar o tédio (Pingus, LMarble, FZPong, IceBreaker) ou enfrentando as ameaças (SpaceShooter, Defendguin), ou explorando novos mundos (The Mana World) ou simplesmente se divertindo com seus amigos (TeeWorlds).

Mas se você é uma pessoa ativa que gosta de explorar ao máximo seu computador e criar você mesmo seus próprios softwares (CodeBlocks, Lazarus, Php, Python) integrados com banco de dados (MySQL, PostgreSQL), utilizando tudo que há de mais moderno no processo de desenvolvimento e com suas ferramentas (BoUML, SVN, CVS, DBDesigner) e metodologias também pensamos em você. Porém se você é uma pessoa altamente criativa que compõe suas próprias músicas (Audacity) ou seus próprios filmes (Jahshaka) o CDLivre também é para você, mas não esqueça de que além de tudo isso você é altamente responsável e precisa ficar em dia com seus relatórios e suas atividades de casa ou apenas a tão desejada monografia da faculdade (BrOffice, AbiWord) o CDLivre também é seu, é meu, é nosso!

Se no final de tudo isso você se sentir satisfeito com o uso dos Softwares contidos no CDLivre, nos ajude divulgando o projeto.

http://cdlivre.dukitan.com
http://cdlivre.dukitan.com/obter/

 

Blz!

Para mostrar a um amigo, alguns dos jogos/demos que estou desenvolvendo, coloquei no youtube dois videos, mas cuidado!, É uma super produção caseira :P

Para quem não conhece temos, o Pancada, o famoso jogo de boxing, que um dia vou terminar, pior que só esta faltando coragem pra fazer a pseudo-ia do jogo ;)

E o TechDemo, Caveman (que nome original), o qual é a base de futuros testes para o desenvolvimento de jogos estilo plataforma, existe alguns problemas relacionados a movimentação, regras de saltos, movimento de queda, mas em fim, é o começo ;)

 

Blz! Amigos acaba de ser oficializado o lançamento do CDLivre 3.0[1] (CDLivre 2008), os interessados em distribuir ou usar o CDLivre podem realizar o download do mesmo, e caso você tenha condições de hospeda-lo nós agradeceríamos, pois inicialmente contamos com poucos servidores para armazenar as imagens do CDLivre.

Mais uma vez agradecemos o apoio da Comunidade Brasileira de Software Livre ;) , pois sem vocês nosso trabalho não teria sentido!

T+!
Vida Longa e Próspera!

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

Referência
[1]http://cdlivre.wordpress.com/2008/04/01/cdlivre-2008/

 

Blz!
Amigos foi anunciada a finalização do CDLivre 3.0[1], porém precisamos de ajuda para disponibiliza-lo online, quem tiver como hospedar entre em contato o mais urgente possível, mais informações veja no site do CDLivre[2]

T+!
Vida Longa e Próspera!

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

Referência
[1]http://cdlivre.wordpress.com/2008/03/30/cdlivre-30-pronto/
[2]http://cdlivre.wordpress.com/

 

Blz! Amigos, estamos mais uma vez na véspera do FLISOL, e como aconteceu nas últimas duas edições tivemos o lançamento de um CD com Softwares Livres voltados para a plataforma MS-Windows, permitindo assim que mais pessoas conheçam o Software Livre.

Caso você deseje colaborar, participar ou distribuir o CDLivre na sua cidade ou região em qualquer ocasião ou no FLISOL, entre em contato conosco ou sugira e comente sobre os softwares diretamente no site(blog) do projeto.

Mais informações:
http://cdlivre.wordpress.com/2008/02/11/cdlivre-30-iniciando-os-trabalhos/

 

Blz!
Estou começando a lançar os vídeos tutoriais[1] do F2IBuilder[2], o gerador de fontes bitmap, as quais são usadas principalmente em jogos e software multimídias, e estou planejando uma série de vídeos tutoriais ensinando a usar o software. Lembrando que o F2IBuilder é Software Livre, foi desenvolvido em Java e pode ser executando em diversas plataformas principalmente em GNU/Linux e MS-Windows. Agradeço sua ajuda na divulgação ;)

Veja o primeiro vídeo tutorial abaixo:

T+!
Vida Longa e Próspera!

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

Referência
[1]http://br.youtube.com/watch?v=CdV04IzJlik
[2]http://f2ibuilder.googlecode.com
[3]http://davidferreira-fz.blogspot.com/search/label/F2IBuilder

 

Blz!

Estou trabalhando em algumas coisas bem interessantes ;)
Só para dar um gostinho do que pode vim por ai, vejam:

Assim que tiver mais experiência neste novo ambiente, faço alguns relatos ;)

T+!
Vida Longa e Próspera!

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

Referência
[1]http://www.youtube.com/watch?v=bpaQ0Q_ifs8
[2]http://www.youtube.com/watch?v=By5-NAdvgDI

 

Blz!

Conforme foi sugerido, um amigo perguntou o que de fato era a interface gráfica que eu havia desenvolvido, então resolvi falar um pouco sobre ela e mostrar a versão atual que agora é parte integrante do framework GBF (Gamework’s Brazilian Framework).

O GBF é um framework em C++, criado para o desenvolvimento de jogos 2D (jogos estilos: nes/snes e mega), seu foco é no uso da programação orientada a objetos além de ser multiplataforma (é compatível para compilação em ms-windows e gnu/linux) e poder ser utilizado em jogos que exijam pouco hardware, confesso que posso estar saindo deste trilho, mas por vez ou outra, volto para otimizar o framework e testa-lo no outro pc que tenho (AMD K6-II 500mhz / 192mb RAM / GeForce 2 MX 400 64 mb).

Tem algum tempo que voltei a mexer no projeto “pancada”, o qual nasceu junto com o framework (por volta de 2004) porém ficou meses(anos) parado e surgiu a necessidade de eliminar aquela codificação chata de preparar as janelas de dialogo, como aquelas telas de vitória, créditos e afins.

Sendo assim comecei a rascunhar (como pode ser visto nos links no final deste post) algumas possibilidades para criação de uma interface gráfica bem simples, que visavam só apresentar um texto dentro de uma área de tela, a qual chamei de janela, e que algumas vezes tivesse um botão “OK” para fechar, para não inchar o desenvolvimento com mil e uma possibilidades, tomei como política básica o de desenvolver/suportar apenas o que de fato é necessário, tentando assim talvez otimizar e ganhar um pouco de performance, futuramente pode ser que adicione outros botões (como os utilizados em jogos de RPG/Quests) por hora não é o foco.

Vamos para de enrolar, e mostrar logo como a coisa funciona.
Abaixo podemos ver o diagrama de classes das janelas

O que de fato acontece é que o desenvolvedor utilizando o framework faria apenas isto:

//Criando um padrão visual com janela transparente - segue o pattern Prototype (GoF)
UserInterfaceVisualImagem *uiVisualImagem = new UserInterfaceVisualImagem();
uiVisualImagem->setCorBorda(255,0,0);

//ou caso seja o desejo utilizar uma janela de cor solida (fundo de uma única cor)
//sendo necessário apenas passar para o método "setVisual".
UserInterfaceVisualSolido * uiVisualSolido = new UserInterfaceVisualSolido();
uiVisualSolido->setCorBorda(255,0,0);
uiVisualSolido->setCorFundo(100,200,100);

UserInterfaceWindowTitulo *janelaAjuda;
janelaAjuda = new UserInterfaceWindowTitulo();
janelaAjuda->setPosicao(40,50);
janelaAjuda->setDimensao(560,400);
janelaAjuda->texto.setFonte("texto");
janelaAjuda->texto.setChaveTexto("tela_ajuda_%02d");
janelaAjuda->titulo.setFonte("menu");
janelaAjuda->titulo.setChaveTexto("titulo_ajuda");
janelaAjuda->setVisual(uiVisualImagem->clone());
janelaAjuda->adicionarBotao(new UserInterfaceBotao("menu","botao_enter",SDLK_RETURN));
janelaAjuda->inicializar();

UserInterfaceVisualImagem *uiVisualImagem = new UserInterfaceVisualImagem();
uiVisualImagem->setTipoBackground(BACKGROUND_LINES);
uiVisualImagem->setCorBorda(255,0,0);

UserInterfaceWindowTitulo janelaCredito = new UserInterfaceWindowTitulo();
janelaCredito->setPosicao(40,50);
janelaCredito->adicionarBotao(new UserInterfaceBotao("menu","botao_enter",SDLK_RETURN));
janelaCredito->inicializar();
janelaCredito->setDimensao(560,400);
janelaCredito->texto.setFonte("texto");
janelaCredito->titulo.setChaveTexto("titulo_credito");
janelaCredito->setVisual(uiVisualImagem->clone());
janelaCredito->titulo.setFonte("menu");
janelaCredito->texto.setChaveTexto("tela_credito_%02d");
A classe “UserInterfaceVisualImagem”, provê o efeito do fundo da janela, o qual aparenta ser transparente, talvez até por meio do canal “alpha”, porém muito pelo contrario, a questão é muito simples, ele desenha no fundo da janela uma imagem, que possui alguns pontos que são transparentes, definido pelo que chamamos de colorkey, onde uma cor(RGB) é mapeada para não ser desenhada, no caso o mais comum é a magenta RGB(255,0,255), essa é uma técnica simples que possivelmente é mais rápida para desenhar que a utilização do canal alpha, ganhando talvez alguns pontos de performance. A figura em questão que possui alguns padrões de “transparência” pode ser vista abaixo, e a seleção de qual utilizar é baseada na enumeração “UserInterfaceVisualTipoBackground”.

Na classe “UserInterfaceWindow” e “UserInterfaceWindowTitulo” existe os atributos “texto” e “titulo” o qual possibilita a utilização do recurso de “localização”, que é a mudança de idioma nos textos de acordo com o sistema operacional do usuário(no caso o jogador), para finalizar o método “inicializar” realiza os ajustes finais para determinar algumas características que devem ser executadas apenas uma vez ou o menos possível.

Após entender assim, mesmo por cima o que deve ser feito, temos a parte importante que é “Como de fato eu uso e desenho a janela”, bem para isso vou mostrar o código:

void Jogo::menuCredito()
{
rameLayerManager::getInstance()->getFrameLayer("background")->desenhar();

janelaCredito->executar();

if (janelaCredito->isBotao(UserInterfaceWindow::BOTAO_OK)){
setMenuPrincipal();
}
Este metodo “menuCredito” é provido por meio de uma classe chamada GAT (GBF Application Template) a qual tem o uso apenas recomendado, de fato começa a oferecer uma estrutura pronta para utilização do GBF.

Neste método podemos observar uma chamada ao “FrameLayerManager” (é um singleton), no caso esta chamada é apenas pq queríamos desenhar o cenário do jogo abaixo da nossa janela. (Ver Figura 1)

O desenho de fato da janela é feito pelo método executar, o qual cuida de renderizar o que for necessário da janela e seus componentes. (Ver Figura 2)

O método “isBotao” verifica se o botão “OK”, único suportado no momento foi acionado ou não, (o botão responde pelo código das teclas definida no SDL), onde caso seja acionado executará os comandos informados (Só a título de curiosidade este método faz o sistema de máquina de estados do GAT retornar ao exibição do menu principal).

Para finalizar podemos entender que o que chamamos de janela, basicamente é uma região da tela, a qual podemos fazer alguma manipulação, no caso da GBF e do Pancada tudo que necessitamos é desenhar as bordas da janela, uma imagem de fundo com efeito de “transparência”, que seja capaz de exibir alguma mensagem(texto e título) e que possa responder ao acionamento de algum botão.

Caso tenham interesse em saber mais detalhadamente como funciona ou detalhes da implementação podem entrar em contato ;)

Figuras Anexas
Figura 1: Tela do Menu Principal

Figura 2: Tela de Crédito


T+!
Vida Longa e Próspera!

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

Referência
[1]http://davidferreira-fz.blogspot.com/2007/09/gbf-interface-grafica-v05.html
[2]http://davidferreira-fz.blogspot.com/2007/09/rascunho-de-interface-grfica.html
[3]http://pjmoo.wiki.sourceforge.net/
[4]http://pjmoo.wiki.sourceforge.net/GBF
[5]http://www.libsdl.org

 
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

© 2012 FZTech Suffusion theme by Sayontan Sinha