<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Abaixo o Nível!</title>
	<atom:link href="http://abaixonivel.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://abaixonivel.wordpress.com</link>
	<description>As experiencias de um pobre estudante que acha que sabe programar jogos 8)</description>
	<lastBuildDate>Fri, 18 Nov 2011 22:12:16 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='abaixonivel.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Abaixo o Nível!</title>
		<link>http://abaixonivel.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://abaixonivel.wordpress.com/osd.xml" title="Abaixo o Nível!" />
	<atom:link rel='hub' href='http://abaixonivel.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Movendo-se</title>
		<link>http://abaixonivel.wordpress.com/2011/11/18/movendo-se/</link>
		<comments>http://abaixonivel.wordpress.com/2011/11/18/movendo-se/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 22:12:16 +0000</pubDate>
		<dc:creator>Tales</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://abaixonivel.wordpress.com/?p=94</guid>
		<description><![CDATA[Depois de um tempo sem blogar, fui parar nesse novo blog junto com os amigos. Aos  poucos estou movendo todo o conteúdo daqui para lá. O endereço é: http://yepgames.wordpress.com Vão pra lá! Filed under: Geral<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abaixonivel.wordpress.com&amp;blog=10694960&amp;post=94&amp;subd=abaixonivel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Depois de um tempo sem blogar, fui parar nesse novo blog junto com os amigos. Aos  poucos estou movendo todo o conteúdo daqui para lá. O endereço é: <a href="http://yepgames.wordpress.com">http://yepgames.wordpress.com</a></p>
<p>Vão pra lá!</p>
<br />Filed under: <a href='http://abaixonivel.wordpress.com/category/geral/'>Geral</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/abaixonivel.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/abaixonivel.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/abaixonivel.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/abaixonivel.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/abaixonivel.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/abaixonivel.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/abaixonivel.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/abaixonivel.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/abaixonivel.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/abaixonivel.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/abaixonivel.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/abaixonivel.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/abaixonivel.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/abaixonivel.wordpress.com/94/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abaixonivel.wordpress.com&amp;blog=10694960&amp;post=94&amp;subd=abaixonivel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://abaixonivel.wordpress.com/2011/11/18/movendo-se/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a3992e2e13c3b7b177c54f08e6926569?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">tales84</media:title>
		</media:content>
	</item>
		<item>
		<title>MiniEngine Parte 2: Modulo de Vídeo</title>
		<link>http://abaixonivel.wordpress.com/2009/12/05/miniengine-parte-2-modulo-de-video/</link>
		<comments>http://abaixonivel.wordpress.com/2009/12/05/miniengine-parte-2-modulo-de-video/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 18:12:19 +0000</pubDate>
		<dc:creator>NoSignal</dc:creator>
				<category><![CDATA[Projetos]]></category>

		<guid isPermaLink="false">http://abaixonivel.wordpress.com/?p=62</guid>
		<description><![CDATA[Finalmente vamos codificar um pouco. Começaremos pelo módulo de vídeo, pois a pouco a se fazer nele. Basicamente iremos encapsular a SDL_Surface em uma classe. Para melhor ajuste, iremos criar classes auxiliares para ajudar no tratamento de cores, posicionamento e area. Haverá uma única classe nova.  Poderíamos deixar como está, mas como nossa intenção é [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abaixonivel.wordpress.com&amp;blog=10694960&amp;post=62&amp;subd=abaixonivel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Finalmente vamos codificar um pouco. Começaremos pelo módulo de vídeo, pois a pouco a se fazer nele. Basicamente iremos encapsular a SDL_Surface em uma classe. Para melhor ajuste, iremos criar classes auxiliares para ajudar no tratamento de cores, posicionamento e area.</p>
<p>Haverá uma única classe nova.  Poderíamos deixar como está, mas como nossa intenção é fazer uma engine, vamos adicionar uma classe abstrata que encapsule parte do ciclo de atualização do Video, mas que tenha um método virtual que seja chamado dentro deste ciclo. Assim, o comportamento geral é aproveitado por todas as classes derivadas e comportamento específico é adicionado simplesmente sobrescrevendo um metodo.</p>
<h2>Classes</h2>
<p>Veremos um resumo de cada classe a seguir. Adotamos a convenção de classes auxiliares que não tenham  metodos com algoritmos complexos terão seus nomes começando com minúsculas e as demais com começam com minúsculas. métodos e atributos sempre começam com minúscula.</p>
<p>Classes simples que não mudarão seus atributos os deixão como public e são descritas com <em>struct</em>. Todas as outras usam <em>class</em>.</p>
<h3>point</h3>
<p>Esta é uma classe auxiliar, que basicamente representa uma posição no eixo (x,y) da tela. A idéia é ser o mais simples possível, então codificamos como uma struct e deixamos seus atributos públicos, para serem acessados diretamente. Não possui métodos, apenas um construtor <em>default</em> e um construtor que recebe o x e y.</p>
<p>A idéia desta classe é basicamente representar uma coordenada.</p>
<h3>Rect</h3>
<p>Classe que representa uma determinada area, com uma posição (x,y) e um tamanho (width, height). Atualmente a utilidade desta classe é basicamente para desenhar retangulos na tela e para copiar apenas uma parte de uma surface. Mas também pode ser útil para detectar colisões na tela. A idéia é simples, se a interseção de dois retangulos não for vazia (tiver area maior que 0), é sinal que eles colidem.</p>
<p>Para isso temos os métodos intersection(), que retorna a interseção entre dois Rects e empty(), que checa se area é nula (vazia). Assim, um forma de descobrir se ocorreu uma colisão seria:</p>
<pre style="padding-left:30px;"><span style="text-decoration:underline;">if</span><span style="color:#3366ff;">(</span> <span style="color:#ff6600;">!</span> <span style="color:#3366ff;">(</span><em>r1</em>.intersection<span style="color:#3366ff;">(</span><em>r2</em><span style="color:#3366ff;">)</span>.empty<span style="color:#3366ff;">())</span>
<span style="color:#3366ff;">{</span>
    <span style="color:#339966;">/* colidiu */</span>
    ...
<span style="color:#3366ff;">}
</span></pre>
<p>Por questões de simplicidade, esta classe tem todos os atributos públicos e está escrita como uma struct. Como não planejo trasformar esta engine de 2d para 3d, esses atributos não devem mudar, o que justifica esta decisão.</p>
<h3>color</h3>
<p>Esta é uma classe auxiliar também. A idéia é representar uma cor no formato RGB ou RGBA.  Assim como point, esta classe é escrita como uma struct, como todos os atributos publicos.</p>
<h3>Surface</h3>
<p>A maior e principal classe desse módulo, representa uma surface. Uma surface é, a grosso modo, uma imagem que podemos manipular. A própria janela do programa é para a sdl uma surface. Nosso encapsulamento também vai considerar assim.</p>
<p>A Surface (sempre que começar em maiúsculo eu me refiro a classe) só tem um atributo, que é um ponteiro para uma SDL_Surface. Esse atributo é privado, pois vamos definir seu valor (isto a SDL_Surface para o qual aponta) no construtor. Assim no destrutor ele pode desalocar esta surface. Para garantir isso, também impedimos a construção por cópia (nada de copy constructors) e também não temos nenhum construtor público que aceite uma SDL_Surface.</p>
<p>Temos então dois construtores: Um que aceita uma string e carrega de um arquivo  e outro que recebe a altura, largura e bpp e Aloca ele. Ambos usam apenas as funções da biblioteca SDL. Isso implica que só podemos carregar arquivos &#8220;.bmp&#8221;. Corrigir isso é fácil se usarmos a SDL_Image, mas como me propus a usar apenas a SDL nessa primeira iteração, isso fica prar depois.</p>
<p>Duas funções estáticas importantes são setupScreen() e getScreen(). A primeira chama a SDL_SetVideoMode() e retorna o resultado encapsulado em uma Surface (o resultado é a prórpia tela do jogo). A segunda apeanas retorna a Surface da tela e só deve ser chamada se setupScreen() já tiver sido chamada ao menos uma vez.</p>
<p>Temos a função blit, que permite colar uma imagem dentro de outra. Há duas versões, uma que permite colar a imagem inteira, e outra que permite escolher uma parte da imagem.</p>
<p>Aí temos algumas funções básicas de manipulação de paleta, de controle de colorkey (uma cor que é ignorada na hora de desenhar), de alpha de surface (a transparencia da imagem toda). Todas são bastante auto-explicativas e por isso não vou me alongar sobre elas.</p>
<p>Temos funções de manipulação direta de imagem. Apesar de também serem bem auto-explicativas, temos que prestar atenção que cada função tem duas versões, uma que aceita uma unsigned e outra que aceita color. Este unsigned representa a cor no formato interno da surface, que pode variar bastante. Por isso a não ser que esteja trabalhando com paletas (8bits) é melhor evitar usar essas versões, a não ser que saiba o que esta fazendo.</p>
<p>E por último temos a função getInternalImageData(). Basicamente ele retorna um ponteiro para a SDL_Surface contida internamente. Se por acaso for necessário para integrar com alguma outra biblioteca, use isso.</p>
<h3>VideoManager</h3>
<p>Esta classe abstrata serve para administrar a sua janela. Basicamente o que ela faz é encapsular as tarefas de criar a Surface da janela (o método setup()) e de atualizar (update()) a surface. A grande utilidade desta classe está no fato do método update() chamar o método draw(screen). O método draw() é virtual puro. Isto significa que a classe VideoManager não pode ser instanciada, serve apenas como base para outra classe que só será instanciável se esta implementar o método draw.</p>
<p>Uma classe que herdeira que implemente draw() reaproveita o código de update, e implementa seu próprio que código de atualização, que pode incluir qualquer coisa. No core, usaremos um classe desse tipo para desenhar os objetos na tela.</p>
<h2>Código Teste</h2>
<p>Há um pequeno código de teste, que basicamente cria duas imagens, uma carregada de um arquivo e outra criada dinamicamente e preenchida na cor vermelha.</p>
<p>E a cada chamada de draw() as duas imagens são desenhadas e 1 retangulos no topo também.</p>
<p>Esse teste é composto de dois arquivos, &#8220;main.cpp&#8221; e &#8220;test_videomanager.h&#8221;, sendo último o principal. Ambos estão comentados em português.</p>
<h2>Download</h2>
<p>O código fonte e o exemplo estão <a href="http://www.4shared.com/file/166172309/cece492d/MinEng_011.html">aqui</a>.</p>
<p>O código fonte está parcialmente comentado em inglês sofrível (é mais chique <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ). A partir destes comentários eu gerei uma documentação (com <a href="http://www.stack.nl/~dimitri/doxygen/">doxygen</a>), só para experimentar. O resultado encontra-se <a href="http://www.4shared.com/file/166172327/1b4006a8/MinEng_011docs.html">aqui</a>. Acho que é bom para consultas, mas para entender o funcionamento, é melhor olhar os fontes mesmo.</p>
<p>Por enquanto é só. Em breve venho aqui com o módulo de Eventos.</p>
<p>T+</p>
<br />Publicado emProjetos  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/abaixonivel.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/abaixonivel.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/abaixonivel.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/abaixonivel.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/abaixonivel.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/abaixonivel.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/abaixonivel.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/abaixonivel.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/abaixonivel.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/abaixonivel.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/abaixonivel.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/abaixonivel.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/abaixonivel.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/abaixonivel.wordpress.com/62/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abaixonivel.wordpress.com&amp;blog=10694960&amp;post=62&amp;subd=abaixonivel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://abaixonivel.wordpress.com/2009/12/05/miniengine-parte-2-modulo-de-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7395fd8eba25a80db9ede1544c1e8184?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">NoSignal</media:title>
		</media:content>
	</item>
		<item>
		<title>MiniEngine parte 1: Organização</title>
		<link>http://abaixonivel.wordpress.com/2009/11/29/miniengine-parte-1-organizacao/</link>
		<comments>http://abaixonivel.wordpress.com/2009/11/29/miniengine-parte-1-organizacao/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 16:52:19 +0000</pubDate>
		<dc:creator>NoSignal</dc:creator>
				<category><![CDATA[Projetos]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[idéia basica]]></category>
		<category><![CDATA[organização]]></category>
		<category><![CDATA[sdl]]></category>

		<guid isPermaLink="false">http://abaixonivel.wordpress.com/?p=52</guid>
		<description><![CDATA[Antes de mostrar o código (na verdade antes de começar a fazer o código), temos que ter uma idéia do que vamos fazer. Por mais que seja difícil e chato, temos que organizar um projeto. Pensando nos componetes de um programa, normalmente temos a separação entre Lógica, e IO. Podemos utilizar está idéia, mas temos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abaixonivel.wordpress.com&amp;blog=10694960&amp;post=52&amp;subd=abaixonivel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Antes de mostrar o código (na verdade antes de começar a fazer o código), temos que ter uma idéia do que vamos fazer. Por mais que seja difícil e chato, temos que organizar um projeto.</p>
<p>Pensando nos componetes de um programa, normalmente temos a separação entre Lógica, e IO. Podemos utilizar está idéia, mas temos que adaptá-la pra não confundimos a lógica da engine com lógica do jogo em si. Portanto a divisão fica assim: <em>Core</em> contendo a lógica na engine e <em>Resources</em> contendo todo o tratamento de Entrada e Saída. Vamos nos concentrar nos <em>Resources </em>primeiro, pois sem isso não poderemos sequer testar <em>Core.</em></p>
<p><em>Resource </em>é descreve bem as tarefas testa divisão, mas podemos melhorar. Primeiro, separamos Entrada e Saida pois, em SDL, são coisas muito diferentes. A Entrada é praticamete toda coberta pelo sistema de Eventos. Por isso podemos chamar o sistema de entrada de Sistema de Eventos, que dá no mesmo. Mesmo porque na própria documentação da SDL estão agrupadas nessa categoria todas as funções básicas de entrada, mesmo aquelas que não necessáriamente precisam usar o sistema de eventos (como checar a posição do mouse ou quais teclas estão pressionadas).</p>
<p>Já o sistema de saída é mais complexo, uma vez que estamos falando de multimídia. Então, para não complicar, vamos separar a Saída em Vídeo e Som. Assim, cada um usa encapsula as funções da SDL que lhes diz respeito.</p>
<p>As funções da SDL para vídeo são bastante completas, por isso não acho que usarei nenhuma biblioteca auxiliar na primeira iteração. Já na questão do Som, devo utilizar a SDL_mixer pra tudo, pois esta auxiliar é muito completa e mais simples do que as funções de Audio da própria SDL.</p>
<p>Finalmente temos o <em>Core</em>. não há muito o que falar sobre este. ele é composto de Sprites e Cenas, e deve ter algum suporte a efeitos e transições. Questões que detalharemos quando chegar a hora de codificar.</p>
<p>Quanto ao desenvolvimento, a idéia é utilizar um ciclo de iterações. Eu não gosto muito dessa parte de ciclo de vida, etc, eu vou utilizar apenas idéia basica. Isto é, primeiro criamos uma versão funcional, mas bem simples. Após isto, faremos novas versões incrementando as funcionalidade já existentes e adicionando novas.</p>
<p>Segundo minha antiga professora de Engenharia de Software, temos que ter um plano mostrando cada fase e etc. Como eu nunca gostei muito de processos em geral, o plano vai ser bem simples:</p>
<ol>
<li>Criar toda a base da engine, mas usando apenas a SDL. Isso quer dizer que o módulo de audio não será implementado na primeira interação <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  . Mas deve ser possível fazer nem que seja um Asteroids, sem som mesmo.</li>
<li>Implementar Som</li>
<li>Implementar melhorias no Vídeo com bibliotecas auxiliares.</li>
<li>Daqui por diante eu decido depois <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </li>
</ol>
<p>A organização dos arquivos vai ser simples, similar à maioria das bibliotecas: headers na pasta include, implementação na pasta source. Quanto aos módulos, vão ser inicialmente Video, Events, Core, Audio. Cada um deles vai ter um próprio namespace com seu nome.</p>
<h2>Glosário</h2>
<h3><strong>namespace: </strong></h3>
<p><strong></strong>Uma forma de agrupar classes e funções e evitar duplicidade de nomes. Funciona de forma parecida com o <strong>packages</strong> de Java. Os namespaces respeitam hierarquias, isto é se um namespace for declarado dentro de outro.</p>
<p>Qualquer item dentro de um namespace pode ser acessado da forma <strong>N::I</strong>, onde  N é o namespace e I é o item. Usando a expressão <strong>using namespace N;</strong> pode-se acessar os itens sem ter que colocar o <strong>N::</strong>, o que normalmente vai ser usado.</p>
<p>Então porque colocar namespaces? Simples, caso exista dois itens que tenham o mesmo nome, daria erro de compilação. Mas se estiverem dentro de namespaces, podemos acessa-los pelo namespace. Como <strong>N::I </strong>e  <strong>M::I.</strong> Logo o programa vai compilar sem problemas. Melhor que a solução antiga de C, que era colocar prefixos (como <strong>&#8220;SDL_&#8221;</strong> <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ), que precisam ser usados sempre, enquanto os namespaces só precisam ser lembrados quando há colisões de nome.</p>
<h3>iteração:</h3>
<p>Uma rodada de produção de um software. No final de uma iteração é produzido um programa funcional, mesmo que incompleto. No caso será produzida versões inclompetas da biblioteca no ínicio, que vão ficando menos incompletas no final.</p>
<p>Em softwares que utilizam esse método, tem que apenas que tomar cuidado para manter cada componente extensível e bem encapsulado, para evitar propragar as alterações pelo código (isto, evitar que aconteça que ao alterar A, tenha que mexer em B e C, e ao mexer em B, ter que alterar D e E, e assim sucessivamente até a loucura).</p>
<p>É um pouco mais complicado de começar do que um cascata (onde cada fase faz uma coisa e só segue adiante após terminá-la), mas a longo prazo, a facilidade de manutenções compensa e muito.</p>
<p>&#8212;-</p>
<p>Por enquanto é só. Se alguém tiver alguma dificuldade com algum termo do texto, é só me avisar que incluo no glosário. Este post vai ser alterado ao longo do tempo para corrigir erros de percepção e planejamento que certamente ocorrerão. Mas, estará restrito à primeira iteração. A segunda terá um post próprio que provavelmente será copiado e colado deste <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  .</p>
<p>T+</p>
<br />Publicado emProjetos Tagged: engine, idéia basica, organização, sdl <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/abaixonivel.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/abaixonivel.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/abaixonivel.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/abaixonivel.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/abaixonivel.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/abaixonivel.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/abaixonivel.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/abaixonivel.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/abaixonivel.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/abaixonivel.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/abaixonivel.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/abaixonivel.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/abaixonivel.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/abaixonivel.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abaixonivel.wordpress.com&amp;blog=10694960&amp;post=52&amp;subd=abaixonivel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://abaixonivel.wordpress.com/2009/11/29/miniengine-parte-1-organizacao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7395fd8eba25a80db9ede1544c1e8184?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">NoSignal</media:title>
		</media:content>
	</item>
		<item>
		<title>Instalando e Configurando o Code::Blocks com SDL no Windows</title>
		<link>http://abaixonivel.wordpress.com/2009/11/28/instalando-e-configurando-o-codeblocks-com-sdl-no-windows/</link>
		<comments>http://abaixonivel.wordpress.com/2009/11/28/instalando-e-configurando-o-codeblocks-com-sdl-no-windows/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 17:01:09 +0000</pubDate>
		<dc:creator>NoSignal</dc:creator>
				<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://abaixonivel.wordpress.com/?p=26</guid>
		<description><![CDATA[O intuito deste tutorial é descrever passo a passo a instalação do Code::Blocks junto com o SDL. Este post se basea nesse outro aqui, do blog Ponto V, que aliás é uma boa referencia pra começar com SDL. Se esse tutorial do ponto V é tão bom, pode-se perguntar por que eu quero fazer outro. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abaixonivel.wordpress.com&amp;blog=10694960&amp;post=26&amp;subd=abaixonivel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>O intuito deste tutorial é descrever passo a passo a instalação do Code::Blocks junto com o SDL. Este post se basea nesse <a href="http://vinigodoy.wordpress.com/2007/11/18/criando-um-ambiente-para-desenvolver-jogos/" target="_blank">outro aqui</a>, do blog <a href="http://vinigodoy.wordpress.com/">Ponto V</a>, que aliás é uma boa referencia pra começar com SDL.</p>
<p>Se esse tutorial do ponto V é tão bom, pode-se perguntar por que eu quero fazer outro. A resposta é simples, eu quero mostrar o forma que utilizo, mostrando algumas alternativas que podem ser úteis na escolha da configuração. Então vamos lá.</p>
<h2>Baixando o Code::Blocks</h2>
<p>Primeiramente eu recomendo que você vá ao site do Code::Blocks (<a href="http://www.codeblocks.org/">http://www.codeblocks.org/</a>) e procure é versão mais recente para download. Sempre há links para a versão estável e para uma versão <em>nightly build</em>, que são compiladas toda a noite. Infelizmente, talvez devido a sobrecarga de acesso procurando essas versões, o site costuma ficar fora do ar de ve em quando.</p>
<p>De qualquer forma, recomenda-se baixar a versão estável, que pode ser encontrada em <a href="http://www.codeblocks.org/downloads" target="_blank">http://www.codeblocks.org/downloads</a>. Se o site estiver fora do ar, você pode ir direto à página deles no sourceforge que é <a href="http://sourceforge.net/projects/codeblocks/">http://sourceforge.net/projects/codeblocks/</a>.</p>
<p>Dê preferencia para a versão que vem com o mingw. Na outra opção, o compilador não é baixado junto, sendo necessário instalá-lo separadamente depois. Essa opção só é útil se você já tiver um compilador instalado, como o Visual C++ da microsoft, senão escolha a versão com mingw que vai lhe poupar muito trabalho.</p>
<h2>Instalando</h2>
<p>Após baixar o Code::Blocks, a instalação é rápida. A maior parte pode ser feita usando o principio NNF (Next, Next, Finish), mas para uma melhor configuração, peço-lhe que dê uma paradinho quando chegar na seguinte tela:</p>
<p><a href="http://abaixonivel.files.wordpress.com/2009/11/codeblocksinstallation.png"><img class="alignnone size-medium wp-image-28" title="CodeBlocksInstallation" src="http://abaixonivel.files.wordpress.com/2009/11/codeblocksinstallation.png?w=453&#038;h=354" alt="" width="453" height="354" /></a></p>
<p>Essa tela permite escolher o que vai ser de fato instalado junto com o Code::Blocks. Como todas as opções estão contidas no instalador e não é necessário fazer nenhum download adicional, você pode escolher &#8220;Full: Al Plugins, all tools, just everything&#8221; e ser feliz.</p>
<p>Se você quiser ser mais criterioso e economizar algum espaço no HD, você pode personalizar a instalação. Novamente cito <a href="http://vinigodoy.wordpress.com/2007/11/18/criando-um-ambiente-para-desenvolver-jogos/" target="_blank">esse</a> post, que mostra uma boa configuração. O que eu não recomendo é usar as configurações Minimal ou Standard.</p>
<p>Dito isso volte ao lema NNF e termine a instalação. Você pode testar a instalação abrindo o Code::Blocks. Ele deve exibir uma tela para escolher o compilador a ser usado, mas se tiveres seguido os passos corretamente, a opção Mingw vai aparecer como &#8220;Detected&#8221;. Então é só colocar OK e seu code::blocks estará pronto para uso. Recomendo que você brinque um pouco com a interface, criando um hello world em modo Console mesmo, só para ir se acostumando com a interface, que de início não parece tão acolhedora como a do velho Dev-Cpp.</p>
<h2>Baixando a SDL</h2>
<p>Esse aqui é mais fácil, apenas vá ao site <a href="http://www.libsdl.org/" target="_blank">http://www.libsdl.org/</a>, Procure a seção download, na categoria SDL 1.2. Você deve baixar uma das <em>Development Libraries. </em>Se você tiver instalado conforme o texto acima, você deve baixar o SDL-devel-1.2.X-mingw32.tar.gz, onde X é numero da versão atual (enquanto escrevo este post, X = 14).</p>
<p>O download é rápido, e após isto basta extrair o arquivo. Porém, precisamos extrair para algum lugar, o qual vamos discutir na próxima seção.</p>
<p>Mas antes disso, uma recomendação, a SDL foi feita para que pudessemos  abstrair as particularidades de cada sistema, criando uma plataforma comum para desenvolvimento de aplicativos multimídia (eu sei, esse é um nome muito anos 90, mas infelizmente é o que melhor se encaixa). Logo, por se dedicar a isso, ela deixa de lado algumas características de alto nível que fazem bastante falta. Obviamente isso não foi simplesmente deixado de lado, há bibliotecas construídas em cima da plataforma SDL que executam muito bem essas funcionalidade.</p>
<p>Eu destaco as bibliotecas SDL_image, SDL_mixer, SDL_ttf, SDL_gfx e Guichan, as quais uso bastante. As três primeiras são fáceis de instalar, mas requerem alguma aten;&#8217;ao. As duas últimas são mais difíceis, pois precisam ser compiladas. Por todas necessitarem algum nível de atenção especial, serão descritas em artigos posteriores.</p>
<h2>Criando um Ambiente para o Desenvolvimento</h2>
<p>Você poderia extrair o arquivo baixado na seção anterior em qualquer lugar. Mas você não deveria fazer isso. Obviamente o ideal colocar em um lugar de fácil acesso, de preferencia próximo onde os seus próprios projetos estarão, para facilitar uso posterior, já que vários projetos devem usar esta biblioteca. A ideia geral é criar uma pasta contendo tanto as bibliotecas como os projetos. O ideal é que esta fique na raiz da partição, para evitar problemas com ferramentas que ainda se atrapalham com nomes contendo espaço. No meu caso, esta pasta está localizada em <strong><em>D:\dev</em></strong>.</p>
<p>Não está no C:\ porque eu divido meu computador em 2 partições e deixo a primeira apenas para a instalação de programas. Muitas pessoas usam seu hd desse jeito, mas se você usar tudo num só, não tem problema algum usar algo como C:\dev, não precisa se preocupar em reparticionar seu hd, ou coisa parecida <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  .</p>
<p>Após criar esta pasta, você pode tanto criar duas subpastas &#8220;libs&#8221; e &#8220;projetos&#8221;, ou colocar tudo na própria D:\dev mesmo. Eu utilizo a segunda opção, pois simplifica os paths, e é muito difício confundir uma lib com um projeto mesmo.</p>
<p>Após essa escolha, finalmente extraia o SDL-devel-1.2.X-mingw32.tar.gz para a dev (ou dev\libs). Feito isso, está na hora de abrir o Code::Blocks.</p>
<p>Após abrí-lo (e fechar o tip of the Day) clique File-&gt;New-&gt;Project&#8230;</p>
<p>Aparecereá uma tela como esta:</p>
<p><a href="http://abaixonivel.files.wordpress.com/2009/11/newproject.png"><img class="alignnone size-full wp-image-33" title="newProject" src="http://abaixonivel.files.wordpress.com/2009/11/newproject.png?w=469&#038;h=352" alt="" width="469" height="352" /></a></p>
<p>Escolha SDL_Project (circulada em vermelho) e clique em Go.</p>
<p>Então aparecerá uma tela de boas vindas, que você passar direto e ir para a tela de escolha de nome do Projeto.</p>
<p><a href="http://abaixonivel.files.wordpress.com/2009/11/newproject2.png"><img class="alignnone size-full wp-image-38" title="newProject2" src="http://abaixonivel.files.wordpress.com/2009/11/newproject2.png?w=470&#038;h=383" alt="" width="470" height="383" /></a></p>
<p>Dê um nome qualquer, como TestOne no exemplo e certifique-se que o Folder seja a pasta que você criou (o \dev\) então clique em next. Agora vai aparecer uma tela perguntando a localização da SDL. O valor inicial vai ser <strong>$(#sdl).</strong> Deixe este valor.</p>
<p><a href="http://abaixonivel.files.wordpress.com/2009/11/newproject3.png"><img class="alignnone size-full wp-image-39" title="newProject3" src="http://abaixonivel.files.wordpress.com/2009/11/newproject3.png?w=470&#038;h=383" alt="" width="470" height="383" /></a></p>
<p>Se for a primeira vez que você usa este Wizard, após clicar next deve aparecer uma tela como a seguir, que é o editor de Variáveis Globais. Você deve apenas informar a localização exata da sua biblioteca, como na figura:</p>
<p><a href="http://abaixonivel.files.wordpress.com/2009/11/globalvar.png"><img class="alignnone size-full wp-image-40" title="globalvar" src="http://abaixonivel.files.wordpress.com/2009/11/globalvar.png?w=470&#038;h=370" alt="" width="470" height="370" /></a></p>
<p>Pode-se perguntar porque  definimos isso globalmente, e não no próprio wizard do projeto. O motivo é que isso nos poupa trabalho, pois nos próximos projetos, não necessitamos definir isto novamente, apenas deixamos aquele indicador de variável global mesmo (o <strong><em><img src="/DOCUME%7E1/Tales/CONFIG%7E1/Temp/moz-screenshot.png" alt="" />$(#sdl)</em></strong> ).</p>
<p>Outra vantagem, é que se atualizarmos para uma versão mais nova, ou simplesmente mudarmos a biblioteca de lugar só precisamos ir em <strong>Settings-&gt;Global variables</strong> e atualizar valores.</p>
<p>Ah, usando isto também facilita a utilização do projeto em mais de um computador, pois sem isso a localização da biblioteca teria que ser exatamente a mesma, mas com isto você simplesmente abstrái a localização da bibliotecas do ponto de vista do projeto, o que pode evitar brigas entre membors de equipe que simplemente gostam de colocar suas bibliotecas em lugares diferentes. É, concordo que é um motivo meio estúpido para se birgar, mas nunca se sabe, né <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  .</p>
<p>Enfim aparecerá está tela:</p>
<p><a href="http://abaixonivel.files.wordpress.com/2009/11/newproject4.png"><img class="alignnone size-full wp-image-42" title="newProject4" src="http://abaixonivel.files.wordpress.com/2009/11/newproject4.png?w=470&#038;h=383" alt="" width="470" height="383" /></a></p>
<p>Simplesmente deixe como está e click finish. E então você verá que ocorrerá&#8230; Nada. Mas só aprentemente, pois se você olhar para a barra na lateral esquerda você notará que agora ha um projeto carregado. Então clique no [+] ao lado da &#8220;Pasta&#8221; source e vocÊ verá o arquivo <strong>main.cpp.</strong></p>
<p><strong><a href="http://abaixonivel.files.wordpress.com/2009/11/project.png"><img class="alignnone size-full wp-image-43" title="project" src="http://abaixonivel.files.wordpress.com/2009/11/project.png?w=222&#038;h=650" alt="" width="222" height="650" /></a><br />
</strong></p>
<p>Dê dois clique nesse arquivo e ele irá se abrir. Esse arquivo contém um código genérico que carrega uma imagem e a exibe no centro da tela. O código é completo e se você tentar ele deve compilar sem problemas. Mas se tentar rodar, você verá uma mensagem de erro contendo um texto mais ou menos como esse:</p>
<p><a href="http://abaixonivel.files.wordpress.com/2009/11/project2.png"><img class="alignnone size-full wp-image-44" title="project2" src="http://abaixonivel.files.wordpress.com/2009/11/project2.png?w=470&#038;h=87" alt="" width="470" height="87" /></a></p>
<p>O erro é simples de entender. Ele tá dando falta da DLL. E também é simples de resolver, basta copiar da pasta da SDL para a pasta do projeto. Na minha instalação ela se encontra em <img src="/DOCUME%7E1/Tales/CONFIG%7E1/Temp/moz-screenshot-1.png" alt="" /><img src="/DOCUME%7E1/Tales/CONFIG%7E1/Temp/moz-screenshot-2.png" alt="" /><img src="/DOCUME%7E1/Tales/CONFIG%7E1/Temp/moz-screenshot-3.png" alt="" /><strong>D:\dev\SDL-1.2.14\bin</strong>. Se você criou seu projeto com o nome de TestOne, o destino da cópia é <strong>D:\dev\TestOne. </strong></p>
<p>Sim<strong>, </strong>isto é meio chato de fazer, e deve ser feito em cada projeto. Para todas as dlls que seu projeto usar (tipo, bibliotecas auxiliares, como sdl_mixer e sdl_image têm suas próprias dlls). Isso poderia ser evitado se colocássemos todas as dlls em uma única pasta e adicioná-la ao path do sistema. O artigo do Ponto V ensina a fazer isso (<a href="http://vinigodoy.wordpress.com/2007/11/18/criando-um-ambiente-para-desenvolver-jogos/" target="_blank">aqui</a>, denovo).</p>
<p>Mas para programadores desorganizados e esquecidos (como eu <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  ) têm certa dificuldade em lembrar de copiar as dlls necessárias desta pasta para a pasta do projeto, antes de distribuí-lo, o que pode resultar em um motim de jogadores raivosos em sua direção, portanto, prefiro continuar copiando dlls.</p>
<p>Depois de copiar a dll, basta voltar ao code::blocks e compilar o programa. Vá ao menu <strong>Build-&gt;Build and Run.</strong> Ou simplesmente pressione [F9]. Agora deve aparecer uma janela como esta:</p>
<p><a href="http://abaixonivel.files.wordpress.com/2009/11/project3.png"><img class="alignnone size-full wp-image-45" title="project3" src="http://abaixonivel.files.wordpress.com/2009/11/project3.png?w=470&#038;h=372" alt="" width="470" height="372" /></a></p>
<p>Após isso, clique no [X] ou pressione [ESC] para sair, se tiver um console na tela, pressione qualquer tecla que ele some. E pronto, compilamos no primeiro programa em SDL.</p>
<p>Realmente ele não faz muita coisa de útil, mas já dá para fazer algum estudo em cima disto, pois ele carrega imagens, exibe-as e responde a eventos, que o que nós realmente faríamos em um jogo, só que em menor escala. E no próximo tutorial faremos isto, dissecaremos esse pequeno programa e entenderemos o que ele de fato faz.</p>
<p>Até lá.</p>
<p>T+</p>
<br />Publicado emTutorial  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/abaixonivel.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/abaixonivel.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/abaixonivel.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/abaixonivel.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/abaixonivel.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/abaixonivel.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/abaixonivel.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/abaixonivel.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/abaixonivel.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/abaixonivel.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/abaixonivel.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/abaixonivel.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/abaixonivel.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/abaixonivel.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abaixonivel.wordpress.com&amp;blog=10694960&amp;post=26&amp;subd=abaixonivel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://abaixonivel.wordpress.com/2009/11/28/instalando-e-configurando-o-codeblocks-com-sdl-no-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7395fd8eba25a80db9ede1544c1e8184?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">NoSignal</media:title>
		</media:content>

		<media:content url="http://abaixonivel.files.wordpress.com/2009/11/codeblocksinstallation.png" medium="image">
			<media:title type="html">CodeBlocksInstallation</media:title>
		</media:content>

		<media:content url="http://abaixonivel.files.wordpress.com/2009/11/newproject.png" medium="image">
			<media:title type="html">newProject</media:title>
		</media:content>

		<media:content url="http://abaixonivel.files.wordpress.com/2009/11/newproject2.png" medium="image">
			<media:title type="html">newProject2</media:title>
		</media:content>

		<media:content url="http://abaixonivel.files.wordpress.com/2009/11/newproject3.png" medium="image">
			<media:title type="html">newProject3</media:title>
		</media:content>

		<media:content url="http://abaixonivel.files.wordpress.com/2009/11/globalvar.png" medium="image">
			<media:title type="html">globalvar</media:title>
		</media:content>

		<media:content url="http://abaixonivel.files.wordpress.com/2009/11/newproject4.png" medium="image">
			<media:title type="html">newProject4</media:title>
		</media:content>

		<media:content url="http://abaixonivel.files.wordpress.com/2009/11/project.png" medium="image">
			<media:title type="html">project</media:title>
		</media:content>

		<media:content url="http://abaixonivel.files.wordpress.com/2009/11/project2.png" medium="image">
			<media:title type="html">project2</media:title>
		</media:content>

		<media:content url="http://abaixonivel.files.wordpress.com/2009/11/project3.png" medium="image">
			<media:title type="html">project3</media:title>
		</media:content>
	</item>
		<item>
		<title>Primeiros Passos</title>
		<link>http://abaixonivel.wordpress.com/2009/11/27/primeiros-passos/</link>
		<comments>http://abaixonivel.wordpress.com/2009/11/27/primeiros-passos/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 02:05:36 +0000</pubDate>
		<dc:creator>NoSignal</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://abaixonivel.wordpress.com/?p=18</guid>
		<description><![CDATA[Para não perder o foco, aqui estão as prioridades iniciais do blog. Não estão necessáriamente em ordem de execução: 1. Escrever Tutorial de Como criar um ambiente para Criação de Jogos com SDL no Code::Blocks. Como o próprio nome sugere, apenas mostrarei como instalar o Code::Blocks e deixá-lo pronto para compilar programas usando SDL. 2. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abaixonivel.wordpress.com&amp;blog=10694960&amp;post=18&amp;subd=abaixonivel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Para não perder o foco, aqui estão as prioridades iniciais do blog. Não estão necessáriamente em ordem de execução:</p>
<p><strong>1. Escrever Tutorial de Como criar um ambiente para Criação de Jogos com SDL no Code::Blocks. </strong>Como o próprio nome sugere, apenas mostrarei como instalar o Code::Blocks e deixá-lo pronto para compilar programas usando SDL.</p>
<p><strong>2. Mostrar Passo a Passo a criação de uma engine de jogos 2d.</strong> A página <a href="projetos/miniengine/">MiniEngine </a>já contem um resumo da idéia, que deve ser expandida em posts e páginas em breve. A idéia é simplesmente documentar o estudo que eu estou fazendo no momento. A engine fundalmentalmente servirá para futuros projetos meus. Porém se o resultado ficar bom, a intenção é deixá-la livre para qualquer um que queira estudá-la ou mesmo usá-la.</p>
<p><strong>3. Re-upar e colocar links aqui dos meus projetos do blog. </strong>Não prometo liberar o código fonte de imediato, pois a maioria está muito ruim, mas em algum momento devo mostrá-los. De qualquer jeito, o executável destes jogos serão disponibilizados soba a categoria Portfólio com ou sem código fonte.</p>
<p>&#8212;</p>
<p>Outra coisa que gostaria de comentar, é que eu coloquei uma licença Creative Commons. Mais informações no link no finzinho da barra lateral, ou na página <a href="sobre/">Sobre</a>. Não que eu queira burocratizar isso aqui, mas sim evitar dores de cabeça no futuro. Não quero nunca ter que recorrer a isso, mas como diz o ditado, o seguro morreu de velho&#8230;</p>
<p>E só por enquanto&#8230;</p>
<p>T+</p>
<br />Publicado emGeral  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/abaixonivel.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/abaixonivel.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/abaixonivel.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/abaixonivel.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/abaixonivel.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/abaixonivel.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/abaixonivel.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/abaixonivel.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/abaixonivel.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/abaixonivel.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/abaixonivel.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/abaixonivel.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/abaixonivel.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/abaixonivel.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abaixonivel.wordpress.com&amp;blog=10694960&amp;post=18&amp;subd=abaixonivel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://abaixonivel.wordpress.com/2009/11/27/primeiros-passos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7395fd8eba25a80db9ede1544c1e8184?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">NoSignal</media:title>
		</media:content>
	</item>
		<item>
		<title>Recomeçando</title>
		<link>http://abaixonivel.wordpress.com/2009/11/27/recomecando/</link>
		<comments>http://abaixonivel.wordpress.com/2009/11/27/recomecando/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 03:21:49 +0000</pubDate>
		<dc:creator>NoSignal</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://abaixonivel.wordpress.com/?p=3</guid>
		<description><![CDATA[Resolvi criar esse blog porque eu queria ter um lugar para mostrar as minhas idéias. Sou um estudante de ciencia da computação e gosto bastante de programar, tanto que programar jogos é um hobbie que eu curto muito. Este é, na verdade, a motivação deste blog, ser um local onde possa escrever sobre minhas experiencias [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abaixonivel.wordpress.com&amp;blog=10694960&amp;post=3&amp;subd=abaixonivel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Resolvi criar esse blog porque eu queria ter um lugar para mostrar as minhas idéias. Sou um estudante de ciencia da computação e gosto bastante de programar, tanto que programar jogos é um <em>hobbie</em> que eu curto muito.</p>
<p>Este é, na verdade, a motivação deste blog, ser um local onde possa escrever sobre minhas experiencias no desenvolvimento de jogos. A idéia é colocar aqui idéias, projetos, demonstrações tutoriais, etc.</p>
<p>Os assuntos devem variar um pouco, mas em geral devo falar games 2d com <a href="http://www.libsdl.org" target="_blank">SDL</a>, pois possuo uma experiencia relevante neste assunto. A pouco tempo estudei um pouco da Javar ME junto com amigos, enquanto tínhamos um pequeno projeto de jogo para celulares. O projeto tá parado no momento por vários motivos, mas é possível que eu ainda escreva algo sobre o assunto.</p>
<p>Um dos motivos desta parada, é que nos juntamos a um outro projeto, desta vez em XNA. Eu não tenho a menor experiencia em desenvolvimento 3d, então dificilmente falarei desse assunto, até porque, além da minha falta de conhecimento, estamos mantendo um certo sigilo.</p>
<p>Por fim, como já disse, eu devo realmente me focar em SDL. Entre as experiencias que tive, eu incluo alguns jogos simples. Estes jogos estão no meu antigo blog, com o tempo eu os postarei aqui, pois a maioria dos links estão quebrados, mas se alguém quiser tentar a sorte, o link é <a href="http://clorofilasoftware.wordpress.com">este</a>.</p>
<p>Antes que alguém pergunte, eu mudei de blog por causa do nome. A falta de criatividade do antigo me desanimava até para postar, quanto mais divulgá-lo <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>T+</p>
<br />Publicado emGeral  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/abaixonivel.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/abaixonivel.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/abaixonivel.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/abaixonivel.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/abaixonivel.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/abaixonivel.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/abaixonivel.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/abaixonivel.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/abaixonivel.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/abaixonivel.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/abaixonivel.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/abaixonivel.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/abaixonivel.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/abaixonivel.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=abaixonivel.wordpress.com&amp;blog=10694960&amp;post=3&amp;subd=abaixonivel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://abaixonivel.wordpress.com/2009/11/27/recomecando/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7395fd8eba25a80db9ede1544c1e8184?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">NoSignal</media:title>
		</media:content>
	</item>
	</channel>
</rss>
