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

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

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…

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.

[quote=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… [/quote]
isso eu concordo com você. Dá para fazer muitos bons jogos com java. Mas o setor triplo A(AAA) é completamente inviável.

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]

[quote=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]

[/quote]

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…

[quote=Michel.Montenegro]fernandopaiva
Obrigado pelo reconhecimento, recentemente …

[/quote]

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

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

[quote=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[/quote]

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

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

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.

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

[quote=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. ^^
[/quote]

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.

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+

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.

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.

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?

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ê?)

[quote]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”.
[/quote]

  • 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

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.

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