Pular para o conteúdo
Início » Escolha da engine – Uma decisão difícil

Escolha da engine – Uma decisão difícil

Google News

Esta semana andei repensando um pouco as minhas prioridades e vi que eu devo voltar a focar em programação. Como gosto mais de 3D e tenho conhecimentos intermediários na plataforma Java, é natural eu ir para esta linguagem, mesmo ela não sendo recomendada para aplicações desktop 3D. Aí eu comecei a analisar as engines que existem por aí, o que me faz levantar algumas questões básicas.
A primeira delas é a própria linguagem. Quando uma equipe opta por uma linguagem, ela opta pela linguagem que a maioria sabe. Ou mesmo a equipe opta pelas ferramentas que a empresa licenciou, o que pode forçar a equipe a ter um treinamento ou mesmo procurar no mercado de trabalho pessoal qualificado naquela linguagem. Aqui no Brasil, pelo que ando vendo, a procura em gamedev é maior em Flash, JavaME (celulares) e Blitz 3D. Apesar de C++ ser a linguagem que muita gente recomenda e bla bla bla, dificilmente eu vi oportunidades nesta linguagem (aliás, eu mal vejo oportunidades sérias de emprego na área de programação de jogos. Mas isso é assunto para outro artigo). É claro que há exceções, como empresas como a Ubisoft, que precisam de gente gabaritada nesta linguagem, por ela ser usada em larga escala no exterior e pelas melhores ferramentas de programação serem baseadas nesta linguagem.
O maior problema da escolha da linguagem são suas prováveis limitações, e isso deve ser levantado pela equipe antes de iniciar o desenvolvimento do projeto. O próprio projeto deve ser levado em conta, já que dependendo de fatores como o público-alvo e direção de arte, pode ser mais interessante ir para uma certa abordagem específica. Pretende fazer um jogo 3D? Procure uma engine gráfica. Um game de puzzle ou plataforma: Flash pode ser uma ótima saída além de ser bem rentável, caso você coloque num site e ganhe dinheiro com publicidade. Se for só pra estudo, APIs como Allegro podem resolver o problema.
Então a linguagem foi escolhida, mas falta as ferramentas adicionais. No caso, as engines gráficas e/ou APIs disponíveis por aí. Então entra novamente o estilo gráfico. O Flash, por exemplo, tem uma linguagem embutida e é relativamente fácil fazer a parte gráfica. O problema maior é o custo, já que a equipe teria de licenciar a ferramenta. Mas o Flash sozinho não é interessante caso o projeto seja em 3D (a menos que você faça igual a Aquiris e criar games usando a engine Unity e usar o Flash), o que é necessário usar uma engine robusta. C++ nesse caso é a melhor pedida, já que as melhores engines disponíveis são para esta linguagem. Se for 2D, também é C++, com Allegro e SDL. Se for celular, Java, por ser a plataforma mais comum de se ter na maioria dos aparelhos instalados, além do próprio Java ter uma API própria pra desenvolvimento mobile: Java Micro Edition.
Com esse tanto de possibilidades, muito desenvolvedor iniciante fica perdido. Escolher uma linguagem para trabalhar é difícil, já que para o futuro programador ficar bom nela demanda bastante tempo. Chuto pelo menos de 6 meses a 1 ano pra ele conseguir fazer coisas básicas e intemediárias e pelo menos 3 anos para ele ser um expert, isso se ele estudar com afinco durante todo esse tempo. Ainda assim ele tem de ficar atento com todas as novidades da linguagem e da área, para ele não ficar para trás e desatualizado.
Mesmo ele escolhendo a engine, ele fica limitado a ela durante todo o projeto e com isso escolher uma, como disse acima, é bem complicado. Primeiro que é necessário ter o projeto do jogo em mãos e nele tem de ter tudo relacionado ao estilo gráfico. O jogo vai ter partes chuvosas? Vai ter fumaça? A equipe tem de analisar se aquela engine tem como facilitar a geração gráfica desses recursos, para facilitar a vida dos programadores e não obrigar os caras a programar coisas difíceis que podem demandar bastante tempo e atrasar o projeto. Além disso, se a escolha for equivocada, a equipe terá de continuar até o fim ou recomeçar, o que pode inviabilizar o projeto. Se ela estiver no começo do desenvolvimento ou mesmo criando um protótipo, ela pode se dar ao luxo de alterar a ferramenta e re-testar (mas envolve custos). Se o desenvolvimento está em processo intermediário, aí os programadores terão de se virar pra fazer coisas que em outra engine teria o recurso de forma automatizada.
Outro fator importante na escolha da engine é na documentação e no suporte. OK, para nós desenvolvedores indie a palavra suporte pode parecer uma piada, mas se uma equipe tem condições de adquirir uma engine paga, é interessante analisar se os mantenedores tem como ajudar a equipe com dúvidas diversas. No caso da documentação, se a engine tem algum manual e/ou tutoriais, isso facilita pra equipe poder estudar a engine e a sua estrutura. Se a engine tem fóruns de discussão, os programadores podem pedir ajuda e pessoas mais experientes podem ajudar a equipe em executar funções mais complexas do jogo!
O que quero com este texto é fazer os jogadores pensarem nos ítens acima e analisarem as melhores alternativas. Pode ser bem demorado analisar diversas engines até encontrar a melhor solução, mas no final das contas a equipe pode ter um jogo decente em mãos e terá conhecimentos sólidos naquela engine, o que pode ser bom em futuros projetos, poupando tempo e recursos.

2 comentários em “Escolha da engine – Uma decisão difícil”

  1. Realmente, Allegro e SDL dão muito bem conta do recado para iniciantes em Desenvolvimento de jogos 2D. Eu mesmo sou fascinado pela Allegro.
    Em 3D, a Irrlicht e a Ogre3D são perfeitas, não só para iniciantes, mas é possível criar jogos profissionais e comerciais com elas.
    Claro, isso tudo em C/C++. O JavaME é a, indiscutivelmente, perfeito para Mobile. O mercado de jogos para celulares no Brasil tá crescendo muito, e além de tudo é relativamente fácil fazer jogos nessa plataforma.
    Tem também o XNA, que você não citou aí, mas também é uma boa pedida para desenvolvedores Indie e para empresas, uma vez que já é possível distribuir jogos comerciais (vender) para Xbox360 no Xbox Live.
    Ótimo artigo, Flausino. Valeu! ^^

  2. Marco Biscaro

    Por que, no início do tópico, afirma que Java não é recomendada para aplicações desktop em 3D?
    Isso é o que muita gente afirma, mas atualmente não é bem assim. Com a melhoria da JVM e maior integração direta com o hardware (fullscreen), Java não costuma ter problemas com jogos e 3D. E como já se sabe, Java tem tropocentenas de API's, oficiais e de terceiros, de altíssima qualidade, com suporte e documentação totalmente acessíveis (Java é fantástico, mas isso não vem ao caso).
    Seu post está realmente muito bom e de fato, é bem difícil encontrar uma engine que seja acessível (preferencialmente livre), e ao mesmo tempo robusta e confiável, potente e não muito difícil de usar.

Não é possível comentar.