Y a-t-il une bonne raison pour laquelle je ne devrais pas utiliser d'applet Java pour un jeu?

9

Je veux créer un jeu basé sur un navigateur multijoueur. La bonne chose à propos de l'utilisation d'une applet est que je peux faire le client et le serveur dans la même langue (java / fermeture / scala / etc). Je sais qu'il y a html5 et javascript, mais javascript côté serveur n'est pas aussi mature que la plate-forme jvm et le support du navigateur est toujours un peu floconneux.

Les applets ne semblent pas être largement utilisés (sauf pour Runescape), mais y a-t-il une raison pour laquelle ils ne conviennent pas ou est-ce simplement à cause de la mauvaise réputation qu'ils ont développée à leurs débuts?

ryeguy
la source
1
Peut-être parce que peu de gens font des jeux Web en Java et préfèrent Flash?
The Communist Duck
Java n'est tout simplement plus aussi facilement disponible dans les navigateurs de nos jours (par rapport à Flash, ou bien sûr javascript), et il y a de fortes chances que votre public cible ne l'ait pas installé. Vous pouvez toujours utiliser Java côté serveur tout ce que vous voulez, quelle que soit la technologie côté client, je ne comprends pas l'argument selon lequel "javascript côté serveur n'est pas aussi mature que la plate-forme jvm".
falstro

Réponses:

9

Ils ne sont évidemment pas inadaptés à cela, comme l'ont démontré RuneScape et Minecraft et d'autres petits jeux d'applets Java. Il existe également des bibliothèques pour les graphiques 3D accélérés par le matériel ( LWJGL , JOGL ). Ce n'est tout simplement pas un langage populaire dans la communauté de développement de jeux.

Vous devez cependant tenir compte de vos plates-formes prises en charge. Windows et Linux ont d'excellents plugins Java, Mac en a un décent (ne fonctionne qu'à pleine vitesse dans Safari selon mon expérience), mais évidemment les plates-formes telles que l'iPad et Google Chrome OS seraient complètement manquées car elles ne le font pas, et ne le seront probablement pas jamais, avoir la machine virtuelle Java sur eux.

Ricket
la source
De plus, vous devez penser à votre marché cible - les joueurs de minecraft peuvent évidemment gérer aller sur java.com et l'installer, mais beaucoup de "la foule d'Internet Explorer" pourrait ne pas l'être.
Jari Komppa
Cependant, Minecraft est bien fait en ce que ces utilisateurs peuvent simplement télécharger la version exécutable, qui comprend le JRE et n'a pas besoin d'une telle installation; il fonctionne juste ™.
Ricket
2
Je pense que java est une excellente solution pour accéder à gpu dans le navigateur sans forcer l'utilisateur à installer quelque chose (80-85% d'utilisateurs ont installé java ... y compris des noobs d'explorateur aussi :))
Notabene
6

J'utilise Java pour écrire des jeux et j'ai utilisé C ++ pour écrire des jeux et j'ai trouvé que Java allait bien tant que vous restiez conscient des forces et des faiblesses de Java. Les deux gros avantages pour moi, la programmation en Java sont la rapidité de développement et la déployabilité / portabilité. Les temps de compilation sont beaucoup plus rapides que dans VC ++ (je ne peux pas encore parler pour XCode ou Clang), ce qui signifie que je peux résoudre les problèmes beaucoup plus rapidement. De plus, comme Eclipse compile constamment, je fais moins d'erreurs de type typo. Je n'ai jamais écrit un morceau de code C ++ qui "fonctionne" sur un autre système ou compilateur. En Java, c'est la norme.

D'un autre côté, Java présente des inconvénients majeurs. L'efficacité est souvent citée comme une raison de ne pas utiliser Java, mais j'ai constaté que tant que vous codez d'une certaine manière, Java peut très bien fonctionner. Le problème est que la façon dont vous devez coder va à l'encontre de ce que beaucoup de gens de Java considéreraient comme une bonne conception.
Au cœur de Java se trouve le «garbage collector», son système de gestion de la mémoire. Lorsque vous écrivez du code efficace, vous voulez éviter de faire des allocations dynamiques chaque trame dans n'importe quel langage et cela est particulièrement vrai de Java. Si vous désactivez le collecteur d'ordures en raison d'une nouvelle version bâclée, vous pouvez vous débarrasser des fréquences d'images lisses au revoir. Deuxièmement (et ce qui est le plus gênant), Java ne prend pas en charge les types de données utilisateur de première classe. Chaque type de données utilisateur en Java est instancié essentiellement comme un pointeur vers une classe, alloué sur le tas. C'est horrible pour la simultanéité de cache que vous ne pouvez pas avoir des choses comme un tableau d'objets Vector3 et avoir ces concurrents en mémoire - vous pouvez avoir un tableau de pointeurs Vector3 mais ce n'est pas du tout la même chose. En règle générale, vous devez plutôt utiliser des décalages dans de grands tableaux de types primitifs.

Luther
la source
3

Rien de mal avec les applets Java pour un jeu web. J'ai écrit un jeu open source roguelike ( Tyrant ) en Java et cela fonctionne très bien comme applet.

Quelques gros points positifs de Java dans mon expérience:

  • La portabilité est excellente - étant donné la complexité de Tyrant, il était assez impressionnant que j'ai réussi à obtenir exactement le même code compilé pour bien fonctionner sur Windows, Mac et Linux.

  • Vous n'avez pas à vous soucier des bizarreries du navigateur.

  • Avec un peu d'intelligence, vous pouvez faire exécuter le même code à la fois en tant qu'applet ou en tant qu'application de bureau autonome

  • Les performances sont excellentes en supposant une machine virtuelle Java moderne.

  • Tous les points positifs habituels de Java en termes de large éventail de bibliothèques / API open source, etc.

Sachez simplement ce qui suit:

  • Vous devrez signer votre applet / obtenir des autorisations privilégiées si vous voulez faire des choses comme stocker des données sur le système de fichiers local ou accéder aux bibliothèques natives. Cela peut être un obstacle pour certains utilisateurs.

  • Le temps de démarrage a tendance à être un peu plus lent que Flash ou JavaScript. D'un autre côté, les performances sont meilleures une fois la JVM opérationnelle ......

  • Java est un langage récupéré, il présente donc de très légères pauses GC à l'occasion. Ce n'est pas vraiment un problème pour les jeux occasionnels / de jeu de rôle / stratégie, mais cela pourrait être un problème pour les titres FPS 3D haute performance où vous essayez de maintenir une fréquence d'images de 120 FPs sans gigue constante ......

mikera
la source
1

Si vous envisagez de faire du jeu un logiciel gratuit ou si vous êtes prêt à gérer vous-même de l'argent à partir de tout cela, Java va bien. Cependant, il n'a pas de modèle de parrainage de jeu établi et répandu comme Flash, donc gagner de l'argent serait un peu plus difficile.

Gregory Avery-Weir
la source
Dois-je sentir une opportunité? :)
Ricket
Je ne sais pas si le modèle de parrainage présente une bonne affaire pour les créateurs. Il vaut mieux vendre votre travail à un prix raisonnable que de prendre une bouchée de pain sur un site portail qui fait une bouchée de pain de la publicité.
Luther
Luther: c'est vrai. Ce n'est pas parce qu'un modèle est établi qu'il est le meilleur.
Gregory Avery-Weir