<?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>CubaGames &#187; Ferramentas</title>
	<atom:link href="http://www.cubagames.com.br/category/ferramentas/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cubagames.com.br</link>
	<description>Notícias sobre o mundo dos games, artigos sobre gamedev, reflexões, tutoriais, games e jogos online</description>
	<lastBuildDate>Wed, 01 Feb 2012 16:40:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Criando Um Jogo em XNA &#8211; Parte 4 &#8211; Scenes</title>
		<link>http://www.cubagames.com.br/criando-um-jogo-em-xna-parte-4-scenes/</link>
		<comments>http://www.cubagames.com.br/criando-um-jogo-em-xna-parte-4-scenes/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 16:10:43 +0000</pubDate>
		<dc:creator>Fernando Lorenzon</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Ferramentas]]></category>
		<category><![CDATA[XNA]]></category>
		<category><![CDATA[XNA Lander]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/?p=1787</guid>
		<description><![CDATA[<p style="text-align: justify;">Nesta parte 4, vamos falar de Scenes.</p>
<p style="text-align: justify;">Na implementação de games complexos, algo que percebi na literatura do gênero é a adoção de scenes. Mas o que é uma scene?</p>
<p style="text-align: justify;">Posso dizer que é um bloco de código independente que armazena dados e realiza um conjunto de funções pertinentes apenas àquela parte do jogo atual.</p>
<p style="text-align: justify;">Mas para quê isso?</p>
<p style="text-align: justify;">Com o uso de scenes, você pode separar cada pedaço do jogo em blocos, sendo que apenas um bloco é carregado e executado por vez.</p>
<p style="text-align: justify;">Imagina ter que escrever toda a lógica de update de um game inteiro dentro do  método Update()? Ou  mesmo carregar todas as texturas do jogo inteiro no  LoadContent()? Para um <strong>Asteroids</strong>, tudo bem. Mas imagina um de tamanho razoável como Braid sendo inteiramente escrito dentro de um único arquivo (Game1)?</p>
<p style="text-align: justify;">Certamente ficaria extenso e confuso demais.</p>
<p style="text-align: justify;">É aí que o conceito de Scene é utilizado, pois assim consegue-se separar o código e agrupar toda a lógica de cada tela/fase/cena do jogo em um único lugar, de modo que fique independente do resto e que sejam intercomunicáveis.</p>
<p style="text-align: justify;">Por exemplo, a tela de menu tem toda uma lógica e grupo de gráficos próprios, que o resto do jogo não aproveitará. Aqui podemos agrupar tudo numa Scene. E quando o fluxo principal do jogo vai rodar pela primeira vez, a Scene é invocada e ela passa a comandar o jogo. Já no menu, ao selecionarmos o modo Arcade, a cena de menu chama a cena de jogo (ou da fase 1, dependendo do nível de agrupamento), e o menu "sai de cena".</p>
<p style="text-align: justify;">É um conceito parecido com o teatro ou filme. Cada cena possui um grupo de falas, atuações, objetos, decoração figurantes e atc, que estão independentes do resto de tal maneira que não importa a ordem em que as cenas sejam filmadas. Depois basta rodar cada uma em ordem.</p>
<p style="text-align: justify;">Dentro do desenvolvimento de games, uma scene geralmente é uma classe. Algumas engines já possuem uma implementação padrão para isso. Como o XNA é cru, temos que implementar nosso próprio conceito de scene.</p>
<p style="text-align: justify;">Uma idéia que vi na literatura é criar uma classe que herda de <strong>GameComponent</strong>, pois esta classe possui todos aqueles métodos da classe <strong>Game</strong>, como <em>Update()</em>, <em>LoadContent()</em> e <em>Draw()</em>.</p>
<p style="text-align: justify;">A idéia com isso é que cada scene teria o poder de carregar sprites e renderizá-los sem a intervenção de <strong>Game1</strong>.</p>
<p style="text-align: justify;">Mas quando eu fui tentar implementar isso, não consegui fazer com que o framework utilizasse os métodos corretamente. Por algum motivo, o comando Content.Load&lt;&gt;() usado para carregar textura e áudio não era acessível nestas classes extendidas. Ou seja, ainda não consigo carregar conteúdo fora da classe <strong>Game1</strong>.</p>
<p style="text-align: justify;">Então eu decidi criar minha própria implementação de Scene, que considero ser menos poderosa, mas muito mais simples e fácil de onganizar, pois não depende de usar métodos obscuros do framework e de certa forma faz com que todo o processamento fique dentro de <strong>Game1</strong>, mas a implementação, fora.</p>
<p style="text-align: justify;">Veja abaixo como funciona atualmente o fluxo das scenes no XNA Lander:</p>
<p style="text-align: justify;"><!--more--></p>
<p style="text-align: center;"><a href="http://www.cubagames.com.br/wp-content/uploads/2010/06/scenes2.png"><img class="aligncenter size-full wp-image-1845" title="scenes" src="http://www.cubagames.com.br/wp-content/uploads/2010/06/scenes2.png" alt="scenes" width="464" height="279" /></a> <em>Clique para ampliar</em></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Bem, a idéia geral é que toda a lógica do  jogo seja de alguma forma executada a partir do <strong>Game1</strong>, e assim tudo vai  funcionar bem.</p>
<p style="text-align: justify;">O que eu fiz foi criar uma classe <strong>Scene</strong> contendo o seguinte:</p>
<p style="text-align: justify;">- lista de Sprites;</p>
<p style="text-align: justify;">- lista de Fontes;</p>
<p style="text-align: justify;">- método LoadContent();</p>
<p style="text-align: justify;">- método Update().</p>
<p style="text-align: justify;">Para cada scene usada no jogo, eu crio uma nova classe e herdo de <strong>Scene</strong>. Aí eu declaro todos os sprites que serão utilizados na classe e adiciono na lista. Faço o mesmo com as fontes. Mas só declaro, e não as carrego, pois fora de Game1 eu não consegui. No método LoadContent() eu carrego ou inicializo qualquer outra coisa necessária para aquela scene funcionar (por exemplo, recarregar o combustível nave para uma nova fase caso seja a Scene de jogo).</p>
<p style="text-align: justify;">No método Update() eu escrevo toda a lógica de fluxo de jogo para a Scene. Caso seja a Scene de menu, o Update() ficará lendo as teclas para mover o cursor pelo menu, além de verificar se o jogador pressionou Enter para selecionar a opção desejada.</p>
<p style="text-align: justify;">Com isso, eu carrego a Scene desejada num objeto de visibilidade global (usando <span style="color: #3366ff;">public static</span>) chamada de <strong>CurrentScene</strong>, de modo que <strong>Game1</strong> possa acessá-la. Aí, no método <strong>Game1.</strong>LoadContent(), eu chamo o <strong>CurrentScene</strong>.LoadContent(), e depois eu percorro a lista de sprites e carrego as texturas. No método <strong>Game1.</strong>Update(), invoco o <strong>CurrentScene</strong>.Update(). E no método <strong>Game1.</strong>Draw(), eu percorro a lista de sprites da <strong>CurrentScene </strong>e renderizo em ordem uma a uma. Isso tudo sem o jogo saber qual scene está sendo usada no momento, pois independente de qual seja, ela estará no objeto <strong>CurrentScene</strong>. O <strong>Game1</strong> executa os mesmos passos para qualquer scene carregada. E isso é possível porque todas elas herdam de <strong>Scene</strong> e se comportam de maneira similar. Só seus conteúdos mudam.</p>
<p style="text-align: justify;">Com isso, toda a lógica e sprites/fontes ficam contidos em cada scene, mas seu carregamento e execução ainda ficam  atrelados a <strong>Game1</strong>.</p>
<p style="text-align: justify;">Após colocar isso em prática, basta codificar uma vez o <strong>Game1</strong> e todo o resto do game passa a ser codificado através das <strong>Scenes</strong>.</p>
<p>Veja o void Initialize() do <strong>Game1</strong>:</p>
<div class="igBar"><span id="lc-1"><a href="#" onclick="javascript:showPlainTxt('c-1'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">C:</span>
<div id="c-1">
<div class="c">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">protected override <span style="color: #993333;">void</span> Initialize<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; this.<span style="color: #202020;">IsFixedTimeStep</span> = <span style="color: #000000; font-weight: bold;">true</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; this.<span style="color: #202020;">graphics</span>.<span style="color: #202020;">PreferredBackBufferWidth</span> = <span style="color: #cc66cc;color:#800000;">800</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; this.<span style="color: #202020;">graphics</span>.<span style="color: #202020;">PreferredBackBufferHeight</span> = <span style="color: #cc66cc;color:#800000;">600</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; this.<span style="color: #202020;">spriteBatch</span> = new SpriteBatch<span style="color: #66cc66;">&#40;</span>this.<span style="color: #202020;">GraphicsDevice</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; FunctionsGame.<span style="color: #202020;">LoadGame</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; Globals.<span style="color: #202020;">CurrentScene</span> = new SceneTitle<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; base.<span style="color: #202020;">Initialize</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Este código acima só rodará uma vez durante a execução de todo o game. Nada impede que você chame depois o método, entretanto. Então eu aproveito para carregar a primeira scene do jogo, que é a SceneTitle(), da tela de título e menu principal.</p>
<p>Vamos para o LoadContent():</p>
<div class="igBar"><span id="lc-2"><a href="#" onclick="javascript:showPlainTxt('c-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">C:</span>
<div id="c-2">
<div class="c">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">protected override <span style="color: #993333;">void</span> LoadContent<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; Globals.<span style="color: #202020;">CurrentScene</span>.<span style="color: #202020;">LoadScene</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; foreach <span style="color: #66cc66;">&#40;</span>Classes.<span style="color: #202020;">Sprite</span> sprite in Globals.<span style="color: #202020;">CurrentScene</span>.<span style="color: #202020;">SpriteList</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; sprite.<span style="color: #202020;">Texture</span> = Content.<span style="color: #202020;">Load</span>&lt;Texture2D&gt;<span style="color: #66cc66;">&#40;</span>sprite.<span style="color: #202020;">TexturesPath</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; foreach <span style="color: #66cc66;">&#40;</span>Classes.<span style="color: #202020;">Font</span> font in Globals.<span style="color: #202020;">CurrentScene</span>.<span style="color: #202020;">FontList</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; font.<span style="color: #202020;">SpriteFont</span> = Content.<span style="color: #202020;">Load</span>&lt;SpriteFont&gt;<span style="color: #66cc66;">&#40;</span>font.<span style="color: #202020;">SpriteFontPath</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; Globals.<span style="color: #202020;">MustLoadContent</span> = <span style="color: #000000; font-weight: bold;">false</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Aqui no LoadContent()  eu chamo o CurrentScene.LoadScene(), que pode ter qualquer carregamento que não seja gráfico.</p>
<p>Para carregar os sprites eu percorro a lista de sprites que carrego na Scene. Como não sei quais são os sprites a serem carregados, basta jogar todos eles na lista. Assim eu percorro ela carregando um por um. Faço o mesmo com as fontes também.</p>
<p>Vejamos o void Update():</p>
<div class="igBar"><span id="lc-3"><a href="#" onclick="javascript:showPlainTxt('c-3'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">C:</span>
<div id="c-3">
<div class="c">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">protected override <span style="color: #993333;">void</span> Update<span style="color: #66cc66;">&#40;</span>GameTime gameTime<span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; Globals.<span style="color: #202020;">CurrentScene</span>.<span style="color: #202020;">Update</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; base.<span style="color: #202020;">Update</span><span style="color: #66cc66;">&#40;</span>gameTime<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>Globals.<span style="color: #202020;">MustLoadContent</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; this.<span style="color: #202020;">LoadContent</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #b1b100;">else</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; this.<span style="color: #202020;">Draw</span><span style="color: #66cc66;">&#40;</span>gameTime<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Veja que aqui eu chamo o Update() que está no scene. Outra coisa que faço é verificar se devo chamar novamente o Game1.LoadContent(). Mas quando isso acontece? Simples, devo chamar sempre um LoadContent() quando carrego uma nova Scene. Assim que carrego qualquer scene, mudo um boolean <span style="text-decoration: underline;">Globals.MustLoadContent</span> para true e o update volta novamente para o processo anterior, de carregamento dos sprites, para carregar os novos sprites da scene recém-carregada.</p>
<p>No Draw(), continua tudo tranquilo:</p>
<div class="igBar"><span id="lc-4"><a href="#" onclick="javascript:showPlainTxt('c-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">C:</span>
<div id="c-4">
<div class="c">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">protected override <span style="color: #993333;">void</span> Draw<span style="color: #66cc66;">&#40;</span>GameTime gameTime<span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; this.<span style="color: #202020;">GraphicsDevice</span>.<span style="color: #202020;">Clear</span><span style="color: #66cc66;">&#40;</span>Globals.<span style="color: #202020;">CurrentScene</span>.<span style="color: #202020;">BackgroundColor</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; spriteBatch.<span style="color: #202020;">Begin</span><span style="color: #66cc66;">&#40;</span>SpriteBlendMode.<span style="color: #202020;">AlphaBlend</span>, SpriteSortMode.<span style="color: #202020;">Immediate</span>, SaveStateMode.<span style="color: #202020;">SaveState</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; foreach <span style="color: #66cc66;">&#40;</span>Sprite sprite in Globals.<span style="color: #202020;">CurrentScene</span>.<span style="color: #202020;">SpriteList</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>sprite.<span style="color: #202020;">Visible</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; spriteBatch.<span style="color: #202020;">Draw</span><span style="color: #66cc66;">&#40;</span>sprite.<span style="color: #202020;">TextureCurrent</span>, sprite.<span style="color: #202020;">Rectangle</span>, sprite.<span style="color: #202020;">Color</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; spriteBatch.<span style="color: #202020;">End</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; spriteBatch.<span style="color: #202020;">Begin</span><span style="color: #66cc66;">&#40;</span>SpriteBlendMode.<span style="color: #202020;">AlphaBlend</span>, SpriteSortMode.<span style="color: #202020;">FrontToBack</span>, SaveStateMode.<span style="color: #202020;">SaveState</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; foreach <span style="color: #66cc66;">&#40;</span>Font font in Globals.<span style="color: #202020;">CurrentScene</span>.<span style="color: #202020;">FontList</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>font.<span style="color: #202020;">Visible</span><span style="color: #66cc66;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; spriteBatch.<span style="color: #202020;">DrawString</span><span style="color: #66cc66;">&#40;</span>font.<span style="color: #202020;">SpriteFont</span>, font.<span style="color: #202020;">Text</span>, font.<span style="color: #202020;">Position</span>, font.<span style="color: #202020;">Color</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; spriteBatch.<span style="color: #202020;">End</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; base.<span style="color: #202020;">Draw</span><span style="color: #66cc66;">&#40;</span>gameTime<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Veja que eu não renderizo o sprite ou font quando o <span style="text-decoration: underline;">Visible</span> está como <span style="color: #0000ff;">false</span>. O resto é só renderizar cada sprite na lista da Scene carregada.</p>
<p>Aqui eu mostrei mais como o jogo invoca e usa as scenes, mas não expliquei a implementação de cada Scene internamente. No próximo post eu falo mais sobre isso, inclusive com exemplos de código.</p>
<p style="text-align: justify;"><a href="http://www.cubagames.com.br/criando-um-jogo-em-xna-parte-3-codificacao-basica/">Parte 3 - Codificação Básica</a><br />
<a href="http://www.cubagames.com.br/criando-um-jogo-em-xna-parte-5-mais-scenes/">Parte 5 - Mais Scenes</a></p>
]]></description>
		<wfw:commentRss>http://www.cubagames.com.br/criando-um-jogo-em-xna-parte-4-scenes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mario Paint Composer, coisa para profissional</title>
		<link>http://www.cubagames.com.br/mario-paint-composer-coisa-para-profissional/</link>
		<comments>http://www.cubagames.com.br/mario-paint-composer-coisa-para-profissional/#comments</comments>
		<pubDate>Tue, 20 May 2008 17:01:05 +0000</pubDate>
		<dc:creator>Romulo De Lazzari</dc:creator>
				<category><![CDATA[Ferramentas]]></category>
		<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/?p=447</guid>
		<description><![CDATA[<p>Não estou brincando! Em 1993 chegava ao Brasil, o Super Mario Paint, para o Super Nintendo que vinha junto com um mouse. Nele tinha vários minigames para brincar, entre eles, um jogo de mata moscas, o paint em si e um editor (rudimentar) de músicas. <a href="http://www.mariopaint.blogspot.com/">Existe até um blog</a> (tosco eu sei) de pinturas do editor.</p>
<p>Mas o que interessa ao post é o editor de músicas. Mesmo com toda limitação e simplicidade do editor, bastante gente brinca montando músicas de jogos e, apesar da simplicidade, o resultado é muito bom e fica muito divertido ouvir. Outro dia eu estava brincando com um amigo no msn com essas músicas, ligava o som, colocava o microfone na caixa e ele tinha que descobrir. Só acertou uma ou outra.</p>
<p>Existe até <a href="http://www.unfungames.com/mariopaint/">uma versão para windows do editor</a>. Caso vocês queiram tentar o desafio de montar alguma música no editor.</p>
<p>Terra theme - FF VI</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="src" value="http://www.youtube.com/v/-XD78u6Vmt4&amp;rel=1" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/-XD78u6Vmt4&amp;rel=1" wmode="transparent"></embed></object></p>
<p>Clique em continuar lendo para conferir mais músicas criadas (principalmente pelo usuário <a href="http://www.youtube.com/user/TomBobBlender">TomBobBlender</a>) no Mario Paint.</p>
<p><!--more--></p>
<p>Zelda</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="src" value="http://www.youtube.com/v/tYVoC_9UMpY&amp;rel=1" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/tYVoC_9UMpY&amp;rel=1" wmode="transparent"></embed></object></p>
<p>Sonic - GreenHill Zone</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="src" value="http://www.youtube.com/v/qQzHt3_2yE4&amp;rel=1" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/qQzHt3_2yE4&amp;rel=1" wmode="transparent"></embed></object></p>
<p>Tetris</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="src" value="http://www.youtube.com/v/qwyxaiIYv7Q&amp;rel=1" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/qwyxaiIYv7Q&amp;rel=1" wmode="transparent"></embed></object></p>
<p>Chrono Trigger - Robo's theme</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="src" value="http://www.youtube.com/v/SPnwmAdr8hE&amp;rel=1" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/SPnwmAdr8hE&amp;rel=1" wmode="transparent"></embed></object></p>
<p><em>ps: achei esse post nos "escrombos" dos rascunhos aqui da CubaGames. A fonte do Mario Composer foi <a href="http://hadouken.wordpress.com/2007/09/05/musica-pintada/">esse post do Alexei Barros do blog hadouken</a>.</em></p>
]]></description>
		<wfw:commentRss>http://www.cubagames.com.br/mario-paint-composer-coisa-para-profissional/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FlashDevelop: para quem quer programar em ActionScript de verdade</title>
		<link>http://www.cubagames.com.br/flashdevelop-para-quem-quer-programar-em-actionscript-de-verdade/</link>
		<comments>http://www.cubagames.com.br/flashdevelop-para-quem-quer-programar-em-actionscript-de-verdade/#comments</comments>
		<pubDate>Wed, 07 May 2008 02:53:53 +0000</pubDate>
		<dc:creator>Romulo De Lazzari</dc:creator>
				<category><![CDATA[Ferramentas]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/?p=610</guid>
		<description><![CDATA[<p>Vamos fazer um game em flash? Então abrimos os Flash CS3 e damos de cara com aquela <span style="text-decoration: line-through;">merd</span> maravilha de editor de actionscript!</p>
<p>Se você quer programar de verdade em actionscript, use o <a href="http://www.flashdevelop.org/">FlashDevelop</a>, simples, leve (3,5mb) e rápido para instalar. Você pode criar projetos dentro dele e abrir uma nova classe que já vem tudo prontinho e certinho para programar. Se você precisar importar algum pacote e esqueceu de dar o "maldito" import no topo do arquivo, não se preocupe, no momento que você instancia algum objeto de uma classe que ainda não foi importada, ele faz sozinho para você. Sem falar no maravilhoso <em>"auto-complete" </em>(o Ctrl + espaço) para terminar o que você tem preguiça de escrever ou que não lembra.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://farm3.static.flickr.com/2037/2472814614_1b252dd942.jpg" alt="Usando o FlashDevelop" width="455" height="364" /></p>
<p>Seja decente e fuja do F9 do Flash. <a href="http://www.flashdevelop.org/community/viewtopic.php?t=2893">Baixe o FlashDevelop 3 Beta 7 clicando aqui</a> ou na imagem abaixo.</p>
<p style="text-align: center;"><a title="Download FlashDevelop" href="http://www.flashdevelop.org/community/viewtopic.php?t=2893"><img class="aligncenter" style="border: 0pt none;" src="http://farm4.static.flickr.com/3140/2471991129_f1ee87c35e_o.jpg" alt="FlashDevelop" width="315" height="357" /></a></p>
]]></description>
		<wfw:commentRss>http://www.cubagames.com.br/flashdevelop-para-quem-quer-programar-em-actionscript-de-verdade/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>FFilmation, uma engine para jogos isométricos em flash</title>
		<link>http://www.cubagames.com.br/ffilmation-uma-engine-para-jogos-isometricos-em-flash/</link>
		<comments>http://www.cubagames.com.br/ffilmation-uma-engine-para-jogos-isometricos-em-flash/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 16:31:34 +0000</pubDate>
		<dc:creator>Romulo De Lazzari</dc:creator>
				<category><![CDATA[Ferramentas]]></category>
		<category><![CDATA[Flash - ActionScript]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/ffilmation-uma-engine-para-jogos-isometricos-em-flash/</guid>
		<description><![CDATA[<p style="text-align: center"><img src="http://www.cubagames.com.br/wp-content/uploads/2008/04/header.jpg" alt="FFilmation" /></p>
<p>Impressionante é a palavra para <a href="http://www.ffilmation.org/website/">esta engine</a>! <a href="http://www.ffilmation.org/website/demos/example-1/">A movimentação do personagem no exemplo</a> é muito boa, melhor ainda é a sombra que se cria em contraste com a luz. Lendo rapidamente os "como começar" a desenvolver algum jogo utilizando a <a href="http://www.ffilmation.org/website/">FFilmation</a> vi que realmente é fácil fazer qualquer coisa ali dentro. Os desenvolvedores pensaram também nos designers que não precisam mais se preocupar com a engine de renderização do jogo.</p>
<p><!--more--></p>
<p>Veja algumas das facilidades prometidas pelos desenvolvedores:</p>
<p>-  Inferface de programação entre a engine e o seu jogo (ou aplicação) simples e fácil de aprender;<br />
-  Uma mega performance de renderização;<br />
-  Os designers poderão <strong>"ver em tempo real"</strong> como ficará dentro do jogo o que estão criando;<br />
-  Capaz de criar cenas isométricas de diferentes complexidades;<br />
- Criar cenas através de arquivos xml padronizados, chamado de <em>"human readable xml"</em>;<br />
- Imagens podem estar em arquivos externos e podem ser carregados a qualquer momento;<br />
- Todos os componentes dos cenários são editados como se fossem 2D, <strong>a engine faz o trabalho de projetá-las de maneira isométrica </strong>(muito bom isso);<br />
- Iluminação dinâmica com sombras em tempo real;<br />
- Detecção de colisão integrada;</p>
<p style="text-align: center"><img src="http://www.cubagames.com.br/wp-content/uploads/2008/04/ffilmation.JPG" alt="Exemplo da engine" /><br />
<em>Exemplo do site oficial</em></p>
<p><a href="http://www.ffilmation.org/website/demos/example-1/">Veja os exemplos no site oficial</a> e fique de queixo caído como eu aqui. Em próximos artigos, vou testar essa engine para ver se ela é tudo isso mesmo! Quem sabe ela vem a ser muito útil para a CubaGames <img src='http://www.cubagames.com.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> , aguardem.</p>
]]></description>
		<wfw:commentRss>http://www.cubagames.com.br/ffilmation-uma-engine-para-jogos-isometricos-em-flash/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Licença do Adobe Flex Builder Pro 3 para Estudantes</title>
		<link>http://www.cubagames.com.br/licenca-do-adobe-flex-builder-pro-3-para-estudantes/</link>
		<comments>http://www.cubagames.com.br/licenca-do-adobe-flex-builder-pro-3-para-estudantes/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 16:42:39 +0000</pubDate>
		<dc:creator>Guilherme Moschen</dc:creator>
				<category><![CDATA[Ferramentas]]></category>
		<category><![CDATA[Flash - ActionScript]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/licenca-do-adobe-flex-builder-pro-3-para-estudantes/</guid>
		<description><![CDATA[<p style="text-align: center"><img src="http://www.cubagames.com.br/wp-content/plugins/box_flexbuilderstandard3_150x150.jpg" alt="box_flexbuilderstandard3_150×150.jpg" /></p>
<p>No finalzinho de fevereiro a Adobe anunciou uma licença free do <a href="http://www.adobe.com/products/flex/" target="_blank">Adobe Flex Pro 3</a> para estudantes e professores de universidades. Para adquirir a sua licença basta comprovar que é estudante e você receberá um serial.</p>
<p>É realmente simples, acesse: <a href="http://www.flexregistration.com/" target="_blank">www.flexregistration.com</a></p>
<p>Aquele abraço.</p>
]]></description>
		<wfw:commentRss>http://www.cubagames.com.br/licenca-do-adobe-flex-builder-pro-3-para-estudantes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>O que é o RPG Maker?</title>
		<link>http://www.cubagames.com.br/o-que-e-o-rpg-maker/</link>
		<comments>http://www.cubagames.com.br/o-que-e-o-rpg-maker/#comments</comments>
		<pubDate>Tue, 19 Feb 2008 12:41:49 +0000</pubDate>
		<dc:creator>Guilherme da Silva</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Ferramentas]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/o-que-e-o-rpg-maker/</guid>
		<description><![CDATA[<p><img src="http://www.cubagames.com.br/wp-content/plugins/img1.jpg" title="Versão japonesa do Super Nintendo" alt="Versão japonesa do Super Nintendo" style="margin: 3px" align="left" border="0" height="171" width="192" />O RPG Maker surgiu nos anos 80 no Japão, e era um software criado para os computadores MSX, muito populares na época. Durante os anos 80, o RPG Maker virou febre no MSX e PC-98, plataformas comuns no Japão. Nos anos 90, o programa perdeu um pouco da popularidade conquistada no tempo do MSX. Várias versões saíram para os consoles, as mais famosas para Super Nintendo e Playstation. Entretanto, nenhuma delas realmente emplacou, o que era esperado, já que nos consoles digitar textos e mudar as configurações dos jogo não era nada fácil. Finalmente, em 1996, a ASCII (empresa desenvolvedora do programa) lançou o RPG Maker 95. O RPG Maker 95 foi o primeiro software para Windows que permitia que pessoas sem conhecimento técnico pudessem criar seus próprios jogos. O programa virou febre no Japão e trouxe uma avalanche de fãs e jogos. Essa febre ficou mais forte ainda, quando 4 anos mais tarde o RPG Maker 2000 foi lançado. A nova versão do programa trouxe várias inovações e a possibilidade de criar jogos mais facilmente e rapidamente. Na terra do sol nascente, os RPG Makers são chamados de Tkool, um apelido para o nome do programa em japonês, Tsukuru, que significa Criar ou Fazer.</p>
<p><strong>RPG Maker no resto do mundo</strong></p>
<p>O RPG Maker acabou aparecendo no ocidente quando um russo chamado Don Miguel traduziu e distribuiu em seu site o RPG Maker 2000. Don Miguel fez uma tradução não tão boa, mas ele acabou lançando o programa ao mundo ocidental, que, em pouco tempo, virou febre. Muitas pessoas começaram a baixar o programa e criar jogos nele. Quase que instantaneamente, comunidades de “makers” (como começaram a ser chamados aqueles que criam jogos no RPG Maker) surgiram no mundo todo. Nessas comunidades, os makers discutiam sobre o programa, trocavam resources (recursos gráficos, sons e músicas para jogos) , criavam tutoriais, etc.</p>
<p>Assim como em outros países, o RPG Maker estourou aqui no Brasil também. Várias comunidades surgiram, entre elas: A Castelo RPG, a Universo RPG Maker, a Wolfpac e a CBRPG. Os makers brazucas tiveram muito destaque aqui e no exterior, tanto pela qualidade dos jogos, como pela técnica da maioria.</p>
<p><strong>Atualmente</strong></p>
<p>O RPG Maker teve duas versões lançadas nos últimos anos (2004 e final de 2007) que mudaram bastante o padrão que vinha sendo seguido pelo programa. Primeiro foi lançado o RPG Maker XP, em 2004, que apresentou muitas mudanças em relação aos programas anteriores, o RPG Maker 2000 e 2003. A versão XP trazia uma engine mais poderosa, com suporte à imagens 32-bit e músicas em formato MP3 e OGG. Além disso, o tamanho da tela dos jogos era de 640x480, o dobro das versões anteriores. Contudo, a mudança mais importante foi a inclusão de um sistema de scripts, baseado na linguagem de programação Ruby, muito popular no Japão e que ganhava espaço no ocidente. Toda a engine do RPG Maker XP foi montada em cima desse sistema de scripts, conhecido como RGSS (Ruby Game Scripting System). No final de 2007, foi lançado o RPG Maker VX, uma “continuação” ao RPG Maker XP, embora hajam várias diferenças entre os programas. O VX apresentou uma facilidade maior ao se criar jogos, e também tornou a criação mais rápida. Um novo visual também deu as caras, e também uma versão atualizada e mais organizada do <a href="http://en.wikipedia.org/wiki/RPG_Maker_XP#Ruby_Game_Scripting_System" rel="nofollow">Ruby Game Scripting System</a>.</p>
<p><strong>Criando jogos</strong></p>
<p>O RPG Maker permite que uma pessoa comum, que nunca teve experiência com programação ou criação de jogos em geral, possa criar seu próprio jogo de RPG. Para criar o seu jogo, basta uma idéia na cabeça, um pouco de paciência e muita dedicação. Os jogos criados seguem o estilo clássico dos RPG’s para Super Nintendo, como Final Fantasy, Dragon Quest e Breath of Fire. É muito fácil, e principalmente, divertido criar um jogo no programa. Você cria falas para personagens, cria batalhas e mudar várias opções comuns em um jogo de RPG. A criação de mapas não pode ser mais fácil, você praticamente desenha no mapa com os itens que quer colocar (grama, água, castelos, casas).</p>
<p><a href="http://www.cubagames.com.br/wp-content/plugins/img2.jpg" title="Editor de mapas do RPGMaker XV"></a></p>
<p style="text-align: center"><a href="http://www.cubagames.com.br/wp-content/plugins/img2.jpg" target="_blank" title="Editor de mapas do RPGMaker XV"><img src="http://www.cubagames.com.br/wp-content/plugins/img2.thumbnail.jpg" title="Editor de mapas do RPGMaker XV" alt="Editor de mapas do RPGMaker XV" border="0" /></a><br />
<em>Editor de Mapas do RPG Maker XV, clique na imagem para vê-la maior.</em></p>
<p>Uma ferramenta essencial no RPG Maker é o banco de dados. O banco de dados guarda quase todas as informações do seu jogo, como os personagens, itens, armas, armaduras, monstros, etc. No banco de dados você pode criar, editar e gerenciar esses dados importantes do seu jogo. O RPG Maker já vem com um banco de dados completo para você usar em seus jogos, então, cabe a você dar uma customizada no banco de dados para dar mais cara ao seu jogo.</p>
<p><a href="http://www.cubagames.com.br/wp-content/plugins/img3.jpg" title="Alterando seu Banco de dados"></a></p>
<p style="text-align: center"><a href="http://www.cubagames.com.br/wp-content/plugins/img3.jpg" target="_blank" title="Alterando seu Banco de dados"><img src="http://www.cubagames.com.br/wp-content/plugins/img3.thumbnail.jpg" title="Alterando seu Banco de dados" alt="Alterando seu Banco de dados" border="0" /></a><br />
<em>Alterando seu banco de dados, clique na imagem para vê-la maior.</em></p>
<p>O que realmente faz a mágica acontecer e torna a criação de jogos no RPG Maker tão fácil, são os eventos e seus comandos. Quando um personagem conversa com você, um monstro o ataca, você entra numa loja para comprar coisas, etc. Tudo isso são eventos, e os acontecimentos são comandados por comandos de eventos. O RPG Maker possui dois modos de edição: a edição de mapas e a edição de eventos. Depois de desenhar seu mapa (uma ilha, um vilarejo ou uma caverna por exemplo) você passa para a etapa de edição de eventos, onde você criará o que acontecerá ali. Pessoas caminhando com quem o jogador poderá conversar, monstros que irão atacar o jogador, etc. Os comandos de evento são o "roteiro técnico" de seu jogo.</p>
<p><a href="http://www.cubagames.com.br/wp-content/plugins/img4.jpg" title="Editor de eventos do RPGMaker XV"></a></p>
<p style="text-align: center"><a href="http://www.cubagames.com.br/wp-content/plugins/img4.jpg" target="_blank" title="Editor de eventos do RPGMaker XV"><img src="http://www.cubagames.com.br/wp-content/plugins/img4.thumbnail.jpg" title="Editor de eventos do RPGMaker XV" alt="Editor de eventos do RPGMaker XV" border="0" /></a><br />
<em>Editor de eventos do RPG Maker XV, clique na imagem para vê-la maior.</em></p>
<p>No RPG Maker você também encontra várias outras ferramentas que você utilizará durante a criação do jogo, como o <em>"Resource Manager"</em>, onde você pode importar gráficos, sons e músicas para seu jogo, o teste de som, onde você pode ouvir as músicas e sons de seu jogo, e o editor de scripts, que é onde toda a ação relacionada a programação acontece. Você pode criar um jogo sem sequer abrir o editor de scripts, mas, para usuários avançados (ou curiosos), ele é uma ferramenta muito útil.</p>
<p><a href="http://www.cubagames.com.br/wp-content/plugins/img5.jpg" title="Editor de Scripts do RPGMaker XV"></a></p>
<p style="text-align: center"><a href="http://www.cubagames.com.br/wp-content/plugins/img5.jpg" target="_blank" title="Editor de Scripts do RPGMaker XV"><img src="http://www.cubagames.com.br/wp-content/plugins/img5.thumbnail.jpg" title="Editor de Scripts do RPGMaker XV" alt="Editor de Scripts do RPGMaker XV" border="0" /></a><br />
<em>Editor de Scripts do RPG Maker XV, clique na imagem para vê-la maior.</em></p>
<p><strong>Requerimentos Mínimos</strong></p>
<p>Microsoft Windows 2000 / XP / Vista<br />
Intel Pentium III 1.0GHz ou superior<br />
Memória RAM de 256 MB ou superior<br />
Suporte à resolução 1024x768 High Color (24 Bit) ou superior<br />
Suporte à DirectSound e DirectX 8 ou superior instalado<br />
100MB de espaço livre em disco</p>
<p><strong>Configuração Recomendada</strong></p>
<p>Microsoft Windows XP ou Vista<br />
Intel Pentium 4 2.0GHz ou superior<br />
Memória RAM de 512 MB ou superior</p>
<p><strong>Saiba Mais</strong></p>
<p>Para saber mais sobre essa incrível ferramenta, acesse o site <a href="http://www.rpgmakerbrasil.com.br/">RPG Maker Brasil</a>, lá você encontra tutoriais, forum de discussão e jogos feitos com a ferramenta.</p>
<p><em><strong>ps:</strong> Guilherme da Silva (a.k.a Falco) é administrador do site <a href="http://www.rpgmakerbrasil.com.br/">RPG Maker Brasil</a> e mandou este texto via formulário de contato da CubaGames. Gostou? Quer mais textos dele sobre RPG Maker? Comente!</em></p>
]]></description>
		<wfw:commentRss>http://www.cubagames.com.br/o-que-e-o-rpg-maker/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Porque um mod é uma boa saída para quem está começando a fazer jogos</title>
		<link>http://www.cubagames.com.br/porque-um-mod-e-uma-boa-saida-para-quem-esta-comecando-a-fazer-jogos/</link>
		<comments>http://www.cubagames.com.br/porque-um-mod-e-uma-boa-saida-para-quem-esta-comecando-a-fazer-jogos/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 02:12:11 +0000</pubDate>
		<dc:creator>Romulo De Lazzari</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Ferramentas]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/porque-um-mod-e-uma-boa-saida-para-quem-esta-comecando-a-fazer-jogos/</guid>
		<description><![CDATA[<p>Se você é estudante ou entusiasta da área de games e tem vontade de fazer sua própria aventura dentro de um jogo que ama, o <a href="http://en.wikipedia.org/wiki/Mod_(computer_gaming)" rel="nofollow"><em>Mod</em></a> é a solução ideal.  Fazer um Mod me parece algo bem mais palpável do que inventar toda uma estrutura de jogo totalmente nova, mas lembre o jogo não estará pronto, não fique pensando que o pessoal que criou o Counter Strike simplesmente adicionou algumas roupas de terroristas e de policiais, as falas "Go go go!" que o jogo ficou pronto. Para fazer um mod legal também tem que suar a camisa e trabalhar pesado!</p>
<p>Os mods são feitos pelos usuários por editores fornecidos pelas próprias empresas junto com o pacote do jogo. Um bom exemplo são os vários mods feitos a partir do jogo Half-Life. A chamada Source SDK (programa para fazer mods do jogo Half-Life 2) <strike>é aberta para download através do Steam</strike> não a achei no Steam, um programa proprietário para comprar os jogos da <a href="http://www.valvesoftware.com/" rel="nofollow">Valve</a>. Vários jogos vem junto com seus editores para serem feitos os mods, geralmente empresas grandes, com um bom tempo de mercado oferecem estas possibilidades por terem uma equipe bem estruturada e, principalmente, por terem um investimento maior.</p>
<p style="text-align: center"><img src="http://www.cubagames.com.br/wp-content/plugins/cs.jpg" title="Counter Strike Source" alt="Counter Strike Source" height="258" width="356" /><br />
<em>Imagem de Counter Strike Source.</em></p>
<p>Mas por que empresas como a Valve, Bioware e Blizzard fazem isso? Para você jogar um mod, necessariamente o jogador precisa do jogo original, certo? Quantos mais mods de sucesso, mais $$$ para estas empresas.</p>
<p><strong>Existem dois tipos de Mod:</strong></p>
<p>Conversão parcial: neste modo, apenas muda-se partes que não influenciem no estilo de jogo. Como por exemplo, mudar as roupas dos jogadores, criar uma arma nova dentro do novo jogo ou transformar um jogo de deathmatch em capture the flag. Mas lembrem-se "<em><strong>não mudam</strong></em>" o estilo de jogo.</p>
<p>Conversão total: são modificações que "<em><strong>mudam</strong></em>" todo o estilo do jogo. É como criar um MMORPG a partir de uma modificação de um FPS. Segundo a wikipédia, o jogo Counter Strike é um jogo considerado como "conversão total" e eu pergunto, seria mesmo?</p>
<p><strong>Vantagens e Desvantagens de um Mod:</strong></p>
<p>Se você está realmente começando a desenvolver um jogo, estudar uma engine, brincar com um editor para fazer mods ou um jogo com o código aberto é uma boa saída para saber como "as coisas" (digo as coisas no sentido mais padrão, coisas que todos os jogos têm) funcionam. Dizer que conhece de jogos é uma coisa. Saber fazer é bem diferente! Mesmo que você seja um expert em qualquer linguagem de programação. Fazer sistemas é uma coisa, trabalhar com jogos é bem diferente.</p>
<p>A grande desvantagem de fazer um mod é se a sua idéia é muito genial e não se encaixa em nenhum "molde" feito pelas empresas que oferecem suas ferramentas para o uso. Às vezes, seu jogo precisa ser online e a ferramenta não te dá essa possibilidade.</p>
<p style="text-align: center"><img src="http://www.cubagames.com.br/wp-content/plugins/dota.jpg" title="Dota Allstars" alt="Dota Allstars" /><br />
<em>Dota Allstars - Um famoso mapa para Warcraft 3</em></p>
<p><strong>Empresas que oferecem mods:</strong></p>
<p>A Valve, já citada acima. Fornece a <a href="http://developer.valvesoftware.com/wiki/SDK_Docs" rel="nofollow">Source SDK</a> para desenvolvimento de mods para o Half-Life 2. <strike>Ela é free, você pode baixá-la através do Steam. É só baixar o Steam, criar um usuário e ir na aba "<em>tools</em>"</strike>. <em><strong>Upgrade:</strong> eu baixei o Steam e tentei achá-la mas só vi para baixar servidores de Team Fortress 2 e de outros jogos.</em></p>
<p>A <a href="http://www.bioware.com/" rel="nofollow">Bioware</a> também oferece <a href="http://nwn.bioware.com/builders/" rel="nofollow">uma ferramenta para criar mods para o jogo Neverwinter Nights</a>, que vem junto com o jogo, como ele você pode criar outras fases, personagens, etc.</p>
<p>Outra empresa que oferece uma gama de modificações é a <a href="http://www.blizzard.com/" rel="nofollow">Blizzard</a>, o grande exemplo é o jogo <a href="http://www.blizzard.com/war3x/" rel="nofollow">Warcraft 3</a>. Nele você pode fazer o seu mapa com a sua missão, e pode ter um objetivo totalmente diferente do jogo normal, destruir o exército inimigo. Eu li que têm <em>tower defense</em>, jogo de futebol e também o famoso <a href="http://www.dota-allstars.com/" rel="nofollow">Dota Allstars</a>.</p>
<p>Outra empresa que libera (epa!) o código é a <a href="http://www.idsoftware.com/" rel="nofollow">Id Software</a>, conhece? Não. Mas Quake e Doom eu garanto que você conhece né? Então se quiser dar uma estudada ou fazer um mod, <a href="http://www.iddevnet.com/" rel="nofollow">você pode baixar uma SDK para fazer mods do Quake 4 e do Doom 3 através deste link</a>.</p>
<p style="text-align: center"><img src="http://www.cubagames.com.br/wp-content/plugins/tf1-1.jpg" title="Team Fortress" alt="Team Fortress" height="252" width="338" /><br />
<em>Imagem da primeira versão do Team Fortress.</em></p>
<p>Fazer um mod vale muito a pena para o quesito estudo. Quer ver como funciona? Quer fazer seu próprio mapa? Ou seu próprio personagem? Baixa uma SDK ou compra algum jogo que ofereça uma ferramenta de mod e sua a camisa que o jogo vai ficar legal! Caso você tenha o sonho de fazer um jogo no estilo dos que oferecem ferramentas para mod, aproveite-se disso porque facilita um monte, eu disse <strong>UM MONTE</strong>! Entendeu? Então, boa "moddagem".</p>
]]></description>
		<wfw:commentRss>http://www.cubagames.com.br/porque-um-mod-e-uma-boa-saida-para-quem-esta-comecando-a-fazer-jogos/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>WiiNokia N95</title>
		<link>http://www.cubagames.com.br/wiinokia-n95/</link>
		<comments>http://www.cubagames.com.br/wiinokia-n95/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 17:49:32 +0000</pubDate>
		<dc:creator>Tiago Barão</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Ferramentas]]></category>
		<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/wiinokia-n95/</guid>
		<description><![CDATA[<p style="text-align: center"><img src="http://farm3.static.flickr.com/2087/2053254018_02a49a4338_o.jpg" title="Nokia N95" alt="Nokia N95" height="275" width="275" /></p>
<p>Depois de muito tempo sem postar volto com uma novidade para quem gosta de jogos no celular. A Nokia colocou um <a href="http://pt.wikipedia.org/wiki/Aceler%C3%B4metro">acelerômetro</a> (o <a href="http://en.wikipedia.org/wiki/Accelerometer">artigo em inglês</a> é muito mais completo), dispositivo que permite a identificação dos movimentos de um objeto, no seu N95 e as aplicações que utilizam isso já estão começando a "povoar" as listas de aplicações para celular.Obviamente os jogos não podem ficar fora dessa. O video abaixo mostra um cara jogando Space Invaders no N95.</p>
<p align="center">
<div class="wpv_videoc">
<div class="wpv_video"><object data="http://www.youtube.com/v/DlthLrZ7T7A" type="application/x-shockwave-flash" width="100%" height="100%"><param name="movie" value="http://www.youtube.com/v/DlthLrZ7T7A"></param></object></div>
</div>
<p> <a href="http://www.youtube.com/watch?v=DlthLrZ7T7A" target="_blank">link para o feed</a><br />
<a href="http://www.youtube.com/watch?v=DlthLrZ7T7A" target="_blank"><br />
</a></p>
<p align="left"> O blog do cara que desenvolveu o jogo <a href="http://blogs.forum.nokia.com/blog/luis-valentes-forum-nokia-blog/symbian-c/2007/11/19/an-accelerated-game-for-the-n95">é esse</a>.  E quem tiver oNokia N95 pode baixar o jogo <a href="http://mosh.nokia.com/collection/3746EC195CEE725DE040050AEE041508">aqui</a>.<br />
No <a href="http://www.jaspp.net/">Symbian Blog</a>, dá para encontrar também outros jogos para o N95, inclusive um em 3D.</p>
<p>O Luiz Valente, o desenvolvedor do Space Invaders N95, usou o <a href="http://en.wikipedia.org/wiki/OpenGL_ES">OpenGL ES</a>, um OpenGL  mais simples para sistemas embarcados.</p>
<p>E aproveitando a deixa, um <a href="http://www.felipeandrade.org/blog/?p=193">post muito bom sobre 3D com Java ME</a>. Vale a pena ler para quem se interessa por jogos no celular.</p>
]]></description>
		<wfw:commentRss>http://www.cubagames.com.br/wiinokia-n95/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Dicas de como fazer seu próprio jogo</title>
		<link>http://www.cubagames.com.br/dicas-de-como-fazer-seu-proprio-jogo/</link>
		<comments>http://www.cubagames.com.br/dicas-de-como-fazer-seu-proprio-jogo/#comments</comments>
		<pubDate>Tue, 31 Jul 2007 16:52:14 +0000</pubDate>
		<dc:creator>Romulo De Lazzari</dc:creator>
				<category><![CDATA[CubaGames]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Ferramentas]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/dicas-de-como-fazer-seu-proprio-jogo/</guid>
		<description><![CDATA[<p>No ano passado, o Tiago criou uma sessão de como fazer seus próprios jogos, mostrando algumas ferramentas para o desenvolvimento. Aqui estão os links:</p>
<p><a href="http://www.cubagames.com.br/faca-o-seu-proprio-jogo-parte-1/">Faça seu próprio jogo - parte 1</a> - 3D GameStudio;</p>
<p><a href="http://www.cubagames.com.br/faca-o-seu-proprio-jogo-parte-2/">Faça seu próprio jogo - parte 2</a> - Blender;</p>
<p><a href="http://www.cubagames.com.br/faca-o-seu-proprio-jogo-parte-3/">Faça seu próprio jogo - parte 3</a> - Game Editor;</p>
<p><a href="http://www.cubagames.com.br/faca-o-seu-proprio-jogo-parte-4/">Faça seu próprio jogo - parte 4</a> - RPG Toolkit;</p>
<p><a href="http://www.cubagames.com.br/faca-o-seu-proprio-jogo-parte-5/">Faça seu próprio jogo - parte 5</a> - The Games Factory;</p>
<p><a href="http://www.cubagames.com.br/faca-o-seu-proprio-jogo-parte-6/">Faça seu próprio jogo - parte 6</a> - RPG Maker;</p>
<p>Estou apenas revitalizando-os por causa de sua qualidade. Espero que o Tiago faça mais posts nesta linha.</p>
]]></description>
		<wfw:commentRss>http://www.cubagames.com.br/dicas-de-como-fazer-seu-proprio-jogo/feed/</wfw:commentRss>
		<slash:comments>47</slash:comments>
		</item>
		<item>
		<title>O que é uma engine?</title>
		<link>http://www.cubagames.com.br/o-que-e-uma-engine/</link>
		<comments>http://www.cubagames.com.br/o-que-e-uma-engine/#comments</comments>
		<pubDate>Thu, 26 Jul 2007 00:51:41 +0000</pubDate>
		<dc:creator>Romulo De Lazzari</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Ferramentas]]></category>

		<guid isPermaLink="false">http://www.cubagames.com.br/o-que-e-uma-engine/</guid>
		<description><![CDATA[<p>Engine, ou falando em português motor, refere-se a partes em jogos reutilizáveis. Como assim reutilizáveis? Fácil. Se você criar um jogo do tipo quiz (perguntas e respostas) terá que criar algum mecanismo de sorteio das perguntas e contabilização das respostas, certo? Esse será o motor, núcleo ou coração do jogo. Caso daqui a algum tempo, você como grande desenvolvedor de jogos estará fazendo seu RPG gigante e deseja colocar um mini-game dentro dele de quiz, onde seu personagem ganha itens para cada resposta certa dada. Poderá ser utilizado o mesmo sistema daquele seu primeiro jogo feito lá no passado.</p>
<p><a href="http://www.cubagames.com.br/wp-content/uploads/2007/07/maniac.png" title="maniac.png"><img src="http://www.cubagames.com.br/wp-content/uploads/2007/07/maniac.png" title="Maniac Mansion" alt="Maniac Mansion" align="left" border="0" height="150" width="240" /></a>A idéia de criar engines para "partes parecidas" de um jogo, como menus, sistemas de lutas, sistema gráfico e outros trouxe bastante velocidade no desenvolvimento de jogos pois com apenas uma engine, vários games podem ser feitos. É o exemplo da <a href="http://en.wikipedia.org/wiki/SCUMM">SCUMM</a>, criado pela LucasArts para desenvolver o jogo <a href="http://en.wikipedia.org/wiki/Maniac_Mansion">Maniac Mansion</a>, daí o nome (<strong>S</strong>cript <strong>C</strong>reation <strong>U</strong>tility for <strong>M</strong>aniac <strong>M</strong>ansion), depois de Maniac Mansion vieram muitos outros jogos no mesmo gênero que utilizavam a mesma engine.</p>
<p>Atualmente existem muitas engines de diversos tipos e variadas finalidades, desde engines para sistemas gráficos 2d e 3d a engines que simulam as leis da física dentro de jogos. <a href="http://www.devmaster.net/engines/">No site da DevMaster existe uma lista enorme de engines</a> (comerciais e grátis) para pesquisa e (se possível) download, vale a pena dar uma checada.</p>
]]></description>
		<wfw:commentRss>http://www.cubagames.com.br/o-que-e-uma-engine/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

