Jogos 3D em Java

:?:
Olá Glera.

Bom minha dúvida é seguinte:
Entro em alguns sites e vejo o pessoal falando bem do Java em programação de jogos, mas falam tb que os jogos programados em Java ficam bem mais pesados para rodar, será que isto é verdade?
Pois quero aprender a programar jogos usando Java.

Desde já agradeço pela atenção
AgenteX

Cara , tem um site que não me lembro agora , que possue vários jogos 3d, para vc testar, a maioria tenque pagar…Bom eu vi alguns e não achein tão pesado assim não…depende em que sentido , porque o peso depende muito do conjunto do hardwarere da pessoa…

Mas se vc pegar um jogo como Far Cry, ou Prince Of Persia send time(Que jogo bem feito :stuck_out_tongue: ) se tentar rodar numa g force mx 440, ele nem inicia, só roda com placas que possua efeito shader…

Isso é só um exemplo.Poderia falr em que sentido ele é pesado, porque minha placa é de 256 megas e achei normal

O problema é o seguinte…
O java nao faz acesso direto de funcoes do Direct3D e OpenGL, ele utiliza a J3D API.(Q implementa algumas funcoes do D3D e OpenGL)Porém, ainda é novo.
O fato do java ter desempenho inferior a outras linguagens (C++) em trigonometria, faz com q fique mais lento q os normais(C++).
Acredito q naum é comercialmente viável… mas pode ser o futuro talvez…
Há varios jogos 3D em applet muito legais… mas naum conheço nenhum jogo de grande porte(tal como o Farcry, citado acima) em Java…
É isso aí !!!

[quote=“clv”]O problema é o seguinte…
O java nao faz acesso direto de funcoes do Direct3D e OpenGL, ele utiliza a J3D API.(Q implementa algumas funcoes do D3D e OpenGL)Porém, ainda é novo.
O fato do java ter desempenho inferior a outras linguagens (C++) em trigonometria, faz com q fique mais lento q os normais(C++).
Acredito q naum é comercialmente viável… mas pode ser o futuro talvez…
Há varios jogos 3D em applet muito legais… mas naum conheço nenhum jogo de grande porte(tal como o Farcry, citado acima) em Java…
É isso aí !!![/quote]

è relamente assim não tem não…só jogos mais simples

OI pessoal, eu sou novo aqui, mas eu já participo há algum tempo de um outro fórum especializado em programação de jogos (www.unidev.com.br), lá eu defendo fortemente o uso do java para programação de jogos.
Pq eu defendo esse ponto de vista?
Simples, eu já há algum tempo descobri as funcionalidades do JNI para o aumento da performance JAVA, ou seja, eu escrevo rotinas em C++ e compilo em DLL’s depois eu chamo essas rotinas no java.Para programação gráfica, existem duas maneiras de usar a interface(a q eu uso) a 1º é usar o java.awt.image.BufferedImage q permite funcionalidades de buffer duplo q permitem converter matriz de inteiros em buffer de imagem.Passa-se um ponteiro para o 1º elemento da matriz para as rotinas em C++ em DLLs devidamente carregadas q operam sobre elas e constroem toda a imagem em código int-alpha-RGB e depois devolve o ponteiro.O tempo de conversão da imagem é de menos de 1 ms, e o tempo de exibção é tal q (através do bufferStrategy em cooperação com o BufferedImege e Writableraster) consigo sempre obter o limite da freqüencia de atualização da tela(o tempo de chamada das funções C(no jdk1.4) geram um desperdício de 0.4 segundos a cada 10000000 de chamadas).
Então toda a estrutura gráfica e de interface com mouse e teclado, bem como o gerenciamento de threads eu faço em java, operações em ponto flutuante etc…eu faço em C++.
O segundo meio é o AWT Native interface(Q eu ñ domino e pro tanto ñ posso comentar).
Eu sou estudante de bel. física, e entendo algumas coisas de ótica e de geometria diferencial q eu uso nos meus códigos(principalmente pq eu ñ sei usar JAVA3D), então vcs podem imaginar q eu faço uns códigos carregados de cálculos de ponto flutuante.E comparando a performance do java (ainda uso jdk1.4 mas estou baixando o j2sdk1.4.2_03 enquanto escrevo isso(eu li no site da sum q ele está muito melhor em performance, pois usa instruções SSE e SSE2 do P4 para operações de ponto flutuante gerando aumente de 80% em performance)) eu constatei q o java está muito bom…
o desempenho do java muitas vezes alcançou o do C++!!!
em operações como calcular séries de taylor de soluções de equações diferenciais com o x variando de 1 a 100 000 000(demora tanto q eu tenho q ir dá uma volta enquanto termina de calcular em p4 2.4GHz’s) o desempenho do Java foi exatamente igual ao do C(q é mais rápido q o C++)!!!
Quanto ao negócio de ser mai lento em operações tr
Bem, o problema desses códigos em computação gráfica é q sobrecarregam o processador(eu ñ sei dividir o processamento com o da placa de vídeo, para obter melhor performance).
Mas tem como usar DirectX pelo JAVA e eu conheco um exelente jogo construído em JAVA (mas q só funciona em Windows, por causa o directX) q ñ exige muito em hardware(e os gráficos são de dar inveja ao feitos em C++)

http://community.java.net/games/

Pois eu vi q vcs ñ conhecem jogos de grande porte escritos em JAVA.
Eu tb tenho programas gráficos 3D(sem java3D, só na conta msm) feito em JAVA e em combinações JAVA&C++, posso enviar por e-mail para quem se interessar.
Desculpe o post longo, mas vcs sabem…é o meu 1º.
NielsRX

mais uma coisa…
eu estava escrevendo um parágrafo sobre o q foi dito a respeito do fraco desempenho do java em operações trigonométricas, mas eu sem querer enviei a mensagem antes de terminar…
Então eu vou só completar…
O java é 10X mais lento q o C em operações trigonométricas por causa da precisão com q o mesmo faz esse cáculos(64 bits e até estourar a precisão do sistema).
Esse problema é fácilmente resolvével fazendo vc mesmo suas funções trigonométricas em float (32bits) e na precisão q vc quer(normalmente 3 casas decimais para gráficos.).
NielsRX