|
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 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
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 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. ![]()
É 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.
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.
-
12/12/2009 19:06:09 | Vinícius Godoy de Mendonça - MMORPGs

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.
-
19/03/2010 11:57:49 |200.238.99.xxx| Davi

Abriu muito minha mente em relação a que linguagem escolher. Por enquanto continuo com Java 
Esse site é um paraíso
-
28/06/2010 18:39:48 |189.73.228.xxx| Paulo

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.
-
28/06/2010 18:51:06 | Vinícius Godoy de Mendonça - Jogos em Java

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.
-
10/11/2010 23:27:05 |201.30.133.xxx| Luciano Braga - Muito Bom

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.
-
11/11/2010 11:30:21 | Vinícius Godoy de Mendonça

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.

-
12/11/2010 00:37:44 |201.30.133.xxx| luciano Braga - Realmente!!

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.
-
17/11/2010 19:55:18 |187.66.55.xxx| Denis - Muito bom

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
-
17/11/2010 20:54:51 | Vinícius Godoy de Mendonça

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.
-
21/11/2010 16:13:02 |186.204.53.xxx| Ênio Francisco da Silva - GAME SERVLET com APPLET no TOMCAT

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 FUNCIONAEu uso no Eclipse o comando URL url = new URL(getCodeBase(), "http://localhost:8080/chatWebServer/chat"
; //FUNCIONAParabé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
-
25/01/2011 10:34:21 | Vinícius Godoy de Mendonça

Olá Ênio.
O local para essa dúvida é o GUJ, não o Ponto V.

-
27/01/2011 11:36:00 |189.125.228.xxx| Edson - java

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
-
27/01/2011 13:30:09 | Vinícius Godoy de Mendonça

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.
-
13/02/2011 22:44:18 |189.35.12.xxx| Pb600 - Java

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
-
14/02/2011 08:54:22 | Vinícius Godoy de Mendonça

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. =/
-
14/05/2011 04:49:20 |189.82.84.xxx| Michel Montenegro - Java

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 ...)
-
14/05/2011 08:50:37 | Vinícius Godoy de Mendonça

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.
-
25/05/2011 13:02:51 | Bruno Crivelari Sanches

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.
-
25/05/2011 13:39:25 | Vinícius Godoy de Mendonça

Eu discordo de você sobre o JNI. Acho ele muito chato de usar.
-
25/05/2011 13:47:18 | Bruno Crivelari Sanches

Na verdade nem tive paciência de usar, a unica vez que surgiu uma quase possibilidade descartei depois de ler a documentação
.
-
14/05/2011 09:17:37 |189.82.84.xxx| Michel Montenegro - Michel Montenegro

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.
-
19/06/2011 17:40:21 |189.82.48.xxx| Michel Montenegro - [SourceForge] JMMORPG Project

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/
-
19/06/2011 17:42:20 | Vinícius Godoy de Mendonça

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.
-
19/06/2011 17:54:39 |189.82.48.xxx| Michel Montenegro

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.jpghttp://img718.imageshack.us/img718/9497/jmmorpgtela1.jpg
http://img9.imageshack.us/img9/2497/jmmorpgtela2.jpg
-
19/06/2011 18:04:03 | Vinícius Godoy de Mendonça

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.
-
19/06/2011 17:57:20 |189.82.48.xxx| Michel Montenegro

* Se as screens não abrirem tem aqui no forum [GUJ]:
http://www.guj.com.br/java/245205-sourceforge-jmmorpg-project# 1269541
-
19/06/2011 18:23:25 |189.82.48.xxx| Michel Montenegro

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.
-
21/06/2011 20:50:37 |189.82.97.xxx| Michel Montenegro

Vou manter a evolução do projeto pelo forum do GUJ, no topico indicado no link abaixo:
http://www.guj.com.br/java/245205-sourceforge-jmmorpg-project# 1271069
-
13/08/2011 17:29:25 |200.129.150.xxx| Pamela Oliveira

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á.
-
13/08/2011 18:32:42 | Vinícius Godoy de Mendonça

Por favor, poste sua dúvida no GUJ. Esse é um site sobre jogos.
-
16/09/2011 20:55:04 |201.8.71.xxx| Paulo - Jogos de redes sociais

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?
-
17/09/2011 08:34:34 | Vinícius Godoy de Mendonça

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.
-
20/10/2011 00:44:36 |201.55.128.xxx| Marcio Abreu - Dificuldade em fazer um loop que inicie e termine

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.
-
20/10/2011 11:37:04 | Vinícius Godoy de Mendonça

Oi. Por favor, poste sua dúvida no GUJ. Esse portal é exclusivamente destinado à jogos digitais.
-
09/12/2011 19:53:32 |189.102.45.xxx| Felipe

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.
-
10/12/2011 08:22:25 | Vinícius Godoy de Mendonça

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.
-
10/12/2011 13:49:49 |189.82.112.xxx| Michel Montenegro

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...
-
10/12/2011 22:46:22 | Vinícius Godoy de Mendonça

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.
-
11/12/2011 14:12:09 |189.82.64.xxx| Michel Montnegro

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.
-
11/12/2011 16:45:35 | Vinícius Godoy de Mendonça

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.
-
11/12/2011 21:16:23 | Bruno Crivelari Sanches

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.
-
11/01/2012 19:07:23 |201.19.85.xxx| Anônimo

quero um chat com algum perito em java (eclipse),se puder me ajudar eu aceito
-
17/04/2012 20:51:26 |189.5.58.xxx| Hermes - Arquitetura para Jogos.

Galera, preciso de ajuda dos masters em jogos aqui...
Sou arquiteto java j2ee, trabalho com sistemas comerciais em java a 10 anos.
Estou entrando em uma área totalmente nova para mim. Estou iniciando o desenvolvimento de um jogo com um colega. Ele está fazendo todo o GDD (Game Design) e eu estou começando a imaginar como eu vou fazer isso tudo... A ideia de de um jogo de batalha, imagina o age of empires, logico que muito mais simples, e nesse primeiro momento sem a parte grafica ainda...
Não gostaria de fugir do java, ja que é o chão que eu sei pisar nesse momento. O jogo será Web...
O que vocês me indicam a usar em frameworks e arquitetura?
Voces tem algum projeto de exemplo que posso usar como base?Agradeço se puderem me ajudar nessa....
-
17/04/2012 22:06:09 |189.82.134.xxx| Michel Montenegro - [Parallax] Projeto Open Source feito em Java

Olha se o que procura e criar jogos em Java, vou te indicar meu projeto Parallax (OpenSource/Free), no minimo vai ser uma boa escola (Temos um site, forum e uma comunidade), só pedimos os creditos por toda e qualquer ajuda que este projeto venha a oferecer, nada mais que isto.
Introdução:
http://www.e informacao.com.br/parallax/introducao1° Video (Tem 5 Videos no site):
http://www. einformacao.com.br/parallax/videos/gameObservação: Ele não é um jogo, é uma engine (Motor de criação de jogos), similar ao RPGMaker.
Olha existem varias plataformas, linguagens e tecnologias para jogos (C++, C#, Java, ... XNA, unity3D, GameMaker, UDK, ..., etc.), Qual delas seria a mais indicada depende de cada situação, existe o senso comum de que C++ é uma das linguagens mais indicadas para a criação de jogos. De uma estudada em cada uma e veja qual se enquadra melhor.
Falando agora sobre Java, se no caso a curva de aprendizagem for menor já pela tua experiencia (sei o que é isso, pois passei pelo mesmo), vá em frente, te aconselho fortemente a olhar o Parallax, pois ele usa o que tem de melhor para criação de jogos em Java (Tecnologias mais recentes e produtivas), vá no link Introdução e leia sobre as tecnologias aplicadas no mesmo.
Se quiser falar comigo.
Meu E-Mail/GTalk/Msn: michel.montenegro@gmail.comMeu Skype: michel.montenegro
(Belém-Pará, a foto é de um lobo
)
-
18/04/2012 09:55:15 | Vinícius Godoy de Mendonça

Oi.
O jogo será para desktop, com uma conexão para web, como faz o StarCraft 2 ou o Minecraft, ou você está pensando em rodar diretamente via applet?
No caso de applets, o problema de engines como LWJGL, Parallax e Slick2D, é que elas se baseiam em bindings JNI. Portanto, é difícil autorizar o applet, e o download do jogo fica bastante lento. Além disso, o applet não será aceito na maioria dos publishers.
No caso de games via web, algumas boas alternativas são a Unity, que tem um ótimo webplayer e o flash. Uma das vantagens da Unity é que ela vem sendo fortemente adotada no mercado brasileiro, e pode ser uma boa fonte de estudo se você quiser entrar nesse mercado no futuro.
Agora, caso o seu game seja daqueles games onde você no fundo atualiza status em páginas web (como o hattrick), você pode usar frameworks e fazer uma modelagem como um sistema comercial Java qualquer. Eles não são muito diferentes disso.Informe melhor o que você está planejando para podermos orienta-lo melhor.
-
19/04/2012 08:48:18 |177.24.58.xxx| Hermes - Melhorando a pergunta...

Bom , o que o game design está pensando é em algo que tenha um pouco do http://www.astroempires.com/ e um pouco do www.imperiaonline.org.
Alguma ideia do que eu posso usar como arquitetura?
Valeu galera...
-
19/04/2012 09:36:33 | Bruno Crivelari Sanches

O astroempires nào conseguei ver bem como é, mas o imperiaonline me pareceu ser todo no navegador, assim como o Lord of Ultima não?
Se for isso mesmo, é uma aplicação web como qualquer outra, então pode-se usar Java,Php ou qualquer outra linguagem / tecnologia de desenvolvimento web.
-
19/04/2012 09:44:47 |177.24.58.xxx| Hermes

O astroempires também é web desse jeito...
Pelo que eu vi os dois abusam muito do jquery, o que no meu caso é bom pois eu ja conheço bem...Bom, acho que nesse meu caso a minha experiência vai me ajudar então, ja que posso usar arquitetura que eu ja estou aconstumado...
Mas é logico que esse game é apenas o primeiro, iremos explorar outros mundos depois, e com certeza volto pedir ajuda...
Valeu.











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.