<?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>Game Developer</title>
	<atom:link href="http://gamedeveloper.com.br/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://gamedeveloper.com.br/blog</link>
	<description>by Bruno Cicanci</description>
	<lastBuildDate>Fri, 13 Aug 2010 03:31:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>30 dias na indústria de games</title>
		<link>http://gamedeveloper.com.br/blog/2010/08/13/30-dias-na-industria-de-games/</link>
		<comments>http://gamedeveloper.com.br/blog/2010/08/13/30-dias-na-industria-de-games/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 03:31:44 +0000</pubDate>
		<dc:creator>cicanci</dc:creator>
				<category><![CDATA[indústria de games]]></category>
		<category><![CDATA[gamedev]]></category>
		<category><![CDATA[glu]]></category>
		<category><![CDATA[j2me]]></category>
		<category><![CDATA[porting]]></category>

		<guid isPermaLink="false">http://gamedeveloper.com.br/blog/?p=557</guid>
		<description><![CDATA[O blog está meio parado por que estou enrolado com o meu TCC da pós-graduação e também por uma grande mudança na minha vida: Há 30 dias atrás deixei de ser um Analista de Sistemas e consegui um emprego como Engenheiro de Software na Glu Mobile, uma empresa que faz jogos e porting de jogos para [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">O blog está meio parado por que estou enrolado com o meu TCC da pós-graduação e também por uma grande mudança na minha vida: Há 30 dias atrás deixei de ser um Analista de Sistemas e consegui um emprego como Engenheiro de Software na <a title="Glu" href="http://www.glu.com/" target="_blank">Glu Mobile</a>, uma empresa que faz jogos e porting de jogos para celulares e smartphones. Depois de 1 ano e meio desde que comecei a estudar desenvolvimento de jogos mais a sério, consegui entrar na indústria de games. Estou trabalhado no departamento de engenharia responsável por porting de jogos para a região da América do Norte.</p>
<p style="text-align: justify;">Até chegar nisso foram muitos livros, aulas da pós-graduação e projetos &#8211; tudo relatado aqui neste blog. Agora começou uma nova etapa, onde eu estou aprendendo mais do que nunca sobre desenvolvimento de jogos (na prática) e como uma empresa desta área funciona, sem falar no contato com pessoas do mundo inteiro que possuem muitos interesses em comum. A empresa é incrível, com um ambiente bem característico com o que se espera de uma empresa de games.</p>
<p style="text-align: justify;">Bom, mas você sabe o que é porting de jogos? Basicamente é pegar uma versão de um jogo, desenvolvida por outra equipe, e fazê-la funcionar em outros celulares, criando versões para cada tipo de configuração de celular. Porém isto não é tão fácil quanto parece, e nem tão simples quanto eu imaginava. Entre as tarefas relacionadas ao porting de um jogo estão: analisar e diminuir o consumo de memória e processamento, melhorar o desempenho do jogo, saber identificar problemas rapidamente, entender por que acontece uma coisa no emulador e outra no aparelho, entender código feito por outras pessoas, corrigir bugs (muitas vezes estranhos), entre muitas outras tarefas.</p>
<p style="text-align: justify;">No geral, trabalhar com porting de jogos é bem desafiador. Existem diversas coisas que te obrigam a pensar e agir rápido, e você consegue desenvolver muitas habilidades de programação e engenharia. Após estes 30 dias tenho certeza que está é a indústria em que eu quero trabalhar. Porting não é fácil e eu tenho muito o que aprender, mas agora estou no caminho! Go go go!</p>
<p style="text-align: justify;">Ah, sempre tem alguma vaga aberta na Glu, em diversas áreas como arte, programação e QA. Acesse o site para ver as vagas: <a href="http://www.glu.com/jobs">http://www.glu.com/jobs</a></p>
<p style="text-align: justify;">Existem diversas coisas que quero postar aqui, mas está difícil de arrumar tempo para escrever. Vou tentar postar com mais frequência, mesmo que seja algo mais curto e direto, principalmente por que tenho muitas coisas sobre o desenvolvimento do meu TCC para contar aqui.</p>
]]></content:encoded>
			<wfw:commentRss>http://gamedeveloper.com.br/blog/2010/08/13/30-dias-na-industria-de-games/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A importância da música e efeitos sonoros nos jogos digitais</title>
		<link>http://gamedeveloper.com.br/blog/2010/06/20/a-importancia-da-musica-e-efeitos-sonoros-nos-jogos-digitais/</link>
		<comments>http://gamedeveloper.com.br/blog/2010/06/20/a-importancia-da-musica-e-efeitos-sonoros-nos-jogos-digitais/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 02:07:18 +0000</pubDate>
		<dc:creator>cicanci</dc:creator>
				<category><![CDATA[game music]]></category>
		<category><![CDATA[efeitos sonoros]]></category>
		<category><![CDATA[jogos digitais]]></category>
		<category><![CDATA[música]]></category>

		<guid isPermaLink="false">http://gamedeveloper.com.br/blog/?p=542</guid>
		<description><![CDATA[Faz algum tempo que não posto aqui, estou bem enrolado e empolgado com o desenvolvimento do meu TCC, um jogo de aventura e puzzles em 2D feito com XNA. Em breve irei postar algo sobre o início do desenvolvimento do meu projeto e do que estou utilizando.

Hoje vou postar aqui um trabalho que fiz na [...]]]></description>
			<content:encoded><![CDATA[<p>Faz algum tempo que não posto aqui, estou bem enrolado e empolgado com o desenvolvimento do meu TCC, um jogo de aventura e puzzles em 2D feito com XNA. Em breve irei postar algo sobre o início do desenvolvimento do meu projeto e do que estou utilizando.</p>
<p style="text-align: justify;"><img class="aligncenter size-medium wp-image-547" title="korg-ds10-2" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/06/korg-ds10-2-300x270.jpg" alt="korg-ds10-2" width="300" height="270" /></p>
<p style="text-align: justify;">Hoje vou postar aqui um trabalho que fiz na pós, na matéria de Música para jogos digitais. Foi uma matéria bem interessante pelas análises que o professor conseguia fazer de músicas e efeitos sonoros usados em jogos, e a partir disso tivemos que escrever um pequeno artigo sobre a importância da música e efeitos sonoros nos jogos digitais. Este é o texto que escrevi:</p>
<blockquote style="text-align: justify;"><p><img class="alignleft size-thumbnail wp-image-549" title="gomba_music_red" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/06/gomba_music_red-150x150.jpg" alt="gomba_music_red" width="150" height="150" />Quando o Atari foi lançado seus jogos não possuíam música, devido à limitação técnica do hardware. Porém eram utilizados efeitos sonoros muito simples que, embora fossem apenas &#8220;bips&#8221; emitidos pelo vídeo game, completavam o jogo e a experiência do jogador.</p>
<p>Com a evolução dos vídeo games e computadores, a música começou a ser empregada para &#8220;preencher&#8221; o ambiente. Aos poucos, tornou-se um elemento fundamental para um jogo, além dos efeitos sonoros e visuais. Hoje são itens essenciais em jogos, sendo que muitos jogadores que antes prestavam atenção apenas em belos gráficos, agora também reparam na melodia e nos sons que de um jogo.</p>
<p>Sem dúvidas a música é tão importante nos jogos quando em filmes e animações, mas por quê? Basta tentarmos jogar algum jogo digital com o som desligado: em muitos casos o jogo perde a graça. Existem jogos, ainda, que amarram a música ao enredo do jogo, de modo que as mudanças na narrativa do jogo são demonstradas pela música, como músicas agitadas indicando perigo, por exemplo. Braid, um jogo de aventura em plataforma, utiliza a música para informar ao jogador se há perigo ou não em uma fase, e inclusive brinca com os efeitos sonoros quando o jogador volta no tempo e desfaz uma ação.</p>
<p>Neste caso, a melodia conduz o jogador e o convida a uma imersão no mundo do jogo. A alteração do ritmo da música durante uma fase transmite ao jogador sensações sobre o que está por vir. Para que todos estes recursos musicais funcionem deve haver uma grande harmonia entre as músicas e os efeitos sonoros, pois sem esta combinação de elementos todo o trabalho do músico será em vão, e a trilha sonora será apenas mais um enfeite no jogo.</p>
<p>Jogos como Resident Evil, um clássico de suspense e terror, usa muito a trilha sonora para ambientar o jogador e capturar sua atenção, tornando o jogo mais tenso em determinadas partes, inclusive utilizando a ausência de música e deixando apenas a respiração do jogador e os barulhos dos passos do personagem. Tudo isso ajuda no clima do jogo, aumentando a imersão do jogador no enredo, e fazendo-o sentir-se realmente dentro da história contada, além de aumentar o número de sustos, também.</p>
<p>O ambiente, neste caso, é construído por sons e ruídos que são imprescindíveis para que o jogo transmita a sensação que os criadores pensaram. A exploração destes níveis de sons na trilha do jogo conseguiu criar este ambiente que combina perfeitamente com a arte do jogo e transmite ao jogador um sensação de imersão em uma realidade diferente: o mundo onde se passa o jogo.</p>
<p>Alguns jogos são uma mistura de música com jogabilidade, como as séries Guitar Hero e Rock Band, onde o jogador tem sua imersão &#8220;tocando&#8221; músicas conhecidas com uma jogabilidade que tenta ser semelhante a tocar uma guitarra, baixo ou bateria. Este tipo de jogo sem música não faz sentido, devido à importância da música na sua narrativa, e ambienta o jogador de modo que ele se sente tocando em um show de rock, vibrando realmente após cada trecho complicado que ele conseguiu executar em seu instrumento música interativo.</p>
<p>Ao contrário do que alguns pensam, hoje o objetivo da música e dos efeitos sonoros não é “enfeitar” um jogo, é muito mais do que isso. Estes elementos devem ser utilizados em conjunto com a arte e a narrativa do jogo para proporcionar uma experiência mais rica para o jogador e aumentar a sua imersão com o mundo criado, criando ambientes a partir de sons, ruídos, ritmo, melodia e harmonia. Os exemplos de jogos citados confirmam esta importância da banda sonora em um jogo digital, sendo que a música tornou-se uma parte fundamental na obra de arte que é um jogo bem elaborado, divertido e com imersão.</p>
<p>Muitos jogos executam esta união de música, arte e narrativa de maneira praticamente perfeita, e ganham diversos prêmios que valorizam o jogo como uma obra de arte. Em 2009, jogos como Batman: Arkham Asylum e Uncharted 2 foram os principais vencedores destes prêmios dados pela indústria de jogos e entretenimento, devido ao grande investimento em música e efeitos sonoros idéias para suas respectivas narrativas.</p></blockquote>
<p style="text-align: justify;">Após o término da parte de programação do meu TCC irei compor e gravar a trilha sonora da minha demo. Esta matéria serviu para eu conhecer mais profundamente o que uma música ou efeito sonoro podem fazer na ambientação de um jogo, sem isso o jogo pode perder sua identidade e diversão.  </p>
]]></content:encoded>
			<wfw:commentRss>http://gamedeveloper.com.br/blog/2010/06/20/a-importancia-da-musica-e-efeitos-sonoros-nos-jogos-digitais/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>início do meu projeto de jogo para TCC</title>
		<link>http://gamedeveloper.com.br/blog/2010/05/07/inicio-do-meu-projeto-de-jogo-para-tcc/</link>
		<comments>http://gamedeveloper.com.br/blog/2010/05/07/inicio-do-meu-projeto-de-jogo-para-tcc/#comments</comments>
		<pubDate>Sat, 08 May 2010 00:03:07 +0000</pubDate>
		<dc:creator>cicanci</dc:creator>
				<category><![CDATA[gamedev]]></category>
		<category><![CDATA[tcc]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[directx]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[SDL]]></category>
		<category><![CDATA[unity]]></category>
		<category><![CDATA[xna]]></category>

		<guid isPermaLink="false">http://gamedeveloper.com.br/blog/?p=513</guid>
		<description><![CDATA[Este ano irei terminar a minha pós-graduação em Games: Produção e Programação no SENAC, e tenho que fazer o meu Trabalho de Conclusão de Curso (TCC), quer será uma versão demo de um jogo. O projeto do TCC começou ano passado, quando fiz um Game Design Document (GDD) sobre uma idéia de jogo que tive, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Este ano irei terminar a minha pós-graduação em Games: Produção e Programação no SENAC, e tenho que fazer o meu <em>Trabalho de Conclusão de Curso</em> (TCC), quer será uma versão demo de um jogo. O projeto do TCC começou ano passado, quando fiz um<em> Game Design Document </em>(GDD) sobre uma idéia de jogo que tive, porém descartei esta idéia e este ano comecei a trabalhar em outra mais simples.</p>
<p style="text-align: justify;">Embora eu não tenha finalizado o novo GDD, defini algumas coisas importantes para o início do meu projeto: o <strong>tipo de jogo que pretendo fazer, qual público-alvo desejo atingir e em qual plataforma irei focar</strong>. A idéia inicial era fazer um jogo em 3D, porém após pensar muito, decidi fazer um jogo de plataforma 2D para PC, com elementos de aventura e puzzles, focado no público de jogadores <em>hardcore</em>, porém também atendendo aos jogadores <em>casuais </em>(como jogos de plataforma geralmente fazem). Porém, para chegar nesta definição eu precisei passar por alguns meses pesquisando tecnologias.</p>
<p style="text-align: justify;">Em outro post irei comentar mais sobre o processo de criação de um GDD,  além de detalhar mais o que estou fazendo. Neste post irei focar a primeira etapa que um desenvolvedor tem que definir, após ter conhecimento da idéia inicial do jogo: q<strong>ue tecnologia utilizar para programar o jogo</strong>. Abaixo estão algumas tecnologias que pensei em utilizar, porém por algum motivo desisti, até chegar à que realmente irei utilizar para o meu projeto de TCC:</p>
<ul style="text-align: justify;">
<li><strong>Unity: </strong>Uma poderosa Game Engine que tornou-se gratuita no final do ano passado, possibilitando que desenvolvedores independentes tivessem acesso a uma ferramenta de desenvolvimento de jogos profissionais. Em <a title="Unity" href="http://gamedeveloper.com.br/blog/2010/02/09/game-engine-unity/" target="_blank">meu post sobre a Unity</a> fica bem claro que é uma excelente Game Engine, inclusive quando escrevi aquele post estava pensando em utilizá-la no meu TCC, porém desisti. O motivo: a Unity é incrível, porém para fazer um bom jogo nela eu iria precisar de um modelador 3D desde o início do projeto, e eu estou fazendo o projeto sozinho e não sou modelador.</li>
</ul>
<ul style="text-align: justify;">
<li><strong>C++/SDL/OpenGL:</strong> Após desistir de uma Game Engine, parti para uma das opções mais voltadas para programação, decidi tentar a combinação da linguagem de programação C++ com <a title="SDL" href="http://www.libsdl.org/" target="_blank">SDL</a>, que eu aprendi na pós, e <a title="OpenGL" href="http://www.opengl.org/" target="_blank">OpenGL</a> para os gráficos 3D. Esta combinação possui vantagens, como a possibilidade de compilar para Windows e Linux. C++ é uma das linguagens mais utilizadas para programação de jogos, e OpenGL é muito utilizado em programação de jogos para consoles. Eu havia escolhido estas tecnologias por que eu iria aprender muito do que eu preciso para desenvolver jogos profissionais, porém desisti por um simples motivo: no momento eu não tenho muito tempo disponível para aprender a trabalhar com OpenGL, e eu não quero fazer algo mal feito.</li>
</ul>
<ul style="text-align: justify;">
<li><strong>C++/DirectX:</strong> Aprender OpenGL era complicado e iria exigir muito tempo, então resolvi tentar utilizar C++ com <a title="DirectX" href="http://msdn.microsoft.com/en-us/directx/default.aspx" target="_blank">DirectX</a>, pois assim eu ainda estaria aprendendo mais sobre C++, além de eu já ter feito algumas coisas com DirectX na pós-graduação. Comecei a planejar o desenvolvimento de pesquisar as coisas seriam necessárias para o desenvolvimento de um game em 3D. Utilizando DirectX eu ficaria preso ao desenvolvimento para PC, porém não considerei este um problema, já que é um mercado bem amplo. Porém, comecei a ficar um pouco preocupado ao pensar em um simples detalhe: e os modelos 3D? Comecei a pesquisar alguns sites que possuem modelos gratuitos e pagos, eu até estava disposto a comprar modelos não muito caros, porém acabei desistindo de vez de fazer um jogo 3D, pois embora eu estivesse com uma tecnologia que eu conheço um pouco melhor, eu voltei ao problema que me fez desistir da Unity: pode ser que eu termine a programação do jogo, mas não tenha modelos 3D legais para utilizar.</li>
</ul>
<ul style="text-align: justify;">
<li><strong>XNA:</strong> Desde o início eu pensei: se eu ficar desesperado, largo tudo e faço com <a title="XNA" href="http://creators.xna.com" target="_blank">XNA</a>, pois tenho 2 jogos feitos com XNA em meu portfólio, além de participar de um projeto com XNA na <strong><a title="Octopus Team" href="http://www.octopusteam.com.br/" target="_blank">Octopus Team</a></strong>. Depois de pensar muito sobre o meu jogo, sobre a verdadeira razão pela qual eu quero fazê-lo, eu decidi optar por algo que eu conheço bem e é simples de utilizar, para poder focar em fazer um jogo bom, ao invés de gastar muito tempo aprendendo uma tecnologia. Eu poderia até conseguir fazer algo com as tecnologias anteriores, e iria aprender coisas novas, porém não acho que o jogo iria ficar bom. Este motivo também me fez optar por utilizar gráficos 2D e fazer um jogo de plataforma, pois desenhos mais simples eu consigo fazer ou encontrar alguém para fazer.</li>
</ul>
<p style="text-align: justify;">Todo este processo de decisão de qual tecnologia eu iria adotar para o meu projeto <strong>custou caro: cerca de 3 meses de pesquisa e nenhum desenvolvimento.</strong> Embora eu tenha perdido todo este tempo, sendo que se eu tivesse pensado em utilizar XNA desde o início hoje eu já estaria bem adiantado no desenvolvimento, isto serviu para aprender diversas coisas em relação ao que priorizar em um projeto.</p>
<p style="text-align: justify;">No início eu queria fazer um jogo para meu portfólio, por isso escolhi tecnologias que eu não conheço e acho importantes para eu aprender, porém agora estou com outra visão: <strong>não quero apenas mais um trabalho no meu portfólio</strong>, eu quero criar um produto que tenha chances reais de ser publicado e comercializado, e que talvez isto seja o início para eu abrir uma empresa.</p>
<p style="text-align: justify;">Embora eu tenha escolhido uma tecnologia simples, e um modelo de jogo simples, vou <strong>focar no que realmente importa: divertir e entreter os jogadores</strong> com um jogo muito bom! Portanto, neste projeto o Game Design vai ser muito importante. Devido a esta importância eu ainda não finalizei muitas definições, pois quero fazer o melhor que puder. O que começou como uma idéia para um simples projeto de TCC, hoje se tornou o prelúdio de um sonho.</p>
]]></content:encoded>
			<wfw:commentRss>http://gamedeveloper.com.br/blog/2010/05/07/inicio-do-meu-projeto-de-jogo-para-tcc/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>feliz aniversário carol &#8211; the game</title>
		<link>http://gamedeveloper.com.br/blog/2010/04/19/feliz-aniversario-carol-the-game/</link>
		<comments>http://gamedeveloper.com.br/blog/2010/04/19/feliz-aniversario-carol-the-game/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 03:25:01 +0000</pubDate>
		<dc:creator>cicanci</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[projetos]]></category>
		<category><![CDATA[feliz aniversário]]></category>
		<category><![CDATA[level design]]></category>
		<category><![CDATA[plataforma 2d]]></category>
		<category><![CDATA[xna]]></category>

		<guid isPermaLink="false">http://gamedeveloper.com.br/blog/?p=492</guid>
		<description><![CDATA[Mês passado eu li esta notícia do G1 Games sobre um casal alemão que decidiu fazer um jogo como convite de casamento, onde o objetivo é fazer a noiva salvar o noivo de um gorila (bem estilo Super Mario Bros.). Semana passada foi aniversário da minha namorada Carol e, pensando no que o casal alemão [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Mês passado eu li <a title="G1" href="http://g1.globo.com/Noticias/Games/0,,MUL1517280-9666,00-NOIVOS+CRIAM+GAME+ESPECIAL+COMO+CONVITE+DE+CASAMENTO.html" target="_blank">esta notícia</a> do G1 Games sobre um casal alemão que decidiu fazer um jogo como convite de casamento, onde o objetivo é fazer a noiva salvar o noivo de um gorila (bem estilo Super Mario Bros.). Semana passada foi aniversário da minha namorada Carol e, pensando no que o casal alemão fez,<strong> eu decidi fazer um cartão de Feliz Aniversário para ela em forma de um jogo para computador</strong>.</p>
<p style="text-align: center;">
<div id="attachment_496" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-496 " title="Feliz Aniversário Carol - The Game - Tela de abertura" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/04/feliz_aniversario_carol_01-300x225.jpg" alt="Feliz Aniversário Carol - The Game - " width="300" height="225" /><p class="wp-caption-text">Tela de abertura</p></div>
<p style="text-align: justify;">O jogo foi feito em 2 semanas, programei apenas de noite quando não tinha aulas na pós-graduação, e terminei na madrugada do aniversário dela. Decidi desenvolver utilizando XNA, que eu tenho mais facilidade para desenvolver jogos e também é muito fácil fazer jogos de plataforma em 2D, como o que eu fiz. Os sprites dos personagens (eu e ela) e as animações foram copiadas dos avatares Buddy Poke dos nossos perfis no Orkut, e o resto do cenário são imagens que encontrei na internet. Assim, foquei na programação e na mensagem que eu queria transmitir.</p>
<div id="attachment_497" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-497" title="Feliz Aniversário Carol - The Game - Gameplay" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/04/feliz_aniversario_carol_02-300x226.jpg" alt="Feliz Aniversário Carol - The Game - Gameplay" width="300" height="226" /><p class="wp-caption-text">Gameplay</p></div>
<p style="text-align: justify;">
<p style="text-align: justify;">O objetivo do jogo <strong>Feliz Aniversário Carol &#8211; The Game</strong> é atravessar o cenário, pulando pelas plataformas, coletar as letras que formam a palavra PARABENS, e me encontrar no final da fase. É um jogo bem curto e simples, pois não tive muito tempo para desenvolver (comecei uma semana antes do aniversário dela) e também não queria fazer algo longo, já que o objetivo principal era desejar um Feliz Aniversário para ela de uma maneira diferente.</p>
<div id="attachment_498" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-498" title="Feliz Aniversário Carol - The Game - Tela do final" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/04/feliz_aniversario_carol_03-300x224.jpg" alt="Feliz Aniversário Carol - The Game - Tela do final" width="300" height="224" /><p class="wp-caption-text">Tela do final</p></div>
<p style="text-align: justify;">Apesar do jogo ser simples, eu utilizei uma técnica para criar o Level Design que li em um livro de programação de jogos em java que eu tenho. A técnica é simples: a construção do cenário 2D está armazenada em um arquivo .TXT, que é lido pelo jogo e transformado no cenário que jogador vê, através da tradução de caracteres presentes no arquivo em sprites. Por exemplo, o meu arquivo .TXT possui os seguintes parâmetros reconhecidos pelo jogo:</p>
<p style="text-align: justify;">
<ul style="text-align: justify;">
<li>Número &#8220;0&#8243;: Lugares no cenário onde não possuem sprites e não existe colisão;</li>
<li>Número &#8220;1&#8243;: Traduzido no jogo como sprites com imagem de gramado com colisão;</li>
<li>Número &#8220;2&#8243;: Traduzido no jogo como sprites com imagem de tijolo com colisão;</li>
<li>Número &#8220;3&#8243;: Traduzido no jogo como um sprite com o meu avatar, onde a colisão reinicia o jogo se o jogador não formou a palavra PARABENS. Se colidir com este sprite e a palavra PARABES estiver formada, é exibido o final do jogo;</li>
<li>Letras &#8220;P&#8221;, &#8220;A&#8221;, &#8220;R&#8221;, &#8220;B&#8221;, &#8220;E&#8221;, &#8220;N&#8221; e &#8220;S&#8221;: Traduzido no jogo como sprites que representam esta letra, e o jogador deve coletar todas na ordem para ver o final do jogo.</li>
</ul>
<div id="attachment_499" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-499" title="Feliz Aniversário Carol - The Game - Arquivo com Level Design" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/04/feliz_aniversario_carol_04-300x222.jpg" alt="Feliz Aniversário Carol - The Game - Arquivo com Level Design" width="300" height="222" /><p class="wp-caption-text">Arquivo com Level Design</p></div>
<p style="text-align: justify;"><strong>A vantagem de se utilizar esta técnica:</strong> qualquer um pode alterar o Level Design do jogo a qualquer momento, sem precisar compilar novamente o projeto, é bem simples e fácil de usar para testar a jogabilidade e complexidade de um jogo, mudando rapidamente o cenário para corrigir erros de game design ou melhorar a experiência do jogador.</p>
<p style="text-align: justify;"><strong>A desvantagem de se utilizar esta técnica:</strong> dependendo do tamanho do level criado em um arquivo .TXT, o jogo pode ficar muito lento. O carregamento dos dados do arquivo e a transformação em um array de sprites não é a parte mais demorada, o problema real é verificar colisão e movimentar TODOS os sprites a cada loop. Neste jogo, por exemplo, o level design que eu montei contém 1841 sprites que são movimentados e tem a sua colisão verificada a cada loop do jogo. Assim, esta técnica fica inviável em jogos com level muito grande.</p>
<p style="text-align: justify;">A desvantagem pode parecer maior do que a vantagem de se utilizar esta técnica em jogos de plataforma 2D, mas em outros tipos de jogos pode ser bem útil e não pesar tanto, como em puzzles ou jogos de estratégia onde os cenários são menores. Ainda sim, é uma técnica interessante para brincar e estudar, por ser simples de programar e mostrar resultados rapidamente.</p>
<p style="text-align: justify;"><a title="Download" href="http://www.qubit.com.br/cicanci/games/FelizAniversarioCarolTheGame_20100416.zip" target="_blank"><strong>Neste link está o executável e o instalador deste jogo</strong></a>. Na raiz do jogo está o arquivo <strong>LevelDesign.TXT</strong>, que pode ser editado para mudar o cenário de qualquer maneira, lembrando que quanto maior o cenário, mais lento poderá ficar o jogo. Todo o meu trabalhou valeu muito a pena, pois <strong>ela adorou este presente diferente</strong>. Ah, a trilha sonora é a música Envelheço na Cidade, da banda IRA!, que ficou perfeita no jogo!</p>
]]></content:encoded>
			<wfw:commentRss>http://gamedeveloper.com.br/blog/2010/04/19/feliz-aniversario-carol-the-game/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>inteligência artificial nos jogos digitais</title>
		<link>http://gamedeveloper.com.br/blog/2010/04/02/inteligencia-artificial-nos-jogos-digitais/</link>
		<comments>http://gamedeveloper.com.br/blog/2010/04/02/inteligencia-artificial-nos-jogos-digitais/#comments</comments>
		<pubDate>Sat, 03 Apr 2010 02:19:35 +0000</pubDate>
		<dc:creator>cicanci</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[I.A.]]></category>
		<category><![CDATA[inteligência artificial]]></category>
		<category><![CDATA[SDL]]></category>

		<guid isPermaLink="false">http://gamedeveloper.com.br/blog/?p=479</guid>
		<description><![CDATA[Em muitos jogos, a Inteligência Artificial é a principal responsável pela diversão que um game proporciona. Por exemplo, você consegue imaginar jogos como CALL OF DUTY ou GTA sem a inteligência que os NPCs possuem? Segundo este artigo do David Wong, a aprimoração da I.A. nos jogos é uma das coisas que os jogadores hardcore [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Em muitos jogos, a Inteligência Artificial é a principal responsável pela diversão que um game proporciona. Por exemplo, você consegue imaginar jogos como CALL OF DUTY ou GTA sem a inteligência que os NPCs possuem? Segundo este <a title="Gamer Manifesto" href="http://www.cracked.com/article_15748_gamers-manifesto.html" target="_blank">artigo do David Wong</a>, a aprimoração da I.A. nos jogos é uma das coisas que os jogadores hardcore desejam. Quanto mais real, melhor para a experiência do usuário.</p>
<p style="text-align: justify;">A I.A. é muito importante, mas alguns jogos ficam perfeitos com uma<strong> I.A. simples</strong> e limitada, ao contrário de jogos como SPORE que deve ter uma implementação absurda de<strong> Redes Neurais</strong>. O desenvolvedor de jogos deve conhecer os principais algoritmos de I.A., mas não é necessário sempre usá-los em todos os projetos. Na pós-graduação, tivemos uma matéria dedicada a I.A. nos jogos digitais, onde o professor <a title="Murilo Garcia" href="http://www.murilogarcia.com.br" target="_blank">Murilo Garcia</a> apresentou as principais técnicas e quais problemas elas ajudam a resolver.</p>
<p style="text-align: justify;">Como trabalho para avaliação, tivemos que implementar técnicas de I.A. que serão úteis em nossos TCCs. Abaixo está uma descrição do techdemo que fiz:</p>
<div id="attachment_484" class="wp-caption aligncenter" style="width: 560px"><img class="size-full wp-image-484" title="Techdemo de Inteligência Artificial" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/04/ia_techdemo2.JPG" alt="Techdemo de Inteligência Artificial" width="550" height="206" /><p class="wp-caption-text">Imagem do Techdemo de Inteligência Artificial</p></div>
<blockquote>
<p style="text-align: justify;">Neste techdemo o quadrado verde fica patrulhando o canto superior esquerdo da tela, enquanto o usuário/jogador controla o quadrado azul com as teclas direcionais do teclado.</p>
<p style="text-align: justify;">O quadrado verde fica no estado de patrulha enquanto o quadrado azul estiver a certa distância dele. Quando o quadrado azul se aproximar, o quadrado verde ficará vermelho e mudará o seu comportamento para perseguição do quadrado azul.</p>
<p style="text-align: justify;">No estado de perseguição, o quadrado azul deverá fugir, até ficar um pouco distante do quadrado vermelho. Quando estive longe do quadrado azul, o quadrado vermelho volta para o estado de patrulho no canto superior esquerdo e ficará novamente verde.</p>
<p style="text-align: justify;">Para a troca do comportamento do quadrado verde/vermelho foi feita uma máquina de estado, que varia entre Patrulha e Perseguição. Quando o quadrado está verde, a patrulha é fixa no canto superior esquerdo, sendo que esquete quadrado sempre voltará para patrulhar o seu canto quando o estado de Perseguição se tornar Patrulha.</p>
<p style="text-align: justify;">No estado de perseguição, com o quadrado tornando-se vermelho, o quadrado azul é perseguido em uma velocidade constante, pouco inferior à velocidade do jogador, e só muda de estado quando a distância entre os dois quadrados se tornar grande o bastante para o quadrado verde voltar a patrulhar seu canto.</p>
<p style="text-align: justify;">Este techdemo foi desenvolvido com C++ e SDL, utilizando o Visual Studio 2008.</p>
</blockquote>
<p style="text-align: justify;">A implementação das técnicas citadas pode não ser a mais perfeita do mundo, mas se você quiser ver como foi feita,<a title="Código Fonte" href="http://pastie.org/901265" target="_blank"><strong> o código fonte está neste link</strong></a>. Qualquer dúvida é só comentar aqui!</p>
<p style="text-align: justify;">Vou aproveitar este post sobre I.A. e indicar mais um livro, este é um dos que foi utilizado pelo professor como bibliografia desta matéria, o <strong>Programming Game AI by Example</strong> de MatBuckland, que ensina vários conceitos e algoritmos de I.A. com exemplos de implementação. Este livro trata I.A. no geral, não exclusivamente para games, mas praticamente tudo que está nele é aplicável em um jogo digital:</p>
<p style="text-align: justify;">
<div id="attachment_487" class="wp-caption aligncenter" style="width: 308px"><a href="http://www.amazon.com/Programming-Game-Example-Mat-Buckland/dp/1556220782/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1270260740&amp;sr=8-2" target="_blank"><img class="size-full wp-image-487 " title="Programming Game AI by Example" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/04/programming-game-ai-by-example.jpg" alt="Programming Game AI by Example" width="298" height="450" /></a><p class="wp-caption-text">Programming Game AI by Example</p></div>
]]></content:encoded>
			<wfw:commentRss>http://gamedeveloper.com.br/blog/2010/04/02/inteligencia-artificial-nos-jogos-digitais/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>empreendedorismo na indústria de games</title>
		<link>http://gamedeveloper.com.br/blog/2010/04/01/empreendedorismo-na-industria-de-games/</link>
		<comments>http://gamedeveloper.com.br/blog/2010/04/01/empreendedorismo-na-industria-de-games/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 11:44:22 +0000</pubDate>
		<dc:creator>cicanci</dc:creator>
				<category><![CDATA[indústria de games]]></category>
		<category><![CDATA[empreendedorismo]]></category>
		<category><![CDATA[fgvcenn]]></category>
		<category><![CDATA[plano de negócios]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://gamedeveloper.com.br/blog/?p=468</guid>
		<description><![CDATA[Um dos objetivos da pós-graduação que estou fazendo é preparar o aluno para abrir uma empresa de games e procurar um publisher para publicar nossos jogos. No final do ano os TCCs, que são demos de jogos, serão apresentados a um publisher, e se tudo der certo, pode ser o que jogo seja desenvolvido e [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Um dos objetivos da pós-graduação que estou fazendo é preparar o aluno para abrir uma empresa de games e procurar um publisher para publicar nossos jogos. No final do ano os TCCs, que são demos de jogos, serão apresentados a um publisher, e se tudo der certo, pode ser o que jogo seja desenvolvido e publicado. Esta é uma iniciativa muito legal do SENAC, pois faz nossos trabalhos terem mais sentido ao final do curso.</p>
<p style="text-align: justify;">Para isto, temos uma matéria muito importante no sentido de negócios, que é Empreendedorismo. Um fato curioso é que os dois professores que nos deram a matéria (metade da matéria cada um) não tem conhecimento da indústria de games, mas se mostraram bons ouvintes para entender as características únicas desta indústria. Estas aulas foram legais, principalmente pela grande experiência deles em empreendedorismo, já que são do <a title="FGVCENN" href="http://www.fgvsp.br/cenn/" target="_blank">FGVcenn</a> (Centro de Empreendedorismo e Novos Negócios da FGV). Em alguns momentos era engraçado a falta de conhecimento deles em coisas que para nós eram claras.</p>
<p style="text-align: justify;">Nesta matéria, o projeto foi desenvolver um Plano de Negócios para o nosso TCC, utilizando <a title="Roteiro Plano de Negócios" href="http://www.eaesp.fgvsp.br/subportais/Cenn/Roteiro_Cengage.pdf" target="_blank">este roteiro</a>. Inicialmente a idéia era criar uma empresa com um produto, que é o nosso jogo, porém todos preferiram criar um Modelo de Negócios com foco em um produto, já que este Plano de Negócios será apresentado a um publisher que está interessado no produto.</p>
<p style="text-align: justify;">Fazer um Plano de Negócios não é fácil. É necessário juntar muita informação para embasar o produto que queremos desenvolver, e responder perguntas como &#8220;Qual o diferencial deste jogo que o tornará um sucesso e por quê?&#8221;. Uma boa fonte de informações sobre a indústria brasileira de games é o site da <a title="Abragames" href="http://www.abragames.org/page.php?id=downloads" target="_blank">Abragames</a>, porém as pesquisas estão um pouco desatualizadas, mas serve como uma base.</p>
<p style="text-align: justify;">Informações sobre a indústria de games no mundo inteiro são mais fáceis de encontrar na internet ou em sites como <a title="Gamasutra" href="http://www.gamasutra.com/" target="_blank">GamaSutra </a>e <a title="GamesIndustry" href="http://www.gamesindustry.biz/" target="_blank">GamesIndustry</a>. Outra ferramenta legal é o <a title="google trends" href="http://www.google.com/trends" target="_blank">Google Trends</a>, onde você pode pesquisar a quantidade de pesquisas que um ou mais termos tiveram nos últimos anos e alguns fatos que marcaram este termo, como, por exemplo,<a title="Comparativo" href="http://www.google.com/trends?q=wii%2C+xbox+360%2C+ps3" target="_blank"> este comparativo entre Wii, Xbox 360 e PS3</a>.</p>
<p style="text-align: justify;">Vou finalizar este post com duas dicas sobre empreendedorismo que o <a title="Augusto Camargo" href="http://augustocamargo.com/" target="_blank">Augusto Camargo</a> deu em um aula, que foi convidado por um dos professores para conversar conosco:</p>
<ul style="text-align: justify;">
<li>O foco do negócio não é desenvolver um produto, e sim a emoção que ele irá proporcinar ao usuário final (no caso de games, não basta ter gráficos perfeitos e controles de movimentos, tem que divertir e fazer o jogador se sentir bem e feliz);</li>
<li>Quando fizer o planejamento do fluxo de caixa, teste a projeção da empresa nos próximos meses em cenários ruins, como metade do volume vendido ou metade do faturamento, e veja se a empresa sobrevive (é algo muito simples de fazer com um Plano de Negócios, e quase todas as empresas novas quebram nesta simulação).</li>
</ul>
<p style="text-align: justify;">Eu pretendo escrever mais posts sobre a indústria de games e também sobre como começar uma empresa de games no Brasil (startup), qual tipo de jogo é mais lucrativo aqui, onde e como exportar um game produzido aqui, entre outros assuntos que eu acho interessantes e não é algo muito claro para quem quer começar uma empresa de games. Eu não sei muitas dessas coisas, mas irei pesquisar e postar aqui os resultados, já que uma das possibilidades que estudo é abrir minha própria empresa de games.</p>
<p style="text-align: justify;">O Plano de Negócios, como praticamente qualquer tipo de documento, é bem chato de fazer, mas é muito útil também. Principalmente por que quando se escreve as idéias, fica mais fácil de ver as falhas e mudar coisas. Eu mudei boa parte do GDD (Game Design Document) do meu TCC após escrever o Plano de Negócios, pois na descrição de produto e estratégia de marketing encontrei problemas para a produção do jogo.</p>
]]></content:encoded>
			<wfw:commentRss>http://gamedeveloper.com.br/blog/2010/04/01/empreendedorismo-na-industria-de-games/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Octopus Team – desenvolvimento de jogos independentes</title>
		<link>http://gamedeveloper.com.br/blog/2010/03/04/octopus-team-desenvolvimento-de-jogos-independentes/</link>
		<comments>http://gamedeveloper.com.br/blog/2010/03/04/octopus-team-desenvolvimento-de-jogos-independentes/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 01:21:26 +0000</pubDate>
		<dc:creator>cicanci</dc:creator>
				<category><![CDATA[octopus team]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[animação]]></category>
		<category><![CDATA[indie]]></category>
		<category><![CDATA[modelagem]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[xna]]></category>

		<guid isPermaLink="false">http://gamedeveloper.com.br/blog/?p=452</guid>
		<description><![CDATA[Você quer começar a trabalhar com desenvolvimento de games, mas em um mercado brasileiro em crescimento e com muita concorrência, você não consegue experiência nesta área. O que fazer então?
A melhor maneira de conseguir experiência em desenvolvimento de games e montar seu portfólio é fazer jogos, mas isso pode limitar uma pessoa sozinha, pois até [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Você quer começar a <strong>trabalhar com desenvolvimento de games</strong>, mas em um mercado brasileiro em crescimento e com muita concorrência, você não consegue experiência nesta área. O que fazer então?</p>
<p style="text-align: justify;">A melhor maneira de conseguir experiência em desenvolvimento de games e montar seu portfólio é fazer jogos, mas isso pode<strong> limitar uma pessoa sozinha</strong>, pois até mesmo o desenvolvimento de um jogo simples completo (menu, animações, som, efeitos, programação, game design, etc.) é um grande trabalho multidisciplinar, exigindo que você tenha que aprender coisas que não são o seu foco.</p>
<p style="text-align: center;"><a href="http://www.octopusteam.com.br" target="_blank"><img class="size-full wp-image-457  aligncenter" title="Octopus Team" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/03/octopus_team.jpg" alt="Octopus Team" width="460" height="240" /></a></p>
<p style="text-align: justify;">Neste caso, o melhor é criar ou participar de um <strong>grupo de desenvolvimento de jogos independentes</strong>. Muitos grupos são formandos por estudantes e entusiastas, que querem apenas aprender mais coisas em um ambiente colaborativo e assim poder focar no desenvolvimento de suas habilidades, como programação ou modelagem por exemplo.</p>
<p style="text-align: justify;">Um grupo de desenvolvimento de jogos independentes pode se tornar uma empresa após conseguir um bom entrosamento, conhecimento e experiência. Porém, inicialmente, ganhar dinheiro com jogos não deve ser a motivação de um grupo novo, <strong>você deve fazer jogos por que gosta</strong>.</p>
<p style="text-align: justify;">Para poder <strong>aumentar meu portfólio e ganhar experiência</strong> como programador e game designer eu entrei para um grupo de desenvolvimento de jogos independentes, o<a title="Octopus Team" href="http://www.octopusteam.com.br" target="_blank"> Octopus Team</a>, liderada pelo <a title="Marcio" href="http://byteseideias.blogspot.com" target="_blank">Márcio Vinícius Mello de Freitas</a>. Eu encontrei este grupo no fórum da <a title="UniDev" href="http://www.unidev.com.br" target="_blank">UniDev</a>, entrei em contato com o Márcio, falei das minhas experiências e objetivos e fui aceito. É nos<strong> fóruns de desenvolvimento de games</strong> que estes grupos são formados e também procuram novos membros. Outro fórum muito bom é o <a title="PDJ" href="http://www.programadoresdejogos.com" target="_blank">PDJ</a>.</p>
<p style="text-align: justify;">Atualmente estamos trabalhando em um<strong> jogo de estratégia em 3D</strong>, utilizando o <a title="XNA" href="http://creators.xna.com" target="_blank">XNA </a>para desenvolver. O projeto já estava iniciado quando entrei neste grupo, então muita coisa estava definida, mas mesmo assim tive liberdade para dar novas idéias. Quando o projeto estiver mais avançado falarei mais aqui sobre ele.</p>
<p style="text-align: justify;">Aproveitando o post,<strong> a Octopus Team está procurando uma pessoa para modelar personagens</strong> do nosso jogo. Não precisa ter experiência, até por que o grupo serve para aprender, mas é necessário que saiba o básico de modelagem de personagens e animação. <strong><span style="color: #3366ff;">Interessados entrar em contato pelo e-mail </span></strong><a href="mailto:contato@octopusteam.com.br"><strong><span style="color: #3366ff;">contato@octopusteam.com.br</span></strong></a> .</p>
<div id="attachment_456" class="wp-caption aligncenter" style="width: 650px"><a href="http://www.octopusteam.com.br" target="_blank"><img class="size-full wp-image-456 " title="Esboço do Cenário do Jogo" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/03/cenario7.jpg" alt="Esboço do Cenário do Jogo" width="640" height="365" /></a><p class="wp-caption-text">Esboço do Cenário do Jogo</p></div>
]]></content:encoded>
			<wfw:commentRss>http://gamedeveloper.com.br/blog/2010/03/04/octopus-team-desenvolvimento-de-jogos-independentes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>programação de jogos: main loop</title>
		<link>http://gamedeveloper.com.br/blog/2010/03/01/programacao-de-jogos-main-loop/</link>
		<comments>http://gamedeveloper.com.br/blog/2010/03/01/programacao-de-jogos-main-loop/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 23:26:55 +0000</pubDate>
		<dc:creator>cicanci</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[fixed rate]]></category>
		<category><![CDATA[game loop]]></category>
		<category><![CDATA[main loop]]></category>

		<guid isPermaLink="false">http://gamedeveloper.com.br/blog/?p=406</guid>
		<description><![CDATA[Antes de começar a estudar desenvolvimentos de games ano passado eu não imaginava o que realmente era um jogo, do ponto de vista da programação. Quem está acostumado com a estrutura de um sistema, não consegue imaginar muito bem que tipo de programa é um jogo sem estudar sua estrutura básica.
Basicamente, um jogo é um [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Antes de começar a estudar desenvolvimentos de games ano passado eu não imaginava o que realmente era um jogo, do ponto de vista da programação. Quem está acostumado com a estrutura de um sistema, não consegue imaginar muito bem que tipo de programa é um jogo sem estudar sua estrutura básica.</p>
<p style="text-align: justify;">Basicamente, <strong>um jogo é um programa em <em>loop </em>infinito</strong>. Fiquei surpreso nas primeiras aulas da pós-graduação quando percebi isso. Independente do tipo do jogo, todos têm isso em comum, chamado de <em>Main Loop</em> ou <em>Game Loop</em>, que é responsável por controlar tudo no jogo.</p>
<p style="text-align: justify;">
<div id="attachment_413" class="wp-caption aligncenter" style="width: 432px"><a href="http://www.ronkes.nl/blog/?2005-07-21-gameengine" target="_blank"><img class="size-full wp-image-413 " title="Game Loop" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/03/2005-07-21-gameloop.gif" alt="Game Loop" width="422" height="422" /></a><p class="wp-caption-text">Fonte: http://www.ronkes.nl/blog/?2005-07-21-gameengine</p></div>
<p style="text-align: justify;">A principal responsabilidade do Main Loop é receber entradas, atualizar o status do jogo e produzir saídas correspondentes, tudo isso em um ciclo contínuo, praticamente infinito. Neste ponto existe uma diferença entre o Main Loop de um jogo de PC e um jogo de console: no PC o Main Loop é finalizado quando o jogar fecha o jogo; em alguns Consoles o Main Loop é praticamente infinito, pois não existe um &#8220;sair do jogo&#8221;; em Consoles como o Nintendo Wii, é possível sair do jogo e voltar para a tela inicial do Wii, finalizando o Main Loop do jogo.</p>
<p style="text-align: center;">
<p style="text-align: justify;">Outra responsabilidade do Main Loop, que muitos iniciantes esquecem, é o <em><strong>Frame Rate</strong></em>. A taxa de quadros por segundo em que o jogo roda é importante por que sem este tipo de controle o jogo não fica sincronizado. Em alguns casos, o Frame Rate é escondido do programador e utiliza um valor default, como no XNA. Em outros, ele é obrigatório para o jogo rodar, como na SDL.</p>
<p style="text-align: justify;">O Frame Rate pode ser definido com um número que o programa deve esperar até executar o Main Loop novamente. Porém, não é simplesmente fazendo isso que o programa irá executar aquele mesmo rate sempre. Dependendo do consumo de processamento e memória, um loop pode ser mais lento do que outro, e utilizando um número fixo, o rate sempre será diferente, provocando lags para o jogador.</p>
<p style="text-align: justify;">Uma solução para este problema é descontar do Frame Rate o tempo em o Main Loop gastou em sua execução, assim, o jogo rodará sempre no mesmo frame. Por exemplo: se o Frame Rate é 30, e o Main Loop gastou 3, o programa deve aguardar 27 (30 &#8211; 3) para executar novamente o Main Loop. Sem este controle, o programa iria aguardar 33 (30 + 3) para ser executado novamente, lembrando que o tempo do Main Loop pode variar sempre e o Frame Rate é uma constante. O diagrama abaixo ilustra o funcionamento do Main Loop Fixed Rate:</p>
<p style="text-align: center;">
<div id="attachment_416" class="wp-caption aligncenter" style="width: 516px"><img class="size-full wp-image-416    " title="Main Loop Fixed Rate" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/03/main_loop_fixed_rate.gif" alt="Main Loop Fixed Rate" width="506" height="303" /><p class="wp-caption-text">Fixed Rate - Fonte: NAKAMURA, Ricardo. Técnicas de Programação de Games.</p></div>
<p style="text-align: justify;">O que escrevi neste post é algo que considero bem básico para a programação de um game, e acho que pode ser <strong>muito útil para iniciantes</strong>. Apesar de ser básico, a partir disso é possível procurar mais informações na internet, ou perguntar aqui mesmo qualquer dúvida sobre o assunto.</p>
]]></content:encoded>
			<wfw:commentRss>http://gamedeveloper.com.br/blog/2010/03/01/programacao-de-jogos-main-loop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>como montar um grid 3D com XNA</title>
		<link>http://gamedeveloper.com.br/blog/2010/02/22/como-montar-um-grid-3d-com-xna/</link>
		<comments>http://gamedeveloper.com.br/blog/2010/02/22/como-montar-um-grid-3d-com-xna/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 03:45:31 +0000</pubDate>
		<dc:creator>cicanci</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[xna]]></category>

		<guid isPermaLink="false">http://gamedeveloper.com.br/blog/?p=390</guid>
		<description><![CDATA[Uma das coisas que tenho estudando bastante ultimamente, além da Unity e de C++, é o XNA. Por ser algo gratuito e bem difundido pela Microsoft, é bem fácil de encontrar ajuda na internet sobre qualquer coisa que você quer fazer ou algum erro estranho, principalmente no fórum oficial do XNA Creators Club, além dos [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: justify">Uma das coisas que tenho estudando bastante ultimamente, além da Unity e de C++, é o XNA. Por ser algo gratuito e bem difundido pela Microsoft, é bem fácil de encontrar ajuda na internet sobre qualquer coisa que você quer fazer ou algum erro estranho, principalmente no fórum oficial do <a title="XNA Creators Club" href="http://forums.xna.com/forums/" target="_blank">XNA Creators Club</a>, além dos exemplos e tutoriais que podem ser encontrados neste site. Mesmo assim, sempre existe aquele detalhe que você não consegue encontrar ou que simplesmente não funciona do jeito que deveria.</p>
<p style="TEXT-ALIGN: justify">Isto aconteceu comigo quando estava tentando montar um Grid em 3D com XNA. Eu queria criar um método para gerar um Grid dinâmico, com o número de linhas de colunas que seriam recebidos por parâmetros. Encontrei diversas soluções, porém nenhuma funcionou do jeito que eu queria, ou não consegui adaptar para o que eu precisava. Assim, tive que estudar como fazer desenho de pontos e retas em 3D e criar meu próprio método para isto.</p>
<p style="TEXT-ALIGN: justify">Primeiro eu tinha pensando em desenhar uma célula, e depois utilizar um conjunto de células em uma classe Grid. Esta idéia não deu muito certo, pois ficaria bem complicado gerenciar o desenho de cada célula. A minha solução final ficou mais simples: criei uma classe Grid onde eu traço retas em pontos que formam o meu Grid, de acordo com o número de linhas e colunas. Abaixo trecho do código responsável por montar o Grid:</p>
<div id="attachment_391" class="wp-caption aligncenter" style="width: 589px"><img class="size-full wp-image-391  " title="Código do Grid no XNA" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/02/codigo_grid01.gif" alt="Código do Grid no XNA" width="579" height="347" /><p class="wp-caption-text">Código do Grid no XNA</p></div>
<p style="TEXT-ALIGN: justify">Após montar o Grid em uma variável VertexPositionColor, basta utilizar o método DrawUserPrimitives() desenhando uma LineList. Para visualizar o Grid é necessário outras coisas além disso, como definir uma matrix de View e uma de Projeção, que são coisas bem mais básicas do que a lógica de desenhar um Grid. Além do XNA Creators Club, existe o <a title="MSDN" href="http://msdn.microsoft.com/en-us/library/bb200104.aspx" target="_blank">XNA MSDN Library</a> da Microsoft, que também é muito útil para aprender.</p>
<div id="attachment_392" class="wp-caption aligncenter" style="width: 574px"><img class="size-full wp-image-392 " title="Desenho do Grid em 3D" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/02/grid_01.jpg" alt="Desenho do Grid em 3D" width="564" height="442" /><p class="wp-caption-text">Desenho do Grid em 3D</p></div>
<div id="attachment_393" class="wp-caption aligncenter" style="width: 574px"><img class="size-full wp-image-393 " title="Desenho do Grid em 3D" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/02/grid_02.jpg" alt="Desenho do Grid em 3D" width="564" height="442" /><p class="wp-caption-text">Desenho do Grid em 3D</p></div>
<p style="TEXT-ALIGN: justify">Espero que isto seja útil para quem está aprendendo XNA. Qualquer dúvida é só perguntar nos comentários! </p>
]]></content:encoded>
			<wfw:commentRss>http://gamedeveloper.com.br/blog/2010/02/22/como-montar-um-grid-3d-com-xna/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>game engine unity</title>
		<link>http://gamedeveloper.com.br/blog/2010/02/09/game-engine-unity/</link>
		<comments>http://gamedeveloper.com.br/blog/2010/02/09/game-engine-unity/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 22:19:32 +0000</pubDate>
		<dc:creator>cicanci</dc:creator>
				<category><![CDATA[game engine]]></category>
		<category><![CDATA[unity]]></category>
		<category><![CDATA[unity3d]]></category>

		<guid isPermaLink="false">http://cicanci.wordpress.com/?p=339</guid>
		<description><![CDATA[
No final do ano passado, duas grandes game engines ganharam versões gratuitas, a Unity e a Unreal Development Kit (UDK). Talvez estas foram as melhores notícias para os desenvolvedores independentes e estudantes no em 2009, pois agora podemos desenvolver jogos utilizando game engines profissionais. Pra mim foi muito bom, pois poderei utilizar uma destas game [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://unity3d.com/" target="_blank"><img class="aligncenter size-full wp-image-345" title="Unity" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/02/unitylogo2.jpg" alt="Unity" width="327" height="180" /></a></p>
<p style="text-align:justify;">No final do ano passado, <strong>duas grandes game engines ganharam versões gratuitas</strong>, a <a title="Unity3D" href="http://unity3d.com/" target="_blank">Unity</a> e a <a title="UDK" href="http://www.udk.com/" target="_blank">Unreal Development Kit (UDK)</a>. Talvez estas foram as melhores notícias para os desenvolvedores independentes e estudantes no em 2009, pois agora <strong>podemos desenvolver jogos utilizando game engines profissionais</strong>. Pra mim foi muito bom, pois poderei utilizar uma destas game engines no meu TCC neste ano. </p>
<p style="text-align:justify;">Na pós-graduação, em uma aula de Game Engine, meu grupo fez uma apresentação da Unity e um tech demo. A Unity tinha uma versão indie, que custava $200, que não é algo caro para uma pequena empresa, mas para quem quer apenas estudar isto não vale muito a pena, e foi esta versão que ficou gratuita. Existe também uma versão Pro, com muitas outras coisas a mais pelo preço de $1499. </p>
<p style="text-align:justify;">
<div id="attachment_348" class="wp-caption aligncenter" style="width: 510px"><a href="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/02/interface1.jpg"><img class="size-full wp-image-348 " title="Interface da Unity" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/02/interface1.jpg" alt="Interface da Unity" width="500" height="321" /></a><p class="wp-caption-text">Interface da Unity</p></div>
<p style="text-align:justify;">Minha primeira coisa que pensei ao abrir a Unity foi &#8220;certo&#8230; e agora?&#8221;. Para quem nunca viu, tudo pode parecer confuso, mas lembra bastante uma interface de um software de modelagem 3D como o Softimage XSI. Estudando a interface da Unity podemos aprender muitas coisas, pois quase tudo é intuitivo. <strong>O que realmente é necessário é ter uma noção de ambientes 3D</strong> e estudar algumas técnicas utilizadas em modelagem, isto pode facilitar bastante. </p>
<p style="text-align:justify;">Com a versão gratuita, podemos desenvolver jogos para plataforma <a title="Windows, MAC e Web" href="http://unity3d.com/unity/features/deployment" target="_blank">Windows, MAC e Web</a> (para Web é necessário instalar um plugin, semelhante ao flash). Existem complementos para a versão Pro que permite o desenvolvimento de jogos para <a title="iPhone" href="http://unity3d.com/unity/features/iphone-publishing" target="_blank">iPhone</a> e <a title="Wii" href="http://unity3d.com/unity/features/wii-publishing" target="_blank">Wii</a>. A <a title="Programação" href="http://unity3d.com/unity/features/scripting" target="_blank">programação</a> pode ser feita utilizando C# (a Unity é baseada no <a title="Mono" href="http://mono-project.com/Main_Page" target="_blank">Mono</a>), JavaScript ou <a title="Boo" href="http://boo.codehaus.org/" target="_blank">Boo</a> (uma variação de Python, feita por um brasileiro). </p>
<p style="text-align:justify;">
<div id="attachment_349" class="wp-caption aligncenter" style="width: 385px"><a href="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/02/unityiphone.jpg"><img class="size-full wp-image-349 " title="Unity no iPhone" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/02/unityiphone.jpg" alt="Unity no iPhone" width="375" height="269" /></a><p class="wp-caption-text">Unity no iPhone</p></div>
<p style="text-align:justify;">Podemos criar <a title="Modelos 3D" href="http://unity3d.com/unity/features/asset-importing" target="_blank">modelos 3D</a> em diversos softwares e importar na Unity,de uma maneira incrivelmente fácil e simples: basta colocar o modelo no diretório da &#8220;Assets&#8221; do seu projeto, que ela automaticamente adiciona dentro do projeto, nem é necessário abrir e fechar o projeto. Isto é tão útil que podemos alterar o modelo salvo em Assets e visualizar o resultado dentro da Unity. </p>
<p style="text-align:justify;">Apensar de ser um ambiente 3D, podemos criar um jogo em 2.5D, como o este <a title="Tutorial Plataforma" href="http://unity3d.com/support/resources/tutorials/3d-platform-game" target="_blank">exemplo de tutorial</a> de jogo de plataforma. Outro ponto forte desta game engine é a utilização de <a title="Audio e Video" href="http://unity3d.com/unity/features/audio-and-video" target="_blank">audio e vídeo</a> (vídeo só na versão Pro) nos jogos, da mesma maneira simples e prática que importamos um modelo 3D. </p>
<p style="text-align:justify;">Estas são algumas das <em>features</em> da Unity: </p>
<ul style="text-align:justify;">
<li>Editor integrado: Fácil utilização, pode ser customizado, funciona com drag n&#8217; drop</li>
<li>Gráficos: Renderização em tempo real, sistemas de partículas, suporte a DirectX e OpenGL</li>
<li>Importação de modelos: Aceita diversos formatos, com suporte a texturas, bones e animações</li>
<li>Publicação: Windows, Mac, Web, Wii e iPhone</li>
<li>Shaders, Luz e Sombra: Efeitos prontos, elementos naturais, editor de shaders</li>
<li>Rede: Suporte a sincronização, acesso remoto e conexão</li>
<li>Física: Utiliza a PhysX da Nvidia, e possui recursos específicos, como componente de física para rodas, por exemplo</li>
<li>Programação: Suporte a C#, JavaScript e Boo. Pode ser integrado à uma solução do Visual Studio</li>
<li>Debug: Todos os parâmetros de qualquer objeto ou modelo podem ser alterados em tempo de execução, além de existir a possibilidade de pausar a execução para verificar parâmetros</li>
</ul>
<p style="text-align:justify;">Existem muitas outras <a title="Unity features" href="http://unity3d.com/unity/" target="_blank"><em>features</em></a> na Unity, porém estas acima já a torna uma grande game engine, <strong>cheia de recursos</strong>. Além desta parte técnica, existe algo na Unity que merece muito destaque: sua <a title="Unity comunidade" href="http://unity3d.com/support/community" target="_blank">comunidade</a>. Através do site, podemos entrar em contato direto com os desenvolvedores para dar sugestões e feedback. Existem também <strong>foruns diversos e ativos</strong>, com pessoas dispostas a te ajudar sempre que for necessário, além de um vasto material que inclui um <strong>FAQ, Wiki, dicas, repositório de exemplos e um chat</strong> (IRC). Ah, também existe uma revista publicada por eles, a <strong>Unity Develop Magazine</strong>. </p>
<p style="text-align:justify;">Além de tudo isso, ainda podemos contar com um completo <a title="Unity suporte" href="http://unity3d.com/support/" target="_blank">suporte</a>, que oferece documentação técnica, manual, referências, exemplos de script, tutoriais, exemplos de projetos, vídeo aulas, artigos, e recursos gratuitos, como plugins desenvolvidos pela comunidade. </p>
<p style="text-align:justify;">Por enquanto encontrei apenas um livro dedicado a Unity, o <a title="Unity book" href="http://www.amazon.com/Unity-Game-Development-Essentials-Goldstone/dp/184719818X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1265712227&amp;sr=8-1" target="_blank">Unity Game Development Essentials</a>, do <a title="Will Goldstone" href="www.learnmesilly.com" target="_blank">Will Goldstone</a>. Em seu site, existem <strong>excelentes vídeo aulas sobre a Unity</strong>, e outros softwares. Eu fiz meu tech demo depois de assistir a primeira vídeo aula. </p>
<div id="attachment_346" class="wp-caption aligncenter" style="width: 253px"><a href="http://www.amazon.com/gp/product/184719818X/ref=s9_simh_gw_p14_i1?pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=center-1&amp;pf_rd_r=0E5GZTF1XGQFG3C9KGFX&amp;pf_rd_t=101&amp;pf_rd_p=51471022&amp;pf_rd_i=507846" target="_blank"><img class="size-medium wp-image-346  " title="Desenvolvimento de jogos com a Unity" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/02/livro.jpg?w=243" alt="Unity Game Development Essentials" width="243" height="300" /></a><p class="wp-caption-text">Desenvolvimento de jogos com a Unity</p></div>
<p style="text-align:justify;">Hoje, grande parte dos jogos feitos com a Unity são para PC e/ou Mac (inclusive um MMO), enquanto <strong>jogos para Web enfrentam a barreira do Flash</strong>. Mais de 325 jogos foram feitos e publicados para iPhone, porém poucos foram feitos para Wii. </p>
<p style="text-align:justify;">Ao abrir a Unity pela primeira vez, após instalar, ela carrega um projeto demo, que é de uma ilha que utiliza diversos recursos. Este demo é muito legal para estudar, pois possui uma infinidade de pequenos detalhes que mostram o poder da Unity. </p>
<p style="text-align:justify;">
<div id="attachment_353" class="wp-caption aligncenter" style="width: 510px"><a href="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/02/islands1.jpg"><img class="size-full wp-image-353" title="Demo da Ilha na Unity" src="http://gamedeveloper.com.br/blog/wp-content/uploads/2010/02/islands1.jpg" alt="Demo da Ilha na Unity" width="500" height="247" /></a><p class="wp-caption-text">Demo da Ilha na Unity</p></div>
<p style="text-align:justify;">Vale muito a pena dar uma olhada no site da Unity, que possui muitas coisas legais para os desenvolvedores. Existem também muitos sites e tutoriais espalhados pela internet, estes são alguns que eu já usei e recomendo: </p>
<ul style="text-align:justify;">
<li>Learn Me Silly: <a title="link1" href="http://www.learnmesilly.com/" target="_blank">http://www.learnmesilly.com/</a></li>
<li>Learn Unity3D: <a title="link2" href="http://learnunity3d.com/" target="_blank">http://learnunity3d.com/</a></li>
<li>Unify Community: <a title="link3" href="http://www.unifycommunity.com/" target="_blank">http://www.unifycommunity.com/</a></li>
<li>Unity: <a title="link4" href="http://unity3d.com/" target="_blank">http://unity3d.com/</a></li>
</ul>
<p style="text-align:justify;">Eu comecei a estudar a Unity há pouco tempo, então não fiz muita coisa além de &#8220;brincar&#8221;. Provavelmente irei utilizar esta game engine no meu TCC da Pós-Graduação, e durante o desenvolvimento irei publicar aqui tutoriais sobre desenvolvimento de jogos com a Unity. Se quiser ver o <strong>tech demo que fiz</strong>, <a title="Download tech demo" href="http://www.gamedeveloper.com.br/cicanci/games/UnityLesson01_BrunoCicanci_20100209.rar" target="_blank">clique aqui para fazer o download </a>(versão para windows).</p>
]]></content:encoded>
			<wfw:commentRss>http://gamedeveloper.com.br/blog/2010/02/09/game-engine-unity/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>