O passo inicial para qualquer desenvolvedor de jogos é escolher quais tecnologias usar e preparar um ambiente para elas. Nos próximos posts, como já foi dito, usaremos C++. Para manipular o ambiente de janelas, carregar imagens do disco ou reproduzir sons, contaremos também com a ajuda da STL. Por fim, para desenhar em diversos exemplos, usaremos o OpenGL. Tudo isso será desenvolvido da IDE Code::Blocks, que é pequena e gratuita.
Ao invés de OpenGL direto, você pode preferir criar um ambiente usando a Ogre no seu Code::Blocks. Nesse caso, recomendo que siga esse outro tutorial, falando sobre o assunto. A Ogre não será tratada nesse blog… pelo menos por enquanto!
Criando a pasta inicial
Muitas dores de cabeça são evitadas se você criar uma pasta para conter todo o seu ambiente do C++. Essa pasta deve ser criada preferencialmente na raíz e conter um nome de apenas 8 letras. Por exemplo: D:\DevJogos
Dentro dessa pasta, crie também uma subpasta chamada dlls. Essa subpasta servirá para você colocar todas as bibliotecas (tais com a SDL) que devem ser acessadas para que o jogo rode. Um bom nome para ela seria: D:\DevJogos\Dlls
Adicionando um caminho ao path
Muitas pastas, como a pasta de dlls deverão ser adicionadas ao path. Por padrão, o Windows apenas procura por arquivos que estejam no mesmo diretório da aplicação sendo executada ou que estejam listados na variável de ambiente path. Muitos tutoriais de jogos, quando se deparam com uma dll, recomendam que você a jogue em pastas como windows\system32. Essa pasta já está no path de qualquer versão de windows. Entretanto, fazer isso não só misturará dlls secundárias com dlls do sistema operacional, como também reduz o nosso controle sobre o que tem ou não tem instalado. Por isso, vamos iniciar explicando como adicionar a sua própria pasta de dlls ao path.
Para acrescentar um diretório ao path, siga os passos abaixo:
1. Abra as propriedades do sistema no painel de controle. A janela também pode ser aberta pressionando simultaneamente a tecla do windows e a tecla break;
2. Clique na aba “Avançado” e em “Variáveis de Ambiente”;
3. Na parte de baixo, procure a variável chamada Path:

4. Clique em editar. Adicione um ; e o seu diretório de dlls.

Instalando o Code::Blocks
Podemos compilar os programas em C++ com um compilador padrão o GNU gratuito, que no caso do Windows é o MinGW. Na verdade, seria até possível escrever nossos próprios programas usando apenas o MinGW e o bloco de notas. Mas essa é uma tarefa tediosa e pouco produtiva. Para facilitar a edição de código, controlar automaticamente o make e ainda forcener uma interface amigável com o depurador, vamos instalar o Code::Blocks. O Code::Blocks é uma IDE gratuita, leve e poderosa e tem versões para diversos sistemas operacionais. Em alguns outros sites, você encontrará recomendações para instalar o DevCpp. Eu discordo radicalmente dessa opinião. O DevCpp é pobre em recursos, não tem boa integração com o depurador e faz uma verdadeira bagunça ao tentar alinhar o código.
O site oficial do Code::Blocks é http://www.codeblocks.org. Antes da versão 8.02, você era obrigado a instalar o Code::Blocks através de uma nightly build. Hoje, com a versão inicial, isso não é mais necessário. Também acompanham o compilador MinGW e o depurador Gdb na versão oficial, não sendo mais necessário baixa-los manualmente.
Para instalar faça o seguinte:
1. Entre na página de downloads do Code::Blocks;
2. Escolha o seu sistema operacional. No caso desse tutorial Windows 2000/XP/Vista;
3. Iremos baixar o codeblocks-8.02mingw-setup.exe (19mb), escolha a opção Sourceforge ou BerliOS e aguarde o download.
4. Rode o instalador, passe a tela do Welcome e concorde com a licença clicando em I Agree;
5. Tomando o cuidado de clicar apenas no quadradinho com sinal de + ao lado de cada pasta, abra a pasta “Lexers” e a subpasta ScriptLanguages e selecione as linguagens Lua e Python, que também são interessantes para jogos;

6. Selecione a pasta Graphics Programming;
7. Abra a pasta Contrib Plugins e selecione os plugins que você achar interessante. Eu gosto dos seguintes: Browse Tracker, Code Snippets, Code Stats, Copy Strings, Profiler, Exporter e o wxSmith. Se você era usuário do Dev, vai também gostar do DevPak plugin, que permite a instalação dos DevPaks diretamente.
8. Clique em Next e selecione o caminho que ele será instalado. Como sugestão ponha na pasta que criamos acima, como D:\devjogos\codeblocks;
9. Aguarde a instalação terminar e pronto!
Fazendo o download da SDL
A SDL é uma biblioteca multi-plataforma, open source, para manipulação de janelas, vídeo, áudio, rede, threads e fontes. Ela facilita muito o desenvolvimento de jogos e fornece ótima integração com o OpenGL. Para instala-la, proceda da seguinte forma:
1. Entre no site da SDL, clicando aqui e, na área Downloads da barra da esquerda, clique em SDL1.2;
2. Nos arquivos citados em Development Libraries, selecione o arquivo da SDL para mingw. Por exemplo SDL-devel-1.2.12-mingw32.tag.gz;
3. No seu diretório de jogos, crie uma pasta chamada libs e lá descompacte o SDL.
4. Copie o arquivo sdl.dll da pasta bin para a sua pasta de dlls;
Dica: Sempre que instalar uma nova biblioteca, copie o seu dll para a pasta de dlls. Isso evitará muitas dores de cabeça. Recomendo fazer uma cópia e não mover a dll, pois assim você ainda saberá que dll pertence a que biblioteca. Lembre-se, quando for criar um executável, será necessário anexar todas as dlls que ele utiliza antes de enviar para terceiros.
5. Repita o mesmo processo para os pacotes SDL_Image e SDL_Mixer. Os sites oficiais desses pacotes podem ser encontrados na área doc wiki, ou clicando aqui e aqui. As distribuições foram feitas para visual C++ 8, mas funcionam bem no MinGW. O nome dos arquivos para baixar será: SDL_image-devel-1.2.6-VC8.zip e SDL_mixer-devel-1.2.8-VC8.zip (as versões podem mudar);
Configurando o Code::Blocks
Agora, veremos cada passo na configuração do Code::Blocks, com explicação sobre o que significam.
Criando um novo projeto
1. Abra o Code::Blocks;
2. Clique em File->New->project e selecione Console Application;
3. Em Project Title, dê o nome do seu projeto. Em folder to create your project in, selecione a pasta project, criada no tutorial anterior.

4. Clique em next até finalizar o assistente;
Configurando o compilador
O compilador necessita de arquivos de cabeçalho, com a extensão .h, para saber quais funções estão disponíveis em sua aplicação. Isso vale tanto para os seus arquivos, que ficarão no seu projeto, quanto para arquivos de bibliotecas externas. É necessário indicar a ele onde ficam os arquivos .h de cada uma das bibiliotecas externas usadas por você.
Sempre que você adicionar uma biblioteca ao seu projeto, é necessário seguir esses procedimentos. Abaixo, explicarei como fazer a configuração usando como exemplo a SDL:
1. Para fazer isso, clique em Project->Build Options;
2. Na árvore do lado esquerdo, clique na raiz (com o mesmo nome do projeto). Caso contrário, você estará definindo a biblioteca apenas para a compilação oficial (release) ou debug do seu projeto. Dessa forma, você define para as duas;
3. Na guia Search Directories, selecione a opção compiler e clique em add.
4. Selecione a pasta “include” de sua biblioteca. A SDL é uma exceção à regra. Ao invés da pasta include, devemos adicionar a pasta include\SDL. Exemplo:

5. Responda sim a pergunta Keep This as a Relative Path?. Isso permite que você mova sua pasta DevJogos para diferentes unidades de disco (um pendrive, por exemplo); Você notará que o CodeBlocks adicionará o caminho relativo a biblioteca como: ..\..\SDL\SDL-1.2.12\include\SDL
6. Importante: Para incluir um cabeçalho da SDL, você terá que utilizar o comando #include “SDL.h” e não #include “SDL/SDL.h”; Isso porque já selecionamos a pasta SDL dentro do diretório include. Dessa forma, o código fica mais compatível com o Linux.
Configurando o linker
A maior dificuldade de montar um ambiente está no linker. O linker precisa saber onde se encontram todos os arquivos .lib, o nome dessas bibliotecas, e quais bibliotecas padrão você está utilizando.
O Caminho das libs
O primeiro passo é definir qual é o caminho onde suas bibliotecas se encontram. As bibliotecas são arquivos com nomes iniciados em lib e extensão .a, por exemplo, libSDL.a.
1. Para fazer isso, clique em Project->Build Options;
2. Novamente selecione a raiz da árvore situada no lado esquerdo da tela;
3. Na guia Search Directories, selecione a opção linker e clique em add.
4. Adicione a pasta lib de sua bibiloteca. No caso da SDL:

5. Responda sim a pergunta Keep This as a Relative Path?.
6. Clique na aba Linker Settings;
Linker Settings
Você deve dizer ao linker quais são as bibliotecas que você está efetivamente utilizando. O maior problema aqui está em descobrir e indicar corretamente as bibliotecas padrão utilizadas, já que elas não aparecem em nenhum local óbvio. Geralmente, essas bibliotecas estão listadas na documentação dos componentes que você estiver instalando.
No caso da SDL e do OpenGL, fazemos o seguinte:
1. Clique em Project->Build Options;
2. Na guia Linker Settings;
3. Clique em Add e digite mingw32 para adicionar a biblioteca padrão do mingw;
4. Clique em Add e digite SDLmain para adicionar a biblioteca da SDL;
5. Clique em Add e digite SDL.dll para adicionar a biblioteca de acesso a dll do SDL;
6. Clique em Add e digite opengl32 para adicionar a biblioteca padrão do opengl;
7. Clque em Add e digite glu32 para adicionar a biblioteca padrão OpenGL utilities;
Dica: Se você olhar a pasta lib das bibliotecas não padrão, verá os arquivos .a correspondentes da biblioteca. No caso da SDL, haverá dois arquivos chamados libSDLmain.a e libSDL.dll.a. Isso te dá a dica de que nomes inserir nas linker settings. Note que é necessário repetir esses mesmos procedimentos para as bibliotecas SDL_Mixer e SDL_Image, caso queira trabalhar com elas.
Ainda falta dizer ao linker que nós estamos lidando com uma aplicação para windows. Para isso, em other linker options, coloque a opção -mwindows. Ao final, sua tela deve ficar assim:

Com isso, finalizamos esse tutorial! No próximo artigo, vamos ver os primeiros passos para a construção de um jogo. Enquanto isso, se quiser ir brincando com a SDL, recomendo que siga esse ótimo tutorial (em inglês).
Atenção: Alguns usuários recortam e colam a palavra -mwindows desse tutorial, e o sinal de menos é substituído pelo travessão. Isso fará com que o Code::Blocks dê a mensagem: “mingw32-g++.exe: -mwindows: No such file or directory”. Para corrigir o problema, simplesmente apague esse parâmetro e digite-o novamente a mão.
Ajustando o caminho do compilador e do linker
Se você instalou o Code::Blocks pela primeira vez, esse passo não será necessário. Se, ao compilar, o seu Code::Blocks der a mensagem “uses an invalid compiler. Skipping…”, siga os passos desse tópico. Geralmente, numa instalação antiga, caminhos inválidos podem ter sido definidos e seu code::blocks ainda pode estar enxergando-os. Para corrigir isso, faça o seguinte:
1. Clique em Settings, Compiler and debugger;
2. Selecione a aba “Search directories” e na aba compiler, coloque o caminho correto da pasta include, que se encontra no mesmo diretório do seu compilador. Por exemplo: D:\DevJogos\CodeBlocks\MinGW\include
3. Clique na aba linker e selecione o caminho correto da pasta lib, que se encontra no mesmo diretório do seu compilador. Por exemplo: D:\DevJogos\CodeBlocks\MinGW\lib
4. Clique em Toolchain Executables e altere o “Compiler Instalador Directory” para o caminho certo do seu compilador. Normalmente basta pressionar o botão auto-detect para isso, mas, caso não funcione, selecione o diretório manualmente. A configuração deve ter ficado similar à abaixo:
