Engine para criação de jogos Brasileira em Java - Parallax

63 respostas
F

Salve galera

Estive recentemente procurando por criação de jogos em Java ou em outras Linguagens, alguns senhores aqui deste fórum me falaram sobre C++/XNA etc…etc…Me desencorajaram do Java, uns até disseram que Java não é bom para jogos etc e tals, a velha resenha de sempre, Java é bom apenas pra internet(Web), coisa que não concordo e acho que nunca vou concordar até mesmo pq Java me mostra sempre o contrário com apenas algumas pesquisas.
Voltando ao assunto, em minhas pesquisas, conversei com muita gente, recebi muitas sugestões e encontrei uma engine feita por um kra Brasileiro e gente bonissima q me deu várias idéias e me disse: “Não precisa sair do Java para criar games”.

Me mostrou seu projeto q eu pessoalmente achei fantástico, a engine criada por ele de nome Parallax, pode ser vista aqui: http://www.einformacao.com.br/parallax/

Por isso, quero compartilhar isto com todos aqueles que acham que Java não é apenas para Web, vejam a engine e se puderem entrem em contato com o Sr.Michel Montenegro, criador da Engine.

Obrigado

63 Respostas

L

Minecraft é um jogo bem famoso e é feito em java…
o que java não é bom é para renderização grafica de graficos de alta qualidade… trabalhar com opengl, directx, etc… Porem nem todos os bons jogos são feitos de graficos fodasticos…

J

Esse seu post é bem controverso. Você acha que na sua opinião uma ferramenta como essa parallax poderá ter a qualidade da unity3d mostrada no mesmo artgo?

Eu imagino que não devido as experiências de mercado que tenho visto ao longo do tempo, como por exemplo taikodom.

A 3 anos boa parte do jogo era escrito em java. Hoje java aparece somente na interface gráfica. O grosso do game como egine gráfica e física foram reescritos em c++.

Mas isso é uma questão de investimento. Precisa haver investimentos na qualidade desses compiladores. Se aparecer um compilador java que possa bater o gcc algum dia pode ter certeza que começam a investir na linguagem para esse seguimento.

J

luistiagos:
Minecraft é um jogo bem famoso e é feito em java…
o que java não é bom é para renderização grafica de graficos de alta qualidade… trabalhar com opengl, directx, etc… Porem nem todos os bons jogos são feitos de graficos fodasticos…

isso eu concordo com você. Dá para fazer muitos bons jogos com java. Mas o setor triplo A(AAA) é completamente inviável.

M

fernandopaiva
Obrigado pelo reconhecimento, recentemente o projeto vem crescendo/evoluindo de uma forma que estou tendo reconhecimento de algumas pessoas, grupos e entidades (Por exemplo algumas universidades daqui, listas como o BelJogos, GUJs e afins), é este tipo de motivação que impulsiona qualquer projeto. :slight_smile:

Como notei que não deram uma lida e ainda não conhecem o projeto, vou passar algumas informações rápidas.
1 - Ele não concorre com engines 3D como a unity, seu foco é ambiente 2D.

2 - Quando falamos de ambiente 2D Java, atende perfeitamente no quesito qualidade gráfica (Aplicados a OpenGL no caso em questão).

3 - Falando sobre o mercado, vamos fazer algumas perguntas:
a) Desenhos (Incluso animes) em sua maioria são 2D ou 3D, o que predomina no mercado?
Resp: 2D.

b) HQs (Incluso mangas) em sua maioria são 2D ou 3D, o que predomina no mercado?
Resp: 2D.

c) Jogos para celular o que predomina (2D ou 3D)?
Resp: 2D.

d) Jogos On-Line em meios sociais como facebook, orkut e cia o que predomina (2D ou 3D)?
Resp: 2D.

e) Jogos On-Line MMORPGs o que predomina (2D ou 3D)?
Resp: Esta tendo um spam de jogos tanto para 2D como para 3D, aqui o mercado tende ao 3D, mas jogos do gênero em 2D continuam sendo desenvolvidos aos montes.

d) Jogos para console quem predomina (2D ou 3D)?
Resp: O mercado no passado era dominado pelo ambiente 2D, atualmente por motivo obvio vem sendo dominado pelo ambiente 3D, porém os jogos em 2D ainda estão firme e fortes neste mundo.

Este assunto inclusive e tema de minha monografia em minha pós-graduação, existe um fator psicológico por trás desta preferencia em determinados ambientes pelo 2D ao invés de 3D, e pelo 2D se manter vivo mesmo em um ambiente que deveria ser 3D de forma homogênea. Mas isto é assunto para outra ocasião, o tema a respeito é bem extenso.

Por favor nem de longe quero fazer comparações, sou muito fã de algumas engines, em especial unity3D, Flex e recentemente XNA, porém cada macaco no seu galho, notem que XNA por exemplo não concorre em ambientes que não sejam Microsoft, deixando um pedaço do mercado de fora, unity3D não concorre com jogos em 2D, pois é outro estilo e outro público alvo, e assim por diante, a engine parallax tem seu público alvo.

Mas também vamos analizar de outra forma, pensem que é um caso de sucesso feito em Java, que serve como modelo para profissionais da área que queiram trabalhar com esta linguagem. vou relatar em um breve resumo o que passei nestes ultimos dois anos e pouco de estudo na área de jogos de forma critica:

De cara notei que 85% das comunidades brasileiras, e falo de todas, criticam mais do que ajudam, porém 15% contribuem de forma positiva e até auxiliam e puxam para cima projetos do gênero. O termo pano-preto é sinonimo de brasileiro nesta área (Chega a ser gritante, quando alguns que sabemos que entendem vem “ajudar” e dão de forma rasteira um comentario). Estrangeiros dão muito mais apoio e valorizam mais os trabalhos do tipo que brasileiros, sem exagero tive muito apoio do exterior dentro do projeto, tanto que ele é todo em inglês, justamente para facilitar a colaboração.

Temos verdadeiras seitas religiosas no que se refere a criação de jogos, antigamente achava que era devido estas tecnologias serem melhores, com o tempo percebi que 90% dos caso era deficiência de conhecimento real sobre uma das tecnologias mencionadas, e nem me refiro somente a Java, presenciei brigas homéricas do tipo "Flex é melhor que XNA que era melhor que GameMaker que era melhor que … ", as vezes iniciadas por besteira, com o tempo notei que alguns se especializam tanto em uma ferramenta, produzem tão rápido nela, que ao sentirem um pouco de dificuldade em outra, e as vezes nem isto, eles se tornam totalmente contra o uso desta tecnologia e defendem a “sua” como se fosse um deus.

Exemplo que passei com java, foi ter sido questionado, por usar frameworks de terceiros “da comunidade”, bom primeiro analisei, estudei, olhei o histórico e credibilidade do dito framework e usei, se usa Java e Linux e não confia na comunidade e em projetos não “privados”, bom temos diversas outras opções (ex: Microsof, Mac OS, etc.). Só lembro que a microsoft largou de mão o Visual Studio 6 (VB 6 incluso), por vários anos, me aparece com o VB.net que é outra coisa e não dava para portar os projetos anteriores para o mesmo, fora os anos sem manutenção, com Java nunca passei por isto e trabalho com ele desde 2003, citei apenas um exemplo, para mostrar que confiança no produto que usa faz parte, o importante é saber se a tecnologia que escolheu atende teus objetivos, ponto!

Usar delphi para criar interfaces visuais no windows é estupidamente rápido, chega a ser apelativo, e uma época eles criticavam muito o Swing por ser demorado a fazer, engraçado que a Borland (empresa dona do delphi) na época lançou o Jbuilder que resolveu este problema, entre outras IDEs ( ex: JDev, NetBeans, etc.). :slight_smile:

Sobre o Parallax posso dizer que o projeto é serio e profissional, não esta sendo feito para que eu o desenvolvedor aprenda a fazer algo. Caso achem que sou um aventureiro, abaixo o meu Curriculo.
Curriculo Lattes: http://lattes.cnpq.br/8051152604230199
ps: Dica deem uma olhada nos videos e leiam a introdução, vão achar mais do que esperam. ^^

Alguns lemas pessoais que deixo com vocês:
[list]As tecnologias servem vocês e não ao contrario![/list]
[list]Não sigam tendências ou imitem modas, nem mesmo escutem e obedeçam cegamente o que outro profissional falar, estudem, aprendam, tirem suas conclusões e se tornem formadores de opinião![/list]
[list]Não existe a pior tecnologia, exista aquela que se enquadra em suas necessidades![/list]

L

Michel.Montenegro:
fernandopaiva
Obrigado pelo reconhecimento, recentemente o projeto vem crescendo/evoluindo de uma forma que estou tendo reconhecimento de algumas pessoas, grupos e entidades (Por exemplo algumas universidades daqui, listas como o BelJogos, GUJs e afins), é este tipo de motivação que impulsiona qualquer projeto. :slight_smile:

Como notei que não deram uma lida e ainda não conhecem o projeto, vou passar algumas informações rápidas.
1 - Ele não concorre com engines 3D como a unity, seu foco é ambiente 2D.

2 - Quando falamos de ambiente 2D Java, atende perfeitamente no quesito qualidade gráfica (Aplicados a OpenGL no caso em questão).

3 - Falando sobre o mercado, vamos fazer algumas perguntas:
a) Desenhos (Incluso animes) em sua maioria são 2D ou 3D, o que predomina no mercado?
Resp: 2D.

b) HQs (Incluso mangas) em sua maioria são 2D ou 3D, o que predomina no mercado?
Resp: 2D.

c) Jogos para celular o que predomina (2D ou 3D)?
Resp: 2D.

d) Jogos On-Line em meios sociais como facebook, orkut e cia o que predomina (2D ou 3D)?
Resp: 2D.

e) Jogos On-Line MMORPGs o que predomina (2D ou 3D)?
Resp: Esta tendo um spam de jogos tanto para 2D como para 3D, aqui o mercado tende ao 3D, mas jogos do gênero em 2D continuam sendo desenvolvidos aos montes.

d) Jogos para console quem predomina (2D ou 3D)?
Resp: O mercado no passado era dominado pelo ambiente 2D, atualmente por motivo obvio vem sendo dominado pelo ambiente 3D, porém os jogos em 2D ainda estão firme e fortes neste mundo.

Este assunto inclusive e tema de minha monografia em minha pós-graduação, existe um fator psicológico por trás desta preferencia em determinados ambientes pelo 2D ao invés de 3D, e pelo 2D se manter vivo mesmo em um ambiente que deveria ser 3D de forma homogênea. Mas isto é assunto para outra ocasião, o tema a respeito é bem extenso.

Por favor nem de longe quero fazer comparações, sou muito fã de algumas engines, em especial unity3D, Flex e recentemente XNA, porém cada macaco no seu galho, notem que XNA por exemplo não concorre em ambientes que não sejam Microsoft, deixando um pedaço do mercado de fora, unity3D não concorre com jogos em 2D, pois é outro estilo e outro público alvo, e assim por diante, a engine parallax tem seu público alvo.

Mas também vamos analizar de outra forma, pensem que é um caso de sucesso feito em Java, que serve como modelo para profissionais da área que queiram trabalhar com esta linguagem. vou relatar em um breve resumo o que passei nestes ultimos dois anos e pouco de estudo na área de jogos de forma critica:

De cara notei que 85% das comunidades brasileiras, e falo de todas, criticam mais do que ajudam, porém 15% contribuem de forma positiva e até auxiliam e puxam para cima projetos do gênero. O termo pano-preto é sinonimo de brasileiro nesta área (Chega a ser gritante, quando alguns que sabemos que entendem vem “ajudar” e dão de forma rasteira um comentario). Estrangeiros dão muito mais apoio e valorizam mais os trabalhos do tipo que brasileiros, sem exagero tive muito apoio do exterior dentro do projeto, tanto que ele é todo em inglês, justamente para facilitar a colaboração.

Temos verdadeiras seitas religiosas no que se refere a criação de jogos, antigamente achava que era devido estas tecnologias serem melhores, com o tempo percebi que 90% dos caso era deficiência de conhecimento real sobre uma das tecnologias mencionadas, e nem me refiro somente a Java, presenciei brigas homéricas do tipo "Flex é melhor que XNA que era melhor que GameMaker que era melhor que … ", as vezes iniciadas por besteira, com o tempo notei que alguns se especializam tanto em uma ferramenta, produzem tão rápido nela, que ao sentirem um pouco de dificuldade em outra, e as vezes nem isto, eles se tornam totalmente contra o uso desta tecnologia e defendem a “sua” como se fosse um deus.

Exemplo que passei com java, foi ter sido questionado, por usar frameworks de terceiros “da comunidade”, bom primeiro analisei, estudei, olhei o histórico e credibilidade do dito framework e usei, se usa Java e Linux e não confia na comunidade e em projetos não “privados”, bom temos diversas outras opções (ex: Microsof, Mac OS, etc.). Só lembro que a microsoft largou de mão o Visual Studio 6 (VB 6 incluso), por vários anos, me aparece com o VB.net que é outra coisa e não dava para portar os projetos anteriores para o mesmo, fora os anos sem manutenção, com Java nunca passei por isto e trabalho com ele desde 2003, citei apenas um exemplo, para mostrar que confiança no produto que usa faz parte, o importante é saber se a tecnologia que escolheu atende teus objetivos, ponto!

Usar delphi para criar interfaces visuais no windows é estupidamente rápido, chega a ser apelativo, e uma época eles criticavam muito o Swing por ser demorado a fazer, engraçado que a Borland (empresa dona do delphi) na época lançou o Jbuilder que resolveu este problema, entre outras IDEs ( ex: JDev, NetBeans, etc.). :slight_smile:

Sobre o Parallax posso dizer que o projeto é serio e profissional, não esta sendo feito para que eu o desenvolvedor aprenda a fazer algo. Caso achem que sou um aventureiro, abaixo o meu Curriculo.
Curriculo Lattes: http://lattes.cnpq.br/8051152604230199
ps: Dica deem uma olhada nos videos e leiam a introdução, vão achar mais do que esperam. ^^

Alguns lemas pessoais que deixo com vocês:
[list]As tecnologias servem vocês e não ao contrario![/list]
[list]Não sigam tendências ou imitem modas, nem mesmo escutem e obedeçam cegamente o que outro profissional falar, estudem, aprendam, tirem suas conclusões e se tornem formadores de opinião![/list]
[list]Não existe a pior tecnologia, exista aquela que se enquadra em suas necessidades![/list]

Acho que algo bom é o 2.5d como jogos como Marvel vs Capcom 3, Street Figheter 4, Street Figheter X Tekken, Rayman Origens entre outros, onde o jogo é em 3D com gráficos fodasticos, porem com a perspectiva em 2D. Agora o 2d em jogos atuais ainda tem seu espaço porem não em pcs ou consoles atuais e sim em hardwares que são limitados em poder gráfico no caso mobiles, smartphones, tablets… creio que hoje em dia o mercado 2d reine no mundo mobile…

J

Michel.Montenegro:
fernandopaiva
Obrigado pelo reconhecimento, recentemente …

Eu vivo presenciando brigas homericas aqui no guj porque boa parte dos usuários vestem “camisa de tecnologia”. Nem se precisa dizer o porque. A comparação que fiz foi devido no tópico estar descrito:

Não é nenhuma crítica. Existem bons projetos sendo desenvolvidos como a jmonkey.
http://jmonkeyengine.com/

Fernandopaiva pode não concordar, mas a realidade é essa.No seguimento AAA java não é uma boa solução. É simplesmente uma questão de investimentos. Por isso boa parte do taikodom foi reescrito em c++.

M

Alguns casos de jogos de sucesso criados em Java, é interessante.
http://www.einformacao.com.br/parallax/noticias/sobre-o-projeto/46-jogo-em-java-e-possivel

J

Michel.Montenegro:
Alguns casos de jogos de sucesso criados em Java, é interessante.
http://www.einformacao.com.br/parallax/noticias/sobre-o-projeto/46-jogo-em-java-e-possivel

o único AAA que se encontra aí teve sua engine resscrita em c++, que é o caso do taikodon.

M

Mas para dar dinheiro ou algum retorno que justifique sua criação o jogo não precisa ser um AAA, exemplo os jogos indies em 2D não são AAA, incluso Angry Birds que é um jogo indie (Mas fez um sucesso tremendo, pela sua simplicidade e estão criando versões dele em tudo que é lugar).

J

Sim, é verdade. E é muito bom. Não tenho nada contra java(que é meu ganha pão). Mas mercado de jogos para java é inexistente por falta de investimentos na tecnologia(a oracle mesmo cancelou o dark star). Como você disse, cada coisa no seu quadrado.

M

Não é que seja inexistente, mas é que muitos pensam como tu esta pensando, aprendi que quase tudo na área de T.I pode ser feito, o próprio projeto Parallax é um exemplo, se eu fosse me fiar no time da ideia que estas tentando defender eu já teria desistido a séculos, mas veja só, o projeto esta funcional e evoluindo a passos largos. ^^

Existe uma diferença entre ser inexistente e não ter quem explore, aprendi com o tempo que o melhor mercado não é o já saturado e sim o inexplorado. Acredite, muitos desenvolvedores de jogos em java, vão agradecer a engine, nem que seja para expandir seu aprendizado e adapta-la ao seu modelo.

Ps: Se mercado do jogos em java é inexistente, porque jogos em Java são quase absolutos no Android? :slight_smile:

Estas fazendo aquilo que criticaste mais acima, sendo extremado com frases como “Mas mercado de jogos para java é inexistente”, outra o projeto DarkStar foi cancelado pela Oracle, mas continua sendo desenvolvido pela comunidade, a mesma que mantem teu ganha pão, ou acha que frameworks como Hibernate e outros, vieram de onde?

Por favor não estou sendo agressivo em minhas palavras, mas aprenda que a forma como colocar as coisas aqui pode influenciar outros, e pior dar uma falsa impressão.

Dou só uma dica: gameBrowser como Travian, são PHP puro e ainda sim dão dinheiro e é um jogo divertido e tem muitos outros como gladiatos, se a um tempo atrás alguém fala-se que não da grana fazer gameBrowser, e um fosse contra, resultado ia cair matando, mas veja só, não é que este mercado evoluiu. ^^

J

Michel.Montenegro:
Não é que seja inexistente, mas é que muitos pensam como tu esta pensando, aprendi que quase tudo na área de T.I pode ser feito, o próprio projeto Parallax é um exemplo, se eu fosse me fiar no time da ideia que estas tentando defender eu já teria desistido a séculos, mas veja só, o projeto esta funcional e evoluindo a passos largos. ^^

Existe uma diferença entre ser inexistente e não ter quem explore, aprendi com o tempo que o melhor mercado não é o já saturado e sim o inexplorado. Acredite, muitos desenvolvedores de jogos em java, vão agradecer a engine, nem que seja para expandir seu aprendizado e adapta-la ao seu modelo.

Ps: Se mercado do jogos em java é inexistente, porque jogos em Java são quase absolutos no Android? :slight_smile:

Estas fazendo aquilo que criticaste mais acima, sendo extremado com frases como “Mas mercado de jogos para java é inexistente”, outra o projeto DarkStar foi cancelado pela Oracle, mas continua sendo desenvolvido pela comunidade, a mesma que mantem teu ganha pão, ou acha que frameworks como Hibernate e outros, vieram de onde?

Por favor não estou sendo agressivo em minhas palavras, mas aprenda que a forma como colocar as coisas aqui pode influenciar outros, e pior dar uma falsa impressão.

Dou só uma dica: gameBrowser como Travian, são PHP puro e ainda sim dão dinheiro e é um jogo divertido e tem muitos outros como gladiatos, se a um tempo atrás alguém fala-se que não da grana fazer gameBrowser, e um fosse contra, resultado ia cair matando, mas veja só, não é que este mercado evoluiu. ^^

Michel, o problema com o java não é porque nós usuários secundários da tecnologia não o exploramos. O problema é porque a empresa que mantém a tecnologia não investe na mesma para essa finalidade. Hoje java carece de recursos multimedia adequados. Sei disso porque desenvolvo aplicações para câmeras de segurança e sei o parto que é utilizar jni para ter um mecanismo adequado de captura de vídeo em cima do directshow. JOGL está longe de ser o que directx e directshow são hoje. O toolkit gráfico swing não oferece uma boa experiência para o usuário final. Muitos controles não possuem nem uma aparência agradável comparando-se com os nativos do sistema.

Em contrapartida esse trabalho é simples utilizando c++. Por isso a grande fatia de mercado ainda está focada nessa tecnologia.

F

Eu concordo com o Sr.Michel criador do projeto…A área de games é bem restrita, parece que quem sabe guarda pra si só ou algo assim. Eu, estou procurando faz mais ou menos umas 3 semanas algum fio da meada, encontrei em C# com XNA e alguns outros bem picados em outras linguagens, ouvi muito dizer que com Java nao rolava e tals, a resenha de sempre “Java é bom só pra Web”. Concordo que a Oracle não investe nisso, até mesmo pq o foco da Oracle não é este mas rotular uma linguagem como “Boa apenas pra Web”, realmente nao vejo nada alias nao li nada que me convencesse sobre isso até mesmo para desenvolvimento Desktop com Java que uso e pra mim supre todas as necessidades.

Como eu sou totalmente noob em desenvolvimento de games, estou apenas estudando ainda e tentando reunir documentação para entender os fundamentos nao encontro muita coisa em PT-BR, encontrei até em portugal mas Brasil muito pouca, alias pra quem e autodidata como meu caso é um sofrimento total pois as docs encontradas muitas vezes nao nos dao o inicio meio e fim de nada, é preciso reunir muito, estudar muito pra compreender pouco pq as docs realmente deixam a desejar.

O projeto achei interessante, tirou o grilo da minha cabeca q insistia em cantar “Java nao, java nao, java nao”…Só de provar o contrario, ja vale a pena acho q fechou a boca de muita gente que conversa d+ e rotula a linguagem como: “Boa apenas pra Web, nao serve pra Desktop, nao serve para Games etc…etc…etc.”

Nao sei se vou usar Java para desenvolvimento, nao sei se vou usar C++ ou Python ou C# ou sei la o que, sei que com Java da pra fazer e nao ouco mais as palavras “Boa so pra Web”.

Parabens pelo projeto Michel e principalmente por quebrar o paradigma de “Boa so pra Web”

t+

V

Em primeiro lugar, algumas coisas devem ficar claras sobre Java para jogos.
O Java não possui classes para acessos a recursos de games bastante comuns como:

  • Placa de vídeo
  • Controles (joystick, volantes, kinect, wiimote);
  • Som (existe uma API para áudio, mas não cobre recursos como Audio 3D e nem tem codecs para formatos como mp3 ou ogg);
  • Webcam ou dispositivos de entrada de áudio;

Vale lembrar que a Sun, e a Oracle, já abandonaram desenvolvimentos nesse sentido (como a JAI e a JMF), por entenderem que esse não é o foco da plataforma.

Você acaba tendo que recorrer a bindings. Os bindings, porém, são portados para ainda para menos plataformas.
Há poucos bindings disponíveis, e poucas APIs de games mantidas por empresas ou grupos de pessoas (a única que tenho notícia é a JMonkeyEngine).

A engine Parallax, por exemplo, usa por baixo dos panos outra Engine, a Slick2D. Por sua vez, a Slick recorre a diversos bindings, sendo eles a JOGL e a JInput, que só são portadas para poucas plataformas. A JInput já é um projeto abandonado faz tempo. A Slick2D é mantida por uma pessoa física, não uma empresa e é basicamente atualizado por uma pessoa só.

Vale lembrar que, oficialmente, o Java só é suportado em 3 plataformas: Windows, Linux e Solaris. Não é suportado em nenhum console, nem em nenhum celular (o Android suporta a linguagem Java, mas não a plataforma). O Linux e o Solaris, somados, representam uma fatia tão pequena do mercado de games, que nem vale a pena investir (diferentemente do que ocorre com o mercado de servidores web, um dos focos do Java).

Finalmente, é bom falar no ecossistema. A comunidade que desenvolve jogos em torno de Java é extremamente pequena. Bem diferente do que ocorre em torno do C++, por exemplo, onde temos centenas de tipos de APIs, para praticamente tudo o que você quiser, sejam elas pagas ou não: desde física até mesmo árvores.

Quando não se recomenda Java para jogos, não é por birra, ou por ser um complô. É simplesmente porque a própria empresa que produz o Java, nunca apoiou essa área. Também é pelo fato do Java não existir em consoles. É porque a plataforma tem muito mais deficiências que diversas outras opções disponíveis no mercado. Isso não significa que será impossível fazer nada em Java (o Minecraft e o Taikodom são dois exemplos de que é possível fazer coisas em Java). Entretanto, provavelmente sairá mais caro, será mais difícil e mais trabalhoso do que usando outras alternativas. E certamente, não será usando Java puro.

Michel, jamais critiquei você por usar projetos de terceiros, ou por usar recursos da comunidade. Para o desenvolvimento em Java, seria impossível não fazer o contrário. O que critiquei é que você dizia que “Java possuia suporte completo para games”, e usava sua engine de exemplo. Essa única afirmação, era alvo das minhas críticas. Eu criticava o fato de você ser obrigado a recorrer a bindings de terceiros, pois o Java sozinho não dá conta do recado. Não se pode defender uma plataforma, e dizer que ela é completa para games, quando no fundo você está dependendo de recursos externos a plataforma.

Agora, acho muito engraçado que em muitas discussões, ouvimos coisas como “os programadores devem escolher a linguagem mais adequada a sua necessidade” ou “Não existe a pior tecnologia, exista aquela que se enquadra em suas necessidades!”.
Entretanto, quando o assunto toca na sua linguagem favorita, tem dificuldade em negar que ela não seja “a mais adequada” ou que, simplesmente, sem recorrer ao bom e velho C++, ela não se “enquadrará em suas necessidades”.
Eu sou um grande fã de Java. Mas se você buscar fatos verá que a plataforma não é, nem de perto, a mais adequada para games.

V

Só uma lista de tecnologias usadas em jogos que já foram abandonadas silenciosamente em java.

Pela Sun/Oracle:

  • Projeto Darkstar (servidor de MMO);
  • JMF (vídeo);
  • JAI (processamento de imagens);
  • Java Sound;
  • Java Game Initiative;
  • A linguagem do JavaFX;
  • Java 3D;

Terceiros:

  • JOGL, JOAL e JOCL. Esses projetos morrem e ressuscitam o tempo todo: No momento, estão na fase ressucitada, mas já cairam em descrédito;
  • JGame;
  • JInput;
  • RedDwarf - Nome do DarkStar depois de ir para comunidade.

Eu já passei por essa experiência que você descreveu também fora do mercado de jogos: Na Siemens, usavamos o javax.comm. A versão dele para Windows foi simplesmente abandonada. O mesmo pode dizer quem dependia do SwingX.

Que fique claro, nunca critiquei o uso de Java no Android. Entretanto, você usará Java + plataforma Android, e não J2SE.

Finalmente, é bom falar que estou falando do mercado profissional de games. Não do amador.
Se você quer fazer games, só por fazer games, sem objetivar lucro, ou para estudar, use a linguagem que bem entender.

V

Eu tenho me impressionado com a penetração da Unity nesse mercado. Ainda não é líder, mas tem crescido.
Ela tem sido muito usada nas global game jams, para games 2D, e tem uma ótima interface para iPhone a Android.

Aliás, vocês viram que até 8 de abril, é possível “comprar” as versões para iPhone e Android de graça?

M

Projeto a quem quiser tirar duvidas esta aqui: http://www.einformacao.com.br/parallax/

  • Pergunta tosca, mas de grande relevância, falaste que:
  • Te pergunto qual é a magica que me faz usar arquivo .ogg no meu áudio? (eu sei qual e você?)

Agora, acho muito engraçado que em muitas discussões, ouvimos coisas como “os programadores devem escolher a linguagem mais adequada a sua necessidade” ou “Não existe a pior tecnologia, exista aquela que se enquadra em suas necessidades!”.
Entretanto, quando o assunto toca na sua linguagem favorita, tem dificuldade em negar que ela não seja “a mais adequada” ou que, simplesmente, sem recorrer ao bom e velho C++, ela não se “enquadrará em suas necessidades”.

  • como pegaste minhas citações para falar de “pessoas”, acho que deveria citar logo o meu nome e como dizem “me afrontar”, pois acho que te sentiste ofendido ao perceber que tu te reconheceu entre os "conhecedores? na criação de jogos que só criticam e não ajudam. Se não era esta a tua intenção, não me desculpo pois foste muito grosseiro e deselegante.

Nem venha me falar do pontoV e programadoresdejogos, to lá direto, sempre que posso lendo as conversas e no que se refere a Java tu é quase -1 nestas comunidades (E olha que a movimentção lá nem anda tão grande, C++ que mais tem conteudo não passou dos 368 topicos), mais atrapalha do que ajuda (E olha que Java no PDJ é o terceiro tópico que mais movimenta o fórum, no pontoV, salvo engano é o segundo), não sou ingrato, deste uns toques rasteiros que me orientaram a achar outras coisas, pela minha persistência (Pois pesquisa sempre foi um forte meu), mas quem me deu uma força de verdade foram os outros membros, inclusive o Sanchez, fora os estrangeiros, depois percebi que tu como outros não ajudavam em pequenos códigos, indicações tecnológicas do gênero por não saber como fazer em Java ou por ser sacana mesmo e não querer, ai minha visão mudou a teu respeito, passei a ser até mais tolerante com o teu “pano-pretismo”, mas calma não és o único, ai sim entendi boa parte de tua frustração quando vi que és o tipo de desenvolvedor que lembra como era, acompanha, mas não sabe como fazer ou simplesmente não quer ajudar de verdade, logo é mais fácil indicar outra solução.
_Se alguem duvidar passo os links de todos os topicos aqui nas referidas comunidades, e vão/vai ver que sou mais grato aos participantes do que a ti viny, e olha que constantemente és criticado pelos membros da área de Java que te pedem auxilio nesta tecnologia ou acompanham teus ultimos posts.

Viny, quando tu me aparecer com um trabalho igual ou melhor ao meu feito por ti usando Java com qualquer bibliotecas do gênero eu me calo, antes disso és alguém que fala aos 4 cantos que tem experiência, mas na hora do pega pra capa com Java, só sabe aparecer para criticar e mandar para a tua tecnologia “favorita” ou até mesmo a de maior expansão em determinada área ou segmento, mas ai temos outra questão.

-> Se alguém te pede orientação e tu menciona outras tecnologias que podem ser melhores ou mais uteis por N motivos, e ainda sim da a força que a pessoa pede na linguagem em questão, és um bom moderador e até profissional.

-> Se tu chega em quase todos os tópicos feitos em Java para criticar o mesmo, a respeito de jogos ( em comunidades de jogo, dentro da área de Java), não ajuda a pessoa nem com exemplos ou coisas referentes a Java, para piorar passa links externos de outras tecnologias “concorrentes”, estas sendo no mínimo um FDP, com o perdão da palavra.

Mesmo aqui no GUJ, que tens um dever moral como moderador de instruir e ajudar membros com a tecnologia Java, tu manda todo mundo para C++ ou outra linguagem, é incoerente e desrespeitoso com outros membros que vem aqui procurando soluções Java ou teu chefe te pede para criar um site em Java “tu vira e diz desculpe PHP é mais fácil, farei nele” (Foi apenas uma analogia, afinal não tens chefe, é um colaborador que colabora com o que mesmo? Java? Bom até agora estas um ótimo colaborador de produtos Microsoft, um verdadeiro presente de grego aqui no fórum quando se fala de jogos em Java).

Pergunta idiota, mas tu ainda sabe algo do andamento das tecnologias que uso, de verdade? Porque sinceramente a impressão que tenho é que não, eu nunca disse que Java é solução para tudo, o pior que foste tão FDP que nem te deste ao trabalho de ler os textos acima aonde eu deixo claro que cada tecnologia tem seu espaço. Se o mercado para Solaris e Linux é minúsculo e acha que nem vale a pena, beleza, mas graças ao bom deus nem todo mundo concorda contigo, sou um usuário Linux e adoraria ter uma diversidade de jogos como tenho no Windows, mas enfim se ignora ou desdenha este mercado, ai o problema é teu, mercado existe para ser usado.

Me viste em algum momento criticando Flex, XNA, C++ ou outra tecnologia? Não? Ótimo, porque sou profissional e experiente o suficiente para saber que cada tecnologia tem seu espaço, se fosse diferente HTML 5 acabaria com o Flex, relembrando o problema com a Adobe a pouco tempo, o mesmo vale para XNA com o Windows 8, etc.

Java pode não ser a linguagem certa e nem indicada para consoles, mas o mercado web e desktop (Principalmente no ambiente 2D), ele pode entrar firme e forte, incluso o de servidores como foi mencionado.

Quer dizer que o fato de Delphi ser um dos ambientes mais rápidos se não for o mais, para desenvolvimento windows desktop, invalida Java? ou outros? O fato de PHP ser ágil na criação de sites para internet invalida Java para Web por ser mais trabalhoso?

Viny olha o forum em que tu estas e os topicos do forum em que tu participa, acho louvavel indicar tecnologias mais usadas e tal, mas se tu te da ao trabalho de entrar em uma comunidade/topico Java para criticar o Java, ser o garoto propaganda de outras tecnologias e não dar uma real solução em cima da tecnologia Java, sinceramente, mas sem exagero e medo de errar posso afirmar que este não é teu lugar, vá moderar no C++, no raio que o parta, mas se não tens cacife para defender ou pelo menos contribuir de verdade na tecnologia aplicada no forum em que és moderador, sinto muito mas você ta no lugar errado.

E repito mais uma vez, meu projeto é serio, funciona no bendito ambiente desktop, esta crescendo e não é graças a ti, pode acreditar, meu projeto esta ajudando e respondendo mais duvidas a respeito de criação de jogos em Java, seja para descidir prosseguir ou mudar de direção que todos os topicos que fizeste juntos criticando a tecnologia. Eu não sou homem de falar, eu faço, provo e mostro, quem duvide que vá acompanhar o projeto http://www.einformacao.com.br/parallax/ (Dica: O ultimo artigo fala justamente sobre o Unity3D e sua promoção até o dia 8 de Abril, para mostrar que não sou bitolado em Java).
Dica: Sabia que sou mais apaixonado pelo Unity3D do que Java? Sabia que sou apaixonado por Delphi em ambiente windows e sou um entusiasta do VB.net, mais do Java? Não sabia? fique sabendo então, se estou usando o projeto em Java, é porque conheço a trajetoria da linguagem, conheço a tragetoria das outras empresas que surgiram de um tempo para cá e sei bem o que esperar da Microsoft, não preciso reiventar a roda certo? Pra que outra engine para C++ se temos aos milhares? Então não entendeu porque uso Java?

ok ok vou desenhar, uso Java pelo mesmo motivo que o fonte do projeto é liberado, para contribuir com a comunidade Java, justamente por não ter um real norte nesta área, e nem exemplos serios, só retalhos de exemplos (Os caso serios são fechados), então resolvi que se não tinha quem ajuda-se a comunidade, não desse um norte e nem mesmo respondesse as perguntas dos mesmo, eu faria isto, nada mais justo (Engraçado que parando para pensar, estou fazendo um trabalho melhor do que “alguns moderadores gregos” aqui, sim falei de ti viny). Ficou claro agora? Se você não faz a coisa direito, alguem tem que fazer, minto? Vá e olhe meu projeto, veja se deixei alguem que veio até mim na mão.

Outra pergunte a outros aqui, quantas vezes não elogiei a unity3D, quantas vezes não falei da velocidade que é fazer algo em XNA…, mas nunca deixei de ajudar de verdade o usuario Java com a tecnologia Java.

Se eu não apareço no forum, e começo a falar destas tecnologias, levanto questões, muitos iam morrer no escuro sem nem sequer saber sobre elas e pior, não teriam um norte ou exemplo real.

Java não é a solução para tudo e atualmente pode nem ter as melhores soluções para Jogos em determinadas vertentes, mas que com certeza pode ser feito, algo profissional com ele pode (Se não pudesse eu tinha me calado e começado o projeto em outra tecnologia, mas nem você e nem ninguem aqui pode desmentir isto, é mais trabalhoso? A principio é depois nem tanto), e digo mais apesar de já estar a dois anos e pouco estudando a área, fazer 99999 perguntas em comunidades pertinentes, note que o Parallax levou mais ou menos 1~2meses para estar em seu nível atual, pois não sinto mais dificuldades na manipulação do mesmo, como dizem dominei a fera.

Se fui deselegante com você, uma pena, pois só falei a seco o que tu pediu para ouvir, e nem cante de galo, pois tem desenvovledores que como eu já trabalham na área de T.I a muitos anos (no meu caso desde 1998 ), então saiba respeitar, não é porque um um profissional vem pedir ajuda ou fala sobre uma área nova para ele, que o mesmo deve ser tratado como um idiota incapaz de raciocinar o que é melhor para ele (Faço referencia ao que mencionei acima).

Só não entendi viny porque chegaste de dois pés no tópico deste rapaz, no finalzinho veio querer assoprar (bater e depois assoprar nem com crianças é bom) como moderador deveria ser melhor que isto e respeitar seus convidados, pois é isto que somos no fórum, e principalmente aqueles que como eu ou o fernandopaiva que veio gentilmente agradecer pela ajuda dada a ele e contribuir com uma informação ao qual ele achou relevante, coisa que nem eu esperava, mas foi uma grata surpresa, mas eu e outros como ele quando contribuímos na comunidade Java com soluções Java, não queremos ser agredidos de forma “elegante” pela moderação e nem tão pouco escarnecidos pelas nossas escolhas queremos respeito. Afinal tenha o bom senso de perceber que esta na maior comunidade Java do país então respeite a tecnologia, seus membros e saiba ser humilde e reconhecer.

Aos outros membros do fórum peço desculpas se fui um pouco forte em minhas colocações ou um tanto rude, mas já vi isto aqui e fora daqui tantas vezes (pela mesma pessoa), que não poderia deixar passar isto, e por favor sintam-se a vontade para comentar sobre coisas pertinentes e de forma construtiva ao rapaz que criou o tópico, e peço desculpas inclusive a ele, por ter sido mais energético aqui.

Um fraternal abraço

V

Oi Michel.

A mágica é que alguém (terceiro) se deu ao trabalho de implementar. E esse alguém não foi a Oracle, e nem sequer uma empresa. A plataforma permite manipulação de Audio através de streams para a placa de som. Isso a torna o suporte a qualquer coisa "teoricamente possível". Se você se der ao trabalho de escrever um Codec para audio, vai fazer qualquer formato funcionar. Se escrever toda uma API de audio 3D, também vai funcionar. Em outras plataformas, como o XNA, Unity, SDL, isso já está escrito, com aceleração de hardware, e já é suportado pelo próprio fabricante. Em Slick2D, boa parte desse suporte também existe, mas usa de bindings.

Mas, isso significa que sua empresa terá que gastar tempo e dinheiro fazendo a coisa acontecer, e isso representa custo de projeto.
Significa também que para suportar outras plataformas, além da VM Java, você precisará reescrever todos os bindings.

Em outras alternativas, isso já é um problema resolvido e muitas vezes, com um suporte para um número maior e mais interessante de plataformas.

Na verdade, é que usei sua afirmação pois ela é muito falada no GUJ. Praticamente todo mês temos aqui uma postagem que alguém fala algo parecido e você não deixou de falar também. Entretanto, estou passando motivos reais, técnicos, que mostram claramente porque java não é a plataforma mais adequada. E, ainda assim, você insiste em dizer que ele é muito adequado. Isso me leva a questionar: Você já desenvolveu jogos para desktop em outra plataforma? Ou jogos maiores?

Acontece que você ainda não deu argumentos técnicos que me convencesse do contrário. Na verdade, em muitas dicussões, você admitiu que é assim mesmo e usou argumentos passionais, como os que está usando agora (“ajudar o java a crescer”, “contribuir com a comunidade”). Se você está trabalhando para tornar o Java uma boa plataforma, aí são outros quinhentos. Te apoio integralmente e até concordo com você.

Mas critico única e exclusivamente o fato de dar a entender que hoje o Java já é uma boa plataforma para games, e dar a entender que alguns custos enormes (e riscos também) não estarão envolvidos no desenvolvimento de um jogo profissional.

Michel, esse aplicativo usando realidade aumentada na educação, apresentado na Cebit, foi desenvolvido por mim e pela minha equipe, na Positivo Informática.
Usa exclusivamente tecnologia de games, usa C# e XNA:
http://www.youtube.com/watch?v=ck0M2Km3kFE (a partir de 1 minuto e 03 segundos)
http://g1.globo.com/tecnologia/noticia/2012/03/dilma-visita-empresa-brasileira-e-faz-atividade-em-mesa-high-tech-na-cebit.html

Também entregamos recentemente mais de 80 jogos educacionais para várias cidades do Brasil em meio a mais de 2000 conteúdos educacionais, sendo desses, outros 220 usando tecnologias interativas, idênticas as de jogos (a maioria em flash, mas algumas delas são em Java!).

Já que questionou minha atuação profissional na área (no mais clássico FUD), gostaria de lembrar que eu trabalho atualmente no mercado de jogos. Sou professor de graduação e pós graduação no assunto, faço mestrado em computação gráfica, atuo como coordenador técnico em projetos de jogos e consultor. Participo da organização de Jams, conheço profissionais em praticamente todas as indústrias produtoras de jogos de Curitiba. Estou há 6 anos no mercado de jogos (15 no de aplicativos), não mais só como hobbista. Sou dono e autor de um dos maiores portais sobre desenvolvimento de jogos do Brasil, e também modero na lista da IGDA Curitiba. Sou membro pagante da IGDA.

Como os jogos que desenvolvo agora pertencem a empresas, não posso simplesmente coloca-los em um site, nem divulgar os que atualmente estão em desenvolvimento.

Não estou criticando sua qualificação profissional. Mas já que tocou no assunto, seu currículo mostra que você é um grande profissional de Java. Mostra pouca experiência em outras linguagens e, fora o seu primeiro projeto, nenhuma experiência com jogos (se tem, não está claro no currículo). Aliás, em seus primeiros tópicos, você deixou claro que seu projeto visava o aprendizado na área de jogos. Nem por isso, estou dizendo que seu projeto não presta, que você não é um profissional sério, ou que você não tem competência para desenvolvê-lo. Mas, me desculpe, eu tenho bastante competência para criticá-lo. Só acho um tanto rude ficar jogando na sua cara meu currículo, pois isso também pode parecer FUD no estilo “eu sei o que estou falando, mas você não”. Fico triste que você tenha usado esse tipo de argumentação comigo.

Não vejo dessa forma. O que vejo é uma pessoa que terá muito mais trabalho com essa tecnologia. Que está usando a ferramenta errada. Como já falei em outro tópico, é como quando você vê alguém querendo cortar um baita pedaço de bife usando uma faca de passar de manteiga. O que você faz? Fala para a pessoa "trocar de faca" ou fica dizendo "vai fundo, é assim mesmo que se corta carne?". No caso de games fora do Android, o Java infelizmente é a faca de manteiga. Note que eu critico Java única e exclusivamente para jogos e aplicações multimídia com vídeo. Tanto que você não me vê advogando "anti-java" em outros tópicos. Eu gosto de Java para aplicações desktop e gosto muito de Java para web (aliás, é sim o grande ponto forte dele). Também acho o Java legal para criar ferramentas que rodam no console ou processar dados em batch.

Também, como você, uso Java para o estudo e tenho como minha linguagem favorita. E recomendo. Por exemplo, todo meu estudo em processamento de imagens foi feito em Java, onde produzi esta ferramenta. Nem por isso, estou por aí dizendo que o Java é excelente para processamento de imagens, pois você esbarra nas limitações, e vê o quão mal ele atua, e percebe que o pessoal de processamento não está usando o opencv à toa, por exemplo.

Na minha opinião, instruir quanto ao uso correto de algo envolve deixar claro as limitações também. Principalmente os iniciantes tendem a se tornar fãs de tecnologias e tapar o olhos para os problemas. Nessa área, o Java tem muitos problemas. Desde projetos abandonados, até a própria desenvolvedora não dar a mínima para área, a indústria de maneira geral não apoiar, ou não haver sequer livros atualizados sobre o assunto. Você esbarra mesmo em problemas bobos, como o garbage collector dar travadinhas em games maiores.

E também não falei em ser “mais fácil”. Mas “mais adequado”. Eu jamais trocaria um projeto web de grande porte de Java para PHP, porque simplesmente não é adequado.
Também não adianta usar o FUD da Microsoft e tentar jogá-lo para cima de mim. Não se esqueça que a Microsoft é um dos maiores players do mercado de jogos. Praticamente todo desenvolvimento para PC usa DirectX, que é da Microsoft. Um dos principais consoles do mercado, é da Microsoft. Eu geralmente recomendo o C# para quem desenvolve com Java porque a linguagem é parecida e porque a curva de aprendizado é pequena. O XNA também é uma boa ferramenta de estudo, pois não é tão de alto nível quanto uma engine, tem suporte a coisas legais, como o Kinect e o X-Box, e não é capenga de recursos como o Java é. Acho o C# uma boa porta de entrada, embora haja ferramentas e linguagens ainda mais interessantes para desenvolvimento profissional, como C++ e a Unity.

Aliás, você deu a entender que o C# é minha plataforma favorita. Desculpe desapontá-lo, mas não é. Dentre minhas linguagens favoritas em primeiro lugar está o Java e em segundo o C++. Nem por isso saio recomendando as linguagens, pois sei que elas não são as mais adequadas para quem está só estudando games. A primeira, por não ter nenhum suporte a games, a segunda, por ser muito complexa para quem está começando.

Agora, já apoiei estudantes que usaram Java, como é o caso do JMario do David Buzzato, ou do jogo Extinction of Nerds, feito por meus alunos na Global Game Jam no ano passado. Também autorei diversos artigos sobre Java2D, e deixei aqui no GUJ esse esse roadmap sobre processamento de imagens.

Infelizmente, não pude te ajudar no seu projeto o tanto que gostaria, pois atualmente estou com muito, muito, muito trabalho. E nesse ponto, peço desculpas. Realmente, acabei fazendo papel só de advogado do diabo, o que realmente deu a entender que estava te boicotando. Mas gostaria de deixar claro que não é isso. Inclusive, tenho divulgado seu projeto nas minhas aulas da pós e cito como exemplo de desenvolvimento Indie brasileiro. Eu gostaria muito de ter mais artigos de Java no Ponto V, inclusive cobrindo a Slick e a Parallax. Se quiser escrevê-los, estaremos a disposição para receber e divulgar. Também estou tentando achar há bastante tempo autores para a área de Android.

A única crítica que te faço é ao dizer que a liguagem Java hoje é ideal para games desse tipo. É o único ponto que discordo radicalmente, por já ter desenvolvido em tecnologias bem melhores.

V

Eu não vejo problema nenhum em usar Java para jogos se é a linguagem que a pessoa domina. Possível é, temos para gráficos 2D o Java2D que tem performance mais que suficiente acelerada por hardware e pra gráficos 3D tem a LWJGL que inclusive o Minecraft usa, e eles tão muito bem

É claro que não é a linguagem mais adequada, mas se é possível fazer e o cara domina Java então com certeza vai ser mais fácil fazer em Java do que aprender uma nova linguagem como C++ e novas IDEs. Eu garanto que depois de criada toda a aplicação e montada toda a arquitetura em Java, a menor dificuldade do cara vai ser portar pra outra linguagem como C++

Eu mesmo tenho uma aplicação desktop que quero fazer em C++, mas não sei absolutamente nada de C++ então to fazendo em Java e Swing que domino. Depois de pronta vou portar ela e tenho certeza que vai ser mais fácil portar com um código pronto em Java do que tentar fazer na doida em C++ sem nenhum código pra me basear

V

Só corrigindo algumas informações. Na PDJ, Java tem 90 tópicos.

O C++, tem os 368 no fórum de C++, mas é necessário somar também os tópicos de APIs específicas de C++.
São eles:

  • 89 tópicos de SDL;
  • 80 tópicos de Allegro;
  • 86 de OpenGL;
  • 32 de DirectX;
  • 25 de Ogre 3D.

O que dá um total de 680 tópicos, aproximadamente 7 vezes e meia o número de tópicos falando de Java. Note que algumas APIs, como SDL e OpenGL tem quase tantos tópicos quanto o próprio Java.

No caso do Ponto V, Java é realmente a segunda linguagem mais visitada, devido a minha grande participação no GUJ, e recomendações constantes nos artigos de Java2D. Entretanto, a maior parte das visitações vindas do Google é no artigo “Conhecendo o JFrame” e geralmente é feita por pessoas querendo aprender a programar em Swing, não jogos. A linguagem mais visitada, para jogos, é disparado o C++, com mais do dobro das visitações. Em segundo lugar, com quase metade dos acessos, temos o Java.

No caso da Unidev, os números se mantém parecidos. Temos 10361 tópicos em C++, 677 tópicos em Direct X, 1198 tópicos em OpenGL, 2163 em Allegro, 576 em SDL, 87 em Ogre3D, 53 em GameSpaceLib, totalizando 15025 tópicos em C++.
Em Java temos 1192 tópicos e mais 52 em Java 3D, totalizando 1244 tópicos (aprox. 12 vezes menos).

Temos que considerar alguns fatores também. No Ponto V, o Java foi uma das primeiras linguagens a ser colocada no portal. Da mesma forma, o C++ foi uma das primeiras linguagens da Unidev e da PDJ. Por isso, o número de acessos tende a ser bem maior. Em termos de tendência, no Ponto V, ainda temos o C++ com o maior número de visitas, seguido do C#. No caso da PDJ, se não fosse pela recente participação do Michel, a linguagem mais visitada ainda seria o C++.

Por mim, esses números tem pouca relevancia. É como confirmar no índice TIOBE, só que com uma base de dados ainda menor, e com uma população viciada, basicamente formada por iniciantes. Por isso, mesmo indicando que o C++ é a linguagem do momento para jogos, peço que desconsiderem, pois esses dados dificilmente representarão a realidade do mercado.

Sobre minha participação ser -1 nessas comunidades. Vale lembrar que sou administrador da PDJ pq ajudo a manter o site no ar.
O mesmo vale para o Ponto V, que foi um site que criei. Existe muito trabalho nos bastidores, para manter tudo isso funcionando.

J

victorcosta:
Eu não vejo problema nenhum em usar Java para jogos se é a linguagem que a pessoa domina. Possível é, temos para gráficos 2D o Java2D que tem performance mais que suficiente acelerada por hardware e pra gráficos 3D tem a LWJGL que inclusive o Minecraft usa, e eles tão muito bem

É claro que não é a linguagem mais adequada, mas se é possível fazer e o cara domina Java então com certeza vai ser mais fácil fazer em Java do que aprender uma nova linguagem como C++ e novas IDEs. Eu garanto que depois de criada toda a aplicação e montada toda a arquitetura em Java, a menor dificuldade do cara vai ser portar pra outra linguagem como C++

Eu mesmo tenho uma aplicação desktop que quero fazer em C++, mas não sei absolutamente nada de C++ então to fazendo em Java e Swing que domino. Depois de pronta vou portar ela e tenho certeza que vai ser mais fácil portar com um código pronto em Java do que tentar fazer na doida em C++ sem nenhum código pra me basear

Você pode desenvolver jogos em qualquer linguagem victor, mas no caso você teria mais dificuldade em usar java nesse segmento porque a plataforma não te oferece bons recursos mutimídia. É uma coisa simples chamada investimento. Eu concordo com o v. godoy nesse quesito. Querer passar uma informação falsa somente por gosto não é justo com quem deseja iniciar ou se estabelecer no segmento de jogos. Não é porque aqui é o GUJ(Grupo de Usuários Java) que deixaria de postar a melhor maneira de solucionar um problema usando a ferramenta mais adequada. Eu trabalho com java também mas prefiro deixar interesses comerciais a parte quando o assunto é estudo, pesquisa e aprendizado.

Por exemplo a microsoft investe no directx(d3d, audio, input), directshow(captura de vídeo, áudio) para ferramentas como c# e c++. Logo a oracle não investe em nada disso a momento para java. Salvo conduto java fx que pode mudar esse quadro. Mas ele anda muito devagar.

O legal a se fazer é pesquisar por si mesmo e ver as limitações e vantagens de cada tecnologia para cada segmento. Essa conversa de time de futebol que acontece aí em cima não leva a lugar algum.

V

Primeiramente, entrei no tópico pq o autor começou dizendo que “isso mostra que Java não é bom só para web”. Nesse caso, afirmando que o seu projeto é uma prova de Java é bom para games.
Em segundo, pq sendo moderador ou não, tenho o direito de manifestar minha opinião. E não o fiz usando minha posição de moderador, ou dizendo que os usuários de opinião contrária seriam moderados.

Finalmente, não falei em momento nenhum da engine, nem do seu trabalho. Diferentemente do que você fez, não questionei sua capacidade profissional.
Falei apenas de um assunto pontual: o uso da plataforma Java para jogos sérios, profissionais.

V

juliocbq:
Você pode desenvolver jogos em qualquer linguagem victor, mas no caso você teria mais dificuldade em usar java nesse segmento porque a plataforma não te oferece bons recursos mutimídia. É uma coisa simples chamada investimento. Eu concordo com o v. godoy nesse quesito. Querer passar uma informação falsa somente por gosto não é justo com quem deseja iniciar ou se estabelecer no segmento de jogos. Não é porque aqui é o GUJ(Grupo de Usuários Java) que deixaria de postar a melhor maneira de solucionar um problema usando a ferramenta mais adequada. Eu trabalho com java também mas prefiro deixar interesses comerciais a parte quando o assunto é estudo, pesquisa e aprendizado.

Por exemplo a microsoft investe no directx(d3d, audio, input), directshow(captura de vídeo, áudio) para ferramentas como c# e c++. Logo a oracle não investe em nada disso a momento para java. Salvo conduto java fx que pode mudar esse quadro. Mas ele anda muito devagar.

O legal a se fazer é pesquisar por si mesmo e ver as limitações e vantagens de cada tecnologia para cada segmento. Essa conversa de time de futebol que acontece aí em cima não leva a lugar algum.

Por isso que eu disse SE POSSÍVEL (as vezes dependendo da tarefa torna-se inviável devido ao trabalho)

Mas discordo de você, é totalmente possível fazer um jogo em Java. Como já disse pra 2D tem o Java2D, e tem bibliotecas prontas pra som como o JOrbis pra .ogg e JBox2D pra física. Isso já atende a maioria das necessidades. Claro que não é a melhor solução, pois se fosse um jogo web era melhor Flash ou HTML5, ou se desktop C++ pela performance e falta de necessidade de uma VM

M

OpenGL entra na soma, pois o LWJGL esta atualizado, inclusive é ele quem da suporte atualmente ao “.ogg”.

Ao usar meu texto na integra, foste muito, mas muito descortês, desrespeitoso e agressivo a minha pessoa, se queria criticar de forma genérica não recorte texto ou códigos de um membro que postou algo e use como exemplo pejorativo, porque isto é quase uma agressão direta, é como criticar algo e pessoas apontando o dedo na cara de um dos participantes, nem deve ter percebido como isto suou ofensivo e pessoal, ai sim me obrigaste a pegar e ser direto contigo.

Na área de T.I tenho 14 anos de experiência, com Java desde 2003(10 anos), programava em Clipper, Delphi e VB (usando o Visual Studio) como meu ganha pão no começo de carreira, fora os serviços ao etilo faz tudo bem no começo mesmo “Manutenção, redes, etc.”, depois me envolvi com alguns projetos em C e com certeza em PHP (Vira e mexe estou pesquisando uma tecnologia nova, tanto que minha monografia foi sobre desenvolvimento para o Sistema Brasileiro de TV digital, aonde fiz um protótipo e levei no dia de minha defesa, e ele estava bem melhor do que pode imaginar, mas como era a cunho de pesquisa e queria ver outras coisas não o mantive), comecei a estudar a área de jogos pesadamente faz uns 2 anos e pouco, e também conheço bem o público “o lado cliente”, pois joguei diversos jogos desde MMORPG e Desktop (Age of Mitology, empires, Warcraft, Dota, GuildWars, Lineage, Wow, etc…), então sei e consigo visualizar o que o produto precisa fazer no final, isso inclusive facilitou muito o desenvolvimento da engine. Trabalhei com informações em Java que muito mole chegava aos milhares de registro, pois continha dados de toda vida estatal do Pará. trabalhei para 18 empresas na área de T.I, aos quais tenho otimas relações até hoje, e cada uma em segmentos diferentes ( Frota de Onibus, restaurantes, cooperativas, lojas, industrias, etc.)

  • Minha experiência profissional foi toda no meio corporativo, mesmo minha pós em Engenharia de Sistemas, foi focada neste meio, apesar de minha monografia ser um estudo social/psicológico em cima da atuação dos jogos eletrônicos na vida e evolução social-tecnologica.

O que critiquei, e critico qualquer profissional quando alguém pedir ajuda em algo e não receber esta ajuda, somada a desmotivação induzida ao uso da tecnologia, este tipo de conduta costuma às vezes “matar” tecnologias que poderiam alavancar, nunca se sabe “quem esta perguntando”, poderia ser alguém que poderia dar um ?up? no mesmo. É errado falar de outras tecnologias? Não, desde que pelo menos mate a duvida de quem a levantou na tecnologia pedida. E foste tão reincidente, que não deu para não te criticar forte nisso. Se eu pegar e “linkar” os tópicos em que participas, comentando algo na área de Java, vai notar o quão forte é esta reincidência, não falo isto por raiva ou algo do gênero, pelo contrario, sei ser grato e valorizar o trabalho alheio, principalmente das comunidades que citei aonde você atua, mas da mesma forma te digo que recentemente vira e mexe recebo por email perguntas e boa parte deles durante as conversas, quando questiono sobre procurar algumas comunidades Java, recebo uma reclamação da desmotivação que outros põe em cima, e quando falo de nomes, tu viny, esta quase sempre sendo indicado como um desmotivador top-list, “Viny postou? pqp já vai criticar a linguagem e vender outro produto”, eu que sei o que eles passaram pois até hoje ainda passo, sei como isto é chato, quando questionamos algo em Java, queremos a solução Java, se vier agregada de outra solução não Java ótimo, se não fica sem sentido fazer perguntas no GUJ ou outro tópico Java, pela tua experiência na área de jogos ser maior e ser moderador daqui e de outras comunidades Java, já devias saber que isso é básico. Pode expressar tua opinião pode, mas como disse te ver em um topico de jogos é saber o que esperar ou melhor “não esperar”, entende isto? Para e reflita pela otica de quem vem pedir ajuda/auxilio e reflita sobre a impressão que causa (“Ele sabe e não ou quer contribuir, por não gostar de Java”, mesmo que diga que adora Java ou odeia não muda o fato da pessoa sair daqui com mais duvidas do que quando entrou e pior, já com vontade de “largar a comunidade” por assim dizer). Sei que podes ajudar muito mais, que podes fazer uma diferença forte aqui, mas quando se fala de jogos em Java nas comunidades Java, esta um verdadeiro advogado do diabo. Por favor tente entender, não falo de ti pessoa, mas de ti auxiliador, seja por moderação ou mais experiencia.

Quer um exemplo?
“Como faço um sistema de movimento em Java”
Resp:
“Olha tem estas tecnologias que podem te ajudar, aqui tem um código que faz o que quer ou parecido. blá blá blá”
“Mas vou te dar um forte conselho se teu alvo for …, use tecnologia tal, veja um exemplo do mesmo trabalho nesta tecnologia.”

Sentiu a diferença?
É coisa boba, mas que faz toda a diferença.

Viste que de novo colocou palavras em minha boca? Em momento algum disse que Java era a solução para todos os problemas, mas sim que é possível e pode ser feito, usando binding ou outros recursos? Sim, pode sim, tanto que o Parallax é a prova cabal disto, em nenhum momento falei que Java era uma solução melhor que XXXX para Windows (Vira e mexe em outras comunidades e listas Java sofre este tipo de coisa, mas ainda sim é usada).

O autor do tópico fez uma afirmativa certa, quando falou sobre desktop, no sentido de poder ser feito, até onde vi não encontrei um real limitador para Java em ambiente desktop, te lembra que tu mesmo me encheu de medo sobre trabalhar com som, lá no ponto V? e foi uma das primeiras coisas que coloquei para funcionar, se analizar o genero de jogo que escolhi para que a engine cria-se, não tenho uma real nescessidade de imbutir controles como joysticks justamente pela cultura deste mundo (Sim, pesquisei antes, justamente por saber que não posso chegar de dois pés com Java, então humildemente fui estudando alternativas que pudessem tornar o projeto algo de sucesso, me valendo dos pontos fortes que a tecnologia oferece).

E entendo a euforia do autor, se eu encontro alguém que como eu ajuda-se de forma direta, no que se refere a tecnologia Java, ia pular de alegria, o mais importante não foi o que conceituei, foi o que mostrei funcionando, expliquei as dificuldades as facilidades, com tudo isto ele analisou e tirou suas próprias conclusões, por isto disse que não precisava chegar de dois pés, no rapaz e nem fazer o que fez (Falei no 2° Paragrafo).

Eu sou o tipo de profissional que escuta o que os outros falam, leio e analizo e faço algo acontecer, não sou um “coordeiro” e nem um do “contra”, o que venho observando durante o decorrer do projeto que a coisa não é assim não, é verdade que a Oracle para jogos eletronicos esta sendo um do contra, mas como disse tem aqueles que usam solução dos outros e tem os que fazem soluções, eu estou evoluindo uma solução, que pode até ser portada não em linguagem, mas conceitualmente para outro ambiente depois ( Lembrei do Artemis, que tem a versão em C++ agora, rsrsrs… ).

Viny agradeço o convite , apesar de estar ao menos por hora com o tempo apertado, posso fazer alguns artigos para o ponto V por exemplo tranquilamente, falando sobre as tecnologias que uso, sou a favor de ajudar sempre que possível e viável claro, só me add como autor para poder fazer um artigo.

Qualquer coisa me adicione E-mail/Msn/GoogleTalk: [email removido]

E aceito qualquer colaboração, no projeto mesmo os não tecnicos (rsrsr…).
Espero que fale bem do projeto para teus alunos. ( rsrsr… )

Se vocês quiserem ver o que já existe pronto e o que pode fazer, além dos 4 vídeos no site, só seguir o tutorial aqui em downloads, qualquer coisa o meu contato esta aqui (postado acima).
http://www.einformacao.com.br/parallax/downloads/projeto

Ps1: Já subi para um SVN o projeto, mas estou analisando a possibilidade de usar Git, cheguei a por, mas teve alguns colaboradores que andaram apanhando e como já é difícil ter ajuda, acho que devo manter no svn, assim que disponibilizar de vez, o código já oficializando git ou svn eu aviso.

Ps2: Sei que vai haver comentários de desenvolvedores positivos ou negativos, mas antes de qualquer coisa olhem o projeto, baixem o exemplo, vejam os vídeos, leiam, ai sim podem falar até quem sabe dar um apoio construtivo com propriedade o mesmo.

Para finalizar, só reclamei da grosseria, mesmo que não proposital e do que foi repetitivo/incidente na postura em relação a Java na comunidade Java, no sentido de apoio, fora isto não tenho do que falar (Não que recorde agora hahaha…). Se olhar não é nada grave ou que mate, mas são pequenas coisas que acumuladas viram grandes, nunca deixem de olhar pela ótica da pessoa que esta do outro lado da bancada e nem todo curioso na área de Jogos é um curioso em Java, coisas bobas, mas ao menos deu para ter uma conversa sadia, mesmo que tenha tido seus momentos de fervor.

J

victorcosta:
juliocbq:
Você pode desenvolver jogos em qualquer linguagem victor, mas no caso você teria mais dificuldade em usar java nesse segmento porque a plataforma não te oferece bons recursos mutimídia. É uma coisa simples chamada investimento. Eu concordo com o v. godoy nesse quesito. Querer passar uma informação falsa somente por gosto não é justo com quem deseja iniciar ou se estabelecer no segmento de jogos. Não é porque aqui é o GUJ(Grupo de Usuários Java) que deixaria de postar a melhor maneira de solucionar um problema usando a ferramenta mais adequada. Eu trabalho com java também mas prefiro deixar interesses comerciais a parte quando o assunto é estudo, pesquisa e aprendizado.

Por exemplo a microsoft investe no directx(d3d, audio, input), directshow(captura de vídeo, áudio) para ferramentas como c# e c++. Logo a oracle não investe em nada disso a momento para java. Salvo conduto java fx que pode mudar esse quadro. Mas ele anda muito devagar.

O legal a se fazer é pesquisar por si mesmo e ver as limitações e vantagens de cada tecnologia para cada segmento. Essa conversa de time de futebol que acontece aí em cima não leva a lugar algum.

Por isso que eu disse SE POSSÍVEL (as vezes dependendo da tarefa torna-se inviável devido ao trabalho)

Mas discordo de você, é totalmente possível fazer um jogo em Java. Como já disse pra 2D tem o Java2D, e tem bibliotecas prontas pra som como o JOrbis pra .ogg e JBox2D pra física. Isso já atende a maioria das necessidades. Claro que não é a melhor solução, pois se fosse um jogo web era melhor Flash ou HTML5, ou se desktop C++ pela performance e falta de necessidade de uma VM

Pois é, mas não foi o que eu disse no post que vc comentou!?

O problema do java 2d é que é lento comparado com o prism que provavelmente irá substituílo daqui a um tempo, e está presente no java fx. Usar java 2d não gera tão bons resultados como o prism.

M

Uma questão é importante e que isto é vital, quando falamos de Jogos em Java, é o fator, estilo de jogo e recursos dísponiveis.

Foi inclusive o que analizei e venho analizando no projeto Parallax, justamente por conhecer seus limitadores, estou caminhando dentro do que o ambiente pode me proporcionar com qualidade, enquanto estiver atendendo a demanda esta otimo, se em algum ponto não tiver jeito, ai não tem como não portar para outra solução tecnologica, mas até o memento esta sendo bem tranquilo, mas isto porque analisei os dois fatores estilo de jogo e recursos dísponiveis.

Incrivel quando falam de HTML5 penso no pessoal do Flex pulando das cadeiras e chutando o PC, de tanta briga que presenciei por conversas religiosas entre os dois (Tipo: “HTML 5 vai acabar com flex, vocês já eram!”) hehehe…

J

Michel.Montenegro:
Uma questão é importante e que isto é vital, quando falamos de Jogos em Java, é o fator, estilo de jogo e recursos dísponiveis.

Foi inclusive o que analizei e venho analizando no projeto Parallax, justamente por conhecer seus limitadores, estou caminhando dentro do que o ambiente pode me proporcionar com qualidade, enquanto estiver atendendo a demanda esta otimo, se em algum ponto não tiver jeito, ai não tem como não portar para outra solução tecnologica, mas até o memento esta sendo bem tranquilo, mas isto porque analisei os dois fatores estilo de jogo e recursos dísponiveis.

Incrivel quando falam de HTML5 penso no pessoal do Flex pulando das cadeiras e chutando o PC, de tanta briga que presenciei por conversas religiosas entre os dois (Tipo: “HTML 5 vai acabar com flex, vocês já eram!”) hehehe…

o problema do flex era ser uma tecnologia fechada enquanto a html5 é aberta e mais acessível. A adobe acabou doando flex para apache. Esse é um detalhe que pode decidir a vida de um projeto.

A oracle liberou o jfx e agora é opensource. Se ele der certo vai trazer o java para o desktop com muitos recursos(3d, aúdio e vídeo) de desempenho de hardware.

F

Minha experiencia com algumas linguagens como Delphi/VB/Python/C/C++/C# e Java me remete a pensar: Realmente, o que daria pra fazer um game sem problemas usando apenas a linguagem do inicio ao fim, o C++ é o que mais acho pessoas falando ou citando tanto no Brasil como fora do Brasil.

Sou apenas um estudante na área de games como ja disse antes, estou reunindo e tentando entender como começar e ja deixo claro não quero por enquanto usar nada de Engine quero entender em um todo, o começo, o que é preciso, como iniciar um projeto, como fazer para que meus personagens ganhem vida, como criar meus cenarios, colisoes, etc…etc…etc…etc…etc…, nada de engine ou coisas assim, e ao que percebi eu preciso reaprender a desenvolver pois o conceito de games não passa nem de perto a desenvolvimento Web ou Desk.

Muitas pessoas me disseram “Não use Java para games, use C++ ou C#”, eu havia simplesmente ignorado o Java e estava reunindo materiais em C++ e C#, inclusive o Ponto V tem uma gama de exemplos em C# que me ajudaram muito e tambem o Sr. Camello com seus posts em seu blog mostrando desde o inicio como usar XNA, aqui: http://camelloxna.blogspot.com/

Quando vi o projeto Parallax e o criador me disse: “Isso é Java”, eu fiquei bobo e corri atras pra saber sobre isso e pensei: “Aff, e agora, Java ou C++” sim, pq M$ com seu C# XNA é tensa, lembro bem o que fizeram com desenvolvedores VB6 quando anunciaram seus .Net e ainda agora com Win8 dizem nao rodar XNA. Mas o fato foi que a noticia de dizer que o Parallax usava Java me fez sorrir novamente pois até mesmo pra C++ estava dificil reunir documentação e tutoriais e essa noticia me fez pesquisar mais sobre Java com Slick2D e LWJGL.

Como disse, minha experiencia com games é ZERO, nao sei nada mas quero aprender, vou apanhando e aprendendo o que precisava é do Norte que o Michel me ajudou a encontrar e entender que com Java é possivel. O que procuro é o conceito, como fazer, como iniciar como criar algo e acredito eu que com Java eu irei conseguir isso e futuramente quando perceber alguma dificuldade eu ja terei uma base para migrar para outra linguagem qualquer, pois o conceito ja foi adquirido. Fiz isso com sistemas Desktop migrando VB/Delphi para Java ou C++, entaum acredito que o importante é o conceito, o ponto inicial, o resto independe da linguagem pois ja esta definido o inicio/meio e fim do projeto, e é isso que estou tentando levantar em minhas pesquisas.

Novamente, agradeço a todos pelos esclarecimentos e principalmente ao Sr.Michel que esta me ajudando bastante nesse inicio quase frustado pelo “Java nao e boa pra criar games”. Pela história dos games o C/C++ é dominante, mas realmente o começo pra quem não sabe nada em qualquer linguagem que seja é muito dificil, chega a ser tenso. Mas escolhi aprender como fazer e tenho que lidar com as dificuldades seja la qual for a linguagem escolhida.

obrigado.

V

Java2D é acelerado por hardware, qualquer PC com uma placa decente de vídeo roda o jogo a 60 fps com a janela maximizada. No meu PC mesmo dá uns 3000 fps acho

J

É acelerado mas não faz metade do que o prism faz, inclusive o 3d. Existem bugs que até hoje não foram corrigidos no java 2d, como o fato da imagem(VolatileImage ou BufferedImage que escrevem na memória da placa de vídeo) perder sua referência na placa aceleradora. A falta de sincronismo deixa o resultado como se fosse pintado pela api do windows, ou seja acelerado por software(lento em poucas palavras).

There are some severe problems associated with the internal implementation of BufferedImage which make using them very tricky if you want to get the best performance. The problem lies with managed images, and this note attempts to put into writing what I’ve found out about them to save other people from going through the same pain.

http://www.jhlabs.com/ip/managed_images.html

Esse problema já é bem velho.

V

Mas é como falei desde o início. A plataforma Java não atende a tudo.

Você é obrigado a recorrer a bindings.

Em momento nenhum falei que alguém é impossibilitado de fazer coisas usando esses bindings. Uma vez no C++, o céu é o limite.

Porém, existem custos e riscos associados a isso:

  • Você não poderá mais rodar sua aplicação em qualquer local onde tenha uma VM: Para isso, você terá que reescrever o binding;
  • Parte de seu projeto depende de código C ou C++;
  • Você deve aumentar os testes em outras plataformas;
  • Você agora está apostando não só no Java, mas nos fabricantes de todos os bindings envolvidos no seu projeto.

Falar que você pode fazer funcionar na linguagem é fácil. Pois como já argumentamos em outro post, é possível fazer funcionar qualquer coisa, em qualquer linguagem. Especialmente se você incluir projetos híbridos, com os bindings, na jogada. Acho que isso é um ponto pacífico e ninguém discorda dessa afirmação.

Agora, fazer algo funcionar, com custo adequado, gerenciando riscos, entendendo trade-offs e no final dar lucro é que é o grande problema. E, no caso específico do Java, fazer um game usando 100% de Java puro (ou APIs escritas em java puro) é extremamente limitante. E incomparavelmente inferior ao que se pode fazer em outras plataformas.

F

ViniGodoy:
Mas é como falei desde o início. A plataforma Java não atende a tudo.

Você é obrigado a recorrer a bindings.

Em momento nenhum falei que alguém é impossibilitado de fazer coisas usando esses bindings. Uma vez no C++, o céu é o limite.

Porém, existem custos e riscos associados a isso:

  • Você não poderá mais rodar sua aplicação em qualquer local onde tenha uma VM: Para isso, você terá que reescrever o binding;
  • Parte de seu projeto depende de código C ou C++;
  • Você deve aumentar os testes em outras plataformas;
  • Você agora está apostando não só no Java, mas nos fabricantes de todos os bindings envolvidos no seu projeto.

Falar que você pode fazer funcionar na linguagem é fácil. Pois como já argumentamos em outro post, é possível fazer funcionar qualquer coisa, em qualquer linguagem. Especialmente se você incluir projetos híbridos, com os bindings, na jogada. Acho que isso é um ponto pacífico e ninguém discorda dessa afirmação.

Agora, fazer algo funcionar, com custo adequado, gerenciando riscos, entendendo trade-offs e no final dar lucro é que é o grande problema. E, no caso específico do Java, fazer um game usando 100% de Java puro (ou APIs escritas em java puro) é extremamente limitante. E incomparavelmente inferior ao que se pode fazer em outras plataformas.

Para games, até mesmo para quem esta comecando e nao tem base nenhuma de como comecar vc recomenda o C/C++ ??? Pelas minhas pesquisas encontro muita gente dizendo: “Use C/C++, esqueça as outras”, tenho mais tempo de codigos em C/C++ do que em Java mas a transição de desenvolvimento corporativo Desktop/Web para games é complicadissima pois tem-se uma maneira de fazer para uma totalmente diferente de tudo que ja vi.

Pelo visto, e pelos posts que ja encontrei tanto a nivel Brasil como fora do Brasil recomendam-se sempre usar C/C++ mas nao se encontra nada do tipo: How to use C++ and Direct or OPenGL. Encontra-se muita teoria de tudo e muito pouca pratica. Estou estudando para conseguir criar em Java para talvez consiga estender isso até o C/C++ futuramente. Como eu disse, preciso entender para criar e a curva esta fechada…kkkk !

obrigado

J

fernandopaiva:
ViniGodoy:
Mas é como falei desde o início. A plataforma Java não atende a tudo.

Você é obrigado a recorrer a bindings.

Em momento nenhum falei que alguém é impossibilitado de fazer coisas usando esses bindings. Uma vez no C++, o céu é o limite.

Porém, existem custos e riscos associados a isso:

  • Você não poderá mais rodar sua aplicação em qualquer local onde tenha uma VM: Para isso, você terá que reescrever o binding;
  • Parte de seu projeto depende de código C ou C++;
  • Você deve aumentar os testes em outras plataformas;
  • Você agora está apostando não só no Java, mas nos fabricantes de todos os bindings envolvidos no seu projeto.

Falar que você pode fazer funcionar na linguagem é fácil. Pois como já argumentamos em outro post, é possível fazer funcionar qualquer coisa, em qualquer linguagem. Especialmente se você incluir projetos híbridos, com os bindings, na jogada. Acho que isso é um ponto pacífico e ninguém discorda dessa afirmação.

Agora, fazer algo funcionar, com custo adequado, gerenciando riscos, entendendo trade-offs e no final dar lucro é que é o grande problema. E, no caso específico do Java, fazer um game usando 100% de Java puro (ou APIs escritas em java puro) é extremamente limitante. E incomparavelmente inferior ao que se pode fazer em outras plataformas.

Para games, até mesmo para quem esta comecando e nao tem base nenhuma de como comecar vc recomenda o C/C++ ??? Pelas minhas pesquisas encontro muita gente dizendo: “Use C/C++, esqueça as outras”, tenho mais tempo de codigos em C/C++ do que em Java mas a transição de desenvolvimento corporativo Desktop/Web para games é complicadissima pois tem-se uma maneira de fazer para uma totalmente diferente de tudo que ja vi.

Pelo visto, e pelos posts que ja encontrei tanto a nivel Brasil como fora do Brasil recomendam-se sempre usar C/C++ mas nao se encontra nada do tipo: How to use C++ and Direct or OPenGL. Encontra-se muita teoria de tudo e muito pouca pratica. Estou estudando para conseguir criar em Java para talvez consiga estender isso até o C/C++ futuramente. Como eu disse, preciso entender para criar e a curva esta fechada…kkkk !

obrigado

A culpa disso são os fóruns brasileiros. A maioria deles nunca é transparente e sempre tem o problema de “sonegar informação”. A ogre 3d por exemplo é muito bem documentada, e tem um monte de exemplos lá.

http://www.ogre3d.org/

Também possui mapeamentos pra java.

V

Eu comecei estudando pelo Java, e não me arrependo. Não recomendo o c++ de cara pq é uma linguagem bem complexa, e isso pode ser um tanto frustrante. Uma opção similar ao Java é o c# + xna. Agora vai muito dos seus objetivos se for ir para o exterior, você terá que encarar c++ cedo ou tarde.

F

Opa Vini, como disse antes tenho um conhecimento e horas de linhas de código maiores em C++ q em Java, em C++ fiquei uns 8 anos mais ou menos em Java faz 5 q estou, entaum o problema msm seria entender como funciona criar os games…C# com XNA acho uma otima pedida mas pelo que ja andei lendo por ai o Win8 ja naum dara mais suporte a XNA, bem coisa da M$ isso msm, nao da a minima pra quem usa suas plataformas.

Mas vou na batalha, tentar entender e estudar pra sacar como se produz tudo e a linguagem acho eu que depois de entender sera o de menos.

obrigado

B

Michel.Montenegro:


Aos outros membros do fórum peço desculpas se fui um pouco forte em minhas colocações ou um tanto rude, mas já vi isto aqui e fora daqui tantas vezes (pela mesma pessoa), que não poderia deixar passar isto, e por favor sintam-se a vontade para comentar sobre coisas pertinentes e de forma construtiva ao rapaz que criou o tópico, e peço desculpas inclusive a ele, por ter sido mais energético aqui.

Um fraternal abraço

Rude? Desculpe, mas como criador da engine, você foi muito, muito deselegante, partindo para o pessoal ao invés de argumentar

Parabéns pelo esforço e dedicação na criação da engine, mas críticas são o que nos fazem crescer e melhorar. Você não pode se colocar acima das críticas apenas porque fez um trabalho duro e o disponibilizou à comunidade.

M

blackforce:
Michel.Montenegro:


Aos outros membros do fórum peço desculpas se fui um pouco forte em minhas colocações ou um tanto rude, mas já vi isto aqui e fora daqui tantas vezes (pela mesma pessoa), que não poderia deixar passar isto, e por favor sintam-se a vontade para comentar sobre coisas pertinentes e de forma construtiva ao rapaz que criou o tópico, e peço desculpas inclusive a ele, por ter sido mais energético aqui.

Um fraternal abraço

Rude? Desculpe, mas como criador da engine, você foi muito, muito deselegante, partindo para o pessoal ao invés de argumentar

Parabéns pelo esforço e dedicação na criação da engine, mas críticas são o que nos fazem crescer e melhorar. Você não pode se colocar acima das críticas apenas porque fez um trabalho duro e o disponibilizou à comunidade.


blackforce, obrigado! :smiley:

Só leia todos os textos e principalmente o contexto (note a palavra reincidência, etc.) com calma. Só respondi a uma grosseria, ao que foi escrito depois pelo viny, não foi intencional, logo de minha parte esta tudo bem, tanto viny como eu acredito que tenhamos nos entendido, então por mim passei uma borracha. Em relação ao autor do tópico, ele mesmo concordou comigo, pois falei diretamente com ele depois, caso ele achasse algo ruim, eu mesmo teria deletado, relaxa às vezes o animo esquenta um pouco, o importante é o que tiramos de positivo. :wink:

:arrow: Mas antes que o tema se torne o “ba fá fá que rolou” e nem foi lá estas coisas ( rsrsr…), vamos contribuir com o fernandopaiva com informações, ele esta procurando materiais e esta bem difícil, tanto em C++ como Java a respeito do assunto, ele esta estudando algo que passei para ele, mas quanto mais materiais melhor. O pior que material no Geral é difícil de garimpar seja em qual tecnologia for.

Pense na dificuldade em achar material de ?conceito de criação de quest?, ?táticas usadas em …?, simplesmente não tem ou quando tem é um retalho bem miudinho, garimpamos carvão e fazemos força até virar diamante ( rsrsr… )

F

Michel.Montenegro:
blackforce:
Michel.Montenegro:


Aos outros membros do fórum peço desculpas se fui um pouco forte em minhas colocações ou um tanto rude, mas já vi isto aqui e fora daqui tantas vezes (pela mesma pessoa), que não poderia deixar passar isto, e por favor sintam-se a vontade para comentar sobre coisas pertinentes e de forma construtiva ao rapaz que criou o tópico, e peço desculpas inclusive a ele, por ter sido mais energético aqui.

Um fraternal abraço

Rude? Desculpe, mas como criador da engine, você foi muito, muito deselegante, partindo para o pessoal ao invés de argumentar

Parabéns pelo esforço e dedicação na criação da engine, mas críticas são o que nos fazem crescer e melhorar. Você não pode se colocar acima das críticas apenas porque fez um trabalho duro e o disponibilizou à comunidade.


blackforce, obrigado! :smiley:

Só leia todos os textos e principalmente o contexto (note a palavra reincidência, etc.) com calma. Só respondi a uma grosseria, ao que foi escrito depois pelo viny, não foi intencional, logo de minha parte esta tudo bem, tanto viny como eu acredito que tenhamos nos entendido, então por mim passei uma borracha. Em relação ao autor do tópico, ele mesmo concordou comigo, pois falei diretamente com ele depois, caso ele achasse algo ruim, eu mesmo teria deletado, relaxa às vezes o animo esquenta um pouco, o importante é o que tiramos de positivo. :wink:

:arrow: Mas antes que o tema se torne o “ba fá fá que rolou” e nem foi lá estas coisas ( rsrsr…), vamos contribuir com o fernandopaiva com informações, ele esta procurando materiais e esta bem difícil, tanto em C++ como Java a respeito do assunto, ele esta estudando algo que passei para ele, mas quanto mais materiais melhor. O pior que material no Geral é difícil de garimpar seja em qual tecnologia for.

Pense na dificuldade em achar material de ?conceito de criação de quest?, ?táticas usadas em …?, simplesmente não tem ou quando tem é um retalho bem miudinho, garimpamos carvão e fazemos força até virar diamante ( rsrsr… )

Exatamente, eu mesmo ja participei de várias discussões aqui e em outros fórums desde Windows passando por BSDs e Linux até Java/C++/Python/Ruby/Delphi etc…etc…etc…O fato é que estou procurando documentação e só de saber que com Java tem um jeito de fazer ja me deixa feliz.
Nesse fds nem deu pra ler muita coisa, estou desenvolvendo uma app para Android entaum ta me consumindo o tempo e ainda faculdade é mais tenso ainda…kk !!

Mas é isso, eu quero aprender como desenvolver games e ja levantei muita doc em C++/Java e Python(PyGame + Blender)…vamos ve no q vira…Aguardem os proximos capitulos…kkkkk !

[]s a todos e obrigado.

M

Este artigo sobre o Minecraft (Feito em Java), é ótimo, fala sobre como um jogo com gráficos ruins, chegando a ser “bagunçado”, conseguiu ser tão forte, e ser sinônimo de sucesso, no quesito jogos em Java. Um game que tinha tudo para dar errado, deu certo, as vezes ou quem sabe quase sempre o divertimento é a verdadeira receita do sucesso, sempre tem exceções, mas o fato é, jogamos o que achamos divertido, o que ele tinha/tem de tão especial. :wink:

http://cosmiceffect.com.br/2012/03/12/minecraft-o-software/

Boa leitura.

V

O detalhe que a reportagem não fala: O Minecraft também não é 100% programado em Java.
Ele também usa bindings, a começar pela LWJGL.
Então, não basta ter uma VM Java para rodá-lo. É necessário que a LWJGL seja portada para a plataforma almejada (hoje ela é portada para Windows, Linux e Mac, deixando de fora as máquinas Solaris, que também tem VM java).

Caso contrário, seria impossível ter gráficos 3D otimizados, pois a renderização teria que ser integralmente feita por software.
Seria impossível suportar controles, ou dificilimo ter recursos de audio 3D.

A versão mobile do Minecraft é integralmente escrita em C++.
O Notch comentou que uma das grandes vantagens dessa versão é que não possuia os glitches que o Minecraft tem, por causa do garbage collector.
Ele também se preocupou em fazer uma versão C++ pois ele quer alcançar diversas plataformas que o Java não está presente (não falou explicitamente, mas cremos de maneira geral que ele está falando dos consoles).

M

“Opa Vinicius obrigado pelos comentários. Não acredito que usar bindings invalide Java como plataforma para jogos, a máquina virtual Java em sí é escrita em C++ e opera com bindings para chamadas do sistema operacional e nem por isso ela deixa de ter boa performance se o aplicativo for bem escrito. O próprio XNA da Microsoft nada mais é que uma coleção de bindings para o DirectX e nem por isso deixa de ter desempenho mais que adequado. Dito isso e apesar do que disse no artigo, acredito que Java realmente não é uma plataforma adequada para jogos. Não creio que o motivo seja tecnológico, a Google conseguiu criar uma máquina virtual baseada em Java com boa performance para jogos em sua plataforma Android, mas no PC simplesmente nunca foi o foco da Sun e agora da Oracle. Se fosse o desejo da Sun/Oracle investir neste mercado, os bindings para OpenGL e outras APIs direcionadas a jogos fariam parte da API oficial da plataforma assim como eles fazem parte no Android, mas nunca fez nenhum sentido comercial para a Sun tentar brigar em um mercado que a Microsoft já dominava, então o que ela pode fazer foi dar o suporte para a comunidade criar os bindings necessários, uma manobra sem nenhum risco ou custo para ela. No artigo quis chamar a atenção para o fato de Minecraft ter sucesso independente de ser escrito em Java. O jogo vende bem porque é divertido e daria certo qualquer que fosse a linguagem usada para desenvolve-lo e acredito que este foi o tapa com luva de pelica, o fato que se o jogo é divertido as pessoas não ligam muito para como ele foi feito.”
By Dancovich, criador do Artigo.

Concordo com ele.

Ps: Viny acredita que peguei um susto quando vi teu post lá, pensei logo “chaser?!?!”, brincadeira, é bom ver conversas sobre tecnologias fora da esfera do forum, principalmente em cima de um produto criado e que vingou, deixa mais rico os argumentos.

Uma boa ideia, vale mais do que mil tecnologias ( Java, flesh, c++, etc…), tudo é “ferramenta”, se a ideia é boa ela vinga de todo jeito, depois ela tende a ser melhorada e evoluida como sempre ocorre com quase tudo. :slight_smile:

V

Primeiro de tudo, minha argumentação nunca se baseou em desempenho.
Não sei nem porque ele contra-argumentou com isso.

Veja que a resposta dele, justifica a minha e o que estamos falando aqui:

  • Não é foco da Oracle e Sun ter o Java rodando para jogos;
  • Nunca houve investimento nesse sentido;
  • A google teve que construir outra plataforma (a plataforma Android, que é adequada para jogos);
  • Você deve, sim, recorrer aos bindings.

Se você ser obrigado a recorrer a um código que não é Java fazer três tarefas essenciais aos games - renderização gráfica, áudio e entrada de dados - não invalida Java como plataformas de jogos, então o que invalidaria?

Se o código é de bindings, não é mantido pela Oracle. Não há garantias de que existirá enquanto o Java existir, nem que rodará onde a VM java rodar. Não passa pelo processo de qualidade da plataforma, nem há preocupações do fabricante do Java em manter tudo funcionando, tudo compatível, onde quer que o Java esteja. Você passa a depender de dois fabricantes.

Diga então que está construindo seu game na plataforma “Java+LWJGL”, mas não em Java puro.
E não use argumentos de que seu código “roda onde quer que exista uma VM Java”.

A

ViniGodoy:
Primeiro de tudo, minha argumentação nunca se baseou em desempenho.
Não sei nem porque ele contra-argumentou com isso.

Veja que a resposta dele, justifica a minha e o que estamos falando aqui:

  • Não é foco da Oracle e Sun ter o Java rodando para jogos;
  • Nunca houve investimento nesse sentido;
  • A google teve que construir outra plataforma (a plataforma Android, que é adequada para jogos);
  • Você deve, sim, recorrer aos bindings.

Se você ser obrigado a recorrer a um código que não é Java fazer três tarefas essenciais aos games - renderização gráfica, áudio e entrada de dados - não invalida Java como plataformas de jogos, então o que invalidaria?

Se o código é de bindings, não é mantido pela Oracle. Não há garantias de que existirá enquanto o Java existir, nem que rodará onde a VM java rodar. Não passa pelo processo de qualidade da plataforma, nem há preocupações do fabricante do Java em manter tudo funcionando, tudo compatível, onde quer que o Java esteja. Você passa a depender de dois fabricantes.

Diga então que está construindo seu game na plataforma “Java+LWJGL”, mas não em Java puro.
E não use argumentos de que seu código “roda onde quer que exista uma VM Java”.

Concordo plenamente com o Vini, é como dizer que os sistemas do Banco Do Brasil são a prova do uso da plataforma Java para sistemas bancários quando, na verdade, usam o COBOL para o processamento dos dados. Para validar a plataforma nesse caso seria necessário outro projeto alvo (não me vem à cabeça algum no momento para exemplificar).

O Eclipse também não é java puro porque o SWT depende de bibliotecas nativas, mas o NetBeans valida a plataforma para desenvolvimento de ferramentas (acredito que o IntellijIDEA também valide porque ele usa alguns recursos nativos para melhorar algumas coisas - mudança externa de arquivos, por exemplo - mas acho que isso é papo pra outro tópico).

M

Note que sempre dou uma ressalva quando me refiro a funcionar onde tem uma JVM, pois mesmo com bindings (Usando bibliotecas nativas), o OpenGL por si só não é só “pa pum” e funciona, principalmente dependendo da placa de vídeo + linux, como foi um caso que passei, foi uma luta para conseguir fazer o OpenGL funcionar, enquanto outras maquinas Linux com marca Y de vídeo, funcionou na hora.

Mas verdade seja dita mesmo com bindings, ele funciona perfeitamente, dentro de um limite, quando achar um problema real (Na pratica, enquanto evoluo o projeto por exemplo, pode ter certeza que vou ser o 1° falar, mesmo porque vai que alguem tenha uma solução e se não tiver, ai repensamos o que fazer).

Concordei com ele e acredito que seja um senso comum para o usuário que se o jogo divertir, onde e como ele foi feito é o que menos interessa, se não os jogos só começariam a fazer sucesso com as tecnologias mais recentes e sempre usando as mesmas linguagens (Fora que existem casos e casos), não discordo que a Oracle não deu o devido respeito a área de Jogos em Java, na verdade estou torcendo para que cedo ou tarde eles olhem para Java e invistam na parte de Jogos.

Agora dizer que Java não serve para fazer jogos desktop também não é verdade, pode ser feito com uso de bindings? Sim, e dai? funciona no Windows XP, Windows 7, windows …? Sim funciona, tanto 32/64, funciona no linux? Sim!, o projeto fica dependente de uma comunidade que possui um líder, como é o caso do Slick, sim, isso realmente é ruim, mas na vida tudo tem um preço (Quem acompanhou JDO, Hibernate e outros projetos sabe do que to falando, lembrando todos eles tinham problemas e discussões como esta), quantos projetos já não foram migrados para outras tecnologias por algum motivo na atual? (Falando de algumas que resistem até hoje como Delphi e VB, sabem o que é isto).

Faço uma pergunta “Java+LWJGL” não é java puro? Não, realmente ele se vale do uso de bibliotecas nativas, mas java da suporte a “binding”, acesso a biblioteca nativa usando código Java? Sim! Se fosse um “pecado” usar isto, seria cuspir para cima, pois a própria linguagem da recurso para isto, só mostrando como ela é versátil.

Da para fazer um jogo então rodando via desktop? Sim! Se não o Parallax seria imaginação e eu não estou programando mentalmente. (rsrsr…)
Qualquer tipo de Jogo, usando de tudo? Não! mas ai entramos em uma questão de analise de projeto e da tecnologia, e ver o que pode ser feito.

Mas tem riscos? Sim tem, mas até as versões atuais do Windows o LWJGL esta atualizado (incluindo com a versão mais recente do OpenGL), mas nas versões seguintes vai estar? não sei, ai mora um risco, mas Java por si só é um risco (Só olhar todo o histórico dele, quem manteve e deu força de verdade a linguagem foi comunidade, isso é histórico, faz parte das raízes da linguagem, negar isto é cuspir no prato que comeu), e sinceramente poucos projetos vi serem feitos do zero na unha sem se valer de nenhum framework, lib ou algo feito por terceiros, isso inclui C++, VB, Delphi e afins ( incluso o mundo Web, HTML puro? PHP puro? sempre adicionamos tecnologias de terceiros, quase sempre alternativas free e em que não temos um real controle, por exemplo Ajax que veio à partir do bom e velho JavaScript).

Até o HTML 5 que estamos ansiosos para que evolua do dia para noite, uma hora vai acabar se valendo de recursos externos.

Vou deixar bem claro, Java não é solução para tudo, nem tão pouco concorre em todas as áreas de Jogos, mas afirmo que pode ser feito um bom trabalho nele, usando tecnologias “agregadas” que usam a mesma tecnologia ( Lembrando do que falei sobre LWJGL), então não posso admitir coisas como “Java não presta para Desktop!”.

M

"Apesar do uso de biblioteca de terceiros carregar consigo o problema da garantia citada, isso não é de forma alguma um problema exclusivo do Java.

Enquanto algumas pessoas hoje em dia criam jogos do zero, isso não é produtivo e a maioria das pessoas vai recorrer a diversos frameworks para facilitar as tarefas. Seja física, input, gráficos, som, o que for; muito raramente um jogo usará a plataforma nativa para todos esses recursos, sem o uso de nenhuma biblioteca de terceiros.

Se formos procurar uma plataforma completa para jogos, uma que não requer absolutamente nada de terceiros para funcionar, acho que ficaremos a ver navios. C e C++ por si só tem APIs padrões limitadas, suas bibliotecas padrões não tem condições de possibilitar a criação de jogos sem custos gigantescos. OpenGL, OpenAL, DirectX, Box2D, Havoc, todas essas são bibliotecas de terceiros se formos pensar apenas na API ?standard? da linguagem, a diferença sendo apenas que muitas dessas bibliotecas tem o suporte de grandes organizações enquanto as bibliotecas citadas do Java são mantidas pela comunidade. DirectX não é mais ?oficial? em relação ao ANSI C do que LWJGL em relação ao JAVA.

Achei interessante você incluir SDL como uma plataforma adequada e com garantias, visto que da mesma forma que LWJGL, SDL é uma biblioteca mantida pela comunidade e possui binding para várias linguagens, incluindo Java, todos mantidos por esta mesma comunidade.

Onde concordamos é que Java não é adequado para jogos e que não houve um investimento por parte da Oracle na área, mas a Google investiu na linguagem (mesmo desenvolvendo sua própria VM) e hoje vemos jogos exclusivos para o Xperia Play, incluindo ports de Playstation, e a qualquer momento podemos ver consoles portáteis (e quem sabe caseiros) exclusívos baseados em Android. Apenas não acredito que existem razões técnicas para isso não ter acontecido ainda, as razões até o momento foram todas comerciais."
By Dancovich

Já que estamos meio que espiritualmente falando com o Dancovich, nada mais justo que suas colocações seja postadas aqui também.

V

Esse argumento não transforma imediatamente o binding em código Java. O Java dá suporte a rodar código não Java. Mas usar JNI é só um jeito mais integrado de fazer “Runtime.exec”.

Binding tem que ser encarado como um último recurso. É uma ponte, colocada para a plataforma, justamente para não restringir o desenvolvedor quando a plataforma não der conta do recado.

Mas a própria Oracle ressalta que JNI é um recurso que deve ser usado “por sua própria conta e risco” e desaconselha fortemente o uso quando a plataforma não der conta de outra forma. Código JNI não roda na VM, não está sujeito a garbage collection e, portanto, não dá as garantias que código sobre a plataforma java dá.

V

Eu só quero que fique claro que para mim existe a distinção entre:

  1. Ser possível fazer games de alta qualidade usando o Java, mesmo que recorrendo a bindings;
  2. Ser o java uma plataforma completa para games;

O #1 é uma verdade inegável, e o Minecraft está aí para provar isso. Sua engine é também uma prova de que o Java pode ser usado por desenvolvedores de games.

Já o #2 não é uma afirmação verdadeira (e boa parte, por desinteresse da própria Oracle, como já concordamos). Você pode usar Java, mas pelo fato da plataforma não ser completa, sempre haverá junto um binding. A sorte é que a comunidade hoje preenche bem esse gap, com APIs de alta qualidade, como a LWJGL.

Espero que fique claro que as duas argumentações são completamente diferentes.

E que as minhas críticas se baseiam SOMENTE na segunda.
Quando se diz que o Minecraft ou a Parallax é a prova de que a plataforma java está completa.

M

Concordei sobre o item 1 e 2, dito acima!

Se programo utilizando a linguagem Java, rodo sobre a JVM, uso um binding para acesso a algumas bibliotecas nativas, onde o binding foi criado por terceiros usando a linguagem Java (Código Java para acesso aos bindings “JNI”) para poder ter acesso a algo que calhou que a JVM não tem suporte nativo, no final não dizer que usei Java é tenso, é como acessar um banco de dados usando ODBC via VB, Delphi ou qualquer outro e dizer que não programei em Delphi/VB/etc. Mas realmente não estou fazendo 100% uso da plataforma, justamente pela JVM não me da suporte a alguns recursos, forçando o uso de binding).

  • Quanto a funcionar em qualquer lugar que rode uma JVM, é legal termos algumas informações:
  • Quais sistemas operacionais existem bindings para (Windows 32/64, Linux 32/64, MacOSX, Solaris), disponíveis pela própria LWGL e atualizados.

  • Para Android, o slick esta com um projeto de ter uma versão dele para Android, e esta sendo trabalhado e evoluído (Ando acompanhando, e estou bem empolgado com seu avanço).

Curiosidade: Existe o projeto “LibGDX”, uma lib para desenvolvimento Desktop e Android usa opcionalmente LWJGL, feito usando a linguagem Java e o Slick esta analizando e pelo visto usando para agilizar esta compatibilidade.
http://code.google.com/p/libgdx/

  • Quanto a Symbian LWJGL também atua neste ambiente.

No site http://www.einformacao.com.br/parallax/introducao
Procure: “Tecnologias envolvidas”

  • Vai ver que não deixo uma tecnologia importante de fora, das que uso, além da linguagem Java, não deixo quem vem no site do projeto ficar no escuro, pelo contrario quanto mais eles souberem melhor, se não fica difícil até eles ajudarem caso queiram contribuir.

Rolou um outro bate papo entre eu, viny e danilo nos comentarios, que complementa esta daqui.
http://cosmiceffect.com.br/2012/03/12/minecraft-o-software/#comment-4080

Espero que possam dar uma olhada com carinho no projeto Parallax depois, divulgar e até contribuir, seja de que forma for.
Viny pode ter certeza que te inclui neste texto, rsrsrs…

V

Sim. Hoje a LWJGL realmente cobre todas as plataformas que existe uma VM.

Mas a questão do binding envolve também a garantia de cobrirem futuras VMs. Acredito que o pessoal da LWJGL terá essa preocupação, mas você terá que espera-los fazerem o port antes de sair o usando seu programa. Haverá aí um intervalo de tempo com VM e sem binding.

A engine Slick2D, para jogos é muito interessante. E tem suporte a mais plataformas que o próprio J2SE, justamente por estar sendo portada para Android.

J

Michel, você está dizendo coisas que não procedem, numa boa. A questão não é gostar ou desgostar de linguagens, você precisa ser imparcial quando começar a afirmar alguma coisa.
A linguagem c++ hoje é a que possui maior cobertura em ferramentas para jogos, e esse cenário não vai mudar tão cedo porque existe investimento em pesquisa em cima disso. E é muito grande. A maioria opensource e de grande qualidade.


http://irrlicht.sourceforge.net/

Uma lista com grande parte das engines disponíveis(a grande maioria é c++ então como não se possibilita a criação de jogos com custos menores?)

OpenGL não é uma biblioteca de terceiros. Ela é mantida por um grupo gigantesco incluindo NVIDIA e AMD. Ela é embarcada em todos os sistemas operacionais. Em um post lá atras você disse que ela possui dependências( de hardware, isso não procede porque ela é aberta e é um padrão a ser implementado por todos os sistemas). Eu nem vou citar aquele post porque ficou muito feia essa afirmação.

DirectX também não é biblioteca de terceiros porque o windows depende dela. A maior parte das apis, frameworks e engines(para windows) a usam, inclusive o java 3d.

Existe uma grande diferença entre DirectX e Opengl. A primeira é um framework completo(vídeo, input(hardware) e áudio), a segunda é uma biblioteca de baixo nível escrita em c, para servir sistemas operacionais com recursos de vídeo(não serve somente para jogos(aliás jogos é o de menos)). Não se pode comparar essas duas como bibliotecas do jeito que você postou acima.

É possível desenvolver jogos com qualquer ferramenta, mas usando c++ é inegável que haja ganho de produtividade e qualidade devido a essas razões(quantidade de ferramentas disponíveis).

M

juliocbq:
Michel.Montenegro:

Se formos procurar uma plataforma completa para jogos, uma que não requer absolutamente nada de terceiros para funcionar, acho que ficaremos a ver navios. C e C++ por si só tem APIs padrões limitadas, suas bibliotecas padrões não tem condições de possibilitar a criação de jogos sem custos gigantescos. OpenGL, OpenAL, DirectX, Box2D, Havoc, todas essas são bibliotecas de terceiros se formos pensar apenas na API ?standard? da linguagem, a diferença sendo apenas que muitas dessas bibliotecas tem o suporte de grandes organizações enquanto as bibliotecas citadas do Java são mantidas pela comunidade. DirectX não é mais ?oficial? em relação ao ANSI C do que LWJGL em relação ao JAVA.

Michel, você está dizendo coisas que não procedem, numa boa. A questão não é gostar ou desgostar de linguagens, você precisa ser imparcial quando começar a afirmar alguma coisa.
A linguagem c++ hoje é a que possui maior cobertura em ferramentas para jogos, e esse cenário não vai mudar tão cedo porque existe investimento em pesquisa em cima disso. E é muito grande. A maioria opensource e de grande qualidade.


http://irrlicht.sourceforge.net/

Uma lista com grande parte das engines disponíveis(a grande maioria é c++ então como não se possibilita a criação de jogos com custos menores?)

OpenGL não é uma biblioteca de terceiros. Ela é mantida por um grupo gigantesco incluindo NVIDIA e AMD. Ela é embarcada em todos os sistemas operacionais. Em um post lá atras você disse que ela possui dependências( de hardware, isso não procede porque ela é aberta e é um padrão a ser implementado por todos os sistemas). Eu nem vou citar aquele post porque ficou muito feia essa afirmação.

DirectX também não é biblioteca de terceiros porque o windows depende dela. A maior parte das apis, frameworks e engines(para windows) a usam, inclusive o java 3d.

Existe uma grande diferença entre DirectX e Opengl. A primeira é um framework completo(vídeo, input(hardware) e áudio), a segunda é uma biblioteca de baixo nível escrita em c, para servir sistemas operacionais com recursos de vídeo(não serve somente para jogos(aliás jogos é o de menos)). Não se pode comparar essas duas como bibliotecas do jeito que você postou acima.

É possível desenvolver jogos com qualquer ferramenta, mas usando c++ é inegável que haja ganho de produtividade e qualidade devido a essas razões(quantidade de ferramentas disponíveis).

julio, tem certeza que leste com atenção o que foi escrito ou pensou “vou fazer flame”?
Vou partir do principio que não quiseste “provocar”, só foste desatento.

Veja no final do texto

Estava ocorrendo duas conversas aqui e no Cosmiceffect, como em um determinado ponto viny postou lá e cá, assim como eu, resolvi dar o contexto do que falávamos, trouxe o texto do autor do outro artigo, ao qual postei o link aqui, de uma lida lá e responda a sua afirmação ao autor do mesmo. Feio é não prestar atenção no que se lê e sair fazendo afirmações, por favor, só peço que leia direito antes de sair postando algo, para não ficar mais feio do que já esta.

Imparcial eu sou, tanto que nem te deste ao trabalho de ler os textos acima, não de verdade, isso esta claro, veja os posts acima, onde não discordei do Viny em sua ultima afirmação, pois também concordo com elas, só que em um debate se todos concordarem com a mesma coisa, deixa de ser um debate e se torna um repetição de comentarios. Se tivesse lido todos os post com atenção, incluso no outro site, já teria percebido que eu e viny não discordamos necessariamente da mesma coisa, a diferença esta nas questões estrategicas, como é o caso dos bindings.

OpenGL é um padrão adotado para permitir que fabricantes de hardware de video que o adotem, possam ter seu equipamento rodando em mais de um S.O que suportem OpenGL, como tal ele não tem um “dono”, é uma comunidade que o mantem vivo sim, não vi erro nesta afirmativa (Mas é de certo que ela possui o apio de grandes empresas, o que da mais credibilidade, fato!).

Sobre o direct X, eu definitivamente acho que você devia ler com calma os textos antes de postar, leia, mas leia bem a:
Afirmação do danilo.

Também não discordo de nenhuma das duas afirmações dele.

Acima outra afirmação feita pelo danilo, leia atentamente a afirmativa dele, ele diz que se for usar apenas os recursos nativos do C++, sem se valer de nenhuma outra tecnologia agregada (de terceiros), os custos para fazer algo seriam muito grandes (afinal tudo teria que ser feito do Zero a cada projeto por exemplo), só me dei ao trabalho de explicar o texto dele, para não ter nenhuma falsa afirmação aqui, que possa novamente induzir o leitor ao erro (Dica: Errar é humano, saber abordar alguem em uma conversa é uma arte, “com a mesma força que julgas também sera julgado” deixo este conselho profissional para ti).

Eu te pergunto quem esta sendo passional aqui?

  • Eu que em nenhum momento desmereço, ou digo que Java é mais popular que C++, apenas defendo que ela é uma ferramenta/linguagem como outra qualquer, mesmo não tendo alguns facilitadores naturais devido a falta de atenção da Oracle, é muito bem capaz de suprir isto, se valendo de forças externas, assim como muitas tecnologias o fazem para diversas situações. Agora me pergunto se você que “na boa” e sem “ler” vem fazendo uma campanha como se o c++ estivesse sendo atacado? esquecendo que o assunto aqui é só analisar as possibilidades com Java e o que pode ou não ser feito sobre isto e até a viabilidade do mesmo (Lembrando que já chegaste descascando Java neste tema, e em nenhum momento te vi dizer algo positivo em relação a linguagem), então te devolvo a frase "você está dizendo coisas que não procedem, numa boa. A questão não é gostar ou desgostar de linguagens, você precisa ser imparcial quando começar a afirmar alguma coisa. ".

julio relaxa, releia todos os comentários, incluindo o do link do cosmic effect para te situar do contexto geral, não pense que esta é a comunidade c++ e nem que o mesmo é agredido, pense que a comunidade aqui é Java e devemos ao menos tentar buscar soluções para Java e nos focar nisto, até para não perdermos o fio da meada que é a proposta deste grupo. Se não tu vai acabar iniciando uma conversa só para repetir o que eu e viny viemos conversando desde os primeiros tópicos para no final ter o mesmo consenso ou parecido (Como foi o caso mais acima).

M

Inspirado em todo este bate papo resolvi fazer um artigo no site: Java no mundo 2D - Iniciando o “Caminho das Pedras”

J

[quote=Michel.Montenegro
julio, tem certeza que leste com atenção o que foi escrito ou pensou “vou fazer flame”?
Vou partir do principio que não quiseste “provocar”, só foste desatento.

Veja no final do texto

By Dancovich
Já que estamos meio que espiritualmente falando com o Dancovich, nada mais justo que suas colocações sejam postadas aqui também.
[/quote]

Sim, li muito bem, e digo você concordou e afirmou o que vou postado. E vou citar agora:

OpenGL não depende de linux nem de placa de vídeo, ela é uma especificação para desenvolvedores de hardware. Você só tem resultados melhores usando uma aceleradora porque a biblioteca não precisa desenhar por software.

Aqui em baixo eu concordo com você

Michel.Montenegro:

DirectX não é mais ‘oficial’ em relação ao ANSI C do que LWJGL em relação ao JAVA.

O próprio XNA da Microsoft nada mais é que uma coleção de bindings para o DirectX e nem por isso deixa de ter desempenho mais que adequado

Também não discordo de nenhuma das duas afirmações dele.


O directx é escrito em c++. Não tem que respeitar nenhum padrão “ansi c”.
Novamente concordou aqui, fazendo dele suas palavras.

Sim, as bibliotecas que acompanham os compiladores c++ são as da opengl, mas mesmo assim elas possibilitam a criação de engines(porque existe investimento). Java 2d não possibilita nada disso.
Eu não estou sendo parcial, só estou contra argumentando a favor de uma tecnologia enraízada fortemente neste segmento.

V

Só um update, sobre o que falava a respeito da única engine 2D que presta em Java ser mantida por uma pessoa física. A Slick2D, que já estava sem manutenção faz tempo, saiu fora do ar: http://www.slick2d.org/

O Kevin Glass, que era o mantenedor do projeto, avisou no fórum da Slick que não irá mais manter a API, mas qualquer um pode baixar os fontes o BitBucket.

É mais uma má notícia para os games em Java, que já vinham mal faz tempo. Agora só resta torcer pelo Ouya, ou focar mesmo em Android.

M

API pra jogos em Java só tem esse Ouya?

V

O Ouya não é uma API, e sim um console. E usa Android, ou seja, não usa J2SE.

Para J2SE, uma das principais APIs era o Slick2D, que ainda assim usava LWJGL para renderizar gráficos usando a OpenGL e não o JDK.

No fundo, a única coisa que tem hoje é o JavaFX, que está vindo em péssima hora. Está nascendo ao mesmo tempo que o Flash morre e o HTML5 toma conta.

M

O Ouya não é uma API, e sim um console. E usa Android, ou seja, não usa J2SE.

Para J2SE, uma das principais APIs era o Slick2D, que ainda assim usava LWJGL para renderizar gráficos usando a OpenGL e não o JDK.

No fundo, a única coisa que tem hoje é o JavaFX, que está vindo em péssima hora. Está nascendo ao mesmo tempo que o Flash morre e o HTML5 toma conta.

Desde a versão 2 o JavaFX não tem o objetivo de concorrer com o Flash, mas em substituir o Swing pra aplicações desktop, embora ainda possa ser usado como applet no browser.

Mas então se eu quiser programar um jogo em java, o único caminho hoje é o JavaFX?

V

marcosalex:
Desde a versão 2 o JavaFX não tem o objetivo de concorrer com o Flash, mas em substituir o Swing pra aplicações desktop, embora ainda possa ser usado como applet no browser.

Mas então se eu quiser programar um jogo em java, o único caminho hoje é o JavaFX?

Ou:

J2SE - Se for um game 2D simples;

JMonkeyEngine - Se for um game 3D;

LWJGL - Se você quiser montar sua própria engine.

Os dois últimos, assim como era a Slick2D, usam JNI para acessar o OpenGL. Não são J2SE puro.

M

ViniGodoy:
marcosalex:
Desde a versão 2 o JavaFX não tem o objetivo de concorrer com o Flash, mas em substituir o Swing pra aplicações desktop, embora ainda possa ser usado como applet no browser.

Mas então se eu quiser programar um jogo em java, o único caminho hoje é o JavaFX?

Ou:

J2SE - Se for um game 2D simples;

JMonkeyEngine - Se for um game 3D;

LWJGL - Se você quiser montar sua própria engine.

Os dois últimos, assim como era a Slick2D, usam JNI para acessar o OpenGL. Não são J2SE puro.

Entendi. Uma outra dúvida: quando desenvolvo pra Android ele roda sobre a VM pura ou ele consegue utilizar código nativo? E no .NET com XNA?

V

O Android roda sobre a VM. Claro que isso é bem relativo hoje, pois temos compilação Just-in-time.

Mas é importante não confundir. Embora o Android use como linguagem o Java, ele é uma plataforma a parte, sem as limitações da plataforma Java.

O .net usa uma estratégia similar, mas também foi descontinuado pela MS. A alternativa agora é usar o Direct X, em C#, que aí é compilado e roda sobre a API do Windows 8.
Ou o DirectX com C++. Para jogos 2D, desenvolveram uma biblioteca para torna-lo similar ao XNA.

M

Estou considerando 3 plataformas: Android, Java e .NET.
Então o resumo da ópera é que se quiser rodar 3D sob a VM, somente o Android na Dalvik ou usando JavaFX no Java. E o .NET hoje usa uma forma nativa, como as outras bibliotecas Java que voce citou. Certo?

M

Slick2D ainda esta sofrendo alteração pelos que estavam com o criador do mesmo, mas independente de qualquer coisa para jogos 2D Slick continua sendo muito bom.

Mas a alternativa mais atual e na minha opinião melhor, seria a LibGDX, para jogos em Java (Suportando inclusive a criação do mesmo em Android e Desktop, não testei para html5, mas pareceu uma alternativa interessante). :wink:

V

Michel.Montenegro:
Slick2D ainda esta sofrendo alteração pelos que estavam com o criador do mesmo, mas independente de qualquer coisa para jogos 2D Slick continua sendo muito bom.

Mas a alternativa mais atual e na minha opinião melhor, seria a LibGDX, para jogos em Java (Suportando inclusive a criação do mesmo em Android e Desktop, não testei para html5, mas pareceu uma alternativa interessante). ;)

Com certeza.

Mas novamente: usa apenas a linguagem Java, mas não a plataforma. Essa inclusive tem “Performance critical parts written in C/C++”.

Como sempre, meu argumento não é sobre a linguagem e sim sobre o J2SE ou Android como plataforma para games.

Para 2D a tendência para ser mesmo usar APIs extremamente portáveis (e não multiplataforma), como é o caso da LibGDX, Haxen, etc.

Criado 9 de março de 2012
Ultima resposta 11 de jun. de 2013
Respostas 63
Participantes 9