IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API graphiques Discussion :

Java pour le jeu ?


Sujet :

API graphiques

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Cité plus haut ^
    Inscrit en
    Janvier 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cité plus haut ^
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2018
    Messages : 13
    Points : 27
    Points
    27
    Par défaut Java pour le jeu ?
    Bonjour/Bonsoir à tous.
    Je me pose une question aujourd'hui à laquelle j'ai du mal à répondre clairement grâce à google. Depuis un petit moment je me suis mis à la POO avec Java. J'ai choisis Java car dans mon cursus scolaire c'est le langage orienté objet que l'on étudie. J'avais donc envie de prendre un peu d'avance. Je me suis vite intéresser aux différentes manière des faire des jeux (de tout type 2D/3D, simple ou plus complexe) en Java. Et comparé au C++ j'ai l'impression que peu de gens utilisent Java pour le jeu. Bien que je connaisse quelque jeu en Java (il y a que Minecraft & Wakfu qui me reviennent mais il doit sûrement y en avoir d'autre). D'où ce post, je cherche à avoir des avis sur l'utilisation de Java dans la conception de jeu (étant donné que n'ayant pas encore manipulé réellement de librairies graphique je n'y connais pas grand chose). Est-ce un choix intéressant ? Est-ce totalement à bannir ?

    Dans le cas où Java serait un langage utilisable, avez-vous des livres/cours à me conseiller sur une librairies graphique ou autre pour commencer ? Des choses incontournables que je dois savoir ?

    Je vous remercie d'avoir lu le message d'un novice total. J'attends avec impatience vos retours.
    Sakeiru.

    Edit : Le resultat qui m'a le plus fait douté sur l'efficacité du Java est ce post sur stackexchange

    Edit2: En effet j'ai oublié de précisé mais jeux PC

  2. #2
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 565
    Points
    4 565
    Par défaut
    Bonjour,

    Tu ne le précises pas, mais je vais partir du principe que la cible est le PC.

    J'utilise java pour le développement de mes jeux, mais totalement en amateur, avec mon propre moteur, si ta finalité est un avenir professionnel dans le jeux-video, tu peux oublier (sauf si coté serveur pour les jeux multi-joueurs)

    Ce qui m'a fait choisir java est:

    -Productivité: le langage est simple d'accès, possède une librairie standard très riche, et un nombre énorme de librairies tierces.
    -Écosystème: travaillant seul sur mes projet, j'ai besoin d'automatiser un maximum de choses, du build jusqu'au déploiement final, java en entouré d'un large panel d'outil permettant ça plus facilement que dans d'autres langages.
    -La portabilité: je voulais un système compatible windows-linux, ce but n'est pas encore entièrement atteint, mais pour d'autres raisons que le langage.
    -Pas de compilation, ou plutôt faite par l'IDE en arrière-plan, ce qui facilite les tests.
    -Interopérabilité avec d'autres langages: Certaines parties de mon moteur utilisent des librairies en C++ (ogre3d, opengl, bullet physics).

    Aujourd'hui je suis toujours satisfait de ce choix, mais je pense que je partirais sur du Kotlin si c'était à refaire (bien que la migration java -> kotlin soit tout à fait possible).

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Cité plus haut ^
    Inscrit en
    Janvier 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cité plus haut ^
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2018
    Messages : 13
    Points : 27
    Points
    27
    Par défaut
    Bonjour,
    Merci beaucoup d'avoir pris le temps de lire et d'avoir répondu. Je suis assez intrigue par le kotlin que je ne connaissais pas du tout. Mais je penses donc me tourner vers du C++ qui a l'ai bien plus populaire.
    Cependant ton avis sur les jeux Minecraft et Wakfu (qui a ma connaissance sont en Java) m'intéresse. Sais tu pourquoi le Java a été utilisé pour ces projets ? Était-ce un bon choix d'après toi ?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 110
    Points : 293
    Points
    293
    Par défaut
    J'utilise les 2 donc, je vais juste donner un point de vue.

    Je suis passé de Java à C++ (pour les projet perso orienté jeux) pour 2 raisons.
    -les perfs notamment l'utilisation des instructions SIMD, j'en ai pas forcément besoin vu la puissance des machines actuel, mais j'ai débuté avec de l'Assembler du coup c'est un peu nostalgique, techniquement on est plus proche de la machine
    -Une communauté dev. jeux plus importante, certainement parce que C/C++ est beaucoup plus ancien mais aussi à cause d'un gros soucis de perf dans les début de Java, mais ça a bien changé

    Par contre je suis de l'avis de yildiz, le language Java est beaucoup plus simple à appréhender, la gestion des objets qui est géré par la JVM(garbage collector), l'intégration de libraries tiers etc...
    -Un exemple, tu veux une interface graphique basique, tu as swing(de base dans le JDK, il y'en a d'autre) qui te permette de faire des truc sympathique, en C/C++ il te faut utiliser des composant tiers qui ne sont pas simple à intégrer quand tu débute.

  5. #5
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 565
    Points
    4 565
    Par défaut
    Citation Envoyé par Sakeiru Voir le message
    Bonjour,
    Merci beaucoup d'avoir pris le temps de lire et d'avoir répondu. Je suis assez intrigue par le kotlin que je ne connaissais pas du tout. Mais je penses donc me tourner vers du C++ qui a l'ai bien plus populaire.
    Cependant ton avis sur les jeux Minecraft et Wakfu (qui a ma connaissance sont en Java) m'intéresse. Sais tu pourquoi le Java a été utilisé pour ces projets ? Était-ce un bon choix d'après toi ?
    Effectivement C++ est bien plus populaire et tu trouveras beaucoup plus de ressources.
    C'est ce qui avait fait que la première itération de mon premier jeu était intégralement en c++.

    Pour Minecraft & Wakfu, je ne sais pas vraiment pourquoi java a été utilisé, je ne me suis pas intéressé à ces projets et n'y ai jamais joué.
    Je dirais que c'est un bon choix vu qu'ils sont sortis, Minecraft a je pense été souvent critiqué pour ses performances par contre, et java n'était peut-être pas le meilleur choix pour un jeu avec des algos qui chargent à ce point le CPU, par contre le système de plugin, facile à mettre en oeuvre en java, était populaire il me semble.

    Citation Envoyé par jwar0 Voir le message
    J'utilise les 2 donc, je vais juste donner un point de vue.

    Je suis passé de Java à C++ (pour les projet perso orienté jeux) pour 2 raisons.
    -les perfs notamment l'utilisation des instructions SIMD, j'en ai pas forcément besoin vu la puissance des machines actuel, mais j'ai débuté avec de l'Assembler du coup c'est un peu nostalgique, techniquement on est plus proche de la machine
    Au niveau du SIMD, ça progresse niveau java, mais je ne sais pas quelle sera la release target, c'est pas dans jdk 12 en tous cas:
    http://openjdk.java.net/jeps/338

  6. #6
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 392
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 392
    Points : 20 494
    Points
    20 494
    Par défaut
    Citation Envoyé par Sakeiru Voir le message
    Est-ce un choix intéressant ? Est-ce totalement à bannir ?
    le problème pour créer un jeu n'est pas d'utiliser tel ou tel langage le problème c'est
    -la maitrise des mathématiques et de la géométrie et des transformations dans l'espace sur les matrices
    -les algorithmes pointus à mettre en oeuvre comme le pathfinding

    On va me rétorquer que je sors du sujet mais si tu ne maitrises pas cela tu vas être bloqué, qu'importe que tu programmes en C++ ou Java.
    Maintenant pour programmer des jeux il y a plus de codes sources en C++ qu'en Java.

    Ensuite pour faire un projet de jeu il y a la contrainte du multicanal : win32,Android,IOS.
    Donc le jeu on ne le concçoit pas qu'avec un seul langage.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Cité plus haut ^
    Inscrit en
    Janvier 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cité plus haut ^
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2018
    Messages : 13
    Points : 27
    Points
    27
    Par défaut
    Bonjour,
    Merci à tous pour vos retours !

    Citation Envoyé par Mat.M Voir le message
    le problème pour créer un jeu n'est pas d'utiliser tel ou tel langage le problème c'est
    -la maitrise des mathématiques et de la géométrie et des transformations dans l'espace sur les matrices
    -les algorithmes pointus à mettre en oeuvre comme le pathfinding
    Je suis totalement conscient de ça, mais j'avoues que je me posais plus la question de "Après avoir finis le parcours scolaire du Java serait-il intéressant d'approfondir pour les jeux ?". Après pour être honnête je ne compte pas me lancer dans un projet ambitieux comme un moteur 3D. C'est plutôt dans un but d'apprentissage et rien d'autre. Savoir si c'est une bonne piste.

    J'espère avoir été compréhensible.
    Je vous remercie encore pour le temps que vous prenez pour me répondre.
    Sakeiru

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 128
    Points : 33 049
    Points
    33 049
    Billets dans le blog
    4
    Par défaut
    Pour créer un jeu, je miserais plus sur la rencontre C++ vs C#, en utilisant respectivement Unreal Engine ou Unity.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 252
    Points : 649
    Points
    649
    Par défaut
    Site, plaisir et références

    Le sujet a déjà été abordé quelques fois donc je te renvois aux discussions plus anciennes. Pour répondre directement à ta question il n'y a pas que l'aspect graphique à prendre en compte. Quelques biblios : jMonkey Engine, libGDX, les "wrappers" OpenGL… Je te renvois aussi aux articles du site évidemment et peut-être même qu'il y en a des spécialisés. Après de mémoire je me souviens plus de ceux sur Python niveau alternatives à C/C++…

    Sinon comme tu apprends autant te faire plaisir plutôt que de te projeter trop dans l'avenir. C'était mon cas quand j'ai débuté en Java et je n'ai pas regretté ! Rien qu'à l'époque créer une petite applet et s'amuser avec dans un navigateur c'était une révolution. Certes après il y a eu Flash et désormais on parle plus d'HTML5/CSS & Cie mais tes acquis te serviront avec n'importe quelle autre techno ! En plus un gros avantage c'est que de base on peut faire beaucoup comme mentionné précédemment : Interface graphique, manipuler des images…

    Niveau références tu en trouveras sur les sites des biblios mais une m'ayant marqué c'est un des Myst. Genre le 5e ou 6e épisode je sais plus trop ! Tout en 3D temps réel, le premier d'ailleurs je crois bien, et sur mon système ça ramait car à l'époque la machine virtuelle n'était pas aussi performante qu'aujourd'hui. Enfin je m'égare… Sinon ne pas oublier tous les projets libres comme FreeCol. Je cite ce dernier car sa jouabilité est gourmande en ressources, en terme de calcul statistiques notamment, même si ça reste en tour par tour. Dans les annuaires on trouve aussi beaucoup de clones (Tetris, Snake…) car on est nombreux à s'être posé les mêmes questions.

    Pour résumer, amuse-toi bien avec Java !!

    Nostalgie et Java vs. C++

    Citation Envoyé par jwar0 Voir le message
    mais aussi à cause d'un gros soucis de perf dans les début de Java, mais ça a bien changé
    Pour la séquence nostalgie "début des années 2000" je citerai aussi les problèmes de compatibilité sous MacOS. On m'avait reporté de gros plantages inexpliqués notamment ! La faute a une implémentation de la machine virtuelle négligée.

    Citation Envoyé par jwar0 Voir le message
    en C/C++ il te faut utiliser des composant tiers qui ne sont pas simple à intégrer quand tu débute.
    Je ne suis pas d'accord car avec méthodologie, en suivant un simple didacticiel par exemple, on parvient à tout faire sans difficulté et depuis C++11 coder est bien plus simple. De plus les EDIs peuvent complètement assister les allergiques au bidouillage d'inclusion et autres règles ésotériques de compilation. À fond dans la nostalgie… L'AppWizard de Visual C++ (3 ? 5 ?) ! Comment créer des interfaces basées sur MFC en quelques minutes. Je précise tout ça pour montrer qu'on peut jongler avec toutes ces technos sans se prendre la tête et en adoptant telle ou telle approche.

  10. #10
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 897
    Points : 219 630
    Points
    219 630
    Billets dans le blog
    125
    Par défaut
    Bonjour,

    Pour répondre à la question, je vous conseillerai LibGDX (bibliothèque JAVA pour le jeu).
    Maintenant pour le débat, je considère qu'aucun langage ne vous bloquera à faire des jeux. Il y a des exemples de jeux en JAVA, d'autres en C# (le framework XNA/Monogame ayant beaucoup aidé, car on peut citer pas mal de jeux indés récents l'utilisant), d'autres en Python et surtout le C++.
    Par contre pour faire votre choix, il faut définir votre objectif. Ici, vous semblez dire : "je veux m'améliorer en JAVA", du coup évidemment, ce sera le JAVA pour vous. En faisant un jeu, vous découvrirez de nouvelles problématiques, spécifiques à la programmation, spécifiques au langage, spécifiques à la programmation de jeux vidéo. Il ne faut pas en prendre peur, car c'est ainsi que l'on devient bon (grâce à l'expérience acquise à résoudre chaque problème).

    Maintenant, pourquoi souvent on parle de C++. Simplement car tous les grands jeux (et les moteurs) sont développés en C++ pour des raisons de performances (principalement). En effet, le C++ permet un accès plutôt bas niveau à la machine (gestion au petit oignon de la mémoire, pas d'interruption par un ramasse miettes...) et possiblement, pour des problèmes de portabilités : rare sont les consoles (et les constructeurs) qui permettent d'utiliser un autre langage que le C++.
    Il ne faut pas croire que le C++ n'est pas portable. Il est aisément portable, mais cela demande une certaine rigueur.

    Du côté des moteurs de jeux vidéo (codés en C++) certains permettent de faire du scripting (implémentation des comportements) soit de manière graphique (avec des jolis graphes (boites que l'on connecte ensembles)) soit avec un langage de programmation (C++, C#, Python). Ils sont à privilégié si (d'après moi) :
    • je veux faire un jeu et le finir (un truc vraiment jouable) ;
    • la programmation ne m'intéresse pas vraiment (pas l'objectif principal) ;
    • je veux m'amuser avec les concepts d'un jeux vidéo (gameplay, mise en place des éléments, des interactions, des mécanismes...)
    • je veux me concentrer que sur la création du jeu (ça rejoins le point précédent).


    J'espère ne rien avoir oublié .

  11. #11
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 897
    Points : 219 630
    Points
    219 630
    Billets dans le blog
    125
    Par défaut
    Et, tout récemment, un développeur (Priority Interrupt) vient de libérer le code source de son jeu (disponible sur Steam). C'est un jeu en JAVA avec LibGDX .

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Cité plus haut ^
    Inscrit en
    Janvier 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Cité plus haut ^
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2018
    Messages : 13
    Points : 27
    Points
    27
    Par défaut
    Bonjour/Bonsoir !
    Excusez moi pour un réponse si tardive. Je vous remercie énormément pour votre aide. Je suis encore un peu indécis mais pour l'instant je test un peu la librairie LibGDX. Pour la suite le temps me le dira. Si je passe sur du C++ je penses me tourner vers la librairie Cocos2D qui m'a l'air pas trop mal.
    Sur ce, je clos la discussion en cours en vous remerciant encore une fois d'avoir pris du temps pour me répondre.
    Sakeiru

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quelle API Java pour un jeu de plate forme 2D ?
    Par dawadam dans le forum API graphiques
    Réponses: 0
    Dernier message: 16/06/2011, 22h25
  2. Réponses: 4
    Dernier message: 30/03/2008, 22h32
  3. AVIS- Java pour jeu vidéo
    Par ouar dans le forum Multimédia
    Réponses: 2
    Dernier message: 16/03/2007, 16h56
  4. Jeu java pour portable
    Par shugarrr dans le forum Développement Mobile en Java
    Réponses: 1
    Dernier message: 04/03/2006, 01h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo