Dúvidas: Java para jogos e mineração?

Minha primeira dúvida é sobre os jogos, é viável usar Java pra produção de jogos para computadores? A inicalização da virtual machine pode atrapalhar a experiência de jogo ou não faz diferença? Vocês jogariam um game feito em java?

Minha segunda dúvida, é viável usar Java para data warehouses e coisas do tipo?

Bom, vou responder pelo menos uma:
Vocês jogariam um game feito em java?

Isso pra quem joga é totalmente irrelevante. O cara não ta nem aí se foi feito em java, pascal ou assembly, ele quer é se divertir…

Existem vários frameworks para jogos em java, mas a linguagem mais utilizada pra isso ainda é o C/C++.

c/c++ ainda realmente eh amsi utilizada
em florianópolis tem ums empresa que está lançando um jogo o taikodon um jogo online (massive multiplayer)
e está sendo desenvolvido em java, não chegaram ao mesmo desempenho de um C/C++ mas chegaram cerca de mais de 85%, ou seja sim é possível desenvolver e desenvolver jogos bons em java.

Tem certeza que o Taikodom é feito em Java? Acho que não hein. Lembro de alguns anos atrás algum funcionário de lá estava trollando em um forum de como C++ era a sétima maravilha do mundo e Java era tudo de ruim…

Se fazem jogos até em Flash, por que não? Existem alguns que foram lançados para PC, como o Puzzle Pirates. Mas é muito pouco. Nem o C# é utilizado ainda, e olha que a Microsoft empurra essa jossa em tudo o que pode.

Verdade. Até porque, é a única linguagem suportada em todos os video-games. Nenhum deles tem VMs próprias reconhecidas pelos fabricantes e, por serem hardwares muito específicos, acho realmente difícil que tenham. Até porque, a industria de consoles não tem o menor interesse em ter multiplataforma. Primeiro, porque é uma industria onde o hardware diferenciado é o grande motto. Segundo, porque títulos exclusivos são um grande apelo para as vendas. Basta ver a reação da indústria quando a EA falou no assunto.

Não está sendo lançando. Já lançaram.

Sim, está sendo feito em Java. O curso de Desenvolvimento de Jogos da Universidade Positivo (que, inclusive, está com matriculas abertas), onde cursei e hoje dou aula, tem como um de seus professores o game designer da hoplon. Uma das minhas colegas era testadora lá também. O jogo é feito em Java, muito código que inicialmente era em C++ foi portado para Java.

Do contrário que o Marcos falou, o desempenho atualmente é melhor do que tinham em C++. É bom lembrar que hoje os grandes gargalos do jogo não estão na linguagem de programação utilizada. Pense no MMO. É muito mais provável que você vá ter problemas com lag da rede, do que com processamento do seu computador. Ainda assim, se tiver, será provavelmente com o hardware de vídeo, não com a lógica do jogo. E, bindings como a JOGL acessam o vídeo diretamente, representando um impacto insignificante sobre a performance. No caso do Taikodom, tiveram grande ganho de performance ao remover a Havoc (em C++) e substituir por uma engine de física mais simples e adequada ao jogo, feita em Java pela própria empresa. Um exemplo de que uma decisão incorreta sobre que tipo de estruturas e engines usar, pode ter muito mais impacto do que a linguagem utilizada em si.

Aliás, quem ainda não conhece, dê uma olhada nos benchmarks de um quake feito em java, onde a performance também supera a da versão original em C.
http://bytonic.de/html/benchmarks.html

O interessante é que o Quake era extremamente otimizado, com código fonte em assembly em alguns pontos críticos. Pena que o benchmark não traz dados sobre uso de memória.

Agora, respondendo as perguntas do Runehart. Para a produção de jogos comerciais e AAA, não é viável o uso de Java. Por várias razões, sendo a última delas a performance: Não é suportado em vários consoles, não possui excelentes APIs complementares (como a SpeedTree ou a Havoc, por exemplo), não é determinística, etc. É bom lembrar, em jogos AAA, pode-se sim chegar ao grau em que a linguagem venha a ser um limitante. No caso do Java, creio que o garbage collection não determinístico deva ser um problema maior do que velocidade em si. Principalmente em consoles mais limitados, como o PSP, onde você deve expremer até o último fio de memória e processamento do bichinho. É por isso que a EA e outros grandes estúdios usam C++. Estou falando aqui de jogos grandes mesmo, dos titãs da indústria.

Agora, para jogos indie, o Java é uma excelente linguagem. Entre no site do JMonkeyEngine e veja os jogos que tem por lá. É de tirar o fôlego! Já existem diversas e boas APIs de suporte para Java.

Para o mecado de celulares, o Java é a linguagem dominante. Por lá o questionamento costuma ser o inverso: “Vale a pena usar C++ e APIs nativas para celular?”

No caso da Internet, acho que o ActionScript e o Flash são mais práticos e menos estressantes do que o Java. O flash é muitíssimo bem aceito e tem um excelente histórico de compatibilidade. Além disso, jogos casuais, como é o perfil de jogos em browser, não exigem altíssimo conhecimento técnico, viabilizando até que publicitários e designers interessados na área façam ótimo trabalho ou, no mínimo, te ajudem com facilidade.

Se você for investir na sua formação profissional almejando trabalhar na área de jogos AAA, estude C++. E muito. Você até pode brincar no JMonkey com o Java para entender como funciona um SceneManager, por exemplo, mas dificilmente irá encontrar um estúdio sequer pensando em usar isso no futuro.

Já existem quase 40 jogos para IPhone usando C# atravez do mono. Lançaram também um para Wii recentemente também.

Dá uma olhada aqui.

O c# tá bem na fita.

Sobre jogos em java, imagine que tipo de máquina teria que ser para suportar um age of conan em java!?

Referia-me a jogos maiores do que algo casual. A Microsoft tem a faca e o queijo na mão, pois os estúdios usam Visual Studio, e mesmo assim não usam C#. Quando usam é apenas para alguma ferramenta externa.

Sobre jogos em Java, veja Puzzle Pirates que é tipo um MMO. A mesma empresa lançou outros jogos também.

Mais importante do que isso… a Microsoft tem a faca e o queijo na mão porque, além de tudo isso, tem o X-Box.

[quote=Thiagosc]

Referia-me a jogos maiores do que algo casual. A Microsoft tem a faca e o queijo na mão, pois os estúdios usam Visual Studio, e mesmo assim não usam C#. Quando usam é apenas para alguma ferramenta externa.

Sobre jogos em Java, veja Puzzle Pirates que é tipo um MMO. A mesma empresa lançou outros jogos também.[/quote]
Não acho que jogos para nintendo wii seja casual.

Sobre o Puzzle P., parece ser bem legal.

Sim, é possivel criar jogos incriveis em Java!

[quote=Thiagosc]Referia-me a jogos maiores do que algo casual. A Microsoft tem a faca e o queijo na mão, pois os estúdios usam Visual Studio, e mesmo assim não usam C#. Quando usam é apenas para alguma ferramenta externa.

Sobre jogos em Java, veja Puzzle Pirates que é tipo um MMO. A mesma empresa lançou outros jogos também.[/quote]

Existem jogos AAA feitos usando mono, porém isso não é divulgado, Com um deles sendo lançado em 2009. Não posso divulgar qual é, mas espero que em breve isso aconteça.

Com recursos como age of conan, usando api sobre direct3d e opengl, eu não acredito muito nisso não(sem querer desmerecer nada). Acho que isso não é o foco do java.

Com recursos como age of conan, usando api sobre direct3d e opengl, eu não acredito muito nisso não(sem querer desmerecer nada). Acho que isso não é o foco do java. [/quote]

Tambem acredito que este não é o foco do java, mas o Taikodom ta ai pra provar que o cmoscoso de fato não esta falando nenhuma mentira.

Com recursos como age of conan, usando api sobre direct3d e opengl, eu não acredito muito nisso não(sem querer desmerecer nada). Acho que isso não é o foco do java. [/quote]

Tambem acredito que este não é o foco do java, mas o Taikodom ta ai pra provar que o cmoscoso de fato não esta falando nenhuma mentira. [/quote]

Acredito que se possa criar jogos ótimos sim. O que estou indagando é o hardware que precisará para ser executado.

Não vai ser muito melhor. A maior parte do processamento dos jogos, como eu já disse, está na placa de vídeo, a GPU. O código que roda na CPU não tem praticamente nenhuma influência. Tanto, que existem jogos 3D impressionantes por aí feitos em Python.

Seria problemático apenas se estivessemos falando de um RTS, ou algum outro jogo fortemente baseado em IA.

Legal, já dá pra fazer jogos então… não sabia que a influência de performance no jogo era tão centrada na GPU…

E sobre a segunda dúvida? Sabem se java tem boa performance em business intelligence?

É só ver o impacto que uma placa de vídeo tem sobre a qualidade do jogo, e facilmente vc comprova essa afirmação. Lógico, no caso de MMOs ou outros jogos de rede, a própria conexão de rede será um dos principais gargalos.

Mas, a menos que seu jogo tenha perfil de um que exija muito processamento de IA (como um RTS), dificilmente sua CPU e a linguagem será um problema.

Quanto a BI, deixo a questão para outros especialistas.

Nossa esse Taikodom parece interessante… eu queria que um jogo nesse estilo fosse open-source.