Ponto V!

Home Java Informações gerais Java no desenvolvimento de jogos
Vinícius Godoy de Mendonça
Java no desenvolvimento de jogosImprimir
Escrito por Vinícius Godoy de Mendonça

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.

Logomarca da plataforma JavaO 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 nessa 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 IDE Eclipsecó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 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, livros 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. Java Community Pie

É 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.

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 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.

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.

Profiling com a VisualVM no Vikanoid. É melhor otimizar o desenho da classe Brick... 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.

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.


Comentários (46)
  • Bruno Daniel Marinho  - Legal
    avatar

    So uma questão com relação a facilidade de descompilar não haveria outras alternativas? pois no caso de criar um mmrpg o numero de programas cheats seria gigantesco sendo simples assim a engenharia reversa.

  • Vinícius Godoy de Mendonça  - MMORPGs
    avatar

    Na verdade, nos MMOs o problema seria menor, porque o servidor não é de domínio público. Se você fizer a coisa direito, não haveria problema do código do cliente ser até mesmo 100% Open Source.

    Um exemplo disso é o WOW, que deixa os usuários escreverem seus próprios plugins.

    As alternativas para a descompilação são o uso de ofuscadores, ou o uso de criptografia em alguns .jars.

    Os ofuscadores substituem nomes de classes, métodos e variáveis legíveis por nomes ilegíveis como _ e __. Assim, dificulta o trabalho de quem descompila o código. Por outro lado, eles devem ser usados com cuidado em código que faz uso de reflexão.

    Já a criptografia do .jar é útil, porém, sem o uso de ofuscadores em algum momento, alguém poderá descompilar o .jar que desfaz a criptografia e colocar tudo a perder.

  • Davi
    avatar

    :0 Abriu muito minha mente em relação a que linguagem escolher. Por enquanto continuo com Java :)

    Esse site é um paraíso

  • Paulo
    avatar

    só uma observacao, voce esqueceu de falar do jogo runescape, que é 3D e feito totalmente em JAVA, inclusive com graficos muito avancados, como sombras e efeitos de textura.

  • Vinícius Godoy de Mendonça  - Jogos em Java
    avatar

    Na verdade, a idéia do artigo era só um comparativo geral das linguagens.

    Realmente, existe tanto o Runescape, quanto o Taikodom, como ótimos exemplos de jogos em Java.

    Acho que os MMOs são os que mais se beneficiam da tecnologia, tanto na parte do servidor, quanto pelo fato da maioria ser exclusivamente para PC.

    Ainda estou ansioso para algum jogo da grande indústria surgir usando Java.

  • Anderson
    avatar

    eu também!!! =O

  • Luciano Braga  - Muito Bom
    avatar

    Muito bom o que vc escreveu aqui. Eu estou hoje iniciando meu estudo sobre java e enquanto escrevo aqui estou fazendo o download do SDK para começar a estudar java. O que eu sei hoje é voltado para web, sei html, css, um pouco de javascript e PHP como linguagem dinamica mas ainda não entrei na programação para PC pois não fui muito bem sucedido em aprender C por ser muito complicado e acho que pelo fato de eu ter tentato aprender C antes de qualquer outra coisa.
    Um amigo hoje me falou que eu deveria aprender java pois é bem melhor que C ou mesmo Delphi que eu tambem tentei aprender mas desisti para me dedicar a programação web que é o que eu faço hoje.
    O brigado por escrever o que acabei de ler e por contribuir com a comunidade de desenvolvedores que assim como eu estão tentando aprender algo novo.

  • Vinícius Godoy de Mendonça
    avatar

    Obrigado.

    É muito restrito dizer que uma linguagem é melhor que outra. Como você leu aqui, o Java tem pontos fortes e pontos fracos, no que tange ao desenvolvimento de jogos.

    Resta só analisar esses pontos, alinha-los com seu interesse pessoal e escolher a linguagem certa. ;)

  • luciano Braga  - Realmente!!
    avatar

    Olha, eu acho que o java é uma otima linguagem. No meu caso tenho interesse em aprender para criar alguns jogos para celular e tambem desenvolver um sistema de gerenciamento de vendas que ja tentei em php mas como é linguagem web e tem de rodar no navegador acabou não saindo como eu queria. O legal é que fiz o sistema rodar em um servidor e funciona em um site de uma farmacia mas quero realmente fazer um programa em java pq achei que seria melhor java do que C.
    Ontem baixei o Netbeans e é bem paracido com o Delphi( o lance de arrastar e soltar) ja vem botões prontos e uma ruma de coisa, é bom pq podemos criar programas bem interessantes visualmente.

  • Denis  - Muito bom
    avatar

    Nossa tem um jogo q agoro que é feito em java "Minecraft" :) :)

    Meu TCC do curso tecnico é um joguinho tipo Detetive, para jogar em rede estamos quase acabando :cheer:

  • Vinícius Godoy de Mendonça
    avatar

    Acho que o MineCraft é a última sensação do momento. Pelo menos, muitos tem falado nele.

    Mas é difícil achar um jogo 100% Java. A maioria tem algum tipo de hibridismo.

  • Ênio Francisco da Silva  - GAME SERVLET com APPLET no TOMCAT
    avatar

    Vinícius, tudo bem? Sou bem novato com Java e estou adorando as vantagens e os desafios que ele proporciona.
    Fiz um game multi-jogadores mas estou enfrentando um problema na hora de colocar no meu servidor local (TOMCAT). Poderia me dar umas dicas?
    No eclipse funciona perfeitamente mas ao colocar as classes no Tomcat6 o Cliente-Servidor não se comunica.

    Eu uso no TOMCAT o comando URL url = new URL(getCodeBase(), "chat";); //NÃO FUNCIONA

    Eu uso no Eclipse o comando URL url = new URL(getCodeBase(), "http://localhost:8080/chatWebServer/chat";); //FUNCIONA

    Parabéns pelos artigos... eu os li e eles despertaram mais ainda o interesse de mergulhar em games e tudo que está envolvido.
    Se precisar do código-fonte para entendermelhor é só pedir.

    obrigado,

    Ênio
    enio.francisco@gmail.com

  • Vinícius Godoy de Mendonça
    avatar

    Olá Ênio.

    O local para essa dúvida é o GUJ, não o Ponto V. ;)

  • Edson  - java
    avatar

    bz!!!!!!!!kara preciso de ajuda qero um sistema pronto em java pra eu refazer pode um sistema de locadora,farmacia,sei la qualquer um desde que seja de java......valeu acordo resposta

  • Vinícius Godoy de Mendonça
    avatar

    Acho que houve algum engano. Somos um site educacional sobre desenvolvimento de jogos. Não desenvolvemos sistemas comerciais desse tipo.

    Você pode procurar por sistemas assim no google mesmo, em sites como de programa opensource - como o sourceforge, github ou google code) - ou em fóruns - como o GUJ.

  • Pb600  - Java
    avatar

    Haha concordo com você em todos os aspectos, Como ja citado acima Runescape é um jogo muito bom feito em java, é um grande exemplo, mas comprova o que você falou porque eles usam JNI, os gráficos são bons pois eles integraram, OpenGL, DirectX etc ao cliente, e realmente é frustante como é fácil decompilar um programa ;/ acho que pode reforçar um pouquinho tornando o aplicativo executável.
    E realmente caso o servidor seja bem feito não importa se o cliente for código aperto, des de que o servidor controle tudo direitinho, sem deixar brechas, o que é muito difícil em um jogo gigante.
    Aí como você falou, é necessário instalar JRE antes de executar o aplicativo, mas tem meios de integrar o JRE direto ao jogo, assim a pessoa ao baixar o jogo, não precisaria ir no site do java e instalar tudo.
    E concordo que java interaja pouco com o sistema operacional assim necessitando muitas veses que você use um código nativo, até mesmo para um keylistener com a janela minimizada :p
    Aí muito bom artigo tais de parabéns =D

  • Vinícius Godoy de Mendonça
    avatar

    Pois é, todas as linguagens tem vantagens e desvantagens e esses aspectos do Java são mesmo inegáveis.

    No próprio projeto Alegria, eu só consegui encontrar um único binding decente para integração com joysticks (o JInput), nenhum binding forte para DirectX. Ficamos na mão de poucos grupos que geram esses bindings e temos que rezar para não haver descontinuidade. =/

  • Michel Montenegro  - Java
    avatar

    Para criação de MMOG (Ex: MMORPG) acha que java pode ser uma boa?

    Cria-lo no lado servidor eu sinceramente acho que deve ser excelente(Me corriga se estiver enganado).

    E no Lado cliente? Quais soluções pode me dar pra resolver isso (ex: JAva mesmo ou ...)

  • Vinícius Godoy de Mendonça
    avatar

    Acho uma tecnologia excelente para o servidor, mas não muito adequada para o cliente. Uma das soluções seria usar o JMonkeyEngine para o cliente, mas eu ainda preferiria a Unity3D (C#) ou mesmo a Ogre3D (C++).

    No lado do servidor, procure se informar sobre o projeto Red Dwarf.

  • Bruno Crivelari Sanches
    avatar

    O Erinia foi desenvolvido dessa forma: java no server, C++ no cliente.

    A comunicação era toda via sockets com TCP/IP.

    O único inconveniente dessa técnica é não poder compartilhar código entre ambos e ocorriam casos de ter que ficar fazendo correções de bugs duplas devido ao mesmo código (que era duplicado em C++ e Java) ter o mesmo bug. Pode-se usar JNI, mas acho JNI meio chato de se usar.

  • Vinícius Godoy de Mendonça
    avatar

    Eu discordo de você sobre o JNI. Acho ele muito chato de usar. :D

  • Bruno Crivelari Sanches
    avatar

    Na verdade nem tive paciência de usar, a unica vez que surgiu uma quase possibilidade descartei depois de ler a documentação :).

  • Michel Montenegro  - Michel Montenegro
    avatar

    Existe algum artigo explicando como funciona esta interação entre os Servidores de MMORPG e seus Cliente?

    Pra ser mais especifico, existe o "reddwarfserver" mas e ai? pra que tenha uma ligação Cliente-Servidor de que forma meu cliente deve ser desenvolvido e como faço a integração com o Server?
    {RMI ou Protocolo TCP/UDP}, sinto que essa relação depende mais de como meu cliente é projetado para interagir com oservidor que ao contrario, e é esta relação que quero entender.

    Dizem que posso fazer um sistema inteiro "StandAlone" e fazer a integração depois que é "fácil", mas este "fácil" que sou pé atrás também.

  • Michel Montenegro  - [SourceForge] JMMORPG Project
    avatar

    Ai vai mais um exemplo de que é possivel fazer um jogo em java (Até com uma certa facilidade)

    ==========================

    Projeto (Open-Source) para a criação de MMORPGs em Java.
    JMMORPG Project: https://sourceforge. net/projects/jmmorpg/

  • Vinícius Godoy de Mendonça
    avatar

    Bom, eu ainda não chamaria seu projeto de "exemplo". Ele está bem no início e ainda não há qualquer resultado palpável (sua sessão de arquivos está até mesmo vazia). Você ainda não esbarrou pelas dificuldades que a linguagem impõe.

    De qualquer forma, jamais dissemos ser impossível fazer nada em Java. Até comentei que ele seria uma boa tecnologia para o servidor, mas que existem alternativas muito melhores para o cliente.

    Logo você começará a esbarrar na necessidade de usar JNI.

  • Michel Montenegro
    avatar

    Falei que é MAIS um exemplo de que é possivel fazer um jogo em Java, o que é verdade. Penei que nem um maluco pra achar "facilitadores" para o desenvolvimento e depois fazer funcionar. Sendo bem sincero deste ponto em diante os problemas que vem ão mais conceituais "Qual a melhor forma de fazer isso?", mas vamos ver quantas vezes esta pergunta "tenho como fazer com as tecnologias que uso?" vai ter a resposta sim ou não.
    Obs: Posso te garantir que é um bom exemplo sim e não um "exemplo", não por ele estar pronto, mas só eu sei a penuria que é achar exemplo com fontes e pior prestaveis (A maioria parte do principio que quer fazer algo basico e não saem daquilo). Artemis é excelente mas não tem nada em java igual a ele (Que eu tenha achado) e praticamente só tem uma fonte de informação e ta no começo.

    Bom por hora ele ta no começo mesmo, isso é inegavel, mas já tem o necessario para evoluir.

    Screens:
    http://img31.imageshack.us/img31/2249/jmmorpgtela3.jpg

    http://img718.imageshack.us/img718/9497/jmmorpgtela1.jpg

    http://img9.imageshack.us/img9/2497/jmmorpgtela2.jpg

  • Vinícius Godoy de Mendonça
    avatar

    Sim, mas vendo os screenshots dá para ver que seu exemplo sofre das deficiências que comentei:

    1. Ele se baseia na LWJGL, que é um binding. Assim, sua API está na mão de um desenvolvimento de terceiros, que pode simplesmente ser descontinuado (como já ocorreu com o JOGL, que ficou passando de mão em mão).
    2. O Java não tem suporte a MP3 ou OGG. Não sei se você está fazendo usando a JavaZoom, ou irá tentar usar a JOGL e criar classes baseadas em OpenAL. O fato é que, novamente, você estará na mão de terceiros.
    3. Seu projeto continuará não sendo suportado em nenhum console.

    Se seu objetivo fosse simplesmente um jogo, você até poderia conviver com APIs terceiras. Afinal, jogos tem mesmo um ciclo de desenvolvimento com começo, meio e fim. Agora, eu não apostaria minhas fichas nessas deficiência para criar uma API ou um MMO, pois ambos tem duração mais longa. Foi por isso que descontinuei o projeto Alegria para java, e resolvemos mudar seu foco para usar o Android.


    No caso do servidor, acho o Java uma tecnologia excelente.

  • Michel Montenegro
    avatar

    Sim, compreendi o que falaste e é verdade, mas vamos ver no que dá. Por hora faço minha parte, e espero conseguir apoio para seguir pelo melhor caminho dentro desta estrada de pedras que é Desenvolver o jogo em Java. ^^

    Realmente no lado servidor não vejo muitos problemas.

  • Pamela Oliveira
    avatar

    Estou pesquisando materiais sobre JSP e JSF para desenvolver um jogo para auxiliar no ensino de lógica de programação para uma disciplina na faculdade. Mas não tenho encontrado muita coisa :( Se alguém puder indicar ou disponibilizar materiais para eu estudar sobre isso, eu agradeço desde já.

  • Vinícius Godoy de Mendonça
    avatar

    Por favor, poste sua dúvida no GUJ. Esse é um site sobre jogos.

  • Paulo  - Jogos de redes sociais
    avatar

    Olá, tudo bem?
    Parabenz pelo site, otimo mesmo. To muito interessado em estudar javascript, mas gostaria antes de saber se aqueles jogos de redes sociais tipo cityville são feito em javascript ou actionscript?

  • Vinícius Godoy de Mendonça
    avatar

    São feitos em ActionScript e flash, em sua maioria. Essa tendência deve mudar no futuro, caso o HTML5 pegue.

    Mas detalhe: Esse é um tutorial de Java, que é uma linguagem completamente diferente da JavaScript.

  • Marcio Abreu  - Dificuldade em fazer um loop que inicie e termine
    avatar

    Olá Vinicius, sempre que procuro informações pela internete com relação à java te encontro em algum lugar,.. to precisando de uma ajuda,
    preciso que quando o usuario pressionar determinado botão da aplicação que ela fique enviando dados pra porta paralela até que eu solte o botao, mas ta dando certo quando solto o botao e faz uma vez e para, gostaria que isso ficasse continuo até eu soltar. Vc conhece algum metodo que possa fazer isso, estou se idéias. Obrigado por enquanto.

  • Vinícius Godoy de Mendonça
    avatar

    Oi. Por favor, poste sua dúvida no GUJ. Esse portal é exclusivamente destinado à jogos digitais.

  • Felipe
    avatar

    Olá, tudo bem?
    Estive pensando em implementar um jogo 2D, no estilo de Tetris ou Snake. Me parece que com C++, OpenGL e SDL é possível implementar. Gostaria de saber se estou certo e se com Java/Java 2D apenas também é possível ou se precisarei aprender mais alguma outra API?
    Parabéns pelos site.
    Obrigado.

  • Vinícius Godoy de Mendonça
    avatar

    Se é um jogo simples, 2D, como Snake, não precisa usar C++. A menos que você queira realmente estudar OpenGL.

    Agora, eu recomendaria que você usasse o C# + XNA. A linguagem é parecida com o Java, que você já conhece. Porém, o XNA é completo: tem boas classes para sons, entrada para diversos controles (inclusive o Kinect) e, de quebra, você poderia testar seu jogo no X-Box.

    Não perca tempo com jogos para Java. Infelizmente, a linguagem não dá suporte a eles, não há nenhum interesse da Oracle e, praticamente tudo que encontramos, é mantido por poucas pessoas.

  • Michel Montenegro
    avatar

    Eu tenho tido bons resultados com java no que se refere a jogos, inclusive um amigo fez algo bem interessante o Pedro. Não acho perda de tempo, aprendi com o tempo que tudo depende do que queres fazer, inclusve o PEdro esta fazendo um Snake em java. Jogos para celular java ainda domina. ^^

    Mesmo no meu caso, para o que vou apresentar muito em breve se tuco continuar indo bem, também se aplica.

    Até em Delphi podes fazer um jogo rsrsrs...

  • Vinícius Godoy de Mendonça
    avatar

    Oi Michel.

    Se você quer usar o Java para aprendizado, ou para Android, ok, vá fundo.


    Mas, como já te expliquei diversas vezes, essa linguagem está longe de ser a mais adequada para a tarefa. É lógico que não é impossível fazer jogos em Java, só que você terá muito mais impecilhos.

    Por exemplo, não existe suporte nativo do Java para:
    - Controles;
    - Músicas (mp3, ogg);
    - Classes matemáticas aceleradas por hardware;
    - Ambiente gráfico 3D;

    Você é obrigado a recorrer a projetos externos, como o JInput, LWJGL, Slick2D ou JMonkeyEngine. Projetos esses muitas vezes abandonados (JInput, JOGL) ou suportados por pessoas física (JavaZoom, Slick2D).

    Além disso, o Java não é suportado em nenhum console, e nem a indústria quer que seja.

    Também há um péssimo suporte em libs famosas para física, criação de árvores/terrenos, etc...


    Programar jogos em Java, hoje em dia, é remar contra a maré. Se você ainda gosta, é porque provavelmente não tentou programar usando linguagens apropriadas para isso.

  • Michel Montnegro
    avatar

    opa, tudo bom Vinícius.

    Rapaz, eu entendo e não discordo quanto a java ser tenso para programar jogos, mas tem que convir que, jogos para celular, que precisam de funcionalidade em mais de um OS (Android que o diga) ele ainda é interessante.

    Concordo com o fato de usar tecnologias de terceiros quando não se tem garantia de nada é ruim, eu particularmente estou usando e sem pudor, e to gostando dos resultados até agora (É um risco? é!, mas estou pagando para ver).

    Se eu não quiser programar jogos somente para wwindows, quero ele multiplataforma, nem ligo para consoles, pois o foco de minha aplicação é outra, como fica? O que quero dizer com isso que jogos como Tibia no meio online fazem sucessoaté hoje, temos o Dofus, e GameB rowser ( EITA Fazer jogo com PHP????), imagina isso, jogo usando php em um browser, sem um pingo de som etc. Jogo é divertimento o negocio é se és capaz de gerar divertimento com o que tens a mão e qual o teu foco/objetivo.

    foco/objetivo = Diz o que é interessante/viavél ou não usar.

  • Vinícius Godoy de Mendonça
    avatar

    Se quiser fazer jogos para múltiplas plataformas, você pode usar o C++. Existem dezenas de APIs e libs portáveis, que permitirão que você recompile em muito mais plataformas que o Java. No caso da SDL, por exemplo, o número de plataformas gira em torno de 13. Ou, você ainda pode usar o C#, Boo ou JavaScript com a Unity, que tem suporte a diversas plataformas (mais de 5).


    Aliás, quando você diz multiplataforma, em termos de Java, você hoje só fala em 2 plataformas: Linux (onde está um número ínfimo de jogadores) e Windows (o principal sistema desktop). As demais, não são suportadas pela Oracle ou pela Apple. A coisa fica ainda pior quando você começa a usar APIs de terceiros, pois essas APIs terão que ser multiplataforma também, e seu produto acabará só rodando no pior cenário de todas elas.

    O Android é uma plataforma a parte, mas também não é exatamente Java. As APIs são outras, o que irá comprometer sua portabilidade. Ele seria o único motivo para se usar Java como linguagem (mas não como plataforma) para jogos hoje em dia.

    Quando falamos em C# com XNA, estamos falando de 3 plataformas significativas, e diretamente suportadas. O Windows (99% do mercado), o X-Box (36%), e o Windows Phone 7. Todas são plataformas com um número expressivo de jogares e abrangem os três principais segmentos da indústria: consoles, dispositivos móveis e PC.


    Volto a dizer, não é impossível fazer jogos em Java. O Minecraft é um exemplo de que é possível. Mas é extremamente inadequado. Você provavelmente gastará muito mais esforço, perderá mais tempo e terá mais problemas do que se simplesmente usar uma plataforma onde os seus criadores apoiem a indústria de jogos.

    Defender o Java para jogos, é o mesmo que alguém aparecer no GUJ dizendo que quer usar C++ para fazer websites, ou alguém aparecer num fórum de robótica dizendo que vai implementar tudo em PHP. Possível? Provavelmente sim. Boa idéia? Certamente não.

  • Bruno Crivelari Sanches
    avatar

    Sem falar que o Android suporta C++ e esse já é um ótimo motivo para não usar Java com ele, ao menos para jogos.

    Se posso fazer em C++ e de quebra portar para Android, iPhone, Pc (Windows e Linux) e se a coisa der lucro mesmo, compro um devkit e porto para o 360.

    A única vantagem que vejo hoje no Java para jogos é para ter algo com um pouco mais de recursos que o Flash e funcionando na web, pois a penetração do plugin do Java nos navegadores só não supera a penetração do Flash, então realmente é vantajoso para fazer algo online, fora isso, não vejo vantagens.

  • Anônimo
    avatar

    quero um chat com algum perito em java (eclipse),se puder me ajudar eu aceito

  • Michel Montenegro  - E o que deseja?
    avatar

    Qual seu e-mail?

Escrever um comentário
Your Contact Details:
Gravatar enabled
Comentário:
[b] [i] [u] [url] [quote] [code] [img]   
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch::(:shock:
:X:side::):P:unsure::woohoo::huh::whistle:;):S:!::?::idea::arrow:
Security
Por favor coloque o código anti-spam que você lê na imagem.
LAST_UPDATED2  

Busca

Linguagens

Twitter