Java no desenvolvimento de jogos

Propaganda
Java no desenvolvimento de jogos
Escrito por Vinícius Godoy de Mendonça
Seg, 12 de Outubro de 2009 02:53 - Última atualização Seg, 12 de Outubro de 2009 02:53
Por que Java para o desenvolvimento de jogos? O Java tornou-se uma das linguagens mais
populares nos últimos anos, então, é natural que muitos se perguntem se ela é ideal para o
desenvolvimento de jogos. Ela conquistou rapidamente mercado nos jogos de celular e obteve
seu espaço na internet. Mas seria o Java adequado para jogos 2D ou 3D? Nesse artigo,
exploraremos algumas das vantagens e desvantagens do Java nesse mercado.
Pontos positivos
Abrangência
Graças a virtual machine (VM), o Java está presente em todos os principais sistemas
operacionais: MacOS, Linux e Windows. Não só isso, o Java infiltrou-se fortemente no mercado
de jogos para celular, possuindo inclusive acesso as tecnologias 3D para os dispositivos
móveis. Sua presença nesse mercado é tão forte, que hoje são poucos os fabricantes que não
disponibilizam uma VM, e são menores ainda o número de desenvolvedores que desejam criar
jogos móveis usando as APIs nativas dos aparelhos.
O Java também está presente na Internet, embora de maneira não tão forte quanto o
ActionScript/Flash. Por lá, podemos contar com duas tecnologias: os java applets, que
permitem a execução da aplicação diretamente do navegador, quanto o JNLP, que permite a
execução de um jogo na plataforma local (você pode ver um exemplo de JNLP em ação ness
1/7
Java no desenvolvimento de jogos
Escrito por Vinícius Godoy de Mendonça
Seg, 12 de Outubro de 2009 02:53 - Última atualização Seg, 12 de Outubro de 2009 02:53
a página
. Basta clicar em play now!).
É possível, e fácil, desenvolver jogos 2D e 3D em Java, para o desktop. Entretanto, não
podemos dizer que é uma opção comum. O mercado de jogos triplo A exige otimizações
extremas, e boa parte das produtoras já tem uma gigantesca base instalada em C++, sendo
difícil para eles uma mudança nessa altura do campeonato. Um exemplo de jogo grande feito
em Java é o brasileiríssimo Taikodom .
Além disso, muitos não entrarão na indústria de jogos imediatamente, ou nunca entrarão. Seja
por opção, ou pela falta dela, não se pode negar que é interessante dominar uma linguagem
que também está fortemente presente na indústria de software. O Java tornou-se uma das
principais opções no desenvolvimento comercial hoje, e já vem ganhando espaço em
aplicações industriais.
O Java também não se restringe a linguagem Java. Sobre a VM, rodam diversas outras
linguagem como o Groovy e o JRuby . Isso permite a inclusão de scripts no seu jogo de uma
maneira muitíssimo mais transparente e poderosa do que em C++.
Facilidade
O Java pode não ser tão fácil quanto uma linguagem de script, mas é certamente muitíssimo
mais fácil do que o C++. Por livrar o programador de diversos detalhes sobre a gerência de
memória e da plataforma de hardware, o
código Java fica limpo, sendo fácil para qualquer programador entendê-lo e estudá-lo. Por isso.
O programador Indie, que só quer fazer jogos por diversão, pode encontrar no Java um
2/7
Java no desenvolvimento de jogos
Escrito por Vinícius Godoy de Mendonça
Seg, 12 de Outubro de 2009 02:53 - Última atualização Seg, 12 de Outubro de 2009 02:53
ambiente muito mais prazeroso, sem a presença de diversos bugs extremamente estressantes
do C++.
Tal como o C++, o Java possui um número gigantesco de bibliotecas e, geralmente, será mais
fácil instalá-las e anexá-las ao seu projeto do que as feitas em C++. O problema do C++ é que
muitas bibliotecas não virão compiladas, sobrando para o programador a tarefa nem sempre
fácil de encontrar um compilador, montar corretamente o makefile, e compilá-las. Em muitos
casos, é necessário instalar o Visual C++, da Microsoft, só para essa tarefa, mesmo que você
tenha optado por usar outro compilador.
As IDEs feitas para o Java também costumam a ser poderosas, robustas e completamente
gratuitas. A maioria trás anexadas ferramentas como profilers (para testar identificar gargalos
de performance e monitorar consumo de memória), simuladores de telefones, suporte aos
testes unitários, entre outras coisas.
Comunidade ativa e aberta
É fácil aprender Java hoje em dia. Há inúmeros sites na internet explicando a linguagem, livro
s
e
apostilas
gratuitos,
tutoriais
e material didático de boa qualidade. O Java também é ensinado na maior parte das escolas
técnicas e faculdades.
É difícil encontrar bibliotecas Java com ausência total de documentação, exemplos, ou com
código fechado. Os fóruns de nacionais java são movimentados e geralmente suas dúvidas
são resolvidas em questão de minutos.
3/7
Java no desenvolvimento de jogos
Escrito por Vinícius Godoy de Mendonça
Seg, 12 de Outubro de 2009 02:53 - Última atualização Seg, 12 de Outubro de 2009 02:53
A comunidade também produz todo tipo de ferramenta, geralmente de maneira aberta ou
gratuita. A própria gestão da Sun sobre a linguagem, através do Java Community Process ,
acaba sendo feita de maneira muito mais aberta e transparente do que seu principal
concorrente, o C#. Discutem adições na linguagem, APIs e na IDE mantida pela Sun, o
Netbeans
. Há colaboração em todos os sentidos.
Suporte nativo
O Java possui suporte nativo para janelas, gráficos 2D, som, threads, rede, mouse e teclado.
Portanto, é possível montar excelentes jogos 2D sem anexar uma única biblioteca externa
sequer. Assim, tanto o ambiente de desenvolvimento, quanto o jogo em si, tornam-se facílimos
de serem instalados e mantidos. Desvantagens
Nem tudo é perfeito. Com o Java, não poderia ser diferente. Exploremos agora alguns dos
problemas da linguagem, no que tange o desenvolvimento de jogos.
Baixa integração com o sistema operacional
Ser multi-plataforma tem um custo: sua aplicação fica encapsulada numa VM e, por
conseqüência, fica isolada do sistema operacional. O problema é que bibliotecas gráficas como
OpenGL e DirectX, suporte aos controles mais modernos, dependem dessa funcionalidade.
Isso não significa que ela seja inexistente em Java. É possível implementá-las em código
nativo e integrá-las, através da JNI . Entretanto, esse é um desenvolvimento essencialmente
feito em C++, e pode ser até mais difícil do que se você o fizesse seu jogo em C++
diretamente.
Felizmente, a comunidade já se preocupou em resolver a maior parte desses problemas.
Encontramos bindings para OpenGL e para controles. A JOGL , LWJGL e o JInput são
alguns exemplos. Não se pode negar, entretanto, que existe sempre um
gap
entre o lançamento de uma nova tecnologia, e seu suporte na linguagem Java. Muitas vezes,
também pode ser difícil encontrar uma biblioteca estável, que te permita trabalhar com
determinada tecnologia, como é o caso do DirectX.
Outra desvantagem é que muitas dessas bibliotecas não são multi-plataforma, eliminando
4/7
Java no desenvolvimento de jogos
Escrito por Vinícius Godoy de Mendonça
Seg, 12 de Outubro de 2009 02:53 - Última atualização Seg, 12 de Outubro de 2009 02:53
assim uma das principais vantagens de se usar Java.
Não é usada na indústria de jogos AAA
Embora esteja presente em celulares e internet, não podemos negar que ele é inexistente na
indústria de jogos triplo A. E as perspectivas não favorecem uma mudança desse quadro, já
que a indústria de consoles orgulha-se justamente de seu hardware diferenciado. Graças a
isso, dificilmente ouviremos a Microsoft e a Sony preocupadas em criar uma virtual machine
que permita rodar jogos em Java de maneira homogênea em seus consoles.
Por conseqüência, isso mantém o Java afastado dos jogos desse gênero até mesmo no PC,
uma vez que a maior parte dos estúdios tem interesse em porta-los, ou pretende ter
rotatividade entre os membros de diferentes equipes. Sem falar no fato já citado da indústria já
ter uma grande base instalada de aplicativos e bibliotecas escritos em C++, além de pessoal já
qualificado e know how.
Então, se sua meta é essa indústria, custe o que custar, por que perder tempo desenvolvendo
em Java? Essa é uma boa pergunta. Felizmente, nosso site também tem uma sessão dedicada
ao C++.
Exige a instalação da VM
Para o uso das versões mais modernas do Java, o usuário precisa instalar o Java Runtime
Environment
(JRE). Essa instalação é um pouco mais complexa do que a do flash, embora se resuma aos
famosos “next, next, next” dos instaladores comuns. O usuário, entretanto, precisa fazer o
download, e executar um aplicativo externo, e muitos desconfiam dessa operação, ou a temem.
Não é à toa que alguns estúdios, como o miniclip , dão preferência para jogos feitos em
versões muito antigas do Java, como a 1.1 ou 1.2 compatíveis com a Microsoft Virtual Machine,
já integrada nas instalações de Windows.
Felizmente, a presença do Java nas máquinas é cada vez mais comum, graças a pressão feita
pelos bancos e por softwares do governo.
5/7
Java no desenvolvimento de jogos
Escrito por Vinícius Godoy de Mendonça
Seg, 12 de Outubro de 2009 02:53 - Última atualização Seg, 12 de Outubro de 2009 02:53
Fácil de descompilar
Descompilar um código Java é muito mais fácil do que decompilar o mesmo código escrito em
C++. As aplicações para isso, como a cavaj , geram um código tão legível que chega a ser
desconcertante. Mesmo com o uso de ofuscadores, como o
ProGuard
, essa não será uma tarefa muito difícil para quem estiver realmente determinado a fazê-lo.
Portanto, se você pretende manter um segredo industrial forte e não acha que o
know how
de sua equipe é suficiente para manter você na liderança, não use Java.
E a performance, não é um problema?
É difícil comparar a performance de uma aplicação Java com uma aplicação C++. Para um
pequeno código estritamente matemático, será fácil comprovar que o C++ tem performance
superior a do Java. Entretanto, ao entrar em estruturas mais complexas, como alocação de
memória, a comparação começa a se tornar difícil. Um exemplo disso, é o fato do coletor de
lixo
ser
muito mais inteligente do que o C++ na hora de alocar e desalocar memória. Criar objetos
pequenos ou temporários ou lançar exceções em C++, por exemplo, costuma a ser uma tarefa
extremamente custosa. No Java, essas são tarefas praticamente gratuitas.
Outro conceito errado é que o Java é uma linguagem integralmente interpretada. Primeiro,
mesmo que haja interpretação por parte da VM, devemos lembrar que o código interpretado é
de um bytecode compilado, e não de um código fonte textual. Portanto, a VM não precisará
perder tempo fazendo verificações sintáticas e o código está otimizado, permitindo uma
interpretação leve e rápida.
6/7
Java no desenvolvimento de jogos
Escrito por Vinícius Godoy de Mendonça
Seg, 12 de Outubro de 2009 02:53 - Última atualização Seg, 12 de Outubro de 2009 02:53
Além disso, a virtual machine usa uma técnica chamada Hotspot Compilation , Essa técnica
analisa o código em tempo de execução, permitindo assim uma compilação seletiva dos pontos
mais “quentes” de sua aplicação. Como a compilação conta também com informações de
runtime, a VM pode fazer otimizações ainda mais agressivas do que as que seriam possíveis
usando C++. Um exemplo disso, é que
mutexes
são eliminados da compilação, caso a VM identifique que há apenas uma thread rodando.
Outro exemplo é que é possível para a VM eliminar chamadas a métodos vazios, mesmo em
classes polimórficas.
Finalmente, é bom citar que o Java possui ferramentas de excelente qualidade para verificar a
velocidade do código fonte e o consumo de memória, um exemplo é o VisualVM , integrado ao
próprio JDK. Como a VM pode disponibilizar diversas informações sobre a execução da
aplicação, pode-se instrumentar código java de maneira não-intrusiva, isto é, você pode
acompanhar seu código sem a necessidade de alterá-lo. Como a maior parte dos gargalos de
performance não estão na execução do código nativo por si só, será mais fácil otimizar código
Java do que código C++.
Concluindo
Esse artigo apresentou diversos pontos positivos e negativos da tecnologia Java. Se você tem
interesse em fazer jogos por lazer, ou deseja entrar no mercado de celulares ou web, o Java
certamente é uma opção melhor que o C++. Com a tecnologia Java, é muito mais fácil fazer
jogos de boa qualidade, sejam usando tecnologia 3D, 2D ou móvel.
Mesmo que você queira investir para valer na indústria hardcore, o Java pode ser uma boa
opção antes de você entrar lá. Tanto para o estudo das técnicas de programação em si,
simplificado pelo fato da linguagem te poupar de detalhes de baixo nível, quanto pelo fato dele
estar mais presente no mercado comercial, representando assim uma linguagem rentável.
Apresentaremos artigos nas duas linguagens, escritos por profissionais experientes. Agora, só
cabe a você escolher quais deles seguir.
7/7
Download