Existe uma boa razão para eu não usar um applet java para um jogo?

9

Eu quero fazer um jogo multiplayer baseado em navegador. O bom de usar um applet é que eu posso criar o cliente e o servidor no mesmo idioma (java / encerramento / scala / etc). Eu sei que há html5 e javascript, mas o javascript do lado do servidor não é tão maduro quanto a plataforma jvm e o suporte ao navegador ainda é meio esquisito.

Os applets não parecem ser amplamente utilizados (exceto o Runescape), mas existe um motivo para eles não serem adequados ou é apenas por causa da má reputação que eles desenvolveram na infância?

ryeguy
fonte
11
Talvez porque poucas pessoas fazem jogos na web em Java e preferem o Flash?
The Duck comunista
Hoje em dia, o Java simplesmente não está mais tão disponível nos navegadores (em comparação com o Flash ou com todos os meios javascript), e há uma boa chance de que seu público-alvo não o instale. No entanto, você ainda pode usar o Java no lado do servidor, independentemente da tecnologia do lado do cliente, não entendo o argumento de que "o javascript do lado do servidor não é tão maduro quanto a plataforma jvm".
falstro

Respostas:

9

Eles obviamente não são adequados para isso, como demonstrado pelo RuneScape e Minecraft e outros jogos menores de miniaplicativos Java. Também existem bibliotecas para gráficos 3D acelerados por hardware ( LWJGL , JOGL ). Não é apenas uma linguagem popular na comunidade de desenvolvimento de jogos.

Você precisa considerar suas plataformas suportadas. Windows e Linux têm ótimos plugins Java, o Mac é decente (só funciona a toda velocidade no Safari na minha experiência), mas obviamente plataformas como o iPad e o Chrome OS do Google seriam completamente perdidas porque não possuem, e provavelmente não serão. sempre, tenha a Java VM neles.

Ricket
fonte
Além disso, você precisa pensar no seu mercado-alvo - os jogadores do minecraft obviamente podem acessar o java.com e instalá-lo, mas muitas "multidões do Internet Explorer" podem não estar.
Jari Komppa
No entanto, o Minecraft é bom porque esses usuários podem simplesmente baixar a versão executável, que inclui o JRE e não precisa de nenhuma instalação; apenas funciona ™.
Ricket
2
Eu acho, que java é grande solução como acesso gpu no navegador sem forçar o usuário instale algo (80-85% de usuários tem java instalado ... incluindo noobs explorador também :))
Notabene
6

Eu uso o Java para escrever jogos e usei o C ++ para escrever jogos e achei o Java bom, desde que você fique atento aos pontos fortes e fracos do Java. As duas grandes vantagens para mim, a programação em Java, são a velocidade de desenvolvimento e a capacidade de implantação / portabilidade. Os tempos de compilação são muito mais rápidos do que no VC ++ (ainda não posso falar por XCode ou Clang), o que significa que posso resolver problemas muito mais rapidamente. Além disso, como o Eclipse está compilando constantemente, cometo menos erros de digitação. Eu nunca escrevi um pedaço de código C ++ que 'simplesmente funcione' em outro sistema ou compilador. Em Java, essa é a norma.

Por outro lado, o Java tem algumas desvantagens importantes. A eficiência costuma ser considerada um motivo para não usar Java, mas eu descobri que, desde que você codifique de uma certa maneira, o Java pode ter um desempenho muito bom. O problema é que a maneira como você precisa codificar vai contra o que muita gente de Java consideraria um bom design.
No coração de Java está o 'coletor de lixo', é o sistema de gerenciamento de memória. Ao escrever um código eficiente, você deseja evitar fazer alocações dinâmicas a cada quadro em qualquer idioma, e isso é particularmente verdadeiro no Java. Se você desativar o coletor de lixo devido a novidades desleixadas, poderá dar adeus às taxas de quadros suaves. Em segundo lugar (e o mais irritante), o Java não suporta tipos de dados de usuário de primeira classe. Todo tipo de dados do usuário em Java é instanciado essencialmente como um ponteiro para uma classe, alocada no heap. Isso é péssimo para a simultaneidade de cache, pois você não pode ter coisas como uma matriz de objetos Vector3 e ter esses concorrentes na memória - você pode ter uma matriz de ponteiros Vector3, mas isso não é a mesma coisa. Geralmente você precisa usar deslocamentos em grandes matrizes de tipos primitivos.

Lutero
fonte
3

Nada de errado com os applets Java para um jogo na web. Eu escrevi um jogo roguelike de código aberto ( Tyrant ) em Java e funciona muito bem como um applet.

Alguns grandes pontos positivos do Java na minha experiência:

  • A portabilidade é excelente - dada a complexidade do Tyrant, foi bastante impressionante que eu consegui obter exatamente o mesmo código compilado para funcionar bem no Windows, Mac e Linux.

  • Você não precisa se preocupar com as peculiaridades do navegador.

  • Com um pouco de inteligência, você pode executar o mesmo código como um applet ou como um aplicativo de desktop independente

  • O desempenho é ótimo, assumindo uma JVM moderna.

  • Todos os pontos positivos usuais de Java em termos de grande variedade de bibliotecas / APIs de código aberto etc.

Esteja ciente do seguinte:

  • Você precisará assinar seu miniaplicativo / obter permissões privilegiadas se desejar armazenar dados no sistema de arquivos local ou acessar bibliotecas nativas. Isso pode ser uma barreira para alguns usuários.

  • O tempo de inicialização tende a ser um pouco mais lento que o Flash ou JavaScript. Por outro lado, o desempenho é melhor quando a JVM está em funcionamento ......

  • Java é uma linguagem de coleta de lixo, portanto, possui pequenas pausas no GC ocasionalmente. Não é realmente um problema para jogos casuais / de interpretação de papéis / de estratégia, mas pode ser um problema para títulos de FPS 3D de alto desempenho em que você está tentando manter uma taxa de quadros constante de 120 FPs sem tremores ......

Mikera
fonte
1

Se você planeja que o jogo seja freeware ou está preparado para ganhar dinheiro com tudo isso sozinho, tudo bem com Java. No entanto, ele não possui um modelo de patrocínio de jogos amplo e estabelecido como o Flash, portanto, ganhar dinheiro seria um pouco mais difícil.

Gregory Avery-Weir
fonte
Sinto o cheiro de uma oportunidade? :)
Ricket 14/03
Não tenho certeza se o modelo de patrocínio apresenta um bom negócio para os criadores. É melhor vender seu trabalho por um preço razoável do que receber uma ninharia de um site de portal que faça uma ninharia com a publicidade.
Luther
Lutero: é verdade. Só porque um modelo é estabelecido não significa que é o melhor.
Gregory Avery-Weir