Jogos 3D em Java

5 respostas
A

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

5 Respostas

F

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

C

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í !!!

F

“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í !!!

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

N

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

N

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

Criado 6 de fevereiro de 2004
Ultima resposta 7 de fev. de 2004
Respostas 5
Participantes 4