  <?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>Athanazio &#187; games</title>
	<atom:link href="http://www.athanazio.com/category/games/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.athanazio.com</link>
	<description>Nada é Simples, Mas Tudo é Possível</description>
	<lastBuildDate>Thu, 01 Dec 2011 03:47:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>call of duty &#8211; modern warfare reflex on wii</title>
		<link>http://www.athanazio.com/2010/11/13/call-of-duty-modern-warfare-reflex-on-wii/</link>
		<comments>http://www.athanazio.com/2010/11/13/call-of-duty-modern-warfare-reflex-on-wii/#comments</comments>
		<pubDate>Sun, 14 Nov 2010 02:43:23 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[call of duty. reflex]]></category>
		<category><![CDATA[modern warfare]]></category>
		<category><![CDATA[wii]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2791</guid>
		<description><![CDATA[Nunca gostei muito de jogos de tiro, porque para mim a experiência de mirar com as teclas de direção é horrível ! mas quando vi um call of duty para Wii resolvi comprar para experimentar &#8230; e tem sido uma experiência de jogo ótima. a imagem que coloquei eh do agradecimento por jogar que aparece [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><a href="http://www.athanazio.com/wp-content/uploads/2010/11/call-of-duty-thx-for-playing.jpg"><img src="http://www.athanazio.com/wp-content/uploads/2010/11/call-of-duty-thx-for-playing-400x300.jpg" alt="" title="call of duty thx for playing" width="400" height="300" class="alignnone size-medium wp-image-2792" /></a><br />
Nunca gostei muito de jogos de tiro, porque para mim a experiência de mirar com as teclas de direção é horrível ! mas quando vi um call of duty para Wii resolvi comprar para experimentar &#8230; e tem sido uma experiência de jogo ótima.<br />
a imagem que coloquei eh do agradecimento por jogar que aparece depois da fase bônus final <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
apesar do jogo de 2 pessoas ser meio estranho, porque o segundo jogador só atira, não move o personagem ficando como se fosse um papagaio armado no seu ombro hehehe, apesar desta &#8220;novidade&#8221; do jogo cooperativo, tudo é bem interessante a estória é legal, algumas fases são realmente desafiantes e o multiplayer pela internet é ótimo, sempre com pessoas jogando.</p>
<p>resumo da estória, gostei muito ! </p>
<p>lembre-se jogar com este acessório faz toda a diferença !<br />
<a href="http://www.athanazio.com/wp-content/uploads/2010/11/suporte-para-wiimote-e-nunchuk.jpg"><img src="http://www.athanazio.com/wp-content/uploads/2010/11/suporte-para-wiimote-e-nunchuk.jpg" alt="" title="suporte para wiimote e nunchuk" width="250" height="250" class="alignnone size-full wp-image-2793" /></a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/11/13/call-of-duty-modern-warfare-reflex-on-wii/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>cocos2d hello world</title>
		<link>http://www.athanazio.com/2010/11/09/cocos2d-hello-world/</link>
		<comments>http://www.athanazio.com/2010/11/09/cocos2d-hello-world/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 01:11:11 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2785</guid>
		<description><![CDATA[parece besteira, mas colocar um ambiente de programação novo funcionando eh sempre uma novidade !!]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>parece besteira, mas colocar um ambiente de programação novo funcionando eh sempre uma novidade !!<br />
<a href="http://www.athanazio.com/wp-content/uploads/2010/11/2010-11-09_2308.png"><img src="http://www.athanazio.com/wp-content/uploads/2010/11/2010-11-09_2308-450x234.png" alt="" title="2010-11-09_2308" width="450" height="234" class="alignnone size-medium wp-image-2786" /></a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/11/09/cocos2d-hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cocos2d &#8211; primeiros passos</title>
		<link>http://www.athanazio.com/2010/11/09/cocos2d-primeiros-passos/</link>
		<comments>http://www.athanazio.com/2010/11/09/cocos2d-primeiros-passos/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 00:30:42 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[cocos2d]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2776</guid>
		<description><![CDATA[seguindo os primeiros passso com o framework de jogos 2D para o Iphone ! primeiros passos começam sempre com um pouco de dor hehehe, estou seguindo esta orientacao inicial &#8230; http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:lesson_1._install_test mas jah comecei bem tomando uns erros de compilacao &#8230; mas imagino o que seja, acho que tinha habilitado o profiler para o xcode [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>seguindo os primeiros passso com o framework de jogos 2D para o Iphone ! primeiros passos começam sempre com um pouco de dor hehehe, estou seguindo esta orientacao inicial &#8230;<br />
<a href="http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:lesson_1._install_test">http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:lesson_1._install_test<br />
</a><br />
mas jah comecei bem tomando uns erros de compilacao &#8230;<br />
<img src="http://www.athanazio.com/wp-content/uploads/2010/11/2010-11-09_2227-231x300.png" alt="" title="2010-11-09_2227" width="231" height="300" class="alignnone size-medium wp-image-2777" /><br />
mas imagino o que seja, acho que tinha habilitado o profiler para o xcode e agora ao compilar o cocos2d ele esta reclamando que o mesmo nao esta ligado &#8230; deve ser isto <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/11/09/cocos2d-primeiros-passos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>patapon eh muito baummmm</title>
		<link>http://www.athanazio.com/2010/07/12/patapon-eh-muito-baummmm/</link>
		<comments>http://www.athanazio.com/2010/07/12/patapon-eh-muito-baummmm/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 13:03:57 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[patapon]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2715</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/bxLpnf7ojwE&amp;hl=en_US&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/bxLpnf7ojwE&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/07/12/patapon-eh-muito-baummmm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>armadilha do backyard monsters</title>
		<link>http://www.athanazio.com/2010/06/20/armadilha-do-backyard-monsters/</link>
		<comments>http://www.athanazio.com/2010/06/20/armadilha-do-backyard-monsters/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 14:47:23 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2652</guid>
		<description><![CDATA[huahuahuahuhua muito boa !! os ataques periódicos dos monstrinhos, agora na versão vou te dar um presente de grego !!]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>huahuahuahuhua muito boa !! os ataques periódicos dos <a href="http://apps.facebook.com/backyardmonsters/">monstrinhos</a>, agora na versão vou te dar um presente de grego !!<br />
<a href="http://www.athanazio.com/wp-content/uploads/2010/06/armadilha-do-backyard-monsters.jpg"><img src="http://www.athanazio.com/wp-content/uploads/2010/06/armadilha-do-backyard-monsters-407x300.jpg" alt="" title="armadilha do backyard monsters" width="407" height="300" class="alignnone size-medium wp-image-2653" /></a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/06/20/armadilha-do-backyard-monsters/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>backyard monsters</title>
		<link>http://www.athanazio.com/2010/06/16/backyard-monsters/</link>
		<comments>http://www.athanazio.com/2010/06/16/backyard-monsters/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 04:06:37 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[backyard monsters]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2623</guid>
		<description><![CDATA[iau que joguinho maneiro para facebook !! gostei do conceito de vc proteger seu territorio, mas ter 14 dias para se preparar veja mais em : http://apps.facebook.com/backyardmonsters/ edit : ainda tem a opção de comprar proteção para ninguem encher o saco !!]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>iau que joguinho maneiro para facebook !!<br />
<a href="http://apps.facebook.com/backyardmonsters/"><img src="http://www.athanazio.com/wp-content/uploads/2010/06/backyard-monsters.jpg" alt="" title="backyard monsters" width="450" height="300" class="alignnone size-full wp-image-2624" /></a></p>
<p>gostei do conceito de vc proteger seu territorio, mas ter 14 dias para se preparar <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
veja mais em : <a href="http://apps.facebook.com/backyardmonsters/">http://apps.facebook.com/backyardmonsters/</a></p>
<p>edit :<br />
ainda tem a opção de comprar proteção para ninguem encher o saco !!<br />
<a href="http://www.athanazio.com/wp-content/uploads/2010/06/backyard-monsters-compra-de-protecao.jpg"><img src="http://www.athanazio.com/wp-content/uploads/2010/06/backyard-monsters-compra-de-protecao.jpg" alt="" title="backyard monsters compra de protecao" width="450" height="297" class="alignnone size-full wp-image-2626" /></a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/06/16/backyard-monsters/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>protect the island</title>
		<link>http://www.athanazio.com/2010/04/26/protect-the-island/</link>
		<comments>http://www.athanazio.com/2010/04/26/protect-the-island/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 18:03:13 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2552</guid>
		<description><![CDATA[clique na imagem para jogar e proteger a ilha dos monstros !! Jogo criado para o Ludum Dare 17]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><a href="http://www.athanazio.com/jogos/protect-the-island-game/"><img src="http://www.athanazio.com/wp-content/uploads/2010/04/protect-the-island-150x150.jpg" alt="" title="protect the island" width="150" height="150" class="alignnone size-thumbnail wp-image-2563" /></a><br />
clique na imagem para jogar e proteger a ilha dos monstros !!<br />
Jogo criado para o Ludum Dare 17</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/04/26/protect-the-island/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wolframtones &#8211; gerando musicas</title>
		<link>http://www.athanazio.com/2010/04/22/wolframtones-gerando-musicas/</link>
		<comments>http://www.athanazio.com/2010/04/22/wolframtones-gerando-musicas/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 03:29:31 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[gerador]]></category>
		<category><![CDATA[midi]]></category>
		<category><![CDATA[musica]]></category>
		<category><![CDATA[som]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2550</guid>
		<description><![CDATA[Gerador de trilhas sonoras ! show de bola http://tones.wolfram.com/]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Gerador de trilhas sonoras ! show de bola<br />
<a href="http://tones.wolfram.com/">http://tones.wolfram.com/</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/04/22/wolframtones-gerando-musicas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pongMe &#8211; primeiro teste com Flashdevelop + Flashpunk</title>
		<link>http://www.athanazio.com/2010/04/21/pongme-primeiro-teste-com-flashdevelop-flashpunk/</link>
		<comments>http://www.athanazio.com/2010/04/21/pongme-primeiro-teste-com-flashdevelop-flashpunk/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 00:45:19 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flashdevelop]]></category>
		<category><![CDATA[flashpunk]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[pong]]></category>
		<category><![CDATA[sample]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2547</guid>
		<description><![CDATA[Apos alguns arranhoes e minha vista cansada, porque ainda nao troquei o oculos &#8230; fiz algo que funciona, um quadradinho que vai para um lado e para o outro batendo nas paredes veja que legal, pongme o codigo fonte eh razoalmente simples: um arquivo Main.as que faz a inicializacoes do framework flashpunk, uma classe para [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Apos alguns arranhoes e minha vista cansada, porque ainda nao troquei o oculos &#8230; fiz algo que funciona, um quadradinho que vai para um lado e para o outro batendo nas paredes <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>veja que legal, <a href='http://www.athanazio.com/wp-content/uploads/2010/04/pongme.swf'>pongme</a></p>
<p>o codigo fonte eh razoalmente simples:<br />
um arquivo Main.as que faz a inicializacoes do framework flashpunk, uma classe para cada intancia de World, que  representa cada cena, por exemplo Menu, o jogo em si, tela de fim de jogo e assim por diante, e objetos filhos de Actor que sao elementos de tela.</p>
<p>seguem os arquivos que usei<br />
<span id="more-2547"></span></p>
<p>main.as</p>
<pre class="brush: as3; title: ; notranslate">
package
{
	import punk.core.*;
	import punk.util.*;
	import punk.*;

	[SWF(width = &quot;480&quot;, height = &quot;320&quot;)]

	public class Main extends Engine
	{
		public function Main()
		{
			super(480, 320, 60, 1, Menu);
		}
	}
}
</pre>
<p>menu.as</p>
<pre class="brush: as3; title: ; notranslate">
package
{
	import punk.core.*;
	import punk.util.*;
	import punk.*;

	/**
	 * ...
	 * @author athanazio.com
	 */
	public class Menu extends World
	{

		public function Menu()
		{
			Text.color = 0x667CFF;
			var centerX:int = FP.screen.width / 2;
			var centerY:int = FP.screen.height / 2;

			var title:Text = new Text(&quot;PongMe!\nPress Space to play.&quot;, centerX, centerY);
			title.size = 15;
			title.center();
			add(title);
		}

		override public function update():void
		{
			if (Input.pressedKey(Key.SPACE))
				FP.goto = new GameWorld();
		}

	}

}
</pre>
<p>gameworld.as</p>
<pre class="brush: as3; title: ; notranslate">
package
{

	import punk.core.World;
	import punk.Text;

	/**
	 * ...
	 * @author athanazio.com
	 */
	public class GameWorld extends World
	{

		public function GameWorld()
		{
		}

		override public function init():void
		{
			FP.randomizeSeed();

			Text.color = 0x667CFF;
			add(new Text(&quot;Game Screen.&quot;, 10, 10));

			add(new Player());
			add(new Ball());
			add(new WallTop());
			add(new WallLeft());
			add(new WallRight());
		}
	}

}
</pre>
<p>player.as</p>
<pre class="brush: as3; title: ; notranslate">
package
{
	import punk.Actor;
	import punk.util.Input;
	import punk.util.Key;

	/**
	 * ...
	 * @author athanazio.com
	 */
	public class Player extends Actor
	{
		private var speed:Number = 3;

		[Embed(source='data/player.png')] private var ImgPlayer:Class;
		public function Player()
		{
			sprite = FP.getSprite(ImgPlayer, 0, 0);
			speed = 6 * (sprite.width / FP.fps);
			setHitbox( sprite.width, sprite.height, 0, 0);

			x = 100;
			y = 200;
			type = &quot;player&quot;;

			Input.define(&quot;right&quot;, Key.RIGHT);
			Input.define(&quot;left&quot;, Key.LEFT);
			Input.define(&quot;up&quot;, Key.UP);
			Input.define(&quot;down&quot;, Key.DOWN);
		}

		override public function update():void
		{
			var newX:Number = x;
			var newY:Number = y;

			if (Input.check(&quot;right&quot;)) newX += speed;
			if (Input.check(&quot;left&quot;)) newX -= speed;
			if (Input.check(&quot;up&quot;)) newY -= speed;
			if (Input.check(&quot;down&quot;)) newY += speed;

			if ( ! collide(&quot;wall&quot;, newX, newY) )
			{
				x = newX;
				y = newY;
			}

			var ball:Ball= collide(&quot;ball&quot;, x, y) as Ball;
			if ( ball )
			{
				ball.speedY = ball.speedY * -1;
			}

		}

	}

}
</pre>
<p>ball.as</p>
<pre class="brush: as3; title: ; notranslate">
package
{
	import punk.Actor;

	/**
	 * ...
	 * @author athanazio.com
	 */
	public class Ball extends Actor
	{
		public var speedX:Number = 0;
		public var speedY:Number = 0;

		[Embed(source='data/ball.png')]	private var ImgPlayer:Class;
		public function Ball()
		{
			super();
			sprite = FP.getSprite(ImgPlayer, 0, 0);
			speedX = 7 * (sprite.width / FP.fps);
			speedY = 7 * (sprite.width / FP.fps);

			x = 100;
			y = 100;
			type = &quot;ball&quot;;
		}

		override public function update():void
		{
			x += speedX;
			y += speedY;
		}

	}

}
</pre>
<p>wallleft.as</p>
<pre class="brush: as3; title: ; notranslate">
package
{
	import punk.Actor;
	import punk.core.Entity;

	/**
	 * ...
	 * @author athanazio.com
	 */
	public class WallLeft extends Actor
	{
		[Embed(source='data/wall-vert.png')] private var ImgPlayer:Class;
		public function WallLeft()
		{
			sprite = FP.getSprite(ImgPlayer, 0, 0);
			setHitbox( sprite.width, sprite.height, 0, 0);
			x = 0;
			y = 0;
			type = &quot;wall&quot;;
		}

		override public function update():void
		{
			var ball:Ball= collide(&quot;ball&quot;, x, y) as Ball;

			if ( ball )
			{
				ball.speedX = ball.speedX * -1;
			}
		}
	}

}
</pre>
<p>wallright.as</p>
<pre class="brush: as3; title: ; notranslate">
package
{
	import punk.Actor;
	import punk.core.Entity;

	/**
	 * ...
	 * @author athanazio.com
	 */
	public class WallRight extends Actor
	{
		[Embed(source='data/wall-vert.png')] private var ImgPlayer:Class;
		public function WallRight()
		{
			sprite = FP.getSprite(ImgPlayer, 0, 0);
			setHitbox( sprite.width, sprite.height, 0, 0);
			x = FP.screen.width - sprite.width;
			y = 0;
			type = &quot;wall&quot;;
		}

		override public function update():void
		{
			var ball:Ball= collide(&quot;ball&quot;, x, y) as Ball;

			if ( ball )
			{
				ball.speedX = ball.speedX * -1;
			}
		}

	}

}
</pre>
<p>walltop.as</p>
<pre class="brush: as3; title: ; notranslate">
package
{
	import punk.Actor;
	import punk.core.Entity;

	/**
	 * ...
	 * @author athanazio.com
	 */
	public class WallTop extends Actor
	{
		[Embed(source='data/wall-top.png')] private var ImgPlayer:Class;
		public function WallTop()
		{
			sprite = FP.getSprite(ImgPlayer, 0, 0);
			setHitbox( sprite.width, sprite.height, 0, 0);
			x = 0;
			y = 0;
			type = &quot;wall&quot;;
		}

		override public function update():void
		{
			var ball:Ball= collide(&quot;ball&quot;, x, y) as Ball;

			if ( ball )
			{
				ball.speedY = ball.speedY * -1;
			}
		}

	}

}
</pre>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/04/21/pongme-primeiro-teste-com-flashdevelop-flashpunk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>flash esta no ar</title>
		<link>http://www.athanazio.com/2010/04/21/flash-esta-no-ar/</link>
		<comments>http://www.athanazio.com/2010/04/21/flash-esta-no-ar/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 16:44:12 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flashdevelop]]></category>
		<category><![CDATA[flashpunk]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[ludumdare]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2535</guid>
		<description><![CDATA[Quando escrevi sobre javaFX uma das constatações foi de que o player com maior abrangencia no mercado eh o flash, e porque nao fazer jogos em flash ? umas das minhas maiores restrições pessoais eh não conhecer uma opção gratuita que tenha foco no desenvolvedor e menos foco no design, porque para mim usar o [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Quando escrevi sobre <a href="http://www.athanazio.com/2009/04/15/javafx-para-criar-jogos-13/">javaFX</a> uma das constatações foi de que o player com maior abrangencia no mercado eh o flash, e porque nao fazer jogos em flash ? umas das minhas maiores restrições pessoais eh não conhecer uma opção gratuita que tenha foco no desenvolvedor e menos foco no design, porque para mim usar o <a href="http://www.adobe.com/products/flash/">flash professional</a> para criar os jogos seria um desafio de aprendizado muito grande, alem do produto ser pago.</p>
<p>Acabei pesquisando e perguntando a um <a href="http://twitter.com/diegocbarboza">amigo</a> que anda desenvolvendo em flash, e descobri a alternativa do <a href="http://www.flashdevelop.org">FlashDevelop + Flex SDK</a>, que combina uma IDE para desenvolvimento para flash, usando ActionScript, e um compilador de ActionScript que gera o SWF final para ser apresentado nas paginas. Assim estou em casa, codigo codigo codigo + artefatos graficos e audio = jogo. <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Bem o processo de instalacao eh bem simples, esta bem documentado aqui<br />
<a href="http://www.flashdevelop.org/community/viewtopic.php?f=11&#038;t=5669">http://www.flashdevelop.org/community/viewtopic.php?f=11&#038;t=5669<br />
</a></p>
<p>alem disto identifiquei um framework que eh muito bem comentado pela comunidade do <a href="http://www.ludumdare.com/compo/">ludumdare</a>, que eh o <a href="http://flashpunk.net">flashpunk</a> que tem um monte de exemplos disponiveis em<br />
<a href="http://www.brighthub.com/hubfolio/matthew-casperson/blog/archive/2010/03/19/flashpunk-tutorials.aspx">http://www.brighthub.com/hubfolio/matthew-casperson/blog/archive/2010/03/19/flashpunk-tutorials.aspx</a></p>
<p>Bem agora eh colocar a mao na massa e ver no que vai dar !</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/04/21/flash-esta-no-ar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>global game jam 2010</title>
		<link>http://www.athanazio.com/2010/01/06/global-game-jam-2010/</link>
		<comments>http://www.athanazio.com/2010/01/06/global-game-jam-2010/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 03:21:51 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[global game jam]]></category>
		<category><![CDATA[riogdug]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2420</guid>
		<description><![CDATA[Opa parem tudo !! inscrições abertas para o Global Game Jam no Rio de Janeiro !!! http://www.riogdug.org/2010/01/05/global-game-jam-2010/ Este evento é muito maneiro participei ano passado, ficamos internados 48horas num lugar, com programadores de jogos, designers, engenheiros de som, artistas de um modo geral, roteiristas, gente de todo tipo, e agrupados criamos videogames em 48horas, excelente [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Opa parem tudo !! inscrições abertas para o Global Game Jam no Rio de Janeiro !!!<br />
<a href="http://www.riogdug.org/2010/01/05/global-game-jam-2010/">http://www.riogdug.org/2010/01/05/global-game-jam-2010/</a></p>
<p>Este evento é muito maneiro participei ano passado, ficamos internados 48horas num lugar, com programadores de jogos, designers, engenheiros de som, artistas de um modo geral, roteiristas, gente de todo tipo, e agrupados criamos videogames em 48horas, excelente experiência !!</p>
<p>te vejo lá !</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/01/06/global-game-jam-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jaga e ludum dare 16</title>
		<link>http://www.athanazio.com/2009/12/14/jaga-e-ludum-dare-16/</link>
		<comments>http://www.athanazio.com/2009/12/14/jaga-e-ludum-dare-16/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 12:25:09 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[fotos]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[trecos]]></category>
		<category><![CDATA[16]]></category>
		<category><![CDATA[dog]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[jaga]]></category>
		<category><![CDATA[ludum dare]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/2009/12/14/jaga-e-ludum-dare-16/</guid>
		<description><![CDATA[bem o fim de semana foi bizzarro cheio novidades e aventuras, a mais legal eh um novo morador da casa esta chegando, o Neskau, um simpatico cachorrinho que vai morar conosco, por enquanto como esta desmamando, vem durante o dia e depois volta na mãe &#8230; otimo presente de natal para todos nós. outro ocorrido [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>bem o fim de semana foi bizzarro cheio novidades e aventuras, a mais legal eh um novo morador da casa esta chegando, o Neskau, um simpatico cachorrinho que vai morar conosco, por enquanto como esta desmamando, vem durante o dia e depois volta na mãe &#8230; otimo presente de natal para todos nós.<br />
<img src="http://www.athanazio.com/wp-content/uploads/2009/12/ld16-new-player-at-home.jpg" alt="ld16 new player at home" title="ld16 new player at home" width="450" height="300" class="alignnone size-full wp-image-2375" /></p>
<p>outro ocorrido foi a participação no ludum dare 16, meio desastrosa porque não entreguei um jogo no fim do prazo, mas muito produtiva porque conclui a migracao inicial do framework que estou fazedo para o desktop. A versão inicial soh rodava no android agora tem a versão desktop também, as duas estão assim como direi em estágio alpha <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  mas breve breve terei ao menos uma versão beta com documentação decente, vai esta lah em <a href="http://jaga.athanazio.com">jaga.athanazio.com</a></p>
<p>ao menos os desenhos para o jogo ficaram bonitinhos hhhahahhah<br />
<img src="http://www.athanazio.com/wp-content/uploads/2009/12/ld16-npc-list.jpg" alt="ld16 npc list" title="ld16 npc list" width="450" height="95" class="alignnone size-full wp-image-2377" /></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/12/14/jaga-e-ludum-dare-16/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ano de jogos e a vinda do jaga</title>
		<link>http://www.athanazio.com/2009/12/10/ano-de-jogos-e-a-vinda-do-jaga/</link>
		<comments>http://www.athanazio.com/2009/12/10/ano-de-jogos-e-a-vinda-do-jaga/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 18:10:33 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[jaga]]></category>
		<category><![CDATA[ludum dare]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2364</guid>
		<description><![CDATA[Ahhhh 2009 terminando, quanta coisa aconteceu !! minha investida no mercado de jogos esta crescendo, consegui fazer vários jogos este ano, vários mesmo !! dá uma olhada na lista : http://www.athanazio.com/jogos/ e nesta jornada usei diversas tecnologias diferentes: XNA, SDL, Lõve, Java, Unity3D delícia !! agora com a experiência que acumulei estou iniciando o desenvolvimento [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Ahhhh 2009 terminando, quanta coisa aconteceu !! minha investida no mercado de jogos esta crescendo, consegui fazer vários jogos este ano, vários mesmo !! dá uma olhada na lista : <a href="http://www.athanazio.com/jogos/">http://www.athanazio.com/jogos/</a> e nesta jornada usei diversas tecnologias diferentes: <a href="http://creators.xna.com/en-US/">XNA</a>, <a href="http://www.libsdl.org/">SDL</a>, <a href="http://love2d.org/">Lõve</a>, <a href="http://java.com">Java</a>, <a href="http://unity3d.com/">Unity3D </a>delícia !! agora com a experiência que acumulei estou iniciando o desenvolvimento de um framework para jogos, onde o desenvolvimento será em <a href="http://www.lua.org/">Lua </a>e o backend em Java.</p>
<p>A implementação da primeira versão de testes foi feita para o sistema operacional Android, e pretendo ter a versão para web pronta para o<a href="http://www.ludumdare.com/compo/2009/11/13/announcing-ludum-dare-16-december-11th-13th-weekend/"> próximo Ludum Dare</a> ! espera otimas novidades ! assim que tiver um release para download vai estar em <a href="http://jaga.athanazio.com">jaga.athanazio.com</a></p>
<p>abs</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/12/10/ano-de-jogos-e-a-vinda-do-jaga/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>android game &#8211; imagem e som</title>
		<link>http://www.athanazio.com/2009/11/21/android-game-imagem-e-som/</link>
		<comments>http://www.athanazio.com/2009/11/21/android-game-imagem-e-som/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 20:17:03 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[.ogg]]></category>
		<category><![CDATA[.png]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[effect]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[soundtrack]]></category>
		<category><![CDATA[sprite]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2315</guid>
		<description><![CDATA[Opa ! apos algumas idas e vindas no codigo, as coisas começam a se arrumar hehehehe, nesta versão já esta resolvida a exibição de imagem a partir do nome da imagem, e execução de som no formato ogg, tanto no loop como um som a partir de um evento do usuário. Apesar da recomendação do [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><a href="http://www.athanazio.com/wp-content/uploads/2009/11/android-show-image.png"><img src="http://www.athanazio.com/wp-content/uploads/2009/11/android-show-image-450x300.png" alt="android show image" title="android show image" width="450" height="300" class="alignnone size-medium wp-image-2316" /></a><br />
Opa ! apos algumas idas e vindas no codigo, as coisas começam a se arrumar hehehehe, nesta versão já esta resolvida a exibição de imagem a partir do nome da imagem, e execução de som no formato ogg, tanto no loop como um som a partir de um evento do usuário.</p>
<p>Apesar da recomendação do SDK seja de acessar os arquivos de midia através do resource ID criado na classe R, eu estou construindo as classes usando o nome do resource para poder expandir a programação do jogo para uma lingaguem de script, e usar o java como uma camada de abstração do jogo.</p>
<p>Vamos ao codigo e alguns comentarios sobre cada um :</p>
<p><strong>GameActivity </strong>- ganhou uma nova chamada para determinar que volume o jogo vai usar, setVolumeControlStream(AudioManager.STREAM_MUSIC) assim o jogo fica com o mesmo volume que estiver acertado para a musica, alem disto o metodo onDestroy() chama o novo metodo release() da view que vai se encarregar de liberar recursos e em especial mandar os audios se calarem <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.android.showimage;

import android.app.Activity;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.Window;

public class GameActivity extends Activity {
	private GameView view;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setVolumeControlStream(AudioManager.STREAM_MUSIC);

		view = new GameView(this, getResources());
		setContentView(view);
	}

	protected void onDestroy() {
		super.onDestroy();
		view.release();
	}

}
</pre>
<p><strong>GameView</strong> &#8211; usa as classes Sprite e Audio para exibir imagens e tocar audio, poucas mudanças comparando com a versão anterior.</p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.android.showimage;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;

public class GameView extends View implements Runnable {

	private static final String TAG = &quot;GAME VIEW&quot;;

	private static final int INTERVAL = 10;
	private Paint cPaint;

	private boolean running = true;

	FPSCounter fps;

	private Sprite background;
	private Sprite cloud;

	private Audio soundtrack;
	private Audio touch;

	public GameView(Context context, Resources resources) {
		super(context);

		String packageName = getClass().getPackage().getName();

		background = new Sprite(resources, packageName, &quot;background&quot;);
		cloud = new Sprite(resources, packageName, &quot;cloud&quot;);
		cloud.setCenterAtMiddle();

		soundtrack = new Audio(resources, packageName, &quot;soundtrack&quot;);
		touch = new Audio(resources, packageName, &quot;cowbell&quot;);

		soundtrack.setLooping(true);
		soundtrack.play();

		cPaint = new Paint();
		setFocusable(true);
		setClickable(true);
		setLongClickable(true);

		fps = new FPSCounter();

		// Set the background
		this.setBackgroundColor(Color.WHITE);
		Log.i(TAG, &quot;game view created&quot;);

		Thread monitorThread = new Thread(this);
		monitorThread.setPriority(Thread.MIN_PRIORITY);
		monitorThread.start();
	}

	public void draw(Canvas canvas) {
		super.draw(canvas);

		background.draw(canvas);
		cloud.draw(canvas);

		cPaint.setColor(Color.WHITE);
		canvas.drawText(fps.getFPS(), 20, 20, cPaint);
	}

	public boolean onKeyUp(int keyCode, KeyEvent event) {
		return super.onKeyUp(keyCode, event);
	}

	public boolean onKeyDown(int keyCode, KeyEvent event) {
		boolean handled = false;
		Log.i(TAG, &quot;key down&quot;);
		float x = cloud.getX();
		float y = cloud.getY();

		if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
			y = y - 5;
			handled = true;
		} else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
			y = y + 5;
			handled = true;
		} else if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
			x = x - 5;
			handled = true;
		} else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
			x = x + 5;
			handled = true;
		}

		cloud.move(x, y);
		return handled;
	}

	public boolean onTouchEvent(MotionEvent event) {
		cloud.setX(event.getRawX());
		cloud.setY(event.getRawY());
		Log.i(TAG, &quot;on touch&quot;);

		touch.play();
		return super.onTouchEvent(event);
	}

	public void run() {
		while (running) {
			try {
				Thread.sleep(INTERVAL);
			} catch (InterruptedException e) {
				Log.e(TAG, &quot;main loop finished&quot;);
			}
			update();
			postInvalidate();
		}
	}

	private void update() {
		fps.update();

	}

	public void release() {
		running = false;
		soundtrack.release();
		touch.release();
	}

}
</pre>
<p><strong>Sprite</strong> &#8211; esta eh responsavel por exibir imagens na tela, uma atenção especial deve ser dada ao recurso de determinar o centro da imagem, isto eh muito util para responder eventos de mouse, e por exemplo posicionar a imagem centralizada onde o usuário clicou, o método setCenterAtMiddle() calcula a posição para desenhar baseado na largura e altura da imagem. e por default o centro da imagem eh no 0,0.</p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.android.showimage;

import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.Log;

public class Sprite {

	private static final String TAG = &quot;GAME SPRITE&quot;;
	private Bitmap bitmap;
	private float x;
	private float y;
	private float centerX;
	private float centerY;
	private float drawX;
	private float drawY;
	private Paint paint;

	public Sprite(Resources resources, String packageName, String name) {
		String logFileName = packageName + &quot; &quot; + name;
		Log.i(TAG, &quot;loading image : &quot; + logFileName);

		int id = resources.getIdentifier(name, &quot;drawable&quot;, packageName);
		bitmap = BitmapFactory.decodeResource(resources, id);
		centerX = 0;
		centerY = 0;

		setX(0);
		setY(0);

		this.paint = new Paint();
	}

	public void draw(Canvas canvas) {
		canvas.drawBitmap(bitmap, drawX, drawY, paint);
	}

	public void move(float x, float y) {
		setX(this.x + x);
		setY(this.y + y);
	}

	public void setCenterAtMiddle(){
		centerX = bitmap.getWidth() / 2F;
		centerY = bitmap.getHeight() / 2F;
	}

	public float getX() {
		return x;
	}

	public void setX(float x) {
		this.x = x;
		drawX = this.x - centerX;
	}

	public float getY() {
		return y;
	}

	public void setY(float y) {
		this.y = y;
		drawY = this.y - centerY;
	}

}
</pre>
<p><strong>Audio</strong> &#8211; esta classe esconde a criação de um MediaPlayer para cada som que se deseja tocar, imagino que o melhor cenário seria ter uma classe para som em loop que usaria um MediaPlayer, e outra classe para efeitos sonoros que tocaria no maximo N efeitos ao mesmo tempo, mantendo menos objetos MediaPlayer na memória.</p>
<p>Mas a implementação atual mantém um MediaPlayer para cada som, observar que o resource ID é recuperado pelo nome do arquivo usando o metodo resources.getIdentifier(name, &#8220;raw&#8221;, packageName) e a partir do resource ID podemos recuperar o AssetFileDescriptor com a chamada resources.openRawResourceFd(id), of file descriptor é usado para inicializar o MediaPlayer com os detalhes necessários a execução do som.</p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.android.showimage;

import android.content.res.AssetFileDescriptor;
import android.content.res.Resources;
import android.media.MediaPlayer;
import android.util.Log;

/**
 * Audio resources abstraction
 *
 * @author athanazio
 * @see &quot;http://developer.android.com/intl/fr/guide/topics/media/index.html&quot;
 * @see &quot;http://developer.android.com/intl/fr/reference/android/media/MediaPlayer.html#Valid_and_Invalid_States&quot;
 */
public class Audio {

	private static final String TAG = &quot;GAME AUDIO&quot;;
	private MediaPlayer player;
	private boolean ready;
	private int id;
	private AssetFileDescriptor afd;

	/**
	 *
	 * @param resources
	 * @param context
	 * @param packageName
	 * @param name
	 *
	 */
	public Audio(Resources resources, String packageName, String name) {
		String logFileName = packageName + &quot; &quot; + name;
		Log.i(TAG, &quot;loading audio : &quot; + logFileName);

		ready = false;
		player = new MediaPlayer();

		try {
			this.id = resources.getIdentifier(name, &quot;raw&quot;, packageName);
			this.afd = resources.openRawResourceFd(id);

			Log.i(TAG, &quot;loading audio : &quot; + logFileName + &quot; id:&quot; + id);

			player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
			player.setLooping(false);
			player.prepare();

			// reset the player after completion
			player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
				public void onCompletion(MediaPlayer mp) {
					try {
						player.reset();
						player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
						player.prepare();
					} catch (Exception e) {
						Log.e(TAG, &quot;error resetting the media player&quot;);
						e.printStackTrace();
					}
				}
			});

			ready = true;

		} catch (Exception e) {
			Log.e(TAG, &quot;ERROR loading audio : &quot; + logFileName);
			e.printStackTrace();
		}
	}

	public void play() {
		if (ready) {
			player.start();
		} else {
			Log.i(TAG, &quot;the player is not ready.&quot;);
		}
	}

	public void setLooping(boolean b) {
		player.setLooping(b);
	}

	public void release() {
		player.stop();
		player.release();
	}

}
</pre>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/11/21/android-game-imagem-e-som/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>android &#8211; mover bolinha</title>
		<link>http://www.athanazio.com/2009/11/21/android-mover-bolinha/</link>
		<comments>http://www.athanazio.com/2009/11/21/android-mover-bolinha/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 14:14:00 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[90 fps]]></category>
		<category><![CDATA[direction]]></category>
		<category><![CDATA[fps]]></category>
		<category><![CDATA[hello world]]></category>
		<category><![CDATA[main loop]]></category>
		<category><![CDATA[touch screen]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2310</guid>
		<description><![CDATA[Na minha opinão o hello world para desenvolver jogos eh mover um desenho primitivo na tela junto com a informação de FPS (frames por segundo) até porque logo logo perguntamos : tah rodando a quantos FPS ? assim sendo já posso dizer que fiz o meu hello world para o android. Alguns links que ajudaram [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><a href="http://www.athanazio.com/wp-content/uploads/2009/11/android-move-ball.png"><img class="alignnone size-medium wp-image-2311" title="android move ball" src="http://www.athanazio.com/wp-content/uploads/2009/11/android-move-ball-450x300.png" alt="android move ball" width="450" height="300" /></a></p>
<p>Na minha opinão o hello world para desenvolver jogos eh mover um desenho primitivo na tela junto com a informação de FPS (frames por segundo) até porque logo logo perguntamos : tah rodando a quantos FPS ? <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  assim sendo já posso dizer que fiz o meu hello world para o android.</p>
<p>Alguns links que ajudaram bastante foram estes :</p>
<p>Uma apresentação da google sobre o desenvolvimento para de jogos para o Android<br />
<a href="http://www.scribd.com/doc/16917369/Writing-Real-Time-Games-for-Android">Writing-Real-Time-Games-for-Android</a></p>
<p>Os exemplos de cógigo citados na apresentação<br />
<a href="http://code.google.com/p/apps-for-android/source/browse/trunk/CLiCkin2DaBeaT/src/com/google/clickin2dabeat/C2B.java">C2B </a>2 <a href="http://code.google.com/p/apps-for-android/source/browse/trunk/CLiCkin2DaBeaT/src/com/google/clickin2dabeat/GameView.java">GameView</a></p>
<p>Com certeza este exemplo que escrevi eh extremamente simples, mas exemplifica alguns elementos básicos :</p>
<ul>
<li>main loop</li>
<li>chamada de update</li>
<li>atualização da area de vizualização</li>
<li>input do usuário</li>
</ul>
<p>O ambiente que tenho eh o Eclipse com o plugin para desenvolvimento do android instalado, para os testes eu prefiro usar o telefone porque o emulador demora muito para inicializar <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  e este exemplo tem basicamento 3 classes :</p>
<p><strong>GameActivity</strong> &#8211; que eh a entrada da aplicação, nela eu solicito o uso fullscreen para o jogo, e determino que a visualização será realizada por uma instancia da classe GameView.</p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.android.moveball2;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class GameActivity extends Activity {
	private GameView view;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);

		view = new GameView(this);
		setContentView(view);
	}

	protected void onPause() {
		super.onPause();
		view.pause();
	}
}
</pre>
<p><strong>GameView</strong> &#8211; nesta classe reside o loop principal do jogo que é iniciado no final do construtor, note que na verdade eh criado um Thread com baixa prioridade, que passará a realizar as atividades de atualização e principalmente executar o método postupdate() notficando a interface que pode ser exibida.</p>
<p>além do loop principal o input direcional é tratado pelo método onKeyDown() e o tocar na tela pelo método onTouchEvent()</p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.android.moveball2;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;

public class GameView extends View implements Runnable {

	private static final String TAG = &quot;GAMEVIEW&quot;;

	private static final int INTERVAL = 10;
	private Paint cPaint;

	private float x = 50;

	private float y = 50;

	private boolean running = true;

	FPSCounter fps;

	public GameView(Context context) {
		super(context);
		cPaint = new Paint();
		setFocusable(true);
		setClickable(true);
		setLongClickable(true);

		fps = new FPSCounter();

		// Set the background
		this.setBackgroundColor(Color.WHITE);
		Log.i(TAG, &quot;game view created&quot;);

		Thread monitorThread = new Thread(this);
		monitorThread.setPriority(Thread.MIN_PRIORITY);
		monitorThread.start();
	}

	public boolean onKeyUp(int keyCode, KeyEvent event) {
		return super.onKeyUp(keyCode, event);
	}

	public boolean onKeyDown(int keyCode, KeyEvent event) {
		boolean handled = false;
		Log.i(TAG, &quot;key down&quot;);

		if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
			y = y - 5;
			handled = true;
		} else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
			y = y + 5;
			handled = true;
		} else if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
			x = x - 5;
			handled = true;
		} else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
			x = x + 5;
			handled = true;
		}
		return handled;
	}

	public boolean onTouchEvent(MotionEvent event) {
		x = event.getRawX();
		y = event.getRawY();
		Log.i(TAG, &quot;on touch&quot;);

		return super.onTouchEvent(event);
	}

	public void draw(Canvas canvas) {
		super.draw(canvas);

		cPaint.setColor(Color.BLUE);
		canvas.drawCircle(x, y, 15, cPaint);

		cPaint.setColor(Color.BLACK);
		canvas.drawText(fps.getFPS(), 20, 20, cPaint);

	}

	public void run() {
		while (running) {
			try {
				Thread.sleep(INTERVAL);
			} catch (InterruptedException e) {
				Log.e(TAG, &quot;main loop finished&quot;);
			}
			update();
			postInvalidate();
		}
	}

	private void update() {
		fps.update();

	}

	public void pause() {
		running = false;
	}

}
</pre>
<p><strong>FPSCounter</strong> &#8211; nesta classe é feita uma contagem de frames que o jogo consegue exibir por segundo, vi algumas implementações interessantes disto, mas acabei fazendo o mais simples e mais econômico, contar frames e ver se jah passou o tempo <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  note que algumas variáveis eu criei fora dos métodos para evitar que o Garbage collector tivesse que trabalhar, querendo ou não isto economiza alguns milisegundos <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.android.moveball2;

import java.text.DecimalFormat;

import android.os.SystemClock;

public class FPSCounter {

	public static final DecimalFormat format = new DecimalFormat(&quot;###0.00&quot;);

	private float frames;
	private String fps;
	private long start;
	private long current;

	public FPSCounter() {
		start = SystemClock.uptimeMillis();
		frames = 0;
		fps = &quot;???&quot;;
	}

	public void update() {
		frames ++;
		current = SystemClock.uptimeMillis();
		if( current - start &gt; 1000 ){
			fps = format.format(frames);
			frames = 0;
			start = current;
		}
	}

	public String getFPS() {
		return fps;
	}
}
</pre>
<p>a propósito o fps esta em torno de 90 e poucos, vamos ver o que acontece quando tiver de desenhar uma imagem no fundo e varias outras na tela hehehehe.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/11/21/android-mover-bolinha/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>game framework para android</title>
		<link>http://www.athanazio.com/2009/11/13/game-framework-para-android/</link>
		<comments>http://www.athanazio.com/2009/11/13/game-framework-para-android/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 17:56:51 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[trecos]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2270</guid>
		<description><![CDATA[apos uma pequena pesquisa, esbarrei com alguns frameworks para jogos para o android http://code.google.com/p/juicygames/ http://code.google.com/p/cloak/ http://code.google.com/p/rokon/ http://code.google.com/p/mages/ estou explorando para servir de ideias para o framework de jogos que vou criar para o android !!! se preparem]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>apos uma pequena pesquisa, esbarrei com alguns frameworks para jogos para o android</p>
<ul>
<li><a href="http://code.google.com/p/juicygames/">http://code.google.com/p/juicygames/</a></li>
<li><a href="http://code.google.com/p/cloak/">http://code.google.com/p/cloak/</a></li>
<li><a href="http://code.google.com/p/rokon/">http://code.google.com/p/rokon/</a></li>
<li><a href="http://code.google.com/p/mages/">http://code.google.com/p/mages/</a></li>
</ul>
<p>estou explorando para servir de ideias para o framework de jogos que vou criar para o android !!! se preparem <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/11/13/game-framework-para-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sbgames 2009, fast track, Javafx evaluation</title>
		<link>http://www.athanazio.com/2009/10/11/sbgames-2009-fast-track-javafx-evaluation/</link>
		<comments>http://www.athanazio.com/2009/10/11/sbgames-2009-fast-track-javafx-evaluation/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 23:47:45 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[60 seconds]]></category>
		<category><![CDATA[evaluation]]></category>
		<category><![CDATA[fast track]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[sbgames 2009]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2231</guid>
		<description><![CDATA[sbgames 2009 &#8211; fast track &#8211; JavaFX evaluation from Hamilton Lima on Vimeo.]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7015826&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=7015826&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object>
<p><a href="http://vimeo.com/7015826">sbgames 2009 &#8211; fast track &#8211; JavaFX evaluation</a> from <a href="http://vimeo.com/athanazio">Hamilton Lima</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/10/11/sbgames-2009-fast-track-javafx-evaluation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>drop then all &#8211; versao alfa2</title>
		<link>http://www.athanazio.com/2009/10/03/drop-then-all-versao-alfa2/</link>
		<comments>http://www.athanazio.com/2009/10/03/drop-then-all-versao-alfa2/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 04:37:35 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[alfa 2]]></category>
		<category><![CDATA[drop then all]]></category>
		<category><![CDATA[jogos]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2213</guid>
		<description><![CDATA[nova versao do jogo drop then all algumas novidades : - mais um nivel - mudanca da camera com o mouse - melhorias visuais - mudanca no som das caixinhas - adicionado help na primeira pagina clique aqui para jogar !]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><a href='http://www.athanazio.com/wp-content/uploads/2009/10/dropthenall_alpha2.html'><br />
<img src="http://www.athanazio.com/wp-content/uploads/2009/10/title-450x113.png" alt="title" title="title" width="450" height="113" class="alignnone size-medium wp-image-2216" /></a></p>
<p>nova versao do jogo drop then all<br />
algumas novidades :<br />
- mais um nivel<br />
- mudanca da camera com o mouse<br />
- melhorias visuais<br />
- mudanca no som das caixinhas<br />
- adicionado help na primeira pagina</p>
<p><a href='http://www.athanazio.com/wp-content/uploads/2009/10/dropthenall_alpha2.html'>clique aqui para jogar !</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/10/03/drop-then-all-versao-alfa2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>unity3d passo 6 &#8211; tudo junto num jogo</title>
		<link>http://www.athanazio.com/2009/09/30/unity3d-passo-6-tudo-junto-num-jogo/</link>
		<comments>http://www.athanazio.com/2009/09/30/unity3d-passo-6-tudo-junto-num-jogo/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 02:23:02 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[unity3d]]></category>
		<category><![CDATA[alfa]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[drop then all]]></category>
		<category><![CDATA[level restart]]></category>
		<category><![CDATA[scene change]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2193</guid>
		<description><![CDATA[Esta eh uma versao mais arrumada destas minhas investigacoes do Unity3D. Alguns comentarios sobre o codigo abaixo que eh novinho em folha. Este codigo esta associado ao personagem que esta em movimento, ou seja se o danado colidir com o plano chamado &#8220;bottom&#8221; que esta abaixo das plataformas, ou com algum dos inimigos a variavel [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><a href="http://www.athanazio.com/wp-content/uploads/2009/09/dropthenall_alpha1.html"><img src="http://www.athanazio.com/wp-content/uploads/2009/09/drop-than-all-alpha1.jpg" alt="drop than all alpha1" title="drop than all alpha1" width="450" height="338" class="alignnone size-full wp-image-2194" /></a><br />
Esta eh uma <a href="http://www.athanazio.com/wp-content/uploads/2009/09/dropthenall_alpha1.html">versao mais arrumada</a> destas minhas investigacoes do Unity3D.</p>
<p>Alguns comentarios sobre o codigo abaixo que eh novinho em folha.</p>
<pre class="brush: jscript; title: ; notranslate">
static var dead:int = 0;

function Awake () {
	dead = 0;
}

function OnCollisionEnter(collision : Collision) {

	if( collision.collider.name == &quot;bottom&quot; || collision.collider.tag == &quot;enemy&quot;){
		dead = 1;
		var message = GameObject.Find(&quot;end of level&quot;);
		var message2 = GameObject.Find(&quot;end of level2&quot;);
		message.guiText.text = &quot;You failed.&quot;;
		message2.guiText.text = &quot;Click to restart&quot;;
		audio.Play();
	}
}

function Update () {

	if( dead == 1 ){
		if (Input.GetButtonDown(&quot;Fire1&quot;)) {
			Application.LoadLevel (Application.loadedLevel);
		}
	}

}
</pre>
<p>Este codigo esta associado ao personagem que esta em movimento, ou seja se o danado colidir com o plano chamado &#8220;bottom&#8221; que esta abaixo das plataformas, ou com algum dos inimigos a variavel dead eh setada para 1, algumas mensagens sao exibidas e o som correspondente toca.</p>
<p>Quando estiver neste estado de &#8220;morto&#8221; (dead==1) o update deste mesmo script vai verificar se o click foi pressionado para ai entao recarregar a cena atual, detalhe que a funcao Awake garante que nao reiniciamos a cena com o personagem morto <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  porque a variavel eh static e portanto o reload da cena nao apaga seu valor.</p>
<p>usei esta variavel em outros pontos do de outros scripts, como por exemplo para impedir que o tiro fosse disparado ou o personagem movimentado se estivesse no estado de morto, veja como foi usado</p>
<pre class="brush: jscript; title: ; notranslate">
var speed:int = 10.0;

function FireRocket () {
	// dont fire if the char is dead
	if (restart_if_char_die.dead == 1) return;
	if( count_enemies.end_level == 1) return;

	var bullet = GameObject.CreatePrimitive(PrimitiveType.Sphere);
	bullet.tag = &quot;bullet&quot;;
	bullet.AddComponent(Rigidbody);

	bullet.transform.position = transform.position;
	bullet.transform.rotation= transform.rotation;
	bullet.transform.localScale= transform.localScale;

    bullet.rigidbody.velocity = transform.forward * speed * -1;
	bullet.rigidbody.mass = 5;
	audio.Play();
}

function Update () {
    if (Input.GetButtonDown(&quot;Fire1&quot;)) {
        FireRocket();
    }
}
</pre>
<p>bom eh isto ae divirta-se jogando as caixinhas do alto, pena que elas nao gritam <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/09/30/unity3d-passo-6-tudo-junto-num-jogo/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>unity3d passo 5 &#8211; quero te falar &#8230;</title>
		<link>http://www.athanazio.com/2009/09/30/unity3d-passo-5-quero-te-falar/</link>
		<comments>http://www.athanazio.com/2009/09/30/unity3d-passo-5-quero-te-falar/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 02:01:09 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[unity3d]]></category>
		<category><![CDATA[2d]]></category>
		<category><![CDATA[guitext]]></category>
		<category><![CDATA[texto]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2185</guid>
		<description><![CDATA[Alem das coisas em 3D que giram explodem e coisa e tal precisamos de textos 2D pendurados em alguns lugares da tela, para isto adicionamos um GUIText, e o legal do GUIText eh o seu posicionamento na tela, que eh bem simples usando somente as coordenadas X e Y (2D pelamordeDEus) no intervalo de 0 [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Alem das coisas em 3D que giram explodem e coisa e tal precisamos de textos 2D pendurados em alguns lugares da tela, para isto adicionamos um GUIText, e o legal do GUIText eh o seu posicionamento na tela, que eh bem simples usando somente as coordenadas X e Y (2D pelamordeDEus) no intervalo de 0 a 1.</p>
<p>canto superior esquerdo : X=0 e Y=1<br />
canto superior direito : X=0.9 e Y=1<br />
canto inferior esquerdo : X=0 e Y=0.1<br />
canto inferior direito : X=0.9 e Y=0.1</p>
<p>bons texto pra vc <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/09/30/unity3d-passo-5-quero-te-falar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

