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

Développement 2D, 3D et Jeux Discussion :

OpenGL : java/c++


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 90
    Points : 40
    Points
    40
    Par défaut OpenGL : java/c++
    Bonjour à tous,

    j'ai été très pris ces derniers temps : nouveaux job depuis 2 mois.
    Je suis passé au Java et je découvre ces derniers temps la possiblité de faire de l'openGL avec le Java.

    Ma question est vis à vis de l'interet d'une telle idée. Le couple OpenGL/Java est-il viable ? Au dela du coté gadget peut-on reellement esperer obtenir un jeux digne de ce nom avec Java ?

    J'ai commencé a regardé du coté du jsr-231 (jogl) comme indiqué dans un post précédent mais tout cela ne me semble pas très réactif.

    j'ai également parcouru les différents forum ou article sur le sujet mais aucune comparaison ou mention n'a été faite sur les perfs reelles !!

    Donc Java/OpenGL Utile ou pas ?
    C++ a-t-il encore un interet du coup ?

  2. #2
    Membre averti Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Points : 358
    Points
    358
    Par défaut
    C'est pas un débat, ça ....

    Java / openGL c'est eventuellement utile si tu cherche a faire des petits jeux genre jeux en flash, mais en 3D.

    Apres, si tu cherche a faire des vrais jeux, oublie java.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    En fait new.proger, je me suis retrouvé un peu dans la même situation que toi.
    Fan de C++ et d'OpenGL j'ai du pour des raison professionnelles il y a un bon moment passé a JAVA.

    Au début j’étais contre à 200% et au final je trouve certaines commodités dans ce langages.

    J'ai donc décidé cette été d'entreprendre des recherches sur les résultats Java/OpenGL mais j'ai rien trouvé de concluant.

    J'ai donc pris mes 2 mains (dont une gauche ) et mon clavier et je m'y suis mi. Pour le moment je suis déçu de Java3D. LWGL je n’aime pas par contre Jogl a un coté objet sympa (je pense même m'inspirer de certain truc pour ma bibliothèque perso).

    Mais bon pour le moment les perfs ne sont pas vraiment au rendez-vous, je ne suis pas un monstre de Java (ni de C++ d'ailleurs) mais l'ensemble de fait pas preuve d'une grande réactivité.

    Maintenant Jogl n'en est encore qu'a l'étape de JSR (231) et donc a peu de chose prêt de beta.

    Je pense que des avis plus expert (mais objectif) serait intéressant car aujourd'hui tout le monde veut faire son jeu et le JAVA reste tout de même plus accessible au débutant.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Java c'est des la base pas concu pour les appli tres performantes, mais plutot pour du code souple, reutilisable et maintenable.

    C'est donc une excellente solution pour un petit jeux. Mais si tu compte avoir de grosses perfs oublie.

    En effet, il y a plusioeurs choses qui font que ca ne sera jamais aussi rapide que du C++. Je m'explique (mais il faut deja connaitre C++, et un peu de bas niveau pour comprendre).

    En java, toutes tes fonctions sont virtuelles. Ca a un coté pratique, mais ca ralentis l'execution. En effet, une fonction virtuelle creer un branchcment indirect (on attaque la comprehension du processeur), qui difficilement previsible par la prediction de branchement, et conduit dans la plupars des cas a une rupture de pipeline + un acces memoire pour aller cherche le nouveau code. Au final minimum 40 cycles de perdus . . .

    Coté gestion de la memoire, elle marche via un systeme de compteur de reference (comme les pointeurs intelligents en gros). le probleme c'est que ces compteurs doivent etre thread safe, et donc declenchent des synchro et des barrieres memoires. Ici aussi, beaucoups de temps est perdu.

    Enfin, le fait d'utiliser un SDK tres fournis a un coté tres pratique mais il a son revers : Il faut charger ce SDK en memoire, ce qui fait qu'un simple hello world prendre a lui seul 50Mo de memoire. Ceci a plusieurs effets pervers : des caches crash (sauf si ton cache processeur fait plus de 50Mo ce qui m'ettonerais fort), et deux, les branchement provoqués par 50Mo de code vont grandement diminuer l'efficacité de l'unité de prediction de brachement, enfin ca prend de la bande passante memoire.

    Bon, ceci n'est qu'un bref appercu, et il y aurait pas mal d'autres choses a dire, mais il faut garder en tete que java a pas ete concu pour faire des applis performantes. ca n'en fait pas un mauvais langage (il est portable, peut etre devellopé rapidement, donc gain financier, le code est reutilisable, maintenable, et exempt de la majeur partie des bugs courrants, buffer overflow, fuite de memoire).

    En resumé : oui pour des jeux ne demandant pas trop de ressources, non pour les autres.

  5. #5
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    Tribal Trouble
    Un jeu commercial en 3d fait en java...

  6. #6
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    Citation Envoyé par luckyvae Voir le message
    Tribal Trouble
    Un jeu commercial en 3d fait en java...
    ha bah ca donne envie de faire des jeux en Java

    plus serieusement, on peut tout a fait faire des jeux en Java, il faut juste avoir à l'esprit qu'on ne peut pas faire toutes les optimisations bas niveau nécessaires à la réalisation d'un jeu au top de la technique. Il suffit de voir qu'ils ont mis 10 ans pour arriver au niveau de performance de quake 2
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    Tres bien je vois que tout le monde est a peu pret d'accord (c'est rare !!) Java peut faire de la 3D mais il n'a pas été pensé et concu pour ... donc pour les perfs c'est pas encore ca.

  8. #8
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2005
    Messages : 263
    Points : 255
    Points
    255
    Par défaut
    Citation Envoyé par bafman
    ha bah ca donne envie de faire des jeux en Java
    C'est sur que c'est pas du niveau graphique au futur jeu d'ID, mais c'était pour montrer qu'il y a moyen de faire des choses en java


    Après, niveau performance, il y a moyen d'avoir de meilleure performance si on ne code pas comme un pied. Parce que c'est pas parce qu'on doit pas gérer la mémoire qu'il ne faut pas y faire attention. ( Il y a de très bons articles dans la section tuto java du site)
    Un exemple: quelqu'un avait créé une pile à l'aide d'un tableau. Lors des pop(), il ne remplaçait pas l'élément par null. Donc cet élément restait référencé, et donc, pas pris par le garbage collector si c'était nécessaire. Mais la personne n'y avait pas pensé

    Je ne nie pas que java est plus lent que C ou C++, mais en faisant attention à ce qu'on fait, on peut avoir de moins mauvaises performances

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Points : 432
    Points
    432
    Par défaut
    J'ai lu une news qui parlait de chrome un fps , la société techland qui le gère à reçu un prix pour java de la part de sun. Pas certain que ce soit le jeu qui soit entierement en java. Ils utilisent directx c'est ca qui me titille.
    Leur moteur a permis de developper chrome + un add-on , et la chrome 2 est en developpement . Les graphiques ont l'air tres classe ils utilisent directx 10.

    En tous cas de nombreux tests montrent que le langage java est presque à égaliter avec c++.

    Ce qui est sur c'est que le développement de projet en java permet un gain de temps énorme. Java à la meilleur productivité de tous les langages.Dû à sa simplicité , sa documentation , sa communauté trés vaste et ces outils de développement extrêment performant open source(eclipse, netbeans).

    Les bindings openGL JOGl/LWGl permettent de développer avec opengl des jeux de trés bonne qualité visuel , et ca permet de toucher directement toutes les plateformes(linux,mac,windows) sans meme modifier ou recompiler le code comme dans d'autes langages.

    Je pense que ce qui pousse les gros studios de dev à toujours utiliser c++ , c'est que ca fait des années qu'ils travaillent avec ce langage. Et le compilateur leur permet de faire de trés grosses optimisations , il est plus simple d'otimiser les algos qui prennent bcp de ressources avec des portions de c / assembleur.

  10. #10
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    je suis pas sure que C++/JAVA soit a égalmité sur tous les fronts.

    dans le cas des acces graphiques, en l'occurence OGL, en appliquant des texture bases sur des cubes en mouvement on remarque deja un manque de reactivité qui n'est pas present en C++.

    Dans le cas des jeux je reste assez désireux de concret or c'est dur ... même dans les projet amateurs, rien de concluant

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Points : 432
    Points
    432
    Par défaut
    http://www.nofrag.com/2004/jul/01/12568/

    La news , sous réserve que ce soit bien le jeu lui même qui soit en java.

    chrome dont la news parle:
    http://www.jeuxvideo.fr/fiche-chrome-511-0-0.html

    La suite de chrome
    http://www.jeuxvideo.fr/fiche-chrome...-1612-0-0.html

    chrome 2 en developpement , les graphiques sont réellement impressionant
    http://www.clubic.com/actualite-3792...-techland.html

  12. #12
    Membre averti Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Points : 358
    Points
    358
    Par défaut
    Edit : j'etais en train de casser tout ce que tu as dit dans tes posts, mais en fait je suis parti sur le site des mecs qui ont fait Chrome, et donc je vais me contenter de te dire juste une chose :

    Chrome Engine, c'est du c++.
    Chrome, c'est du c++.
    Chrome 2, call of juarez, pareil.


    Je sais pas où t'a vu que c'etait du java, mais je peux te dire, tu verra jamais une qualité pareil en Java, quoi que tu en pense.

    Re-Edit :

    HAHAHAHAHAHAHA.

    J'ai enfin trouvé d'ou ça vient.

    Chrome engine, effectivement codé en C++, utilise le Java en tant que ... language de script pour l'ia et les interactions ....... >.<

    Remarque effectivement, c'est sympa en tant que script, le java ....

  13. #13
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    Citation Envoyé par Kujara Voir le message
    Je sais pas où t'a vu que c'etait du java, mais je peux te dire, tu verra jamais une qualité pareil en Java, quoi que tu en pense.
    Je te trouve un peu dur la, car même si JAVA n'est le plus réactif, la qualité d'affichage ne rentre pas en compte dans ce domaine.
    Au pire c'est lent.

    Maintenant c'est vrai que pour avoir testé pendant un bon moment JOGL j'ai pas trouvé ca tres performant !! mais bon je reconnais ne pas connaitre toutes les subtilité du truc.

    Malgres tout, pour une appli 3D digne de ce nom, JAVA reste encore en retrait.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Points : 432
    Points
    432
    Par défaut
    Effectivement j'etais pas sur que ce soit du java étant donné qu'ils utilisaient directx ca me semblait bizar.

    Mais la news de nofrag était pas trés clair ...

    J'ai regardé sur leur site et pas trouvé sous quel langage était programmé leur moteur.

    Sinon ici ta une video des possibilités du moteur JMonkeyEngine entièrement en java et qui utilise un biding openGL (LWJGL):

    http://www.jmonkeyengine.com/

    Tu pourras remarquer que c'est bien de la 3D et que c'est plus poussé que des jeux flashs.

    C'est sur le moteur et les jeux en dev sont trés loin d'égaliser avec les grosses productions du jeux video professionnels ( HL2 moteur de valve , UT3 unreal engine , crysis crytek engine)

    Mais faut voir que se sont pas de véritables equipes professionnelles , les outils sont bcp plus jeunes .

    Sinon il ya jake2 , c'est une copie de quake 2 mais porté en java. Bon c'est sur quake 2 ca date ^^^

    Mais je reste persuadé qu'il est possible de dévélopper des jeux "pros" en java et avec une excelente qualité graphique sans que ca tourne à 2 fps.

  15. #15
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 36
    Points : 28
    Points
    28
    Par défaut
    Java ces pas le top pour faire les jeux

  16. #16
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    en java tu fais les mêmes choses qu'en C++ avec :
    - potentiellement moins de resources nécessaires au développement (encore que...)
    - plus de resources nécessaires au fonctionnement du programme pour une réactivité égale ( )

    et graphiquement on peut obtenir le même résultat
    on a également accès aux shaders GLSL avec Java
    pas plus de limitation
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  17. #17
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 249
    Points : 349
    Points
    349
    Par défaut
    Si je me trompe pas, l'utilisation de java pour les jeux est courante dans le domaine des jeux pour téléphones mobiles non? Enfin du coup ce n'est plus trop le meme registre.

  18. #18
    Membre averti Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Points : 358
    Points
    358
    Par défaut
    Citation Envoyé par kremvax Voir le message
    Si je me trompe pas, l'utilisation de java pour les jeux est courante dans le domaine des jeux pour téléphones mobiles non? Enfin du coup ce n'est plus trop le meme registre.
    Uniquement dans le cas où l'os du telephone est en java, car dans ce cas c'est beaucoup plus simple.

    Certains autres portables sont en c/c++, fournis avec une SDK dans ces languages, donc bon....

  19. #19
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Citation Envoyé par Kujara Voir le message
    Uniquement dans le cas où l'os du telephone est en java, car dans ce cas c'est beaucoup plus simple. Certains autres portables sont en c/c++, fournis avec une SDK dans ces languages, donc bon....
    Pour préciser: les téléphones qui arrivent à faire tourner des applis Java n'y arrivent pas parce que l'OS lui même qui est en Java, mais parce que le téléphone intègre une machine virtuelle java (JVM ou plutôt KVM).

    C'est en fait exactement la même chose que sur un PC : l'OS n'est pas en java (Windows, linux, ...) mais il a une JVM qui permet de faire tourner des programmes en Java.

    De même pour le C++ : ça correspond uniquement au SDK qui est fourni par le fabricant de l'OS (Symbian notamment).

    Java est (très) courant dans les téléphones portables car c'est quasiment le seul langage assez répandu dans les téléphones. Donc plus le langage est répandu, plus les éditeurs de logiciels choisissent Java, donc plus les constructeurs incluent Java dans leurs téléphones, donc plus Java est répandu, etc...

    Quand aux capacités de Java pour mobiles (J2ME), on ne peut pas décemment les comparer avec celles de Java pour ordinateur (J2SE). A part la syntaxe qui est la même, les possibilités de J2ME sont infiniment plus réduites.

    Voilà. Juste une (toute) petite précision.
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  20. #20
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    Une autre précision, aprés avoir persévéré avec jogl je me rend compte que l'on peut faire des trucs interessant.

    en y réflecgissant bien C# le permet alors pourquoi pas java ...

    je serais tenté par d'autre avis sur la question (retour d'expérience, projet entamés, ...)

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/10/2010, 04h19
  2. OpenGL en java...
    Par just1980 dans le forum OpenGL
    Réponses: 2
    Dernier message: 09/05/2005, 20h42
  3. comment utiliser de l'OpenGL avec du Java ?
    Par DjiZ dans le forum OpenGL
    Réponses: 3
    Dernier message: 14/01/2004, 15h21

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