Wednesday, September 28, 2011

Comparação de Engines

Hoje me pediram para fazer uma lista de tecnologias de jogos que alunos tinham que aprender. Dei essa resposta. Concordam?

Unity 3D
Principal engine hoje no mercado. Tomou todo o espaço que antes era da Torque (da garagagames.com que fechou as portas). Tem um modelo de negócio muito interessante pois usa o modelo de receitas normal de licença mas também possui uma App Store. Na App Store é possível comprar módulos para incremetar a engine mas também modelos, levels, textures, sprites, etc. Tem um fórum bem ativo e uma documentação vasta apesar de ser um pouco deficiente.

É mais voltado para jogos 3D, mas com as extensões já existente faz o papel de uma engine 2D numa boa.

Se a idéia é um jogo multi-plataforma a Unity é a única que faz um trabalho decente para ter o jogo, com mais ou menos o mesmo código, em Mac, PC, Web, iPhone e Android.

Utiliza Javascript como principal linguagem de Script mas também pode ser programada em C# ou um dialeto de Python chamado Boo. Usa a plataforma Mono como plataforma de execução.

Para jogos Mobile também é uma das melhores opções pois as demais engines (como a Ansca Corona, que é bastante popular) não da suporte a chamadas nativas no iOS o que dificulta (em alguns casos impossibilita) a comunicação com API como o Openfeint ou da Flurry que são essenciais para transações in game (maior fonte de receita atualmente desses jogos).

Flash
É ainda a principal ferramenta para jogos Web. A grande maioria dos jogos de Facebook são feitos em Flash. Tem a curva de aprendizado menor de todas e também pode ser usada para criar versões PC, Mac com bastante facilidade. A principal facilidade é a integração entre os assets de arte que é bem mais fácil que nas outras engines (como a Unity).

O grande problema do Flash ainda é a performance. Com pouquíssimas otimização de hardware (não usa a placa de vídeo direito e se for Flash 9 ou menos, não usa de jeito nenhum) fazer um jogo em Flash que rode em FPS decente (acima de 15 pelo menos) requer uma experiência legal e a curva de aprendizado é longa.

Se a idéia é um jogo Web ou Desktop, é uma boa pedida. Principalmente usando Wrappers como o Zync que gera os executáveis para qualquer lugar. Se for um jogo 2D é a melhor opção (com renderização simples: lógica e rede podem ser intensos).

Unreal
É a principal engine AAA do mercado. A maioria dos grandes jogos para Console usam, principalmente os FPS. Antes tinha uma licença impossível para qualquer desenvolvedor Indie (centenas de milhares de dólares) mas agora possui uma versão student e versões mais simples dado a concorrência de coisas como a Unity. É possivelmente a melhor opção para um jogo AAA para quem nunca fez um.

A curva de aprendizado, como era esperado, é imensa. É totalmente não recomendado para qualquer projeto que não seja realmente uma coisa profissional de vários anos de desenvolvimento. Usar num jogo casual é como matar uma barata com uma bomba atômica. Apesar de funcionar, aprender a fazer uma bomba atômica é bronca.


XNA
Não é uma engine mas sim uma plataforma de desenvolvimento da MS. É interessante como possibilidade de treinamento e usada em todos os jogos indies para Xbox 360. É muito interessante também pois possibilita o uso do Kinect (é possível testar no PC).

Existe também a possibilidade de fazer para Windows nos Mobiles e nas Tablets. Para apostar nesse caso o ideal é já baixar o Developer Preview do Windows 8 e mandar bala já nele. Ainda não se sabe o que se esperar desse mercado, mas muita gente tá apostanto bastante.