<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>FZTech &#187; GBFramework</title>
	<atom:link href="http://fztech.dukitan.com/tag/gbframework/feed/" rel="self" type="application/rss+xml" />
	<link>http://fztech.dukitan.com</link>
	<description>rand() % {Programação, GameDev, TecnoInfo, Software Livre, Null}</description>
	<lastBuildDate>Thu, 05 Jan 2012 16:57:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>EES &#8211; Defesa de Monografia &#8211; Catálogo de Padrões para Jogos</title>
		<link>http://fztech.dukitan.com/2010/06/12/ees-defesa-de-monografia-catalogo-de-padroes-para-jogos/</link>
		<comments>http://fztech.dukitan.com/2010/06/12/ees-defesa-de-monografia-catalogo-de-padroes-para-jogos/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 00:07:58 +0000</pubDate>
		<dc:creator>davidferreirafz</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[C e C++]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[GBFramework]]></category>
		<category><![CDATA[I]]></category>

		<guid isPermaLink="false">http://fztech.dukitan.com/?p=452</guid>
		<description><![CDATA[A coordenação do curso de Especialização em Engenharia de Software com Ênfase em Padrões de Software da UECE tem o prazer de convidá-lo para a Defesa de Monografia do aluno David de Almeida Ferreira, intitulada &#8220;Catálogo de Padrões para Jogos&#8221;. A defesa ocorrerá no dia 14/06/2010 (segunda-feira) a partir das 16:00 no prédio da Pós-graduação <a href='http://fztech.dukitan.com/2010/06/12/ees-defesa-de-monografia-catalogo-de-padroes-para-jogos/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div>
<blockquote>
<div style="text-align: justify">A coordenação do curso de Especialização em  Engenharia de Software com Ênfase em Padrões de Software da UECE tem o  prazer de convidá-lo para a <strong>Defesa de Monografia</strong> do aluno <strong>David de Almeida Ferreira</strong>,  intitulada &#8220;Catálogo de Padrões para Jogos&#8221;. A defesa  ocorrerá no dia <strong>14</strong><strong></strong><strong>/</strong>06/2010 (segunda-feira) a partir das <strong>16:00 </strong>no prédio da Pós-graduação e Pesquisa em Computação da UECE.<span id="more-452"></span></div>
<div>
<div>
<p>Todos os interessados estão  convidados para estarem presentes na ocasião.</p>
<p>Atenciosamente,</p>
</div>
</div>
<div><strong>A Coordenação</strong></div>
</blockquote>
<p>É amigos, agora finalmente estarei dando mais um passo para a conclusão da minha primeira pós graduação, quem tiver o interesse de participar fique a vontade, as restrições que existem são devido a formalidades tradicionais, como por exemplo duração máxima de 30 minutos de apresentação, o que de fato creio ser um tempo muito curto para falar de um trabalho bem extenso, ainda mais que são 5 padrões de projeto a serem apresentados, espero em breve poder oferecer o tema para alguma palestra do GDJCE.</p>
<p>O  resumo do trabalho:</p>
<p style="text-align: justify">Com o amadurecimento da produção de software, percebemos cada vez mais a aplicação das diretrizes da Engenharia de Software, o que traz reconhecidamente melhores resultados do que os software montados de forma caótica. No universo de desenvolvimento de jogos, podemos perceber, ainda um certo grau de amadorismo em relação a produção de software convencionais, pois poucos são os profissionais e empresas, que conhecem ou aplicam as diretrizes utilizadas no desenvolvimento de softwares, onde termos como metodologia, processo, disciplinas, qualidade, conformidade e boas práticas, fazem parte do dia-a-dia do desenvolvimento, geralmente demonstrando um certo grau de maturidade, permitindo assim um controle maior do que é produzido, como produzido-lo e como averiguar sua conformidade com o esperado. Focando na etapa de programação, ou seja, nas questões arquiteturais e de implementação, podemos observar mais claramente uma ausência quase total de informações ou referências sobre a utilização de Design Patterns em jogos, indo além do código, observa-se a falta de literatura especializada, de congressos e discussões focando no assunto. Com isso em mente estamos propondo um trabalho focando em Design Patterns para Jogos, ou seja, estamos documentando alguns padrões percebidos durante o desenvolvimento de jogos, com o objetivo de auxiliar na resolução de problemas encontrados durante o desenvolvimento, além de estimular a aplicação e catalogação de padrões de projeto focados especificamente em jogos. Com base nesta idéia, partimos para a catalogação inicial de alguns padrões de software, os quais são: <strong>1.Font Mapping</strong> 1.1 Intenção Permitir que aplicações multimídias possam escrever informações(textos) na tela para o usuário. 1.2 Motivação Estamos desenvolvendo uma aplicação multimídia como por exemplo um player de vídeo ou um jogo eletrônico, porém necessitamos exibir informações para o usuário, geralmente essas informações são textos composto por caracteres alfa-numéricos, que representam informações sobre o estado do jogo ou do filme. Nestes casos na maioria das vezes desejamos utilizar textos de fontes estilizadas, quer seja pelo seu formato ou pelo estilo utilizado, como por exemplo o uso de sombras, bordas ou degradê. <strong>2.Resource Manager</strong> 2.1 Intenção Permitir que uma aplicação gerencie os recursos multimídia necessários para seu funcionamento. 2.2 Motivação Muitas vezes, estamos desenvolvendo uma aplicação ou um jogo eletrônico, que fará uso de recursos externos ao código fonte, como por exemplo: arquivos de imagens, arquivos de vídeos e arquivos de som. Sendo que diversas vezes uma mesma imagem ou som é utilizado por diversos elementos do jogo, como por exemplo: A animação de uma explosão, que contém 6 quadros(imagens), se em um certo momento do jogo, encontramos 7 aviões na tela, teríamos então que ter em memória o equivalente a 42 imagens, apenas para representar a possível explosão dos aviões. Tendo isso como base, observamos que é necessário um gerenciamento de recursos que além de carregar o que for necessário, quando necessário, possa prover o compartilhamento para que diversos elementos do jogo façam uso. <strong>3.Language Manage</strong>r 3.1 Intenção Permitir que uma aplicação ou jogo, posso suportar múltiplos idiomas. 3.2 Motivação Ao se desenvolver um jogo, uma das primeiras decisões que se toma é a definição de qual será o idioma de seu público alvo, onde geralmente acaba-se optando para que o jogo esteja apenas em um único idioma. Porém com isso eliminamos a possibilidade do mesmo entrar em contato com outros públicos, simplesmente pela barreira da língua. Sendo assim, um jogo em um mundo globalizado, deve permitir ou se adaptar ao idioma nativo de seus jogadores, sem comprometer sua estrutura interna, não sendo aceitável que seja mantido duas ou três versões do mesmo código para gerar versões em português, inglês ou espanhol. <strong>4.AnimaChronos </strong>4.1 Intenção Permitir a criação de animação para jogos, baseado no uso de imagens estáticas. 4.2 Motivação Quando estamos diante de um jogo eletrônico, nossa primeira percepção recaí sobre os gráficos, em principal sobre o movimento hipinótico exercido por eles, ou seja, nosso foco visual é rapidamente atraído para os objetos que se movem na cena, ou seja, as animações. Desta forma é imprescindível ao desenvolvermos um jogo, elaborarmos a capacidade de dar movimento as imagens, fazendo uso extensivo deste recurso conhecido como animação, o qual é o responsável pela completude da vida do personagem e objetos na cena. Tendo isso em mente, necessitamos da capacidade de unir as diversas imagens estáticas de forma padronizada e ordenada para que possamos efetuar as mudanças de quadro de forma controlada, causando o efeito desejado, ou seja, o movimento fluído do personagem ou objeto. <strong>5.Game Struct</strong> 5.1 Intenção Organizar e estruturar o funcionamento interno de um jogo eletrônico. 5.2 Motivação Quando pretendemos criar um jogo eletrônico, devemos ter em mente que um jogo é um software altamente especializado, e por consequência, é bem mais complexo que a maioria dos softwares tradicionais, pois possui um alto grau de interação com seu usuário, ou seja, o jogador, ao mesmo tempo que integra-se com diversos subsistemas e seus componentes, para assim poder executar de forma ordenada, controlada e prevista.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://fztech.dukitan.com/2010/06/12/ees-defesa-de-monografia-catalogo-de-padroes-para-jogos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pancada e Caveman</title>
		<link>http://fztech.dukitan.com/2008/10/28/pancada-e-caveman/</link>
		<comments>http://fztech.dukitan.com/2008/10/28/pancada-e-caveman/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 23:24:10 +0000</pubDate>
		<dc:creator>davidferreirafz</dc:creator>
				<category><![CDATA[Projetos]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[GBFramework]]></category>
		<category><![CDATA[Pancada]]></category>
		<category><![CDATA[SDL]]></category>

		<guid isPermaLink="false">http://fztech.dukitan.com/?p=336</guid>
		<description><![CDATA[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 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 <a href='http://fztech.dukitan.com/2008/10/28/pancada-e-caveman/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Blz!</p>
<p>Para mostrar a um amigo, alguns dos jogos/demos que estou desenvolvendo, coloquei no youtube dois videos, mas cuidado!, É uma super produção caseira <img src='http://fztech.dukitan.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<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 <img src='http://fztech.dukitan.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://br.youtube.com/watch?v=9D2eexLtVts"></a></p>
<p>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 <img src='http://fztech.dukitan.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://fztech.dukitan.com/2008/10/28/pancada-e-caveman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FZpong 2.0</title>
		<link>http://fztech.dukitan.com/2008/04/02/fzpong-20/</link>
		<comments>http://fztech.dukitan.com/2008/04/02/fzpong-20/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 02:34:00 +0000</pubDate>
		<dc:creator>davidferreirafz</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[CDLivre]]></category>
		<category><![CDATA[FZPong]]></category>
		<category><![CDATA[GBFramework]]></category>
		<category><![CDATA[Lançamento]]></category>
		<category><![CDATA[SDL]]></category>

		<guid isPermaLink="false">http://david.dukitan.com/?p=54</guid>
		<description><![CDATA[Foi lançado recentemente o FZpong 2.0, o qual faz parte do CDLivre 3.0[1]. O FZPong[2] é um pong com versões para MS-Windows e GNU/Linux, desenvolvido em SDL[3] / GBF[4] e licenciado em GPL, ou seja, você pode estudar o código fonte do FZPong para aprender a programar jogos para computador. Se antes tudo parecia fácil, <a href='http://fztech.dukitan.com/2008/04/02/fzpong-20/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Foi lançado recentemente o FZpong 2.0, o qual faz parte do CDLivre 3.0[1].</p>
<div style="text-align: justify">O FZPong[2] é um pong com versões para MS-Windows e GNU/Linux, desenvolvido em SDL[3] / GBF[4] e licenciado em GPL, ou seja, você pode estudar o código fonte do FZPong para aprender a programar jogos para computador.</p>
<p>Se antes tudo parecia fácil, agora no FZPong 2.0 as coisas já não estão tão simples assim, o computador ganhou uma nova e melhorada percepção do jogo e que em alguns momentos vai lhe exigir bons reflexos e o uso de estratégias para conseguir vencer.</p></div>
<p>Como melhorias nesta nova versão temos:</p>
<ul>
<li>Suporte a internacionalização, agora o jogo está disponível em português e inglês;</li>
<li>Melhoria na inteligência artificial do computador;</li>
<li>Aplicação de novos efeitos na bola de acordo com o local da rebatida;</li>
<li>Modificação das regras do jogo;</li>
<li>Melhorias no aspecto visual dos textos e janelas de mensagens;</li>
</ul>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Referência<br />
[1]<a href="http://cdlivre.wordpress.com/">http://cdlivre.wordpress.com</a><br />
[2]<a href="http://pjmoo.wiki.sourceforge.net/FZPong">http://pjmoo.wiki.sourceforge.net/FZPong</a><br />
[3]<a href="http://www.libsdl.org/">http://www.libsdl.org</a><br />
[4]<a href="http://pjmoo.wiki.sourceforge.net/GBF">http://pjmoo.wiki.sourceforge.net/GBF</a><br />
[5]<a href="http://davidferreira-fz.blogspot.com/2007/06/fzpong.html">http://davidferreira-fz.blogspot.com/2007/06/fzpong.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fztech.dukitan.com/2008/04/02/fzpong-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GoF &#8211; Exemplos</title>
		<link>http://fztech.dukitan.com/2007/11/23/gof-exemplos/</link>
		<comments>http://fztech.dukitan.com/2007/11/23/gof-exemplos/#comments</comments>
		<pubDate>Sat, 24 Nov 2007 00:15:00 +0000</pubDate>
		<dc:creator>davidferreirafz</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[BoUML]]></category>
		<category><![CDATA[C e C++]]></category>
		<category><![CDATA[GBFramework]]></category>

		<guid isPermaLink="false">http://david.dukitan.com/?p=40</guid>
		<description><![CDATA[Blz! Na especialização estou começando a disciplina de padrões, e como ficou acertado que para prova o livro base é nada mais nada menos que o do GoF(Padrões de Projeto)[1], então resolvi estudar de uma forma diferente. Irei implementar os padrões tendo como base o primeiro exemplo apresentado (o labirinto), para isso tive que fazer <a href='http://fztech.dukitan.com/2007/11/23/gof-exemplos/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Blz!</p>
<div style="text-align: justify">Na especialização estou começando a disciplina de padrões, e como ficou acertado que para prova o livro base é nada mais nada menos que o do GoF(Padrões de Projeto)[1], então resolvi estudar de uma forma diferente.<br />
Irei implementar os padrões tendo como base o primeiro exemplo apresentado (o labirinto), para isso tive que fazer algumas adaptações nas classes básicas e incluir alguns recursos do framework GBF[2], sendo assim além de apresentar para vocês a implementação dos padrões de quebra ainda vai a utilização do framework GBF[2].</div>
<div style="text-align: justify">Antes de começar a publicar os padrões, resolvi montar um exemplo base, para termos idéia de como era a implementação inicial e como ela irá evoluir com o uso dos padrões.</div>
<p>Sendo assim pretendo na medida do possível publicar padrão por padrão.</p>
<p>Lembre-se para poder melhor aproveitar o exemplo você necessita:</p>
<ol>
<li>IDE:
<ol>
<li>CodeBlocks[3] (Linux e MS-Windows)</li>
</ol>
</li>
<li>Compilador
<ol>
<li>Linux: GCC</li>
<li>MS-Windows: MinGW[4]</li>
</ol>
</li>
<li>Modelagem UML
<ol>
<li>BoUML[5]</li>
</ol>
</li>
<li>Bibliotecas:
<ol>
<li>SDL (SDL_Image, SDL_Mixer)[6];</li>
<li>GBF;</li>
</ol>
</li>
<li>Programar em C++</li>
<li>Exemplo:
<ol>
<li><a href="http://downloads.sourceforge.net/pjmoo/GoF.zip">Baixe no SourceForge[7]</a></li>
</ol>
</li>
</ol>
<p>Podemos observar abaixo o diagrama de classes do exemplo<br />
<a href="http://bp2.blogger.com/_JD_-EDbfZUo/R0dzz5veoDI/AAAAAAAAAfg/Mk2CBHn-m_o/s1600-h/GoF_DiagramaClasses.png"><img style="margin: 0px auto 10px;text-align: center;cursor: pointer" src="http://bp2.blogger.com/_JD_-EDbfZUo/R0dzz5veoDI/AAAAAAAAAfg/Mk2CBHn-m_o/s320/GoF_DiagramaClasses.png" border="0" alt="" /></a></p>
<ul>
<li><span style="font-style: italic">Classes Cinzas</span>: São do Framework GBF[2];</li>
<li><span style="font-style: italic">Classes Verdes</span>: É o núcleo principal do exemplo, são as classes que dão suporte para implementação de salas, paredes e portas;</li>
<li><span style="font-style: italic">Classe Vermelha</span>: É a enumeração usada para definir os lados da sala;</li>
<li><span style="font-style: italic">Classe Laranja</span>: É a responsável por armazenar o labirinto;</li>
<li><span style="font-style: italic">Classe Amarela</span>: É a classe que monta o labirinto;</li>
</ul>
<div style="text-align: justify">A seguir podemos ver as classe da visão de dependência, ou seja, como é o relacionamento de fato com relação aos includes (headers) e a classe que vai executar nosso exemplo:</div>
<div style="text-align: justify"><a href="http://bp3.blogger.com/_JD_-EDbfZUo/R0dz0JveoEI/AAAAAAAAAfo/h4kla2rmqHA/s1600-h/GoF_DependencyView.png"><img style="margin: 0px auto 10px;text-align: center;cursor: pointer" src="http://bp3.blogger.com/_JD_-EDbfZUo/R0dz0JveoEI/AAAAAAAAAfo/h4kla2rmqHA/s320/GoF_DependencyView.png" border="0" alt="" /></a>Essas classes seguem o mesmo código da legenda anterior, a única modificação é a inclusão da <span style="font-style: italic">Classe Rosa</span>, que contém o método &#8220;int main&#8221; para executar nosso exemplo.<br />
Pois é, podemos criar uma classe que irá gerar o método main <img src='http://fztech.dukitan.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , digamos assim quase imitando o principio do método main da linguagem em java <img src='http://fztech.dukitan.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </div>
<p>Abaixo podemos ver o resultado da execução do nosso exemplo:</p>
<p><a href="http://bp0.blogger.com/_JD_-EDbfZUo/R0dz0ZveoFI/AAAAAAAAAfw/PVQp-MUnofQ/s1600-h/GoF_Execucao.png"><img style="margin: 0px auto 10px;text-align: center;cursor: pointer" src="http://bp0.blogger.com/_JD_-EDbfZUo/R0dz0ZveoFI/AAAAAAAAAfw/PVQp-MUnofQ/s320/GoF_Execucao.png" border="0" alt="" /></a></p>
<p>T+!<br />
Vida Longa e Próspera!</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Referência<br />
[1]<a href="http://pt.wikipedia.org/wiki/Padr%C3%B5es_de_projeto_de_software">http://pt.wikipedia.org/wiki/Padr%C3%B5es_de_projeto_de_software</a><br />
[2]<a href="http://pjmoo.wiki.sourceforge.net/GBF">http://pjmoo.wiki.sourceforge.net/GBF</a><br />
[3]<a href="http://www.codeblocks.org">http://www.codeblocks.org</a><br />
[4]<a href="http://www.mingw.org">http://www.mingw.org/</a><br />
[5]<a href="http://bouml.free.fr">http://bouml.free.fr</a><br />
[6]<a href="http://www.libsdl.org">http://www.libsdl.org</a><br />
[7]<a href="http://downloads.sourceforge.net/pjmoo/GoF.zip">http://downloads.sourceforge.net/pjmoo/GoF.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fztech.dukitan.com/2007/11/23/gof-exemplos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GBF Interface Grafica</title>
		<link>http://fztech.dukitan.com/2007/10/25/gbf-interface-grafica/</link>
		<comments>http://fztech.dukitan.com/2007/10/25/gbf-interface-grafica/#comments</comments>
		<pubDate>Fri, 26 Oct 2007 01:00:00 +0000</pubDate>
		<dc:creator>davidferreirafz</dc:creator>
				<category><![CDATA[Null]]></category>
		<category><![CDATA[Projetos]]></category>
		<category><![CDATA[C e C++]]></category>
		<category><![CDATA[GBFramework]]></category>
		<category><![CDATA[Pancada]]></category>

		<guid isPermaLink="false">http://david.dukitan.com/?p=36</guid>
		<description><![CDATA[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&#8217;s Brazilian Framework). O GBF é um framework em C++, criado para o desenvolvimento de jogos <a href='http://fztech.dukitan.com/2007/10/25/gbf-interface-grafica/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Blz!</p>
<div style="text-align: justify">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&#8217;s Brazilian Framework).</p>
<p>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).</p>
<p>Tem algum tempo que voltei a mexer no projeto &#8220;pancada&#8221;, 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.</p>
<p>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 &#8220;OK&#8221; 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.</p>
<p>Vamos para de enrolar, e mostrar logo como a coisa funciona.<br />
Abaixo podemos ver o diagrama de classes das janelas</p></div>
<p><a href="http://bp1.blogger.com/_JD_-EDbfZUo/Rx_-ql9GHkI/AAAAAAAAAJo/C5WFGYJqB0s/s1600-h/UserInterfaceWindow.png"><img style="margin: 0pt auto 10px;text-align: center;cursor: pointer" src="http://bp1.blogger.com/_JD_-EDbfZUo/Rx_-ql9GHkI/AAAAAAAAAJo/C5WFGYJqB0s/s320/UserInterfaceWindow.png" border="0" alt="" /></a>O que de fato acontece é que o desenvolvedor utilizando o framework faria apenas isto:</p>
<pre>//Criando um padrão visual com janela transparente - segue o pattern Prototype (GoF)
UserInterfaceVisualImagem *uiVisualImagem = new UserInterfaceVisualImagem();
uiVisualImagem-&gt;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-&gt;setCorBorda(255,0,0);
uiVisualSolido-&gt;setCorFundo(100,200,100);

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

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

UserInterfaceWindowTitulo janelaCredito = new UserInterfaceWindowTitulo();
janelaCredito-&gt;setPosicao(40,50);
janelaCredito-&gt;adicionarBotao(new UserInterfaceBotao("menu","botao_enter",SDLK_RETURN));
janelaCredito-&gt;inicializar();
janelaCredito-&gt;setDimensao(560,400);
janelaCredito-&gt;texto.setFonte("texto");
janelaCredito-&gt;titulo.setChaveTexto("titulo_credito");
janelaCredito-&gt;setVisual(uiVisualImagem-&gt;clone());
janelaCredito-&gt;titulo.setFonte("menu");
janelaCredito-&gt;texto.setChaveTexto("tela_credito_%02d");</pre>
<div style="text-align: justify">A classe &#8220;UserInterfaceVisualImagem&#8221;, provê o efeito do fundo da janela, o qual aparenta ser transparente, talvez até por meio do canal &#8220;alpha&#8221;, 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 &#8220;transparência&#8221; pode ser vista abaixo, e a seleção de qual utilizar é baseada na enumeração &#8220;UserInterfaceVisualTipoBackground&#8221;.</div>
<p><a href="http://bp1.blogger.com/_JD_-EDbfZUo/RyADGV9GHlI/AAAAAAAAAJw/Nnr8F1eNxik/s1600-h/window-background.png"><img style="margin: 0pt auto 10px;text-align: center;cursor: pointer;width: 251px;height: 62px" src="http://bp1.blogger.com/_JD_-EDbfZUo/RyADGV9GHlI/AAAAAAAAAJw/Nnr8F1eNxik/s400/window-background.png" border="0" alt="" /></a></p>
<div style="text-align: justify">Na classe &#8220;UserInterfaceWindow&#8221; e &#8220;UserInterfaceWindowTitulo&#8221; existe os atributos &#8220;texto&#8221; e &#8220;titulo&#8221; o qual possibilita a utilização do recurso de &#8220;localização&#8221;, 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 &#8220;inicializar&#8221; realiza os ajustes finais para determinar algumas características que devem ser executadas apenas uma vez ou o menos possível.</p>
<p>Após entender assim, mesmo por cima o que deve ser feito, temos a parte importante que é &#8220;Como de fato eu uso e desenho a janela&#8221;, bem para isso vou mostrar o código:</p></div>
<pre>void Jogo::menuCredito()
{
rameLayerManager::getInstance()-&gt;getFrameLayer("background")-&gt;desenhar();

janelaCredito-&gt;executar();

if (janelaCredito-&gt;isBotao(UserInterfaceWindow::BOTAO_OK)){
setMenuPrincipal();
}</pre>
<div style="text-align: justify">Este metodo &#8220;menuCredito&#8221; é 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.</p>
<p>Neste método podemos observar uma chamada ao &#8220;FrameLayerManager&#8221; (é um singleton), no caso esta chamada é apenas pq queríamos desenhar o cenário do jogo abaixo da nossa janela. (Ver Figura 1)</p></div>
<div style="text-align: justify">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)</p>
<p>O método &#8220;isBotao&#8221; verifica se o botão &#8220;OK&#8221;, ú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).</p></div>
<p>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 &#8220;transparência&#8221;, que seja capaz de exibir alguma mensagem(texto e título) e que possa responder ao acionamento de algum botão.</p>
<p>Caso tenham interesse em saber mais detalhadamente como funciona ou detalhes da implementação podem entrar em contato <img src='http://fztech.dukitan.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div style="text-align: center"><span style="font-weight: bold">Figuras Anexas</span></div>
<div style="text-align: center">Figura 1: Tela do Menu Principal</div>
<p><a href="http://bp1.blogger.com/_JD_-EDbfZUo/RyAHNV9GHmI/AAAAAAAAAJ4/UqGKnzIk-nc/s1600-h/window_menu.png"><img style="margin: 0pt auto 10px;text-align: center;cursor: pointer" src="http://bp1.blogger.com/_JD_-EDbfZUo/RyAHNV9GHmI/AAAAAAAAAJ4/UqGKnzIk-nc/s320/window_menu.png" border="0" alt="" /></a></p>
<div style="text-align: center">Figura 2: Tela de Crédito</div>
<p><a href="http://bp2.blogger.com/_JD_-EDbfZUo/RyAHNl9GHnI/AAAAAAAAAKA/48YsMIdoung/s1600-h/window_menu_credito.png"><img style="margin: 0pt auto 10px;text-align: center;cursor: pointer" src="http://bp2.blogger.com/_JD_-EDbfZUo/RyAHNl9GHnI/AAAAAAAAAKA/48YsMIdoung/s320/window_menu_credito.png" border="0" alt="" /></a><br />
T+!<br />
Vida Longa e Próspera!</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Referência<br />
[1]<a href="http://davidferreira-fz.blogspot.com/2007/09/gbf-interface-grafica-v05.html">http://davidferreira-fz.blogspot.com/2007/09/gbf-interface-grafica-v05.html</a><br />
[2]<a href="http://davidferreira-fz.blogspot.com/2007/09/rascunho-de-interface-grfica.html">http://davidferreira-fz.blogspot.com/2007/09/rascunho-de-interface-grfica.html</a><br />
[3]<a href="http://pjmoo.wiki.sourceforge.net/">http://pjmoo.wiki.sourceforge.net/</a><br />
[4]<a href="http://pjmoo.wiki.sourceforge.net/GBF">http://pjmoo.wiki.sourceforge.net/GBF<br />
</a>[5]<a href="http://www.libsdl.org/">http://www.libsdl.org</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fztech.dukitan.com/2007/10/25/gbf-interface-grafica/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>GBF Interface Grafica v0.5</title>
		<link>http://fztech.dukitan.com/2007/09/17/gbf-interface-grafica-v05/</link>
		<comments>http://fztech.dukitan.com/2007/09/17/gbf-interface-grafica-v05/#comments</comments>
		<pubDate>Tue, 18 Sep 2007 02:27:00 +0000</pubDate>
		<dc:creator>davidferreirafz</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[C e C++]]></category>
		<category><![CDATA[GBFramework]]></category>
		<category><![CDATA[Pancada]]></category>

		<guid isPermaLink="false">http://david.dukitan.com/?p=33</guid>
		<description><![CDATA[Blz! Dando continuidade ao desenvolvimento da interface gráfica para as mensagens no Pancada[1], consegui um novo rascunho de classes as quais possuem uma abstração mediana, visto que resolvi especializar conforme a demanda, para não adicionar tantas classes no framework GBF[2] que acabem não sendo uteis, apresento abaixo o resultado das novas classes de interface gráfica <a href='http://fztech.dukitan.com/2007/09/17/gbf-interface-grafica-v05/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Blz!</p>
<div style="text-align: justify">Dando continuidade ao desenvolvimento da interface gráfica para as mensagens no <a href="http://pjmoo.wiki.sourceforge.net/Pancada">Pancada[1]</a>, consegui um novo rascunho de classes as quais possuem uma abstração mediana, visto que resolvi especializar conforme a demanda, para não adicionar tantas classes no framework <a href="http://pjmoo.wiki.sourceforge.net/GBF">GBF[2]</a> que acabem não sendo uteis, apresento abaixo o resultado das novas classes de interface gráfica e um pequeno exemplo do que mudou na forma de se fazer as &#8220;caixas de mensagens&#8221;, as quais são bem simples porém era chato de fazer.</div>
<pre>//Criando um padrão visual com janela transparente - segue o pattern Prototype (GoF)
UserInterfaceVisualImagem *uiVisualImagem = new UserInterfaceVisualImagem();
uiVisualImagem-&gt;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-&gt;setCorBorda(255,0,0);
uiVisualSolido-&gt;setCorFundo(100,200,100);

UserInterfaceWindowTitulo *janelaAjuda;
janelaAjuda = new UserInterfaceWindowTitulo();
janelaAjuda-&gt;setPosicao(40,50);
janelaAjuda-&gt;setDimensao(560,400);
janelaAjuda-&gt;texto.setFonte("texto");
janelaAjuda-&gt;texto.setChaveTexto("tela_ajuda_%02d");
janelaAjuda-&gt;titulo.setFonte("menu");
janelaAjuda-&gt;titulo.setChaveTexto("titulo_ajuda");
janelaAjuda-&gt;setVisual(uiVisualImagem-&gt;clone());
janelaAjuda-&gt;adicionarBotao(new UserInterfaceBotao("menu","botao_enter",SDLK_RETURN));
janelaAjuda-&gt;inicializar();</pre>
<p>Onde o uso da janela criada se da da seguinte forma:</p>
<pre>void Jogo::menuAjuda()
{
    FrameLayerManager::getInstance()-&gt;getFrameLayer("background")-&gt;desenhar();

    janelaAjuda-&gt;executar();

    if (janelaAjuda-&gt;isBotao(UserInterfaceWindow::BOTAO_OK)){
        setMenuPrincipal();
    }
}</pre>
<p>Para efeito de comparação logo abaixo um exemplo de como era criada a tela do menu ajuda:</p>
<pre>void Jogo::menuAjuda()
{
    char textoFormatado[30];
    FrameLayerManager::getInstance()-&gt;getFrameLayer("background")-&gt;desenhar();

    for (int i=0; i&gt;;11;i++){
        writeSystem-&gt;escreverLocalizado("texto",70,120+(26*i),textoFormatado);
    }

    frameworkGBF-&gt;writeSystem-&gt;escreverLocalizado("menu", 220, 88,"titulo_ajuda");

    if (desenharBotaoEnter()){
        if ((frameworkGBF-&gt;inputSystem-&gt;teclado-&gt;isKey(SDLK_RETURN))
        || (frameworkGBF-&gt;inputSystem-&gt;joystick-&gt;isButtonA())){
            setMenuPrincipal();
        }
    }
}</pre>
<p>Logo abaixo:</p>
<ul>
<li>Janela com fundo transparente<br />
<a href="http://bp2.blogger.com/_JD_-EDbfZUo/Ru9B_I-hc6I/AAAAAAAAAJA/brtFq-rcYEs/s1600-h/interface_grafica_transparente_v01.jpg"><img style="cursor: pointer" src="http://bp2.blogger.com/_JD_-EDbfZUo/Ru9B_I-hc6I/AAAAAAAAAJA/brtFq-rcYEs/s320/interface_grafica_transparente_v01.jpg" border="0" alt="" /></a></li>
</ul>
<ul>
<li>Janela com Fundo em cor Sólida<br />
<a href="http://bp0.blogger.com/_JD_-EDbfZUo/Ru9B_o-hc7I/AAAAAAAAAJI/kDQ75mjUwUI/s1600-h/interface_grafica_solida_v01.jpg"><img style="cursor: pointer" src="http://bp0.blogger.com/_JD_-EDbfZUo/Ru9B_o-hc7I/AAAAAAAAAJI/kDQ75mjUwUI/s320/interface_grafica_solida_v01.jpg" border="0" alt="" /></a></li>
</ul>
<p>E para matar a curiosidade o novo rascunho do diagrama de classes &#8220;ainda não integrante do GBF&#8221; pode ser visto abaixo:</p>
<div style="text-align: center"><a href="http://bp3.blogger.com/_JD_-EDbfZUo/Ru9EIY-hc8I/AAAAAAAAAJQ/WCOqw4N4S-c/s1600-h/UserInterface_Window_v05.png"><img style="cursor: pointer" src="http://bp3.blogger.com/_JD_-EDbfZUo/Ru9EIY-hc8I/AAAAAAAAAJQ/WCOqw4N4S-c/s320/UserInterface_Window_v05.png" border="0" alt="" /></a></div>
<p>T+!<br />
Vida Longa e Próspera!</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Referência<br />
[1]<a href="http://pjmoo.wiki.sourceforge.net/Pancada">http://pjmoo.wiki.sourceforge.net/Pancada</a><br />
[2]<a href="http://pjmoo.wiki.sourceforge.net/GBF">http://pjmoo.wiki.sourceforge.net/GBF</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fztech.dukitan.com/2007/09/17/gbf-interface-grafica-v05/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rascunho de Interface Gráfica</title>
		<link>http://fztech.dukitan.com/2007/09/09/rascunho-de-interface-grafica/</link>
		<comments>http://fztech.dukitan.com/2007/09/09/rascunho-de-interface-grafica/#comments</comments>
		<pubDate>Sun, 09 Sep 2007 15:16:00 +0000</pubDate>
		<dc:creator>davidferreirafz</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[C e C++]]></category>
		<category><![CDATA[GBFramework]]></category>

		<guid isPermaLink="false">http://david.dukitan.com/?p=32</guid>
		<description><![CDATA[Blz! Faz um bom tempo que não publico nenhuma novidade sobre meus projetos, porém isso não significa que eles estão parados, muito pelo contrario, é tanta coisa pra fazer que não está sobrando tempo pra ficar atualizando. Tem algumas semanas que voltei a trabalhar no Pancada (assim que possível publico alguma coisa sobre ele), e <a href='http://fztech.dukitan.com/2007/09/09/rascunho-de-interface-grafica/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">Blz!<br />
Faz um bom tempo que não publico nenhuma novidade sobre meus projetos, porém isso não significa que eles estão parados, muito pelo contrario, é tanta coisa pra fazer que não está sobrando tempo pra ficar atualizando.</p>
<p style="text-align: justify">Tem algumas semanas que voltei a trabalhar no Pancada (assim que possível publico alguma coisa sobre ele), e comecei a ter a velha dificuldade de montar aquelas telas (créditos, ajuda, sobre, final de fase, gameover e etc), então resolvi criar vergonha na cara e comecei a rascunhar componentes que facilitassem minha vida para montar uma espécie de caixa de texto, que nada mais é do que exibir um texto na tela.</p>
<p style="text-align: justify">Abaixo é possível ver o modelo uml (rascunho) do que vai se torna parte integrante do GBF, porém, só passa de fato para o framework após validação inicial com um projeto, o que deve acontecer nos próximos dias (ou semanas) ai então irá compor o framework e servir de base para um refatoramento das classes de interface Gráfica ou seja classes da série &#8220;UserInterface&#8221; do GBF.</p>
<p><a href="http://bp2.blogger.com/_JD_-EDbfZUo/RuQP1IA8mlI/AAAAAAAAAI4/cwnc_rnPw3c/s1600-h/GBF-Interface-CaixaDeTexto.png"><img style="margin: 0px auto 10px;text-align: center;cursor: pointer" src="http://bp2.blogger.com/_JD_-EDbfZUo/RuQP1IA8mlI/AAAAAAAAAI4/cwnc_rnPw3c/s200/GBF-Interface-CaixaDeTexto.png" border="0" alt="" /></a></p>
<p>T+!<br />
Vida Longa e Próspera!</p>
]]></content:encoded>
			<wfw:commentRss>http://fztech.dukitan.com/2007/09/09/rascunho-de-interface-grafica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FZPong</title>
		<link>http://fztech.dukitan.com/2007/06/25/fzpong/</link>
		<comments>http://fztech.dukitan.com/2007/06/25/fzpong/#comments</comments>
		<pubDate>Tue, 26 Jun 2007 01:51:00 +0000</pubDate>
		<dc:creator>davidferreirafz</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[FZPong]]></category>
		<category><![CDATA[GBFramework]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://david.dukitan.com/?p=30</guid>
		<description><![CDATA[Como mencionei anteriormente, foi criado um grupo de estudos sobre desenvolvimento de jogos na UFC, o DoG[1], e mensagens indo e vindo, foi sugerido pelo Felipe Ribeiro (Moderador do Grupo), que as pessoas participantes com ou sem experiência tentassem desenvolver um jogo/demo para que pudéssemos trocar idéias sobre implementação, dúvidas, curiosidades e dificuldades que surgissem <a href='http://fztech.dukitan.com/2007/06/25/fzpong/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div style="text-align: justify"><a href="http://bp3.blogger.com/_JD_-EDbfZUo/RoB1QgeHKKI/AAAAAAAAAHY/qnfor-fGWGA/s1600-h/fzpong_tela_menu_v1.1.jpg"><img style="margin: 0pt 10px 10px 0pt;float: left;cursor: pointer" src="http://bp3.blogger.com/_JD_-EDbfZUo/RoB1QgeHKKI/AAAAAAAAAHY/qnfor-fGWGA/s200/fzpong_tela_menu_v1.1.jpg" border="0" alt="" /></a>Como mencionei anteriormente, foi criado um grupo de estudos sobre desenvolvimento de jogos na UFC, o DoG[1], e mensagens indo e vindo, foi sugerido pelo Felipe Ribeiro (Moderador do Grupo), que as pessoas participantes com ou sem experiência tentassem desenvolver um jogo/demo para que pudéssemos trocar idéias sobre implementação, dúvidas, curiosidades e dificuldades que surgissem no decorrer do desenvolvimento.</div>
<div style="text-align: justify">Para tentar encontrar pontos comuns para troca de experiência foi proposto dois temas, sendo eles o desenvolvimento de um &#8220;Pong&#8221; ou de um &#8220;Tetris&#8221;, e logo em seguida tivemos o primeiro post com o primeiro jogo, era o Pong do Charles[2], o qual de fato acabou servindo de incentivo para mim, e me levou a pensar:</p>
<p><span style="font-style: italic">Poderia desenvolver um, serviria tanto pra validar as últimas modificações no GBF[3], quanto a aprender algumas coisas legais e ainda ter a oportunidade de conversar de igual pra igual com as pessoas(já que também era uma experiência nova para mim).</span></div>
<div style="text-align: justify">E assim, motivado pela empolgação, desafio e pelo bate-papo, fui levado a desenvolver meu primeiro pong, meio tardiamente, mas fui, e realmente é como falo nas minhas palestras, é uma experiência legal, divertida, simples e viciante, pensei em adicionar mil coisas nele, como sistema de partículas e afins, mas resolvi deixa-lo o mais simples e fiel ao tradicional possível para que quem sabe sirva de exemplo para implementações de quem gostaria de começar a programar jogos.</div>
<h3>Experiência</h3>
<div style="text-align: justify">Apesar de já ter desenvolvido o framework GBF[3], e outros demos, não havia feito coisas de concepção simples e divertidas como o pong, e tive que pensar um pouco em como implementar um pong, algumas dúvidas que tive antes e durante o desenvolvimento foram:</div>
<ul>
<li> Como fazer a bolinha rebater na tela;</li>
<li> Como fazer com que o CPU jogasse sem acertar todas e que não fosse totalmente burro;</li>
<li> Como delimitar a duração do jogo;</li>
</ul>
<p>Respondendo as essas perguntas comecei então a procurar minhas saídas:</p>
<h3><span style="font-weight: bold;font-size:130%"> </span>&#8220;Como fazer a bolinha rebater na tela&#8221;</h3>
<div style="text-align: justify">Fazem anos que não via física, e cheguei a pensar em algo complexo como mudar a <a href="http://bp2.blogger.com/_JD_-EDbfZUo/RoB0LQeHKII/AAAAAAAAAHI/WzQP7vsi2N0/s1600-h/fzpong_jogo_01_v1.1.jpg"><img style="margin: 0pt 10px 10px 0pt;float: left;cursor: pointer" src="http://bp2.blogger.com/_JD_-EDbfZUo/RoB0LQeHKII/AAAAAAAAAHI/WzQP7vsi2N0/s200/fzpong_jogo_01_v1.1.jpg" border="0" alt="" /></a>direção da bolinha por meio de ângulos, seno, cosseno e etc. Acabei procurando um livro de física para lembrar conceitos relacionados a mecânica, como movimentos uniformes, e etc, pois não lembrava mais nada disso, e nem sabia ao certo se isso resolveria, o fato é que o livro que recorri não era muito explicativo, na verdade era apenas exercícios (esses livros de hoje, parecem não serem feitos para que as pessoas aprendam sozinhas), comecei a ler, e reler, porém não consegui ver de fato a aplicação para o meu caso especifico, o qual seria apenas fazer a bolinha se desviar ou voltar. Sendo assim comecei a procurar pelo Google na esperança de achar alguns sources e acabei foi de fato achando um tutorial/apostila do Silveira Neto[7] (hehehe logo do Silveira, tão próximo e tão longe, ele também é daqui de Fortaleza, tive que ir na Internet para achar o que precisava), e lá tinha justamente o exemplo de uma bola sendo rebatida, aproveitei isso e adaptei para o pong. O fato é que a solução era super simples e eu procurando complicações físicas, bastava no caso inverter os valores de x e y para o que a bolinha voltasse na direção oposta exemplo:</div>
<blockquote><p><span style="font-family: courier new"> if  (bola.y&gt;480){</span><br />
<span style="font-family: courier new"> velocidade.y = &#8211; velocidade.y;</span><br />
<span style="font-family: courier new"> }</span></p>
<p><span style="font-family: courier new"> bola.y+=velocidade.y;</span></p></blockquote>
<div style="text-align: justify">Isso faz com que se a bolinha bater no fundo da tela, volte. Simples não ? pra mudar a direção de X, basta fazer a mesma operação com o eixo X.</div>
<h3><span style="font-weight: bold;font-size:130%"> </span>&#8220;Como fazer com que o CPU jogasse sem acertar todas e que não fosse totalmente burro&#8221;</h3>
<div style="text-align: justify">Minhas primeiras idéias foi tentar fazer algo randomico que, quando a bolinha passase do meio da &#8220;quadra&#8221;, fosse feito um random para determinar se o cpu iria ou não pegar a bola, porém isso pareceu que ia ser baseado muito na sorte e que não ficaria muito natural, então antes de testar, resolvi abandonar a idéia.<br />
Acabei lembrando do PacZero[4], e que eu havia implementado um algoritmo de colisão circular para determinar quando os fantasmas podia &#8220;ver&#8221; o pacman, e resolvi aplicar o mesmo principio, sendo assim, resolvi criar uma circulo de visão para o cpu, assim, quando a bolinha entrasse em seu raio de visão ele moveria-se para rebate-la. Porém essa alternativa acabou mostrando que com um circulo de visão grande demais, o cpu não erra, e um pequeno demais ele erra muito, então por meio da tentativa, erro e estimativa defini que seu circulo de visão teria um raio de _VALOR_ pixel, e que conforme o cpu ganhe as partidas maior vai ficando seu circulo de visão para assim dificultar a vida do jogador, porém este ponto não ficou muito natural, tem certos macetes (jogadas) que fazem com que o cpu perca.<br />
Esse é um ponto que está muito aberto as melhorias, visto que ficou altamente simplório o pseudo esquema de I.A. do CPU, pontos que eu talvez mude em versões futuras:</div>
<ul>
<li> Fazer com que o cpu se &#8220;distraia&#8221;, ou que &#8220;fique confiante demais&#8221; e só vá atrás da bola na última hora, o que causaria o efeito de incerteza se ele acertaria ou não</li>
<li> Fazer com que ele decida onde bater na bola, use as três partes da raquete para provocar efeitos diferentes na bola;</li>
<li> Fazer com que a visão aumente quando ele perder uma partida, pois assim na será um desafio maior para o jogador;</li>
</ul>
<h3><span style="font-weight: bold;font-size:130%"> </span>&#8220;Como delimitar a duração do jogo&#8221;</h3>
<div style="text-align: justify">Pensando um pouco em como determinar as partidas, acabei me baseando na experiência do projeto de jogo &#8220;Pancada&#8221;[5](O qual ainda não concluí), que me lembrou do principio de rounds, porém no pancada esses intervalos de partidas são baseados no tempo, e para o FZPong pensei em utilizar o principio de tempo para determinar a duração de cada set, porém acabei chegando a conclusão que seria mais interessante que fosse espelhado em regras como jogos de volley/tenis, assim determinei que para vencer um set, um jogador precisa de ter 5 pontos de vantagem sobre o outro, e para poder vencer a partida, é necessário que um jogador tenha 2 sets de vantagem sobre o outro.</p>
<p>É algo que pode parecerer estranho, a definição desses valores, visto que 5 pontos podem ora parecer muito, mas se levarmos em consideração a Inteligência do &#8220;CPU&#8221; é algo que fica plausível visto que a velocidade da bola está programada para ir aumentado gradativamente e assim oferecer um desafio mais equilibrado para o jogador.</p></div>
<h3>FeedBack</h3>
<div style="text-align: justify">Esse é um aspecto muito importante, principalmente quando estamos desenvolvendo nos primeiros jogos, protótipos ou quando queremos repassar o conhecimento para as pessoas, por meio deles podemos fugir um pouco da realidade &#8220;técnica&#8221; e ver quais as reações de jogadores ou de outros desenvolvedores.</p>
<p><a href="http://bp1.blogger.com/_JD_-EDbfZUo/RoB00AeHKJI/AAAAAAAAAHQ/vL1As5DA9eA/s1600-h/fzpong_tela_credito_v1.1.jpg"><img style="margin: 0px auto 10px;text-align: center;cursor: pointer" src="http://bp1.blogger.com/_JD_-EDbfZUo/RoB00AeHKJI/AAAAAAAAAHQ/vL1As5DA9eA/s200/fzpong_tela_credito_v1.1.jpg" border="0" alt="" /></a>Por meio de um desses feedback do Daniel R. Matos do grupo DoG, foi que caiu a ficha de como a figura(sprite) que eu estava usando para representar a bola no jogo estava fora de contexto, isso se deve pq quando iniciei pensei em recriar como o pong fosse um jogo de futebol, porém com meus &#8220;grandes dons artísticos&#8221;, acabei extrapolando e indo para outra idéia bem oposta, algo que fosse meio que técnico e meio rudimentar, tanto é que podemos observar que as partes da arena do jogo (parte de cima e de baixo) são feitas de pedra, e o fundo do jogo é algo meio confuso/abstrato porém lembra como se fosse um possível gramado e os dois bastões(jogadores/raquetes) são metálicos, e realmente a bola tradicional de futebol ficava destoando o contexto, então depois de receber esse apontamento, corri para o Google a procura de um tutorial(Esfera 3D)[6] que ensinasse como fazer esferas no gimp.</div>
<div style="text-align: justify">Isso resultou na nova versão do jogo 1.1 só por causa da bola do jogo que agora é uma &#8220;esfera metálica&#8221; ou similar, bem assim espero eu.</div>
<div style="text-align: justify">Espero que esse relato possa ajudar ou clarear um pouco o processo de criação do FZPong e que combinado com conversas e o source do jogo possam ajudar no processo de criação e aquisição de conhecimentos relacionados aos jogos.</div>
<p>E por fim temos o download do FZPong[8]:</p>
<p>Código Fonte: <a href="http://downloads.sourceforge.net/pjmoo/FZPong.1.1.src.zip?use_mirror=osdn">FZPong.1.1.src.zip</a><br />
Versão Linux: <a href="http://downloads.sourceforge.net/pjmoo/FZPong.1.1.bin.linux.tar.gz?use_mirror=osdn">FZPong.1.1.bin.linux.tar.gz</a><br />
Versão MS-Windows e Linux: <a href="http://downloads.sourceforge.net/pjmoo/FZPong.1.1.bin.all.zip?use_mirror=osdn">FZPong.1.1.bin.all.zip</a></p>
<p>T+!<br />
Vida Longa e Próspera!</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Referência</p>
<p>[1] Grupo DoG &#8211; <a href="http://groups.google.com/group/dog_/">http://groups.google.com/group/dog_/</a><br />
[2] Pong do Charles &#8211; <a href="http://www.lia.ufc.br/%7Erockyspirit/pong.tar.bz2">http://www.lia.ufc.br/~rockyspirit/pong.tar.bz2</a><br />
[3] GBF &#8211; <a href="http://pjmoo.sourceforge.net/wiki/index.php/GBF">http://pjmoo.sourceforge.net/wiki/index.php/GBF</a><br />
[4] PacZero &#8211; <a href="http://pjmoo.sourceforge.net/wiki/index.php/PacZero">http://pjmoo.sourceforge.net/wiki/index.php/PacZero</a><br />
[5] Pancada &#8211; <a href="http://pjmoo.sourceforge.net/wiki/index.php/Pancada">http://pjmoo.sourceforge.net/wiki/index.php/Pancada</a><br />
[6] Tutorial Esfera 3D &#8211; <a href="http://www.ogimp.com.br/modules/smartsection/item.php?itemid=7">http://www.ogimp.com.br/modules/smartsection/item.php?itemid=7</a><br />
[7] Blog do Silveira &#8211; <a href="http://www.eupodiatamatando.com/">http://www.eupodiatamatando.com</a><br />
[8] PJMOO Downloads &#8211; <a title="http://sourceforge.net/project/showfiles.php?group_id=198186" href="http://sourceforge.net/project/showfiles.php?group_id=198186">http://sourceforge.net/project/showfiles.php?group_id=198186</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fztech.dukitan.com/2007/06/25/fzpong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SpaceShooter</title>
		<link>http://fztech.dukitan.com/2007/05/22/spaceshooter/</link>
		<comments>http://fztech.dukitan.com/2007/05/22/spaceshooter/#comments</comments>
		<pubDate>Tue, 22 May 2007 15:37:00 +0000</pubDate>
		<dc:creator>davidferreirafz</dc:creator>
				<category><![CDATA[Null]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Projetos]]></category>
		<category><![CDATA[GBFramework]]></category>
		<category><![CDATA[SpaceShooter]]></category>

		<guid isPermaLink="false">http://david.dukitan.com/?p=21</guid>
		<description><![CDATA[Estava conversando com um amigo sobre desenvolvimento de jogos, quando lembrei do bom e velho SpaceShooter, e o quão ficou &#8220;abafado&#8221; 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 <a href='http://fztech.dukitan.com/2007/05/22/spaceshooter/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div style="text-align: justify">Estava conversando com um amigo sobre desenvolvimento de jogos, quando lembrei do bom e velho SpaceShooter, e o quão ficou &#8220;abafado&#8221; com o lançamento e a oficialização da última versão a 1.4 por causa causa do <a href="http://cdlivre.codigolivre.org.br/">CDLivre[4]</a> e do evento FLISOL.</div>
<div style="text-align: justify">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.</div>
<div style="text-align: justify"></div>
<h3 style="text-align: justify">História</h3>
<div style="text-align: justify">
<div style="text-align: justify">Spaceshooter pra quem não conhece, é um divisor de águas para mim, ele inaugurou minha &#8220;nova geração&#8221; de jogos, agora produzidos com o <a href="http://pjmoo.codigolivre.org.br/wiki/index.php/GBF">framework GBF[5]</a>. É um jogo simples e fácil no clássico estilo shoot&#8217;up, o qual foi muito venerado na época dos consoles Nes/SNes/Mega, tendo como base a temática de Star Trek.</div>
</div>
<div style="text-align: justify">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.</div>
<div style="text-align: justify">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.</div>
<p><span style="font-size:180%"><br />
</span></p>
<h3>Ficha Técnica</h3>
<ul>
<li>Linguagem
<ul>
<li>C++</li>
</ul>
</li>
<li>Bibliotecas
<ul>
<li><a href="http://www.libsdl.org/">SDL (SDL_image, SDL_mixer, SDL_net)[6]</a></li>
<li><a href="http://http//pjmoo.codigolivre.org.br/wiki/index.php/GBF">GBF[5]</a></li>
</ul>
</li>
<li>Recursos
<ul>
<li>Audio Stereo</li>
<li>Suporte a Joystick</li>
<li>Teclado</li>
<li>Gráficos 2D</li>
</ul>
</li>
<li>Idiomas
<ul>
<li>Português</li>
<li>Inglês</li>
<li>Espanhol</li>
</ul>
</li>
<li>Sistema Operacional
<ul>
<li>MS-Windows</li>
<li>GNU/Linux</li>
</ul>
</li>
<li>Ferramentas
<ul>
<li>IDE: <a href="http://www.codeblocks.org/">CodeBlocks[7]</a></li>
<li>UML: <a href="http://bouml.free.fr/">BoUML[8]</a></li>
</ul>
</li>
<li>Licença
<ul>
<li>GPL</li>
</ul>
</li>
</ul>
<h3></h3>
<h3>Aprendizado<span style="font-weight: bold;font-size:180%"><br />
</span></h3>
<div style="text-align: justify">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:</div>
<div style="text-align: justify"><span style="font-weight: bold"> IDE, </span>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:</div>
<ul>
<li>MS Visual Studio 6</li>
<li><a href="http://www.bloodshed.net/devcpp.html">DevCPP[9]</a></li>
<li><a href="http://www.eclipse.org/cdt">Eclipse CDT (Plugin para C++)[10]</a></li>
<li><a href="http://www.kdevelop.org/">KDevelop[11]</a></li>
<li><a href="http://www.codeblocks.org/">CodeBlocks[7]</a></li>
</ul>
<div style="text-align: justify">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.</div>
<div style="text-align: justify"><span style="font-weight: bold"> Sistema Operacional</span>, 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).</p>
<p>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.</p></div>
<div style="text-align: justify">
<div style="text-align: justify"><span style="font-weight: bold"> UML</span>, 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.<br />
Achei que era hora de procurar outras ferramentas, achei uma chamada <a href="http://www.jumli.de/">jumli[12]</a>, 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.</p>
<p>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 &#8220;artefato de destino&#8221;.</p>
<p>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.</p></div>
<p><span style="font-weight: bold"> Técnicas</span>, 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:</p>
<ul>
<li>Classes para gerenciadores de recursos: Audio, Imagens, Teclado, Joystick;</li>
<li>Classes para interface: Menus, Teclado Virtual (aqueles usados nos jogos de consoles)</li>
<li>Classes para efeitos especiais como sistema de partículas;</li>
<li>Classes para Sprite, Layers, Personagens;</li>
<li>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)</li>
<li>Utilização de designer patterns para criação do GBF e do SpaceShooter;</li>
</ul>
</div>
<div style="text-align: justify">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.</div>
<p>T+!<br />
Vida Longa e Próspera!</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Referência<br />
[1] PJMOO no Código Livre &#8211; <a href="http://codigolivre.org.br/projects/pjmoo/">http://codigolivre.org.br/projects/pjmoo/</a><br />
[2] Site SpaceShooter &#8211; <a href="http://pjmoo.codigolivre.org.br/site/spaceshooter/">http://pjmoo.codigolivre.org.br/site/spaceshooter/</a><br />
[3] Wiki SpaceShooter &#8211; <a href="http://pjmoo.codigolivre.org.br/wiki/index.php/SpaceShooter">http://pjmoo.codigolivre.org.br/wiki/index.php/SpaceShooter</a><br />
[4] CDLivre &#8211; <a href="http://cdlivre.codigolivre.org.br/">http://cdlivre.codigolivre.org.br</a><br />
[5] Framework GBF &#8211; <a href="http://pjmoo.codigolivre.org.br/wiki/index.php/GBF">http://pjmoo.codigolivre.org.br/wiki/index.php/GBF</a><br />
[6] SDL &#8211; <a href="http://www.libsdl.org/">http://www.libsdl.org</a><br />
[7] CodeBlocks &#8211; <a href="http://www.codeblocks.org/">http://www.codeblocks.org</a><br />
[8] BoUML &#8211; <a href="http://bouml.free.fr/">http://bouml.free.fr</a><br />
[9] DevCPP &#8211; <a href="http://www.bloodshed.net/devcpp.html">http://www.bloodshed.net/devcpp.html</a><br />
[10] Eclipse CDT &#8211; <a href="http://www.eclipse.org/cdt">http://www.eclipse.org/cdt</a><br />
[11] KDevelop &#8211; <a href="http://www.kdevelop.org/">http://www.kdevelop.org</a><br />
[12] Jumli &#8211; <a href="http://www.jumli.de/">http://www.jumli.de</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fztech.dukitan.com/2007/05/22/spaceshooter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SpaceShooter 1.4 e GBF 0.6</title>
		<link>http://fztech.dukitan.com/2007/02/18/spaceshooter-14-e-gbf-06/</link>
		<comments>http://fztech.dukitan.com/2007/02/18/spaceshooter-14-e-gbf-06/#comments</comments>
		<pubDate>Sun, 18 Feb 2007 16:18:00 +0000</pubDate>
		<dc:creator>davidferreirafz</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[GBFramework]]></category>
		<category><![CDATA[Lançamento]]></category>
		<category><![CDATA[SpaceShooter]]></category>

		<guid isPermaLink="false">http://david.dukitan.com/?p=3</guid>
		<description><![CDATA[SpaceShooter 1.4 e GBF 0.6 Blz! Pessoal acabei de lançar a versão (correções) no SpaceShooter agora na versão 1.4 (e creio que última deste projeto) e a versão 0.6 do GBF (Framework C++ para jogos multiplataforma). &#8211; SpaceShooter, é um jogo clássico no estilo shoot&#8217;up, tendo como base a temática de Star Trek. Para enfrentar <a href='http://fztech.dukitan.com/2007/02/18/spaceshooter-14-e-gbf-06/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>SpaceShooter 1.4 e GBF 0.6</p>
<p>Blz!</p>
<p>Pessoal acabei de lançar a versão (correções) no SpaceShooter agora na versão 1.4 (e creio que última deste projeto) e a versão 0.6 do GBF (Framework C++ para jogos multiplataforma).</p>
<p>&#8211;</p>
<p>SpaceShooter, é um jogo clássico no estilo shoot&#8217;up, tendo como base a temática de Star Trek.</p>
<p>Para enfrentar tudo isso, 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 ilimitados e de alguns poucos torpedos. Para sua defesa deverá contar com sua habilidade, a velocidade dos motores de warp, além da força dos 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.</p>
<p>Licença:</p>
<pre>   SpaceShooter - GPL  GBF - LGPL</pre>
<p>Mais informações:</p>
<p>Projeto PJMOO no Código Livre</p>
<pre>   <a class="external free" title="http://codigolivre.org.br/projects/pjmoo/" rel="nofollow" href="http://codigolivre.org.br/projects/pjmoo/">http://codigolivre.org.br/projects/pjmoo/</a></pre>
<p>Site do jogo SpaceShooter</p>
<pre>   <a class="external free" title="http://pjmoo.codigolivre.org.br/site/spaceshooter/" rel="nofollow" href="http://pjmoo.codigolivre.org.br/site/spaceshooter/">http://pjmoo.codigolivre.org.br/site/spaceshooter/</a></pre>
<p>Wiki do desenvolvimento do SpaceShooter</p>
<pre>   <a class="external free" title="http://pjmoo.codigolivre.org.br/wiki/index.php/SpaceShooter" rel="nofollow" href="http://pjmoo.codigolivre.org.br/wiki/index.php/SpaceShooter">http://pjmoo.codigolivre.org.br/wiki/index.php/SpaceShooter</a></pre>
]]></content:encoded>
			<wfw:commentRss>http://fztech.dukitan.com/2007/02/18/spaceshooter-14-e-gbf-06/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

