O desenvolvimento de games passou por uma mudança significativa nos últimos anos. Com o avanço dos smartphones e outros dispositivos, outras formas de jogar se popularizaram e jogos menores, diferentes daqueles "de console", surgiram. A partir disso, uma parcela do mercado passou a ser ocupada pelos chamados indie developers, ou desenvolvedores individuais. Com esse novo mercado, novas ferramentas foram criadas, como o Unity 3D e o Corona, ou aperfeiçoadas, como o Unreal, para aumentar a produtividade, fazendo com que os desenvolvedores foquem no que realmente importa - o gameplay, a forma como o game é jogado -, e precisem gastar menos tempo com detalhes da física do game, efeitos e animações, por exemplo.

Como criar jogos com Unity 3D, Unreal Engine, libGDX e Corona SDK.

Nesse artigo, conversaremos um pouco sobre as principais ferramentas desse mercado. Para o desenvolvimento de games em 3D, Unity 3D, Unreal e libGDX (que também desenvolvem games em 2D); e para games em 2D, a Corona SDK. Neste ponto é válido ressaltar que, embora sejam ferramentas focadas no desenvolvedor indie, os grandes estúdios também as utilizam em muitos projetos.

Unity 3D

O Unity 3D é o mais famoso desses motores de jogos (game engines) e conquistou os desenvolvedores por sua simplicidade e pelo visual diferenciado dos games criados com ele. Apesar do nome, temos uma ferramenta voltada para o desenvolvimento de games com a mesma facilidade tanto em 2D quanto em 3D. Alia-se a isso a possibilidade de desenvolver com C# (a linguagem indicada) ou JavaScript, e temos uma ferramenta completa, com recursos que simplificam o trabalho dos profissionais da área.

Sobre as linguagens de programação suportadas pelo Unity, existem algumas considerações. O C# foi adotado por toda a comunidade como a linguagem padrão, muito devido ao modo como o código é estruturado. Outras opções são o UnityScript, que na realidade é o JavaScript com alguns recursos incluídos, e o Boo, linguagem muito pouco utilizada e que deve ser evitada.

A principal característica do desenvolvimento com o Unity 3D é que ele é baseado em cenas. Elas são facilmente criadas no Unity Editor, ao simplesmente arrastarmos recursos, como modelos, scripts e animações, para os objetos do game (game objects). Isso faz com que seja muito simples criar um game visualmente interessante, uma vez que podemos enxergar o que está acontecendo sem a necessidade de executar a aplicação.

O Unity 3D oferece ainda algumas outras vantagens, como a Unity Asset Store. Essa loja contém vários elementos que podem ser facilmente adicionados aos games, como scripts, animações, efeitos, etc. O grande foco, porém, está nos elementos visuais, ou seja, modelos 3D ou sprites (2D). Assim, o desenvolvedor não precisa ser, também, um artista para começar a desenvolver games no Unity – basta analisar a loja, verificar as opções e montar um game rico em detalhes visuais. Alguns deles, inclusive, são gratuitos.

Outros pontos que merecem destaque no Unity 3D são:

  • Comunidade ativa e com foco na colaboração;
  • Documentação extensa, incluindo manuais;
  • Ferramenta gratuita para indie developers;
  • Várias plataformas alvo a partir de um projeto, como Android, iOS, Windows e web. Também inclui os principais consoles do mercado;
  • O motor 3D é muito eficiente;
  • Multiplataforma;
  • Criação de animações facilitada pelo uso de máquinas de estado;
  • Alguns itens de inteligência artificial, como o pathfinding, que serve para que os NPCs se movimentem, podem ser inseridos com facilidade.
Nota: NPC, ou Non-player character, são os elementos do game que não são o jogador, por exemplo, os inimigos.

Entretanto, não é uma ferramenta perfeita. A colaboração entre times de desenvolvimento não é muito simples com o Unity. Como o motor de jogos utiliza alguns arquivos binários, ferramentas como o Git não conseguem verificar a mudança nesses arquivos, o que acaba precisando ser feito manualmente. Por outro lado, o Unity lançou uma versão beta do Unity Collaborate, solução que promete resolver esse problema de forma barata.

Unreal Engine

O Unreal Engine é tido como o grande concorrente do Unity 3D e, assim como ele, permite o desenvolvimento em 3D e 2D. Devido à sua estrutura, acaba sendo uma ferramenta mais voltada para times e projetos de games mais complexos. Também por isso, os jogos possuem visual e desempenho superior ao visto no Unity 3D, especialmente quando temos dispositivos com maior poder de processamento.

Uma característica marcante do Unreal está no uso da linguagem de programação C++. Isso é um problema e, ao mesmo tempo, uma solução: tudo depende do ponto de vista. Por exemplo, o C++ é uma linguagem de mais baixo nível e com uma curva de aprendizado maior, quando comparada a C# e Java. Isso faz com que o desenvolvimento do game demande mais tempo. Por outro lado, garante que o uso dos recursos (quando bem desenvolvido) seja potencializado, o que tende a criar games com melhor performance.

O C++, no entanto, não é a única opção. Também é possível utilizar os chamados Blueprints, isto é, um ambiente de desenvolvimento visual, onde apenas conectamos nós de funcionalidades, como demonstra a Figura 1. Note que temos uma interface muito simplificada e que pode ser utilizada como alternativa ao C++ em vários casos.

Unreal Blueprints
Figura 1. Unreal Blueprints

Vejamos mais algumas vantagens do Unreal Engine:

  • É uma suite de ferramentas de alto padrão para todos os aspectos do desenvolvimento de games;
  • Acesso total ao código fonte;
  • Ferramenta gratuita;
  • Multiplataforma;
  • Performance excelente em dispositivos high-end, dispositivos com alto poder de processamento.

Apesar de tudo isso, algumas desvantagens também são observadas:

  • Desenvolvimento de funcionalidades mais avançadas precisa ser feito em C++, linguagem com alta curva de aprendizado;
  • Pagamento de 5% de royalties sobre os ganhos com o game.

Assim, conseguimos observar que o Unreal é uma ótima alternativa, embora seus principais clientes não sejam os desenvolvedores individuais. A tendência é que a participação nesse mercado indie cresça nos próximos anos, devido a algumas ações, como tornar a ferramenta gratuita.

libGDX

Assim como o Unity 3D e o Unreal Engine, o libGDX também permite a criação de games tanto em 2D quanto em 3D. Por ser um projeto de código aberto, está em constante evolução e possui vários projetos auxiliares que servem para adição de funcionalidades ao mesmo. O gdxAI, por exemplo, é um framework de inteligência artificial que foi separado da biblioteca principal e está em evolução desde então.

O libGDX possibilita o desenvolvimento com várias linguagens de programação, como Java e Scala, e pode ser considerado uma boa opção para games de baixa a média complexidade. Porém, ele acaba não sendo tão visual quanto o Unreal ou o Unity. Isso porque as ferramentas de desenvolvimento do libGDX são as mesmas que um desenvolvedor Java (caso seja essa a linguagem de escolha) utiliza, como Eclipse, NetBeans, Jenkins, etc. Ou seja, não há uma interface visual para criação de uma cena, por exemplo.

Algumas das principais vantagens que o libGDX oferece:

  • Não há necessidade de emulador para executar em Android e desktop. Isso facilita bastante, especialmente na hora do desenvolvimento;
  • Comunidade de desenvolvedores ativa;
  • Em constante evolução, com vários projetos auxiliares e extensões que servem para apoiar o desenvolvimento e criar games com facilidade;
  • Multiplataforma.

Em termos de desvantagens, existem algumas; em especial, quando comparamos com projetos de alto investimento, como o Unity e o Unreal, a saber:

  • Baixo nível, ou seja, é necessário escrever muito código para que as coisas funcionem;
  • Documentação pouco extensiva, embora em constante evolução;
  • Visualmente, não consegue atingir o nível do Unreal, por exemplo. Para projetos menores e com foco em dispositivos low-end, é uma opção interessante devido ao uso inteligente de recursos.

Assim, o libGDX, embora em constante evolução, ainda não consegue atingir o nível que o Unity e o Unreal atingem. Porém, pode ser uma opção interessante para casos em que necessitemos de uma maior customização dentro do game e também para desenvolvedores Java.

Corona SDK

O Corona SDK é uma ferramenta muito boa para o desenvolvimento de games em 2D. A principal desvantagem dela está justamente na impossibilidade de desenvolver em 3 dimensões, como fazem os principais concorrentes. Entretanto, a facilidade de monetizar as aplicações ou mesmo utilizar propagandas pode ser uma grande vantagem, em especial para games gratuitos em plataformas móveis de grande circulação, como Android e iOS.

Um dos principais pontos a favor do Corona é sua linguagem de programação, Lua. Essa linguagem é muito simples e com uma curva de aprendizado pequena. Além disso, por ser uma linguagem de scripting, evita-se a compilação do código e tem-se um desenvolvimento mais rápido.

O Corona SDK é totalmente gratuito, mas a empresa fornece uma outra solução, mais completa: o Corona Enterprise, a opção para quem deseja gastar pouco e ter uma solução completa para o desenvolvimento de games. Ele fornece o "algo a mais" que os desenvolvedores precisam para ter acesso a bibliotecas nativas (que o Corona SDK não fornece) dos dispositivos e não precisar inserir a "splash screen" do Corona nos games, entre outras vantagens. Seu custo é de US$79,00 por mês.

Vejamos as principais vantagens do Corona SDK:

  • Desenvolvimento extremamente rápido;
  • Multiplataforma;
  • Linguagem de programação Lua, criada especificamente para o desenvolvimento de games;
  • Fórum e comunidade ativos;
  • Possibilidade de aumentar os recursos a qualquer momento, com o Corona Enterprise;
  • Monetização e propagandas facilitadas para os games.

Em termos de desvantagens, o grande problema é podermos desenvolver apenas games 2D. Além disso, é possível se deparar com problemas pelo fato de o código não ser aberto, caso seja necessária alguma adição de funcionalidade.

Em suma, podemos observar que as ferramentas são muito diversas; e as possibilidades que elas oferecem, também. O Unity 3D é a solução líder de mercado, e isso não acontece por acaso. Ela é a opção mais completa das ferramentas para casos gerais. Para casos mais específicos, contudo, é interessante que analisemos as demais, em especial o Unreal Engine e a Corona SDK.