C++ ou Java para Jogos, por que?

Pessoal,

Ouço muito dizer que C++ é melhor para programar jogos, porem o Java tem API 2D e 3D.

Qual é melhor para Jogo e Por que?

Eu acho que com certeza você quer entrar nesse site: http://www.pontov.com.br

:wink:

Até mais.

Eu vi um trabalho de faculdade de uns colegas meus que disseram que o Super Nintendo foi desenvolvido em C++ .

Quando eu comecei em Java (2007) eu ouvi muito que Java não era bom pra aplicações em tempo real (como jogos) por causa da máquina virtual que, teoricamente, era mais lenta que um executável…

Mas eu ouvi uns colegas aqui do forum falando que a máquina virtual Java já está conseguindo ser tao rapida qnt programas escritos em C++, Delphi, VB 6 etc… só não sei se é totalmente verdade!

Eu venho estudo programação de jogos e também percebo isso, todo mundo dizendo que C++ é melhor, porém eu desenvolvo meus jogos em java e acho muito bom, não tanto material QUANTO existe para C++, mas o java desempenha muito bem o papel na criação de jogos.

[]s

C++ te da um controle maior sobre a máquina, esta é uma das razões pelas quais é mais adotado.

Mas isto não quer dizer que Java seja lento pra desenvoler jogos. Da uma olhada nisto: http://bytonic.de/html/jake2.html
É o Quake 2 implementado em Java (eu já testei, e funciona muito bem).

Aproveitando, alguem tem acompanhado o C++0x?

A maior (e mega) vantagem do C++ é o suporte a bibliotecas de terceiros.
OpenGL, Directx, OpenCV, Cimg, só para citar exemplos que eu lembro agora…

O dia que existirem equivalentes em Java, dai não vejo porque ignorar completamente o Java para jogos.

Ahhh, para jogos 2D simples, Java (com as atuais bibliotecas) da muito bem conta do recado.

Alguém sabe se tem como você mandar instruções pra GPU com o Java?

(É uma pergunta mesmo, não sei).

O crítico de escolherem c++ para criarem jogos, é que o código gerado pelo compilador é muito otimizado para uma plataforma específica, e tudo que se faz em assembly se faz com c++ ou c, de maneira infinitamente mais fácil, além da performance ser praticamente a mesma.

As apis java para 3d ou para jogos, na verdade são mapeamentos para bibliotecas escritas em c++, normalmente opengl ou directx, como a jmonkey, que usa jogl(mapeamento opengl), ou java3d, que usa directx ou opengl.
Na verdade, uma máquina está rodando código c++ quando roda um jogo java, que usa um desses mapeamentos. Por isso é tão rápido quanto c++.

O forte do java é a praticidade de codificação. Se procurar performance, terá que usar um compilador de c++ ou de c.

[quote=pablosaraiva]Alguém sabe se tem como você mandar instruções pra GPU com o Java?

(É uma pergunta mesmo, não sei).

[/quote]

faz em c++ ou assembly, e usa jni.

Mano…

runescape.com.br (java foda! nunca vi = )

[quote=GabrielCardelli]Mano…

runescape.com.br (java foda! nunca vi = )[/quote]

Verdade, runescape é feito em java, apesar de muitos criticarem esse jogo eu gosto bastante.

[]s

qualquer linguagem que tenha uma biblioteca gráfica pode ser usada para jogos. Mas em se falando de linguagens que geram pseudo código, normalmente essas bibliotecas serão mapeamentos para uma em c++ com opengl ou directx.

Em especial nesse artigo, que tem muitas comparações entre o Java e o C++.

Na minha opinião:
Celulares? Java, Objective-C (iPhone)
Browser? Flash
Quer entrar na indústria de games hardcore? C++
Quer fazer jogos hardcore por hobby, só pq vc curte jogos? Java ou C#
Quer só estudar as tecnologias da área de jogos? Java ou C#

Outro jogo quase integralmente feito em Java é o brasileírissimo taikodom:
http://www.taikodom.com.br

Não entendi o seu “porém o Java tem API 2D e 3D”. O C++ tem dezenas de APIs 2D, e as principais APIs 3D do mercado.

[quote=Lucas Emanuel]Pessoal,

Ouço muito dizer que C++ é melhor para programar jogos, porem o Java tem API 2D e 3D.

Qual é melhor para Jogo e Por que?[/quote]

Voce quer programar pra que? PCs? Celulares? Consoles? George Foreman grill?

Mencionar a plataforma é fundamental porque é ela quem decide a linguagem que vai usar. Celulares por exemplo estariamos falando do iphone, neste caso sua unica opção seria Objective-C/C++.

Concordo com o mochuara. E a coisa pode piorar com a formação dos mundos Iphone X Android X Maemo no mundo mobile.
Regra geral o velho C/C++ atender a maior parte do mercado de desenvolvimento de jogos. Sem falar da linguagem Lua que está ganhando espaço neste ramo.

[quote]ViniGodoy wrote:
Em especial nesse artigo, que tem muitas comparações entre o Java e o C++.[/quote]

Tem mais este texto do ViniGodoy que pode te ajudar.

valeu :wink:

Minha sincera opinião… C# ou C++ (se você quiser aquele negócio de FPS, algo bem robusto e com gráficos bem pesados). Achei Java extremamente pobre pra isso…

Uns colegas fizeram trabalho usando JMonkeyEngine e eu posso dizer que o que eu fiz com Irrlicht.NET usando um mesh md2 ficou muito mais rápido do que as bolinhas, pongs e asteroids que eles fizeram. Não vou desmerecer o trabalho deles, muito pelo contrário: o que eles fizeram, usando JMonkeyEngine ficou MUITO bom, comparado com o que a engine pode fazer (isso mesmo… o que eles fizeram ficou melhor até do que os exemplos que tem lá). Achei Java (ou quem sabe a engine JMonkey) extremely poor, quando se tratando de jogos (se comparado com C# ou C++).

[quote=Andre Brito]Minha sincera opinião… C# ou C++ (se você quiser aquele negócio de FPS, algo bem robusto e com gráficos bem pesados). Achei Java extremamente pobre pra isso…

Uns colegas fizeram trabalho usando JMonkeyEngine e eu posso dizer que o que eu fiz com Irrlicht.NET usando um mesh md2 ficou muito mais rápido do que as bolinhas, pongs e asteroids que eles fizeram. Não vou desmerecer o trabalho deles, muito pelo contrário: o que eles fizeram, usando JMonkeyEngine ficou MUITO bom, comparado com o que a engine pode fazer (isso mesmo… o que eles fizeram ficou melhor até do que os exemplos que tem lá). Achei Java (ou quem sabe a engine JMonkey) extremely poor, quando se tratando de jogos (se comparado com C# ou C++).[/quote]

Mesmo as plataformas que usam Java acabam usando linguagem de baixo nível para comunicar com o dispositivo de video, mesmo que o programador não fique sabendo. Portanto a escolha da linguagem Java não influencia muito na questão da performance de execução uma vez que, de longe, o principal fator que afeta performance nos jogos é exatamente a questão da renderização dos elementos e não a atualização da lógica do jogo em si que continua sendo feito em Java.

[quote=Andre Brito]Minha sincera opinião… C# ou C++ (se você quiser aquele negócio de FPS, algo bem robusto e com gráficos bem pesados). Achei Java extremamente pobre pra isso…

Uns colegas fizeram trabalho usando JMonkeyEngine e eu posso dizer que o que eu fiz com Irrlicht.NET usando um mesh md2 ficou muito mais rápido do que as bolinhas, pongs e asteroids que eles fizeram. Não vou desmerecer o trabalho deles, muito pelo contrário: o que eles fizeram, usando JMonkeyEngine ficou MUITO bom, comparado com o que a engine pode fazer (isso mesmo… o que eles fizeram ficou melhor até do que os exemplos que tem lá). Achei Java (ou quem sabe a engine JMonkey) extremely poor, quando se tratando de jogos (se comparado com C# ou C++).[/quote]

Isso é subjetivo. Posso achar seu jogo muito bem implementado porém fraco e o do seus amigos um ótimo jogo e nem por isso Java vai ser melhor que C++.

Para comparar são necessários fatos não opiniões que envolvem gosto.

[quote=mochuara][quote=Andre Brito]Minha sincera opinião… C# ou C++ (se você quiser aquele negócio de FPS, algo bem robusto e com gráficos bem pesados). Achei Java extremamente pobre pra isso…

Uns colegas fizeram trabalho usando JMonkeyEngine e eu posso dizer que o que eu fiz com Irrlicht.NET usando um mesh md2 ficou muito mais rápido do que as bolinhas, pongs e asteroids que eles fizeram. Não vou desmerecer o trabalho deles, muito pelo contrário: o que eles fizeram, usando JMonkeyEngine ficou MUITO bom, comparado com o que a engine pode fazer (isso mesmo… o que eles fizeram ficou melhor até do que os exemplos que tem lá). Achei Java (ou quem sabe a engine JMonkey) extremely poor, quando se tratando de jogos (se comparado com C# ou C++).[/quote]

Mesmo as plataformas que usam Java acabam usando linguagem de baixo nível para comunicar com o dispositivo de video, mesmo que o programador não fique sabendo. Portanto a escolha da linguagem Java não influencia muito na questão da performance de execução uma vez que, de longe, o principal fator que afeta performance nos jogos é exatamente a questão da renderização dos elementos e não a atualização da lógica do jogo em si que continua sendo feito em Java.[/quote]

Sim, a performance será praticamente a mesma, por usar bibliotecas que são nativas. O fator lógica e algoritmos acaba influenciando.