Commentaires
- Isn ' t minecraft construit avec java? Ou principalement OpenGL? Oh et vérifiez C # si vous nêtes pas configuré à 100% sur java, car cest génial.
- Pourquoi ne ' t vous venez au chat C ++ Stack Overflow ? Nous aimons le C ++, nous pensons quil peut absolument être utilisé correctement, et nous savons comment le faire, et nous ' serions ravis de partager.
- Minecraft sont les compétences de codage de java + LWJGL + Notch ', donc en termes de performances, cest TERRIBLE.
- Que ce soit vos jeux de codage ou autre chose, vous enfermer dans un seul la langue ne vous aidera pas à l’avenir. Branche un peu, soit C ++ ou autre chose comme Python. Cela prend du temps, mais cela fait de vous un meilleur développeur.
- Vous ' allez recevoir beaucoup de désinformation parce que les guerres Java / C ++ brûlent vivement, soyez prêt à demander des exemples spécifiques avant daccepter une opinion et aussi à rechercher davantage par vous-même =) Cela étant dit, je suis daccord avec @loganfsmyth que vous aurez besoin de connaître de nombreuses langues car ce nest qualors que vous pourrez choisir le bon outil pour nimporte quelle tâche . Dans un avenir immédiat, si vous voulez simplement apprendre la " programmation de style de jeu ", utilisez ce que vous ' est à laise avec (Java) et apprend le C ++ plus tard. Heck, plus tard, vous pourriez faire des pipelines de contenu en C # et des jeux en Java ME, difficile à prévoir =)
Réponse
Oui, vérifiez cette liste pour une preuve. Ce sont des jeux créés avec Java à laide de la bibliothèque de jeux Java Lightweight (LWJGL). Cest un framework de bas niveau, qui fournit OpenGL pour des graphiques de haute qualité et OpenAL pour les sons. Il fournit également une API dentrée. Avec ceux-ci, vous pouvez 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 loisir en Java, et jadore ça. Dans le passé, jécrivais mes jeux avec C ++, mais après le passage à Java, il ny a pas de retour en arrière. La prise en charge de plusieurs systèmes dexploitation avec Java peut être très facile, par exemple mon précédent jeu Java, que jai développé sous Windows pendant un an, fonctionnait tout de suite sous Linux et sous OS X avec un seul bogue sans avoir besoin de compiler quoi que ce soit sur ces plates-formes.
Dun autre côté, avec Java, vous rencontrez quelques problèmes.
- Garbage collector. Comme dautres lont indiqué, la gestion non déterministe de la mémoire est un problème, et vous devez le coder à lesprit.
- Manque de bibliothèques tierces. La plupart des bibliothèques disponibles ne prennent pas en charge Java. Dautre part, vous avez toujours la possibilité dappeler ces bibliothèques natives à partir de Java également, mais cest plus de travail pour le faire. Il existe également des ports Java ou des wrappers prêts à lemploi disponibles pour les bibliothèques courantes, par exemple jutilise JBullet – port Java de Bullet Physics Library . Dautre part, Java a une énorme bibliothèque de classes intégrée, ce qui réduit le besoin de bibliothèques tierces qui ne sont pas liées au jeu. Le manque de bibliothèques na pas été un problème pour moi, mais je peux imaginer que cela peut lêtre pour dautres.
- Java nest pas pris en charge par les consoles de jeux populaires et il ny a pas de passage facile vers celles de Java pour linstant comme je le sais. Dautre part, Android, qui est une plate-forme mobile populaire, utilise une forme de Java. Cest une option également, mais « t excepté le même code Java pour fonctionner à la fois sur un PC et un appareil Android.
- Petite communauté. La plupart des programmeurs de jeux utilisent C ++ et daprès mon expérience, je naime souvent pas Java. Don » Attendez-vous à recevoir autant daide des autres. Ne vous attendez pas à trouver un emploi dans le développement de jeux sans compétences C ++.
Réponse
Pas vraiment. Ici « Cest le truc – premièrement, il » ya très peu de bibliothèques existantes pour Java par rapport à pratiquement tout qui est pour C ++.
Deuxièmement, Java en tant que langage simplement ne se prête 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 quils sont correctement verrouillés et déverrouillés ou éliminés, ce que C ++ De plus, il y a le problème de performances – et le GC nest pas déterministe, ce qui est très mauvais pour un jeu.
Je nai jamais observé de jeu non indépendant qui ait passé beaucoup de temps dans un jeu. langage qui na pas été compilé en code natif avant lexécution, et même les jeux indépendants qui le font sont une rareté.Donc, je pense actuellement que cela ne peut tout simplement pas être fait.
De plus, si je continue à apprendre et à améliorer Java maintenant, et il savère que plus tard Je suis obligé dapprendre le C ++, est-ce que le changement sera difficile?
Oui, absolument. Java et C ++ sont très différents, malgré leurs similitudes syntaxiques superficielles. L’expérience Java ne compte pratiquement rien lors de l’apprentissage du C ++.
Le gameplay sur les graphiques est un choix viable, et vous pouvez le voir dans le succès de jeux comme Terarria et Minecraft. Mais si vous avez lintention de créer des graphiques srs, cela ne sera pas faisable en Java.
Commentaires
- +1 car il a spécifié heavy graphiques, jeu rapide sans décalage.
- Java ' manque de types de données non signés y est également opposé. Oui, vous pouvez contourner ce problème, mais cela ' nest pas idéal et vous ' utiliserez un code qui ne reflète ' les données sous-jacentes correctement.
- @deadmg Le cas est verrouillé et déverrouillé , faites-vous référence à certaines fonctionnalités de lAPI DirectX? & Pouvez-vous dites-moi ce que ' est si mauvais davoir un GC non déterministe.
- Le GC non déterministe peut équivaloir à la suppression dimages, si vous obtenez un mauvais arrêt le world pause et il verrouille les choses plus longtemps quil nen faut pour rendre limage. En pratique, cela narrive pas ' vraiment souvent / jamais si vous planifiez votre mémoire utilisation, les collecteurs de la JVM ' peuvent être configurés pour une pause faible (bien dans les limites de sécurité pour la perte de trame). Pourtant, ce ' nest pas une chose amusante à gérer. Vous finissez par devoir restituer une part importante de la productivité que vous avez gagnée en quittant C ++.
- Au début, vous ' vous devrez totalement réécrire.
Réponse
Donc, je suis vraiment sérieux développement de jeux, Java est-il toujours un choix viable? Jai essayé plusieurs fois dapprendre le C ++, mais je naime pas vraiment le langage. Je ne sais pas vraiment pourquoi, mais en général, chaque fois que jessaie dapprendre, je ne peux jamais saisir les sujets.
Si votre raison de choisir Java est que vous ne comprenez pas le C ++, vos programmes Java ne seront pas assez rapides pour des graphiques de haute qualité. Utiliser un langage de niveau supérieur devrait être parce quil vous rend plus productif, 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, surtout si le jeu est simple, mais vous allez immédiatement rencontrer des problèmes de performances en Java si vous lutilisez comme une béquille.
Donc, en bref, Java peut-il être pris au sérieux, pour le développement de jeux sérieux. Cela inclut des graphismes lourds, un jeu rapide sans décalage, et éventuellement un passage facile aux consoles?
-
Graphiques lourds: Possible, mais vous allez faire la même chose en Java / LWJGL quen C ++ / GL: écrire des octets dans des tampons GPU et / ou utiliser le des listes daffichage obsolètes comme le fait Minecraft. Si vous ne comprenez pas la gestion de la mémoire, vous nallez pas le faire correctement non plus.
-
Jeu rapide sans décalage: ce nest pas une tâche facile dans toutes les langues, et vous êtes plus susceptible de vous tirer une balle dans le pied de toute façon sans y réfléchir.
-
Non, Java ne sera pas disponible sur les consoles.
Commentaires
- En guise de question secondaire, quest-ce qui a remplacé les listes daffichage lorsquelles étaient obsolètes?
- @Suds: pipeline programmable, je crois.
- ha! déjà couvert. VBO : gamedev.stackexchange.com/questions/22170/…
- Les plates-formes mobiles peuvent être considéré comme des consoles. Je me rends compte quil parlait probablement des trois grands, mais Android utilise Java et de nombreux jeux sont créés pour cela.
- @ Amplify91 oui, quelques jeux sont écrits en java pour Android. Mais le plus bon Les jeux et probablement tous les jeux graphiques intensifs ou multi-plateformes sont écrits en C ++ en utilisant Android NDK.
Réponse
Une exper Un programmeur expérimenté connaîtra généralement de nombreux langages de programmation – apprendre des langages de programmation supplémentaires nest pas trop difficile une fois que vous en connaissez un bien. Cependant, je recommanderais fortement que C ++ ne soit pas votre premier langage, et probablement pas le second non plus.
Cest parce que C ++ tire une grande partie de son efficacité en ne faisant aucune vérification derreurs dexécution significative. Par exemple, accéder à un élément à la fin dun tableau en Java lancera toujours une exception indiquant au programmeur exactement ce qui ne va pas.En C ++, vous aurez peut-être de la chance et il plantera immédiatement, mais très souvent, supprimera silencieusement dautres données et lerreur napparaîtra que bien plus tard .
Je vous suggère de vous en tenir à Java pour le moment (ou de passer en C # si vous préférez). Cela vous permettra de faire les choses plus rapidement quavec C ++, et les performances sur un PC ne devraient pas être un problème.
Pensez à apprendre le C ++ après avoir terminé quelques projets dans des langages plus sûrs. C ++ est ce dont vous aurez besoin pour la plupart des travaux de développement de jeux professionnels.
Notez quà lexception de C # / XNA, obtenir un jeu que vous avez écrit sur une console au minimum vous oblige à créer une entreprise, avec un bureau, et disposer dun budget important pour le matériel de développement et autres dépenses.
Commentaires
- Ceci est également exceptionnellement vrai car dautres langages au-delà du C ++ vous donner un sentiment d’accomplissement. C ++ peut prendre des centaines d’heures pour ce qui ne vous semble rien. Apprendre d’abord d’autres langages vous permet de vous mouiller les pieds.
- Vos commentaires sur l’absence de gestion des erreurs sont vraiment à propos de C (et ce que lon appelle le code C ++ qui est vraiment C). C ++ a des bibliothèques standard (et des bibliothèques de modèles standard) qui ont une gestion des erreurs bien meilleure que ce que vous décrivez. C ++ a également des bibliothèques fournies par le fournisseur (telles que MFC) qui fournissent gestion correcte des erreurs.
Réponse
Clause de non-responsabilité: Cela ne répond pas exactement à votre question. Cependant, jai tenté de mentionner (brièvement) certains points qui pourraient vous intéresser.
La raison pour laquelle vous voyez tant de choses sur C ++ est que C ++ est toujours la norme de lindustrie – le langage le plus courant pour les consoles, etc.
Java nest pas fréquemment utilisé. Minecraft est un jeu assez populaire qui a fait les choses en grand avec Java; mais ce nest pas si génial graphiquement. Spiral Knights nest pas mal – également fabriqué en Java, avec des graphismes significatifs.
Si vous aimez Java, C # est très similaire dans la syntaxe, avec lavantage quil peut interop avec C ++ – donc des choses de bas niveau peuvent être faites en C ++ si nécessaire. Unity peut utiliser C # pour les scripts, et XNA est un excellent choix.
Encore une fois, Java nest pas largement utilisé. Si vous aimez le style et la syntaxe, je pense que vous trouverez que C # est une expérience de codage très similaire et très agréable.
Jespère que vos rêves le feront, cest très amusant en cours de route 🙂
Commentaires
- De nombreuses inexactitudes dans ces messages. Minecraft " mauvais " les graphismes ne sont pas (fortement) liés au langage. Les mauvaises performances de MC sont directement liées au fait que Java est un mauvais langage pour les jeux parce que dénormes problèmes de performances, et LWJGL étant une bibliothèque inadaptée aux grands projets de codage pour la même raison . Mais le facteur le plus important était Notch
s mauvais codage et implémentation, qui est en train dêtre corrigé … lentement. C # vous donne tous les avantages de la mémoire gérée sans la plupart des problèmes de performances Java. Linconvénient est que C # est fortement centré sur Microsoft à la fois pour les jeux et les applications.
- @EfEs: je déteste vous le casser, mais la mémoire gérée est terrible pour les jeux, et les gens qui codent des jeux en XNA doivent passer plus de temps à gérer la mémoire que ceux qui codent en C ++. La nature non déterministe du GC signifie que vous devez pratiquement tout mettre en commun et éviter les allocations comme la peste – pas la façon dont la langue était censée être utilisée.
- Cette réponse nétait pas censée être exacte à 100% ; Je nai cité que des exemples que je connais vaguement. Nhésitez pas à DV.
- @DeadMG Je sais que C ++ est la voie à suivre, jessayais juste dexpliquer que C # est meilleur que Java pour les jeux.
- Être longtemps C # développeur (pas pensé par le développeur de jeux) Je crois que la mise en commun et la gestion de la mémoire sont de grands problèmes pour tout système mal conçu. Les gens avec létat desprit et les méthodes de développement C / C ++ que je connais, nont guère de souffle dans la mémoire gérée, les modèles de conception et darchitecture qui doivent être utilisés et en tirent parti dans un langage comme Java / C #. Ce que jessaie de dire, ce nest pas que les techniques ou les produits C / C ++ sont mauvais, mais que même si vous utilisez des langages plus simples en termes de syntaxe (comme Java et C #), vous avez encore besoin de beaucoup dexpérience pour concevoir votre jeu correctement
Réponse
Regarde mec, la réponse simple à « Is Java viable pour le jeu dev « est un oui évident. Vous pouvez utiliser nimporte quel langage de programmation pour créer des jeux. Cela ne signifie pas que vous devriez .
Probablement ce qui vous arrête de C ++ ( gestion de la mémoire de bas niveau, pas de ramasse-miettes, avoir à faire attention aux pointeurs, aux structures comme tableaux, etc.) sont les choses mêmes que vous devriez apprendre si vous voulez exploiter un ordinateur « s ressources plus efficacement .Vos jeux fonctionneront mieux si vous exploitez le plus efficacement les ressources de lordinateur.
Java fait certaines choses (comme la vérification des limites du tableau) qui le ralentissent simplement. Dans ce code dexemple de bruit Java Perlin optimisé, lauteur a commenté « (laccès au tableau est beaucoup plus lent que laccès aux membres) ». Ce genre de chose est assez contre-intuitif venant dun arrière-plan C ++. Mais dans Java, de telles choses sont.
Je dis: arrêtez desquiver la balle, apprenez le C ++ et utilisez-le.
Réponse
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. GC affecte également les performances. Mais ce que jécris:
Si vous écrivez des programmes OO volumineux et complexes, vous les écrirez 5 fois plus rapidement en Java quen C ++. En outre, la maintenance sera beaucoup plus facile. Jai changé, (certes pour les logiciels non-jeux), et ma productivité a explosé. C #, une autre bonne alternative, est plus difficile à apprendre que Java car il y en a beaucoup plus. Quand vous le savez, vous pouvez écrire du code encore plus vite quen Java; il vous offre beaucoup dastuces. Cependant, je trouve ces astuces peut rendre la maintenance difficile. Et puis il ya la documentation Java, qui aide avec les bibliothèques Sun et votre propre ancien code. C # na rien de tel.
Jai fait un gros jeu poilu en Java et jai trouvé le langage parfait, 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 le De plus, jespère y ajouter beaucoup plus tard, alors que je pense que la plupart des gens vont simplement écrire un tout nouveau jeu.
Réponse
Vous devriez le faire dans la langue que vous connaissez le mieux jusquà ce que vous puissiez vous permettre une éducation formelle (baccalauréat ès sciences?) en informatique, mettant laccent sur la conception de jeux . Vous pourriez éventuellement utiliser votre jeu pour obtenir une bourse, surtout si vous pouvez dire « Jai fait cela sans aucune formation formelle en Java »
JVM modernes, même celui dOracle a de très nombreuses fonctionnalités pour répondre aux préoccupations que les gens ont soulevées ici. Vous pouvez utiliser différents garbage collector pour obtenir un comportement plus déterministe du garbage collector. Je nai pas une grande expérience avec les bibliothèques 3D – seulement un peu avec Java3D – mais personne ici ne semble sen être plaint. Lanalyse des évasions permet désormais délision de verrouillage et une allocation beaucoup plus rapide / négligeable dobjets de très courte durée.
Le problème est que, que vous choisissiez Java ou C ++, vous devrez apprendre à utiliser correctement la concurrence et avoir une bonne compréhension de la gestion de la mémoire. Après tout, vous pouvez tout aussi facilement bousiller avec malloc
quavec new
. 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 détecter les problèmes de performances et apprendre .
Commentaires
- Une formation formelle en CS vaut vraiment la peine pour de réelles compétences en programmation dans nimporte quelle discipline. Je le saurais, je ' m dans ma troisième année.
- Pas du tout daccord avec DeadMG. Après avoir obtenu mon diplôme et choisi des cours que jaime, CS a fait passer mes pouvoirs de développement de jeux de 10% à 100%. div id = « 6cdc09e59a »>
t mapprendre linterface utilisateur, liconographie, etc. mais le codage réel et réel.