J'ai parcouru Internet, mais il n'y a pas beaucoup de ressources pour le développement de jeux Java, pas aussi nombreuses que C ++. En fait, la plupart des moteurs sont écrits en C ++. J'ai essayé de jouer à un jeu fait avec jMonkeyEngine, mais le jeu était terriblement lent, au point que mon ordinateur s'est figé. Je n'avais aucune autre application Java en cours d'exécution, et rien de trop gourmand en ressources. En revanche, mon ordinateur peut jouer facilement aux jeux 3D les plus modernes. Si je continue à apprendre et à améliorer Java maintenant, et qu'il s'avère plus tard que je dois apprendre le C ++, il peut être difficile de passer à l'actif.
Java est-il un langage acceptable pour le développement de jeux sérieux? Par sérieux, j'entends des graphiques de haute qualité, sans grand retard sur les ordinateurs modernes. Je veux aussi envisager de créer des jeux pour consoles.
la source
Réponses:
Oui, vérifiez cette liste pour une preuve. Ce sont des jeux créés avec Java en utilisant la bibliothèque de jeux Lightweight Java (LWJGL). Il s’agit d’un framework de bas niveau fournissant OpenGL pour des graphiques de haute qualité et OpenAL pour les sons. Il fournit également une API d'entrée. Avec ceux-ci, vous pouvez très facilement vous lancer dans le développement de jeux sérieux en Java.
J'écris actuellement mon deuxième jeu 3D en tant que projet de passe-temps en Java et je l'adore. Dans le passé, j’écrivais mes jeux en C ++, mais après le passage à Java, il n’ya plus de retour en arrière. Prendre en charge plusieurs systèmes d'exploitation avec Java peut s'avérer très simple. Par exemple, mon précédent jeu Java, que j'avais développé sous Windows pendant un an, fonctionnait immédiatement sous Linux et sous OS X avec un seul bug sans qu'il soit nécessaire de compiler quoi que ce soit sur ces plates-formes.
D'autre part, avec Java, vous avez quelques problèmes.
la source
Pas vraiment. Voici la chose - premièrement, il y a très peu de bibliothèques existantes pour Java comparées à la quasi - totalité du C ++.
Deuxièmement, Java en tant que langage ne se prête tout simplement pas bien au développement de jeux. Je veux dire, par exemple, si vous traitez avec des tampons GPU, Java ne fournit pas de fonctionnalité de langage qui vous aidera à vous assurer qu'ils sont correctement verrouillés. débloqué ou éliminé, ce que C ++ fait. De plus, il y a le problème de performances et le GC n'est pas déterministe, ce qui est très mauvais pour un match.
Je n'ai jamais observé de jeu non indépendant ayant passé beaucoup de temps dans une langue qui n'avait pas été compilée en code natif avant l'exécution, et même les jeux indépendants qui le font sont une rareté. Donc, ma conviction actuelle est que cela ne peut tout simplement pas être fait.
Oui, absolument. Java et C ++ sont très différents, malgré leurs similitudes syntaxiques superficielles. L’expérience Java ne compte pratiquement pour rien lors de l’apprentissage du C ++.
Le gameplay au lieu de graphismes est un choix viable, et vous pouvez le voir dans le succès de jeux comme Terarria et Minecraft. Mais si vous avez l'intention de créer des graphiques srs, cela ne sera pas réalisable en Java.
la source
Si votre raison de choisir Java est que vous ne compreniez pas le C ++, vos programmes Java ne seront pas assez rapides pour des graphismes de haute qualité. Utiliser un langage de niveau supérieur devrait être parce que cela vous rend plus productif, et non pas parce que vous ne pouvez pas comprendre le langage de niveau inférieur.
Je ne pense pas que ce soit une très mauvaise idée d’écrire un jeu en Java, en particulier si le jeu est simple, mais vous allez immédiatement rencontrer des problèmes de performances en Java si vous l’utilisez comme béquille.
Graphiques lourds: possible, mais vous allez faire la même chose en Java / LWJGL et en C ++ / GL: écrire des octets dans les tampons GPU et / ou utiliser les listes d'affichage obsolètes comme le fait Minecraft. Si vous ne comprenez pas la gestion de la mémoire, vous ne le ferez pas correctement non plus.
Jeu rapide sans décalage: Ce n'est pas une tâche facile dans n'importe quelle langue et vous risquez plutôt de vous tirer dans le pied sans y penser.
Non, Java ne sera pas disponible sur les consoles.
la source
Un programmeur expérimenté connaît généralement de nombreux langages de programmation - apprendre des langages de programmation supplémentaires n’est pas une tâche ardue une fois que vous maîtrisez bien un de ces langages. Cependant, je recommanderais fortement que C ++ ne soit pas votre première langue, et probablement pas la seconde non plus.
En effet, C ++ tire beaucoup de son efficacité de ne pas effectuer de vérification d'erreur d'exécution importante. Par exemple, l'accès à un élément à la fin d'un tableau en Java lève toujours une exception indiquant au programmeur exactement ce qui ne va pas. En C ++, vous aurez peut-être de la chance et cela plantera immédiatement, mais très souvent, d' autres données seront effacées et l'erreur ne s'affichera que bien plus tard .
Je vous suggérerais de vous en tenir à Java pour le moment (ou de passer en C # si vous préférez cela). Cela vous permettra de faire les choses plus rapidement que d'utiliser C ++, et les performances sur PC ne devraient pas être un problème.
Pensez à apprendre le C ++ après avoir terminé quelques projets dans des langues plus sûres. C ++ est ce dont vous aurez besoin pour la plupart des travaux de développement de jeux professionnels.
Notez que, à l'exception de C # / XNA, obtenir au minimum un jeu écrit sur une console nécessite au minimum la création d'une société disposant d'un bureau et disposant d'un budget important pour le matériel de développement et autres dépenses.
la source
Avertissement: Cela ne répond pas exactement à votre question. Cependant, j'ai tenté de (brièvement) mentionner quelques points qui pourraient vous intéresser.
La raison pour laquelle vous voyez tant de choses sur le C ++ est que le C ++ est toujours le standard de l'industrie - le langage le plus courant pour les consoles, etc.
Java n'est pas fréquemment utilisé. Minecraft est un jeu très populaire qui a fait la différence avec Java. mais ce n'est pas génial graphiquement. Spiral Knights n'est pas mauvais - également en Java, avec des graphiques significatifs.
Si vous aimez Java, la syntaxe de C # est très similaire, avec l'avantage de pouvoir interagir avec C ++. Vous pouvez donc effectuer des opérations de bas niveau en C ++ si nécessaire. Unity peut utiliser C # pour les scripts et XNA est un excellent choix.
Encore une fois, Java n'est pas largement utilisé. Si vous aimez le style et la syntaxe, je pense que vous constaterez que C # est une expérience de codage très similaire et très agréable.
J'espère que vos rêves le feront, c'est très amusant en cours de route :)
la source
Cela ne répond pas à votre question. les problèmes graphiques et de console semblent être quelque chose que vous devez absolument prendre en compte. De plus, le GC affecte les performances. Mais ce que j'écris à propos de:
Si vous écrivez des programmes OO volumineux et complexes, vous les écrivez 5 fois plus rapidement en Java qu'en C ++. En outre, la maintenance sera beaucoup plus facile. J'ai changé (bien sûr pour les logiciels non destinés au jeu) et ma productivité a grimpé en flèche. C #, une autre bonne alternative, est plus difficile à apprendre que Java car il en existe beaucoup plus. Quand vous le savez, vous pouvez écrire du code même plus rapidement qu'en Java. il vous offre beaucoup de trucs. Cependant, je trouve que ces astuces peuvent rendre la maintenance difficile. Et puis il y a la documentation Java, qui aide avec les bibliothèques Sun et votre propre ancien code. C # n'a rien de tel.
J'ai fait un grand jeu poilu en Java et trouvé la langue parfaite, mais mes graphismes étaient élémentaires et ce n'était pas un jeu de tir où un dixième de seconde était une éternité pour les joueurs. De plus, je pense en ajouter beaucoup plus tard, alors que je pense que la plupart des gens vont simplement écrire un tout nouveau jeu.
la source
Regardez mec, la réponse simple à "Est-ce que Java est viable pour les développeurs de jeu" est un oui évident. Vous pouvez utiliser n'importe quel langage de programmation pour créer des jeux. Cela ne signifie pas que vous devriez .
C ++ (gestion de la mémoire de bas niveau, absence de garbage collector, attention aux pointeurs, structure sous forme de tableaux, etc.) est probablement ce que vous devez apprendre si vous souhaitez exploiter les ressources d'un ordinateur de manière plus efficace . Vos jeux fonctionneront mieux si vous exploitez les ressources de l'ordinateur le plus efficacement possible.
Java effectue certaines tâches (telles que la vérification des limites du tableau) qui ralentissent son exécution. Dans cet exemple de code optimisé de bruit Java Perlin, l'auteur a commenté "(l'accès au tableau est beaucoup plus lent que l'accès aux membres)". Ce genre de chose est plutôt contre-intuitif issu d'un arrière-plan C ++. Mais à Java, de telles choses sont.
Je dis d'arrêter d'esquiver la balle, d'apprendre le C ++ et de l'utiliser.
la source
Vous devriez le faire dans la langue que vous connaissez le mieux jusqu'à ce que vous puissiez vous permettre une éducation formelle (baccalauréat en sciences?) En informatique, en mettant l'accent sur la conception de jeux. Vous pouvez éventuellement utiliser votre jeu pour obtenir une bourse, surtout si vous pouvez dire "je l'ai fait sans aucune formation formelle en Java"
Les machines virtuelles modernes, même celle d'Oracle, offrent de nombreuses fonctionnalités pour répondre aux préoccupations exprimées par les utilisateurs. Vous pouvez utiliser différents récupérateurs de mémoire pour obtenir un comportement plus déterministe du récupérateur de mémoire. Je n'ai pas beaucoup d'expérience avec les bibliothèques 3D - seulement un peu avec Java3D - mais personne ici ne semble s'en être plaint. L'analyse d'évasion permet maintenant l'élimination des verrous et une allocation beaucoup plus rapide / négligeable d'objets de très courte durée.
Le problème est que, que vous choisissiez Java ou C ++, vous devrez apprendre à utiliser correctement la simultanéité et bien comprendre la gestion de la mémoire. Après tout, vous pouvez tout aussi facilement
malloc
vous trompernew
. Je ne sais pas à quoi ressemblent les outils pour C ++, mais les outils de profilage pour Java sont assez faciles à utiliser, gratuits et intégrés à l'EDI. Vous pouvez les utiliser pour localiser des problèmes de performances et apprendre .la source