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

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

“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:

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

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

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

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

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

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

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.

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…

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.

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

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

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

[/quote]

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

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

[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ê

[quote=Michel.Montenegro]
DirectX não é mais ‘oficial’ em relação ao ANSI C do que LWJGL em relação ao JAVA.[/quote]

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

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.

API pra jogos em Java só tem esse Ouya?

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.

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

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?

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

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.

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

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

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?