C++ ou Java para Jogos, por que?

O mais provável é que tenham deixados gargalos, especialmente na placa de vídeo. A maior parte do processamento de um jogo 3D hoje fica por conta do hardware de vídeo. Já vi jogos impressionantes feitos em PHP, uma linguagem notoriamente lenta. A maior parte das linguagens de script também não são lá super velozes, e tem se adaptado bem aos jogos.

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

c# pode até funcionar melhor com directx, porque são produtos da microsoft. Mas no final, directx é nativo, e c# cai na mesma classe do java.

Falando em scripts,

tem um RPG feito em Javascript.

http://www.smokymonkeys.com/triglav/

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

eu nunca dei uma pesquisada sobre as outras que você falou, mas ao menos quanto a open gl, tem a JOGL, o equivalente em java…

eu penso em futuramente começar a desenvolver jogos por hobby, só por causa disso ainda não comecei a dar umas olhadas em c++… no site da jogl tem uns joguinhos interessantes la… você baixa um java web start, ai ele baixa o jogo e você começa a jogar…

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

eu nunca dei uma pesquisada sobre as outras que você falou, mas ao menos quanto a open gl, tem a JOGL, o equivalente em java…

eu penso em futuramente começar a desenvolver jogos por hobby, só por causa disso ainda não comecei a dar umas olhadas em c++… no site da jogl tem uns joguinhos interessantes la… você baixa um java web start, ai ele baixa o jogo e você começa a jogar…[/quote]

JOGL é um mapeamento da opengl para java. Você estará usando opengl da mesma maneira.

https://jogl.dev.java.net/

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

Isso mesmo, bibliotecas nativas era o que eu queria dizer. :slight_smile:

eu trabalho mais com as ferramentas gráficas, como maya, 3d max, etc…

mas ja trabalhei com a API JOGL que é um “binding” do OpenGL para java e gostei mto, pra quem vem do java e quer aprender opengl com mais facilidade o JOGL é bem bacana…

mas se for o caso de querer fazer um jogo mais complexo, use c ou C++ para ter mais controle do hardware…

fica ai minha opinião
abraços

Infelizmente, binding não é exatamente a mesma coisa que API nativa. E, necessitar de um binding, é uma desvantagem do Java no lugar do C++. Primeiro, porque nem sempre você vai achar bindings para qualquer tecnologia. Segundo, porque novidades na tecnologia podem não ser adicionadas a curto prazo no binding.

Ainda estou esperando uma API de DirectX para Java. Alguém conhece? Eu sei que isso atrapalharia o multi-plataforma e tudo mais, mas poxa, a API do Java tem muita coisa legal, e eu gostaria de poder usa-la, mesmo sem necessariamente ter um jogo multiplataforma.

[quote=ViniGodoy]Infelizmente, binding não é exatamente a mesma coisa que API nativa. E, necessitar de um binding, é uma desvantagem do Java no lugar do C++. Primeiro, porque nem sempre você vai achar bindings para qualquer tecnologia. Segundo, porque novidades na tecnologia podem não ser adicionadas a curto prazo no binding.

Ainda estou esperando uma API de DirectX para Java. Alguém conhece? Eu sei que isso atrapalharia o multi-plataforma e tudo mais, mas poxa, a API do Java tem muita coisa legal, e eu gostaria de poder usa-la, mesmo sem necessariamente ter um jogo multiplataforma.[/quote]

exatamente…por isso que frisei que o jogl faz um binding e não é a msm coisa que estar usando opengl como foi dito ai em cima…existem algumas diferenças entre elas…

[quote=ViniGodoy]Infelizmente, binding não é exatamente a mesma coisa que API nativa. E, necessitar de um binding, é uma desvantagem do Java no lugar do C++. Primeiro, porque nem sempre você vai achar bindings para qualquer tecnologia. Segundo, porque novidades na tecnologia podem não ser adicionadas a curto prazo no binding.

Ainda estou esperando uma API de DirectX para Java. Alguém conhece? Eu sei que isso atrapalharia o multi-plataforma e tudo mais, mas poxa, a API do Java tem muita coisa legal, e eu gostaria de poder usa-la, mesmo sem necessariamente ter um jogo multiplataforma.[/quote]

Não é possível usar JNA ou JNI para acessar o DirectX? Fica muito complexo?

Vc já viu o tamanho da API do DirectX?
Cara, só fazer o binding já é um trabalho hercúleo…

Fora que, se for para eu mesmo escrever um driver desses, então eu prefiro programar em C++ direto.

[quote=neófito][quote=ViniGodoy]Infelizmente, binding não é exatamente a mesma coisa que API nativa. E, necessitar de um binding, é uma desvantagem do Java no lugar do C++. Primeiro, porque nem sempre você vai achar bindings para qualquer tecnologia. Segundo, porque novidades na tecnologia podem não ser adicionadas a curto prazo no binding.

Ainda estou esperando uma API de DirectX para Java. Alguém conhece? Eu sei que isso atrapalharia o multi-plataforma e tudo mais, mas poxa, a API do Java tem muita coisa legal, e eu gostaria de poder usa-la, mesmo sem necessariamente ter um jogo multiplataforma.[/quote]

Não é possível usar JNA ou JNI para acessar o DirectX? Fica muito complexo?
[/quote]

Então, o mapeamento que estamos dizendo seria o jni para as bibliotecas nativas.

é possível sim…mas o directx possui dxinput, direct3d, directsound, directshow e mais libs de baixo nível. Tem trabalho para uns 2 anos ae.

Directshow já tem mapeamento e é o melhor que já vi do gênero.

http://www.humatic.de/htools/dsj.htm

[quote=clone_zealot][quote=neófito]

Não é possível usar JNA ou JNI para acessar o DirectX? Fica muito complexo?
[/quote]

Vc já viu o tamanho da API do DirectX?
Cara, só fazer o binding já é um trabalho hercúleo…[/quote]

Certo, mas com JNA se tem bem menos trabalho do que com JNI. E pode-se mapear apenas o que se vai usar. Claro que o JNA é mais lento do que o JNI.

Estou trabalhando em um projeto que tem uma parte em C e outra em Java, e estou usando o JNA. Sinceramente estou pasmo com a facilidade dele, consegui até fazer um callback em java e passar para o C!

Fora que, se for para eu mesmo escrever um driver desses, então eu prefiro programar em C++ direto.[/quote]

Realmente, tô vendo que não dá pra escapar do C++. Estudei C há muito tempo (em 2002), e recentemente me vi obrigado a ler o “The C Programming Language”, do Kernighan e Ritchie, para usar no projeto atual. Agora tô indo pro C++.

Já ouvi falar que, pelo menos por enquanto, devo fugir do “The C++ Programming Language”, do Stroustrup. Tô tentando aprender C++ com tutoriais que encontrei na web, e depois pretendo pegar o livro do Stroustrup. Alguma dica de livro, que não seja para iniciante em programação?

Fora que, se for para eu mesmo escrever um driver desses, então eu prefiro programar em C++ direto.[/quote]

Realmente, tô vendo que não dá pra escapar do C++. Estudei C há muito tempo (em 2002), e recentemente me vi obrigado a ler o “The C Programming Language”, do Kernighan e Ritchie, para usar no projeto atual. Agora tô indo pro C++.

Já ouvi falar que, pelo menos por enquanto, devo fugir do “The C++ Programming Language”, do Stroustrup. Tô tentando aprender C++ com tutoriais que encontrei na web, e depois pretendo pegar o livro do Stroustrup. Alguma dica de livro, que não seja para iniciante em programação?[/quote]

Conheço dois:

Thinking in C++ (muito bacana)

e o dos Deitel

C++ Como Programar

(aliás, é incrível como todos os livros dos Deitel são basicamente o mesmo :slight_smile: )

Sempre que vejo o kicolobo eu leio kibeloco.

[quote=neófito][quote=clone_zealot][quote=neófito]

Não é possível usar JNA ou JNI para acessar o DirectX? Fica muito complexo?
[/quote]

Vc já viu o tamanho da API do DirectX?
Cara, só fazer o binding já é um trabalho hercúleo…[/quote]

Certo, mas com JNA se tem bem menos trabalho do que com JNI. E pode-se mapear apenas o que se vai usar. Claro que o JNA é mais lento do que o JNI.

Estou trabalhando em um projeto que tem uma parte em C e outra em Java, e estou usando o JNA. Sinceramente estou pasmo com a facilidade dele, consegui até fazer um callback em java e passar para o C!
[/quote]

O JNA segue mais ou menos a idéia do c#. Mas se não me engano vão criar um pinvoke pro java7. Ae vai ficar bom de usar recurso nativo.

Fora que, se for para eu mesmo escrever um driver desses, então eu prefiro programar em C++ direto.[/quote]

Realmente, tô vendo que não dá pra escapar do C++. Estudei C há muito tempo (em 2002), e recentemente me vi obrigado a ler o “The C Programming Language”, do Kernighan e Ritchie, para usar no projeto atual. Agora tô indo pro C++.

Já ouvi falar que, pelo menos por enquanto, devo fugir do “The C++ Programming Language”, do Stroustrup. Tô tentando aprender C++ com tutoriais que encontrei na web, e depois pretendo pegar o livro do Stroustrup. Alguma dica de livro, que não seja para iniciante em programação?[/quote]

Conheço dois:

Thinking in C++ (muito bacana)

e o dos Deitel

C++ Como Programar

(aliás, é incrível como todos os livros dos Deitel são basicamente o mesmo :slight_smile: )[/quote]

O mesmo elevador?? :lol: :lol:

Comprei o C++ como programar, a uns 3 ou 4 anos até hoje nao li uma linha :? Li apenas o Java como programar que comprei junto na época. Mas eae? É uma boa fonte para se iniciar o mundo C++? O de java eu gostei muito dos Deitel.

Fora que, se for para eu mesmo escrever um driver desses, então eu prefiro programar em C++ direto.[/quote]

Realmente, tô vendo que não dá pra escapar do C++. Estudei C há muito tempo (em 2002), e recentemente me vi obrigado a ler o “The C Programming Language”, do Kernighan e Ritchie, para usar no projeto atual. Agora tô indo pro C++.

Já ouvi falar que, pelo menos por enquanto, devo fugir do “The C++ Programming Language”, do Stroustrup. Tô tentando aprender C++ com tutoriais que encontrei na web, e depois pretendo pegar o livro do Stroustrup. Alguma dica de livro, que não seja para iniciante em programação?[/quote]

Conheço dois:

Thinking in C++ (muito bacana)

e o dos Deitel

C++ Como Programar

(aliás, é incrível como todos os livros dos Deitel são basicamente o mesmo :slight_smile: )[/quote]

O mesmo elevador?? :lol: :lol:

Comprei o C++ como programar, a uns 3 ou 4 anos até hoje nao li uma linha :? Li apenas o Java como programar que comprei junto na época. Mas eae? É uma boa fonte para se iniciar o mundo C++? O de java eu gostei muito dos Deitel.[/quote]

O mesmíssimo elevador! :lol:

Eu acho um livro excelente. MUITO bom mesmo pra quem quiser aprender, assim como o Java Como Programar.