Como ser um programador de jogos: Engine vs Framework
No post anterior desta série escrevi sobre a importância de começar a programar com coisas simples como fazer um Hello World para conhecer melhor uma tecnologia, agora vou destacar as diferenças entre Engine e Framework.
Além da linguagem de programação, você deve aprender sobre engines e frameworks. Uma game engine é um software completo para criação de um jogo. Um framework é uma biblioteca de programação, sem interface gráfica, que você utiliza para programar seu jogo.
Em uma analogia meio feia, podemos falar que uma engine é como se fosse o Microsoft Word (você pode criar textos de diferentes formas, utilizando várias coisas prontas). Já o framework é como uma caixa de Lego, você constrói o jogo com as peças que quiser, seguindo um manual (tutorial no caso de um jogo) ou sua criatividade.
Atualmente a game engine mais famosa entre estudantes e desenvolvedores independentes, e que também é utilizada em empresas grandes, é a Unity, que permite o desenvolvimento de jogos com modelos 3D para PC, Mac, Web, Chrome, iOS e Android (tudo isso na versão gratuita!). A Unity conta com muita material na internet, principalmente vídeos e tutoriais, porém poucos (e desatualizados) livros. Se você quer estudar desenvolvimento de jogos 3D recomendo começar pela Unity, nela você pode programar em C#, Javascript ou Boo (uma variação de Python).
Enquanto a Unity tem muito destaque como game engine, é difícil falar de apenas um framework. O primeiro framework que estudei foi o XNA da Microsoft, principalmente por utilizar C#, linguagem que eu trabalhei por alguns anos antes de entrar na área de games. Por isso consegui aprender bem rápido a usar o XNA, participei de concursos e fiz meu TCC da pós em games com ele, e até dei aula de programação com XNA. Infelizmente a Microsoft já anunciou que não vai continuar com o XNA por causa do Windows 8, eu pelo menos vou ficar com saudades.
Se você quer desenvolver jogos para Windows, e não tem medo de C/C++, eu recomendo a SDL, um framework bem legal e fácil de usar. Fiz um jogo na pós com ele, foi uma boa experiência. O que eu mais gostei no SDL é sua transparência, mas isso fica um pouco complicado de explicar neste post.
Existem dois frameworks para desenvolvimento de jogos mobile que eu sempre recomendo: Corona SDK, onde você programa em script Lua, e Cocos2d-x, framework open source em C/C++. Ambos são excelentes frameworks, com ótimas features, e muito utilizados no mercado, principalmente por desenvolvedores independentes. Considero sua principal diferença a linguagem, onde no Corona é interpretada e no Cocos2d-x é compilada.