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 :

Le langage Java est-il adapté pour les jeux vidéo ? [Débat]


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Invité
    Invité(e)
    Par défaut Le langage Java est-il adapté pour les jeux vidéo ?
    Citation Envoyé par David R. Voir le message
    Comme dit neo, dans le domaine de la 3D et de la plupart des JV, c'est le C/C++.
    Le Java commence à s'ouvrir aux jeux vidéos, mais c'est pas encore ça pour plusieurs raisons :
    - Pas de plein écran en java.
    - Ca rame, donc pour afficher de la 3D temps réel un minimum complexe il faut une bonne machine.
    - Pour les jeux Java que j'ai testé, les entrées (clavier, souris) sont bien moins réactives qu'en C++; mais ça vient peut-être des jeux et non de la machine virtuelle Java.
    Par contre, le Java possède un grand avantage: c'est du pur objet et sans pointeurs donc si la conception est bonne la probabilité de trouver des bogues est moindre qu'en C++. Mais bon, ça dépends beaucoup des développeurs

    C'est pas vrai qu'il n'y a pas de plein écran en Java ni que c'est lent pour afficher de la 3D temps réel! Il y a JOGL

    Citation Envoyé par KillTran Voir le message
    Il faut conaitre un language
    C/C++ c'est plus rapide à l'exécution
    Visual Basic C'est plus simple à mettre en oueuvre

    aprés maitriser le DirectX ou/et l'openGL

    Et puis assurer en math
    Java peut être plus rapide à l'exécution, encore un préjugé.

    Citation Envoyé par mat.M Voir le message
    Professionnellement ou par plaisir ?? Parce que professionnellement , il n'ya qu'à voir la déroute de Kalisto .......
    Sinon incontestablement apprendre C/C++ voire même assembleur Pentium .
    Pour les amateurs de VB , prendre le SDK de Direct X , et faire des tests avec les exemples fournis avec , ceux VB et ceux C++. Les faire tourner et mesurer les performances.... y a pas photo je crois

    Ca fait belle lurette qu'on n'utilise plus d'assembleur pour programmer les jeux hormis sur les vieux shaders.

    Citation Envoyé par sebh Voir le message
    Bonjour tout le monde!!

    Pour Commencer, pour faire un jeu 3D il ne faut pas compter sur le java.
    Dis donc, super argumentation, ça vole haut.
    Dernière modification par LittleWhite ; 29/03/2012 à 22h55.

  2. #2
    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 gouessej Voir le message
    Java peut être plus rapide à l'exécution, encore un préjugé.
    non, ce n'est pas un préjugé... Java est nettement plus lent sur du calcul numerique haute performance, nottament par son incapacité à utilisé les dernière instruction processeur efficacement (les compilo C++ configuré en optim max on déjà du mal à les utiliser, alors un compilo JIT est encore moins à même de le faire...)
    de plus, Java se traine la lourdeur du JDK avec X niveau d'indirection pour chaque appel de fonction alors que le C++ permet un inlining bien plus performant (mais la, le problème viens plus du JDK que du langage en lui même. La situation est meilleure en JME)
    et sinon, on peut aussi parler de l'occupation mémoire des float3 en Java
    Citation Envoyé par gouessej Voir le message
    Ca fait belle lurette qu'on n'utilise plus d'assembleur pour programmer les jeux hormis sur les vieux shaders.
    et bien ca, c'est faux... Pour en avoir vu personnellement, je peut t'assurer qu'on utilise toujours de l'ASM à certains endroits critiques des moteurs de JV

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bafman Voir le message
    non, ce n'est pas un préjugé... Java est nettement plus lent sur du calcul numerique haute performance, nottament par son incapacité à utilisé les dernière instruction processeur efficacement (les compilo C++ configuré en optim max on déjà du mal à les utiliser, alors un compilo JIT est encore moins à même de le faire...)
    de plus, Java se traine la lourdeur du JDK avec X niveau d'indirection pour chaque appel de fonction alors que le C++ permet un inlining bien plus performant (mais la, le problème viens plus du JDK que du langage en lui même. La situation est meilleure en JME)
    et sinon, on peut aussi parler de l'occupation mémoire des float3 en Java

    et bien ca, c'est faux... Pour en avoir vu personnellement, je peut t'assurer qu'on utilise toujours de l'ASM à certains endroits critiques des moteurs de JV
    C'est faux. Java peut aller plus vite:
    http://www.kano.net/javabench/
    http://www-128.ibm.com/developerwork...vaUrbanLegends
    "allocation in modern JVMs is far faster than the best performing malloc implementations".

    De l'assembleur est encore présent à quelques endroits critiques certes mais ça reste anecdotique, l'époque où on écrivait les jeux entièrement en assembleur est révolu.

  4. #4
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 534
    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 534
    Points : 5 215
    Points
    5 215
    Par défaut
    Citation Envoyé par gouessej Voir le message
    C'est faux. Java peut aller plus vite:
    http://www.kano.net/javabench/
    ça montre juste que le mec ne sait pas programmer en c++

    Some of the C++ tests would not compile. I've never been very good at decoding GCC's error messages, so if I couldn't fix a test with a trivial modification, I didn't include it in my benchmarks.


    java c'est de l'interprété, il va donc se comporter différement selon l'implémentation de la machine virtuelle
    le c++ compilé c'est destiné à un processeur, ce n'est pas interprété mais exécuté directement, java ne pourra jamais se permettre d'être plus performant que le c++, au mieux il le battra dans certains domaines comme les allocations / désallocations mémoire mais c'est grâce à un gestionnaire mémoire (le garbage collector), écris en un en C++ (il en existe) et tu enterres java
    pour les appels de méthodes aussi, le principe d'empilage prend du temps cpu, c'est parfois mieux géré en java, mais faut pas en faire trop

    java est performant tant qu'on ne va pas saturer la machine virtuelle qui elle même consomme déjà de la resource (ram + cpu)
    si on arrive aux limites de celle-ci les perfs s'effondrent, faire du calcul ça va, faire un jeu qui demande de la resource CPU + RAM + Graphique ça commence à faire mal
    si java était plus performant que le c++ pourquoi aucun jeu commercial n'est écrit en java ?

  5. #5
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par shenron666 Voir le message
    java c'est de l'interprété, il va donc se comporter différement selon l'implémentation de la machine virtuelle
    Il faut savoir que java n'est pas que du pur interprété. Avec l'introduction de hotspot dans la machine virtuelle de Sun, les parties les plus souvent utilisées sont compilées en code natif et améliore pas mal les performances (évidemment, à la première exécution, faut un peu attendre que le code soit rodé). La machine virtuelle de Sun Java pourrait être grandement améliorée (dixit gorgonite qui avait travaillé sur des optimisations de la machine virtuelle qui battait largement la vm de sun)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par shenron666 Voir le message
    ça montre juste que le mec ne sait pas programmer en c++




    java c'est de l'interprété, il va donc se comporter différement selon l'implémentation de la machine virtuelle
    le c++ compilé c'est destiné à un processeur, ce n'est pas interprété mais exécuté directement, java ne pourra jamais se permettre d'être plus performant que le c++, au mieux il le battra dans certains domaines comme les allocations / désallocations mémoire mais c'est grâce à un gestionnaire mémoire (le garbage collector), écris en un en C++ (il en existe) et tu enterres java
    pour les appels de méthodes aussi, le principe d'empilage prend du temps cpu, c'est parfois mieux géré en java, mais faut pas en faire trop

    java est performant tant qu'on ne va pas saturer la machine virtuelle qui elle même consomme déjà de la resource (ram + cpu)
    si on arrive aux limites de celle-ci les perfs s'effondrent, faire du calcul ça va, faire un jeu qui demande de la resource CPU + RAM + Graphique ça commence à faire mal
    si java était plus performant que le c++ pourquoi aucun jeu commercial n'est écrit en java ?
    C'est complètement faux sinon Jake 2 n'arriverait pas à tourner plus vite que son équivalent en C++ sur certaines machines. Le milieu du jeu vidéo est très attaché à C/C++, c'est surtout ça, ils ont déjà accumulé beaucoup de sources, ils ont beaucoup investi là-dedans. Changer de technologie ne serait pas anodin mais ça se fait parfois. De plus, beaucoup de jeux vidéo commerciaux écrits en Java ne marquent pas en gros sur l'emballage "programmé en Java!!!!!!!!!!!!!!". Ils utilisent des machines virtuelles privées ou bien sont compilés, c'est le cas de "Commander: Europe at war". Des ingénieurs d'IBM qui eux programment plutôt bien en C++ ont déjà fait ce genre de benchmarks...

    Regarde ça :
    http://weblogs.java.net/blog/yensid/...ame_devel.html
    "And, in some cases the code is faster. JIT compilers can analyze runtime patterns and adjust compilations. Native compilers can't do that."

    Java tire partie d'optimisations dynamiques impossibles à mettre en place sans JVM, il ne se contente pas des optimisations statiques.

  7. #7
    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 gouessej Voir le message
    C'est complètement faux sinon Jake 2 n'arriverait pas à tourner plus vite que son équivalent en C++ sur certaines machines. Le milieu du jeu vidéo est très attaché à C/C++, c'est surtout ça, ils ont déjà accumulé beaucoup de sources, ils ont beaucoup investi là-dedans. Changer de technologie ne serait pas anodin mais ça se fait parfois. De plus, beaucoup de jeux vidéo commerciaux écrits en Java ne marquent pas en gros sur l'emballage "programmé en Java!!!!!!!!!!!!!!". Ils utilisent des machines virtuelles privées ou bien sont compilés, c'est le cas de "Commander: Europe at war". Des ingénieurs d'IBM qui eux programment plutôt bien en C++ ont déjà fait ce genre de benchmarks...

    Regarde ça :
    http://weblogs.java.net/blog/yensid/...ame_devel.html
    "And, in some cases the code is faster. JIT compilers can analyze runtime patterns and adjust compilations. Native compilers can't do that."

    Java tire partie d'optimisations dynamiques impossibles à mettre en place sans JVM, il ne se contente pas des optimisations statiques.
    ha, Jake 2, le marronnier qu'on nous ressort à chaque fois et qui compare les FPS d'un jeu dont l'archi et l'exe datent de 96/97 avec une archi bien plus récente... d'ailleurs, pour moi, la seule chose que prouve ce projet, c'est que java a bien 10 ans de retard sur le C
    sinon, citer le blog d'un mec qui bosse chez sun, ce n'est peut être pas la façon la plus objective d'argumenter... d'ailleurs, si la JVM peut faire des opti à la volé, elle est complètement incapable d'utiliser à bon escient les instruction SIMD et autres que certains compilo C++ réussissent à utiliser (insuffisament certe, mais déjà beaucoup plus que Java)
    Pour info, les essais de portage pure Java de bullet, le moteur physique open source utilisé par blender etaient 10 à 50 fois plus lents qu'en C++... donc utiliser ça dans un jeu

    Après, je ne dit pas que Java ne permet pas de faire de jeux, mais faire du AAA en Java, c'est encore loin d'être possible (et d'ailleurs, ce n'est pas l'objectif de ce langage)

  8. #8
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 534
    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 534
    Points : 5 215
    Points
    5 215
    Par défaut
    Citation Envoyé par gouessej Voir le message
    "And, in some cases the code is faster. JIT compilers can analyze runtime patterns and adjust compilations. Native compilers can't do that."

    Java tire partie d'optimisations dynamiques impossibles à mettre en place sans JVM, il ne se contente pas des optimisations statiques.
    c'est ce que je te disais, java peut-etre plus rapide dans certains cas grace à diverses optimisations et en évitant des goulots d'étranglements du code natif
    que les compilos natif ne soient pas capables de faire des optimisations dynamiques c'est une chose qui va tendre à disparaitre avec la nouvelle génération de compilateurs destinés aux massivement parrallèle (multiplication des cores toussa)

    mais de là à utiliser java dans un jeu commercial ce n'est pas une question de changement de technologie
    Citation Envoyé par gouessej Voir le message
    Le milieu du jeu vidéo est très attaché à C/C++, c'est surtout ça, ils ont déjà accumulé beaucoup de sources, ils ont beaucoup investi là-dedans.
    les jeux pour la xbox360 par exemple se codent principalement en C#, et le C# c'est un gros repompé de java en terme de programmation
    et puis dire qu'ils ont beaucoup investi là dedans c'est vrai, même qu'ils continuent d'investir beaucoup, mais c'est un peu décalé face à la réalité
    combien de fois pour un nouveau jeu ils repartent de zéro ?
    ou achètent un moteur tout fait en jav... euh non en C++, je me demande même s'il existe des moteurs de jeu en java (pas juste une api)

    aujourd'hui si tu veux utiliser java pour un jeu vidéo, faut t'accrocher et tout te taper à la main, tu as accès à l'accélération 3D avec java3D ou jogl mais... à ma connaissance ça s'arrête là

    en passant, vu que tu as l'air bien calé sur le java, si tu connais des bibliothèques pour le développement de jeu destinées au java fais le nous savoir, ça intéressera forcément du monde
    des programmeurs java qui n'ont pas envie de se mettre au C++ il y en a

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bafman Voir le message
    ha, Jake 2, le marronnier qu'on nous ressort à chaque fois et qui compare les FPS d'un jeu dont l'archi et l'exe datent de 96/97 avec une archi bien plus récente... d'ailleurs, pour moi, la seule chose que prouve ce projet, c'est que java a bien 10 ans de retard sur le C
    sinon, citer le blog d'un mec qui bosse chez sun, ce n'est peut être pas la façon la plus objective d'argumenter... d'ailleurs, si la JVM peut faire des opti à la volé, elle est complètement incapable d'utiliser à bon escient les instruction SIMD et autres que certains compilo C++ réussissent à utiliser (insuffisament certe, mais déjà beaucoup plus que Java)
    Pour info, les essais de portage pure Java de bullet, le moteur physique open source utilisé par blender etaient 10 à 50 fois plus lents qu'en C++... donc utiliser ça dans un jeu

    Après, je ne dit pas que Java ne permet pas de faire de jeux, mais faire du AAA en Java, c'est encore loin d'être possible (et d'ailleurs, ce n'est pas l'objectif de ce langage)

    Puff.... Ok tu veux jouer à ça? Cela aurait pu s'appeler Jake3 mais c'est plutôt "Undead Arena" : http://home.halden.net/tombr/squareh...uareheads.html


    Et toi quelles sont tes sources? Avant de critiquer les miennes, fais le ménage chez toi.

    De plus, il y a des gens qui codent mal en C++, il y a aussi des gens qui codent mal en Java, ça ne veut pas dire que Java est lent. bullet n'est pas le seul moteur physique qui existe à ce que je sache, JME contient un module appelé JME-Physics qui marche plutôt bien et ce n'est pas le seul.

    Enfin, le langage ne fait pas tout. J'avais lu l'an dernier un article là-dessus. Le choix des algorithmes et la façon de programmer ont plus de poids sur les performances que le langage de programmation en lui-même. Un ancien collègue devait programmer une IA pour un mini-jeu de stratégie, le choix du langage était libre à condition de respecter un protocole réseau. Il a pris Java, les autres ont pris C. Dans ce jeu, il devait se battre en duel avec chacun de ses camarades de classe tour à tour. Il a battu presque tout le monde non pas parce qu'il a pris Java au lieu de C mais parce qu'il n'a pas calculé l'arbre tout entier, il a calculé suffisamment de noeuds pour que ce soit efficace. A bon entendeur.



    "java a bien 10 ans de retard sur le C" tu balances ça comme ça, quasiment sans preuve, c'est pas constructif.

    Citation Envoyé par shenron666 Voir le message
    c'est ce que je te disais, java peut-etre plus rapide dans certains cas grace à diverses optimisations et en évitant des goulots d'étranglements du code natif
    que les compilos natif ne soient pas capables de faire des optimisations dynamiques c'est une chose qui va tendre à disparaitre avec la nouvelle génération de compilateurs destinés aux massivement parrallèle (multiplication des cores toussa)

    mais de là à utiliser java dans un jeu commercial ce n'est pas une question de changement de technologie

    les jeux pour la xbox360 par exemple se codent principalement en C#, et le C# c'est un gros repompé de java en terme de programmation
    et puis dire qu'ils ont beaucoup investi là dedans c'est vrai, même qu'ils continuent d'investir beaucoup, mais c'est un peu décalé face à la réalité
    combien de fois pour un nouveau jeu ils repartent de zéro ?
    ou achètent un moteur tout fait en jav... euh non en C++, je me demande même s'il existe des moteurs de jeu en java (pas juste une api)

    aujourd'hui si tu veux utiliser java pour un jeu vidéo, faut t'accrocher et tout te taper à la main, tu as accès à l'accélération 3D avec java3D ou jogl mais... à ma connaissance ça s'arrête là

    en passant, vu que tu as l'air bien calé sur le java, si tu connais des bibliothèques pour le développement de jeu destinées au java fais le nous savoir, ça intéressera forcément du monde
    des programmeurs java qui n'ont pas envie de se mettre au C++ il y en a
    Le hic c'est DirectX. En java, tu as deux "solutions" pour t'en servir :
    - une vieille version de visual J++ permettait d'utiliser DirectX
    - Java3D utilise Direct3D et DirectX mais ne t'y donne pas accès directement
    La majorité des jeux vidéo 3D sur PC utilisent DirectX, c'est une des raisons.

    Ta connaissance sur les jeux vidéo en Java est un peu limité, tu devrais passer un peu plus de temps sur www.javagaming.org. De plus, j'ai déjà cité quelques exemples de moteurs 3D donc tu ne dois pas tout te taper : JME, Aviatrix, Xith3D, JPCT, Irrlicht Engine (Java binding), Espresso3D, 3DzzD.....
    Dernière modification par shenron666 ; 30/05/2008 à 15h59.

  10. #10
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 534
    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 534
    Points : 5 215
    Points
    5 215
    Par défaut
    j'ai pas l'utilité de passer mon temps sur des site pour le java, je développe déjà en C++
    pour irrlicht, tu peux le retirer de ta liste, c'est du binding (tu le dis toi même )
    irrlicht est un moteur développé en C++
    pour le reste j'ai pas tout regardé mais ça peux etre intéressant pour ceux qui ne veulent pas se mettre à un autre langage que java
    ça permet de développer des démos voire des petits jeux

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par shenron666 Voir le message
    j'ai pas l'utilité de passer mon temps sur des site pour le java, je développe déjà en C++
    pour irrlicht, tu peux le retirer de ta liste, c'est du binding (tu le dis toi même )
    irrlicht est un moteur développé en C++
    pour le reste j'ai pas tout regardé mais ça peux etre intéressant pour ceux qui ne veulent pas se mettre à un autre langage que java
    ça permet de développer des démos voire des petits jeux
    Dans ce cas, si tu n'as pas le temps, ne va pas dire qu'il n'y a pas de moteur 3D en Java. De plus, faire un binding est parfois seulement une étape avant de réécrire le tout en Java. La GLU dans JOGL a été réécrite en Java pur bien que JOGL soit un binding d'OpenGL.

    C'est pas juste de dire qu'en gros, seuls ceux qui ne veulent pas faire autre chose que du Java s'en servent pour les jeux et justement, si tu connaissais mieux les développeurs de jeux vidéo en Java, tu saurais que par exemple, Bloodridge est loin d'être juste un petit jeu.

    Enfin, je ne comprends toujours pas beaucoup de gens ici veulent absolument nous faire croire qu'il n'y a que le C, le C# et le C++ qui sont adaptés pour faire de vrais jeux vidéo bien qu'il existe déjà quelques rares jeux vidéo commerciaux écrits partiellement voire totalement en Java. Pourquoi cet acharnement? Il y a d'autres voies viables, pas seulement Java d'ailleurs.

  12. #12
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 534
    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 534
    Points : 5 215
    Points
    5 215
    Par défaut
    Citation Envoyé par gouessej Voir le message
    Dans ce cas, si tu n'as pas le temps, ne va pas dire qu'il n'y a pas de moteur 3D en Java.
    je ne l'ai pas dit, j'ai dit que je n'en connaissait pas et je m'en remettais à toi pour nous faire part de tes connaissances à ce sujet

    De plus, faire un binding est parfois seulement une étape avant de réécrire le tout en Java. La GLU dans JOGL a été réécrite en Java pur bien que JOGL soit un binding d'OpenGL.
    un binding c'est pour pouvoir utiliser du code d'un langage dans un autre
    rarement "en attendant" de réécrire le code

    Enfin, je ne comprends toujours pas beaucoup de gens ici veulent absolument nous faire croire qu'il n'y a que le C, le C# et le C++ qui sont adaptés pour faire de vrais jeux vidéo bien qu'il existe déjà quelques rares jeux vidéo commerciaux écrits partiellement voire totalement en Java. Pourquoi cet acharnement? Il y a d'autres voies viables, pas seulement Java d'ailleurs.
    désolé mais c'est mon opinion et je la défend dans le cas où par vrai jeu vidéo j'entend un jeu destiné à se vendre dans le commerce
    faire un jeu vidéo en java n'est pas impossible ni très difficile voir plus facile qu'en c++ mais java a des limites dans ce domaine
    le c et le c++ sont bien plus proches de la machine, java est plus portable
    chaque langage a ses avantages et ses inconvénients

  13. #13
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par gouessej Voir le message
    Harold35 a le droit de dire que le FPS du siècle en Java c'est pas pour demain, là tu ne dis rien, et moi qui manifeste une opinion contraire, tu me dis que je suis casse bonbon??? Et où est ton objectivité? J'ai bien le droit de parler de jeux écrits en Java, on ne va pas donner que des exemples de jeux d'action écrits avec les technologies qui te plaisent. Apparemment, il suffit de parler de Java pour être accusé de pourrir les conversations, c'est injuste.
    Le fait est que le FPS du siècle en Java, c'est quand même pas pour demain

    Il n'y a qu'à voir l'état de l'art dans les moteurs C++ (Source Engine, CryEngine 2, ID Tech 5, Unreal Engine, ...) et le retard accumulé par la communauté Java (pas de bon bindings 3D, ça aide pas). Il faudra du temps pour que les FPS java concurrencent les FPS AAA - ça, c'est objectif.

    Ca n'empêche pas de voir que Java s'en sort très bien pour ce qui est du développement de jeux, y compris des FPS (ça aussi, c'est objectif).

    Maintenant, ça ne sert à rien de rester campé sur ses positions: trop de fanboyisme tue le fanboyisme(1). Ce n'est pas parce que Java n'est pas encore au niveau de C++ que Java est un mauvais langage, et qu'il faut le prendre comme une attaque personnelle. Ce n'est pas le cas - c'est juste uns constatation, basée sur l'état de l'art et sur l'état du marché.

    @harrold35: les finalités d'un langage généraliste, c'est large. En ce sens, Java et C++ ont les même finalités. La différence fondamentale entre les deux langage est liée aux contraintes techniques, qui ne sont pas les même du tout.

    Mais enfin je suis ouvert d'esprit et si on peut me donner un exemple définitif d'un jeu en 3d temps réel en java du niveau d'un farcry (c'est un jeu qui date un peu mais j'ai des exigence limitées) en terme de qualité et de vitesse et avec un moteur physique je révise mon jugement, pas de soucis.
    Again, trop de fanboyisme tue le fanboyisme. Farcry est un jeu qui date, mais qui se sert de technologies très récente. Il faut quand même une machine de bourrin pour le faire tourner - un simple PC avec 512 Mo de RAM et une carte Intel D3D9 ne suffira pas. Son développement a pris un temps fou, et il a dès le départ utilisé les possibilités offertes par le langage C++.

    Maintenant, cela veut-il dire que Java n'est pas capable d'en faire autant ? Bien sur que non. Ca veut juste dire que personne n'a envie de prendre le risque de faire un jeu triple A en se basant sur Java, parce qu'il faudrait re-développer toutes les couches bas niveau, et que les problèmes de performances typique des jeux combinée à la masse qui conspue la relative "lenteur" de Java font que le risque est trop grand pour simplement tenter l'aventure (au moins pour un studio pro). Surout si on ajoute à ça que le développement est fait sur plusieurs plateformes, et que sur certaines de ces plateformes les développeurs n'ont pas assez de recul sur les JVM (quand elle existent).

    Cependant, un peu de réflexion nous amène à la conclusion suivante:
    1) un jeu qui n'est pas CPU bound tournera probablement à la même vitesse, qu'il soit écrit en C++, Java ou C#. Ce type de jeu passe son temps à attendre la carte graphique. Nul besoin d'avoir Bac+36 pour comprendre que puisque le CPU n'est pas le facteur limitant, le langage et la techno utilisés n'ont pas d'effet sur le jeu lui-même.
    2) les tâches d'un jeu sont de plus en plus assistées par le hardware (rendu graphique, physique, ...). Donc on peut penser qu'on se dirige de plus en plus vers un monde de jeux GPU-bound (et non pas CPU-bound).
    3) de fait, il est possible d'imaginer dans le futur que le langage qui servira à l'écriture des jeux vidéo ne sera plus exclusivement le C++. On prends déjà cette route - Rappel: schyzoid (à sortir sur XBLA) est écrit en C#.
    4) en dehors de ça, la puissance des CPU augmente (exemple: le Cell de la PS3). En quoi est-ce difficile d'imaginer un jeu du type Farcry (avec la qualité de Farcry) tournant sur une JVM exploitant les possibilités de la PS3?

    Ceux qui se disent que Java n'a pas encore sa place dans le développement des jeux vidéos se trompent. En aout dernier, pendant la GCDC'07, j'ai interviewé Tarqüínio Teles pour Gamedev.net. Il me présentait son projet de MMO (Taikodom) utilisant des Datacenter IBM. La surprise: ces datacenters sont basées sur des rack Cell, et le programme serveur du MMO en question est écrit en Java. Pire, il tourne sur des machines virtuelles dans des environnements virtualisés - histoire d'en rajouter une couche. Ce qui n'empêche pas les modules du serveur d'être extrêmement compétitif en termes de temps de calcul. Ils gèrent la physique, l'IA des PNJ et le monde (bien plus vivant qu'un monde à la farcry). Le client est lui même en partie basé sur Java (bien que la partie sensible soit gérée par des modules C++).

    PS:
    Bien sur c'est de la 3D, mais depuis quake 2 je crois qu'il faut mesurer la distance qui a été parcouru au niveau des matériaux, des shaders, du nombre de poly affichable
    Depuis quand le langage utilisé a-t-il une influence quelconque sur le temps nécessaire à une carte graphique pour afficher des effets particuliers, basés sur des shaders ou un nombre de polygones élevés ?
    J'espére ne pas flooder, mais si on peut me demontrer objectivement (je précise) que java peut faire des applications niveau c++ je suis preneur pour ma culture personnelle.
    Pas sûr de trouver mais essayons quand même. Qualité et fonctionnalités sont là. Bien sûr ce n'est pas un jeu. Mais ça n'en reste pas moins qu'on peut faire des applications forte en Java.

    PPS:
    C'est curieux mais je ne vois pas beaucoup de moteurs open source en C#
    Cherche mieux.
    Il est vrai que XNA est relativement complet mais bon, c'est pour du full Windows...
    Et XBox360. Et Zune. 3 plateformes, c'est déjà pas si mal. Et ça ne prends pas en compte le développement en cours de Mono.Xna.

    --
    (1): notamment lorsque le fanboyisme en question s'abstient de toute utilisation d'un quelconque esprit critique. Il faut réfléchir des fois...

  14. #14
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 534
    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 534
    Points : 5 215
    Points
    5 215
    Par défaut
    Citation Envoyé par gouessej Voir le message
    si tu connaissais mieux les développeurs de jeux vidéo en Java, tu saurais que par exemple, Bloodridge est loin d'être juste un petit jeu.
    Bloodridge c'est ça ? http://www.hayles.demon.co.uk/bloodridge/

  15. #15
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 396
    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 396
    Points : 20 507
    Points
    20 507
    Par défaut
    Citation Envoyé par gouessej Voir le message
    Ca fait belle lurette qu'on n'utilise plus d'assembleur pour programmer les jeux hormis sur les vieux shaders.
    Si l'assembleur parfois est peut-être encore utilisé mais c'est vrai que c'est de moins en moins.

    Citation Envoyé par gouessej Voir le message
    je veux juste qu'on arrête de dire aux gens qu'il n'y a qu'une seule façon de programmer les jeux vidéo, qu'on nous ressorte à chaque fois le cocktail C++ + DirectX (donc du full Windows). Il y a plusieurs approches possibles, chacune a ses forces et ses faiblesses.
    Eh oui mais les boites de jeux ne peuvent pas se permettre d'autres alternatives.
    D'accord il ya Loki Games qui a fait des portage sous Linux avec SDL, mais si les éditeurs et boites de jeu préferrent C++ et Direct X c'est que d'une part Windows c'est 90% des OS installés dans le monde et que DX s'intégre parfaitement...
    Le vulgum pecum lui tout ce qu'il veut c'est que ça marche..
    j'ai installé un simulateur de vol Open Source tournant avec Open GL ça marche pas.
    Désolé je suis pas là pour des polémiques sans fin moi je me mets au niveau du joueur et je veux que ça marche..
    Pareil pour un jeu de stratégie Open Source y'a des tas de bricoles à installer c'est vraiment pénible..genre SDL machin lib bidule...
    Et ce jeu j'ai jamais réussi à le faire tourner même en recompilant..
    Et le Vulgum pecuum il n'a pas envie de se casser la tête avec ça

    Quant aux jeux Java commerciaux il doit bien y avoir des exceptions mais je doute qu'il y en ait beaucoup..

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 429
    Points
    429
    Par défaut
    Personnellement je pense qu'un jeu commercial en Java c'est possible, mais à condition que les graphismes ne soient pas la priorité. Toutefois, c'est quand même, pour beaucoup de gens, LE point important, alors je vois mal un gros éditeur s'y risquait.

    Il y a des jeux amateurs qui ont l'air assez sympa (exemples), et pas moches du tout (même si graphiquement ça n'a rien à voir avec un Crysis ou autre), qui pourraient très bien être commerciaux.

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    Eh oui mais les boites de jeux ne peuvent pas se permettre d'autres alternatives.
    D'accord il ya Loki Games qui a fait des portage sous Linux avec SDL, mais si les éditeurs et boites de jeu préferrent C++ et Direct X c'est que d'une part Windows c'est 90% des OS installés dans le monde et que DX s'intégre parfaitement...
    Le vulgum pecum lui tout ce qu'il veut c'est que ça marche..
    j'ai installé un simulateur de vol Open Source tournant avec Open GL ça marche pas.
    Désolé je suis pas là pour des polémiques sans fin moi je me mets au niveau du joueur et je veux que ça marche..
    Pareil pour un jeu de stratégie Open Source y'a des tas de bricoles à installer c'est vraiment pénible..genre SDL machin lib bidule...
    Et ce jeu j'ai jamais réussi à le faire tourner même en recompilant..
    Et le Vulgum pecuum il n'a pas envie de se casser la tête avec ça

    Quant aux jeux Java commerciaux il doit bien y avoir des exceptions mais je doute qu'il y en ait beaucoup..
    DirectX s'intègre parfaitement? Qu'est-ce que ça veut dire ça????? OpenGL marche très bien. 3D Studio Max et Maya utilisent OpenGL, où est le problème?

    Justement c'est intéressant que tu dises qu'il y a plein de trucs bidules machins à installer car c'est une critique que j'ai faite à pas mal de jeux open source sauf qu'il y a plus simple quand on développe en Java.
    Dernière modification par TanEk ; 22/07/2008 à 18h49. Motif: Suppression de la réponse à la remarque personnelle faite par Mat.M

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 21
    Points : 24
    Points
    24
    Par défaut
    les finalités d'un langage généraliste, c'est large. En ce sens, Java et C++ ont les même finalités. La différence fondamentale entre les deux langage est liée aux contraintes techniques, qui ne sont pas les même du tout.
    On est bien ok la dessus, java c++ et d'autre langage c'est pour faire des applications donc j'imagine qu'on peut dire qu'ils ont la même finalité. J'entendais finalité dans le sens de produit terminé. Et en fonction de l'application qu'on veut realiser et donc des contraintes techniques et de production que l'outils pose on choisira celui ci plutot que tel ou tel autre. Je sais qu'il y a des "puristes" pour qui il n'existe que le C++. Pour ma part le langage n'est pas determinant, ce qui importe c'est le produit final.

    Si je peux faire le projet que je souhaite, avec les fonctionnalité que je souhaite et avec le frame rate visé avec le langage tartampion avec 2 fois moins de temps qu'avec le C++. Pas de soucis le langage tartampion est adopté. Un bon jeu c'est pas un jeu fait en java ou en C++, c'est un bon jeu !

    Again, trop de fanboyisme tue le fanboyisme. Farcry est un jeu qui date, mais qui se sert de technologies très récente. Il faut quand même une machine de bourrin pour le faire tourner - un simple PC avec 512 Mo de RAM et une carte Intel D3D9 ne suffira pas. Son développement a pris un temps fou, et il a dès le départ utilisé les possibilités offertes par le langage C++.
    C'est précisément pour cette raison que j'avais cité farcry, parce que ce n'est pas un jeu récent mais qui en même temps fait appel à des technologies qui sont encore considérées comme nextgen. Le but n'était pas de faire du fanboyisme (j'aime bien le terme il est sympa, je l'ai decouvert sur ce forum), mais de donner une echelle commune de valeur, pour qu'on parle de la même chose. Je me voyais pas citer le dernier unreal.

    Et pour moi jake 2, quel que soit ses qualité ne me permet d'évaluer la valeur du java en matiere de 3d parce que même s'il tourne à 150 fps compte tenu de la 3D désuete je peux pas evaluer qu'elle est la part de puissance prise par le language et celle prise par l'affichage 3D. Alors que même avec une demo technologique qui se tienne un peu au niveau 3d, avec un frame rate correct je me dis le language ne plombe pas les performance et je me dis qu'il y a peut être quelque chose à faire en java...

    Depuis quand le langage utilisé a-t-il une influence quelconque sur le temps nécessaire à une carte graphique pour afficher des effets particuliers, basés sur des shaders ou un nombre de polygones élevés ?
    On est bien d'accord sur ce point, mais avec un langage on fait un moteur qui lui est déterminant sur le nombre de poly affichées, sur les procédures d'optimisation et donc sur le frame rate. Il est interessant de pouvoir comparer des choses comparables pour pouvoir déterminer quelle est la part de ressource prise par le language lui même. A mon avis par exemple pour faire tourner un cube en java ou en c++ le frame rate doit être sensiblement identique ce qui au final ne m'apprendra pas grand chose sur la puissance comparée de l'un et de l'autre.
    Ceci dit je suis bien d'accord j'ai pris un raccourcis pour exprimer mon idée

    1) un jeu qui n'est pas CPU bound tournera probablement à la même vitesse, qu'il soit écrit en C++, Java ou C#. Ce type de jeu passe son temps à attendre la carte graphique. Nul besoin d'avoir Bac+36 pour comprendre que puisque le CPU n'est pas le facteur limitant, le langage et la techno utilisés n'ont pas d'effet sur le jeu lui-même.
    2) les tâches d'un jeu sont de plus en plus assistées par le hardware (rendu graphique, physique, ...). Donc on peut penser qu'on se dirige de plus en plus vers un monde de jeux GPU-bound (et non pas CPU-bound).
    3) de fait, il est possible d'imaginer dans le futur que le langage qui servira à l'écriture des jeux vidéo ne sera plus exclusivement le C++. On prends déjà cette route - Rappel: schyzoid (à sortir sur XBLA) est écrit en C#.
    4) en dehors de ça, la puissance des CPU augmente (exemple: le Cell de la PS3). En quoi est-ce difficile d'imaginer un jeu du type Farcry (avec la qualité de Farcry) tournant sur une JVM exploitant les possibilités de la PS3?

    je suis totalement d'accord sur ces point, je pense que dans les années a venir la donne va changer, avec toujours plus de puissance sur les machines, il est fort probable que le gain de puissance qu'apporte le c++ deviendra négligeable au regard de la lourdeur du processus de production qu'il impose. Quand un producteur comprendra qu'il peut avoir sensiblement le même produit final en moins de temps, donc moins cher a produire (mais pas a vendre) il fera vite le tour de la question. Mais c'est sur c'est pas pour tout de suite.

    Et merci pour l'info sur Taikodom c'est une piste interessante. D'ailleurs Si je ne dis pas une bétise il me semble que le jeu Eve online qui tient bien la route n'a pas été developpé en c++ (j'ai oublié en quel langage) pour dire que c'est quand même possible. Pour call of juarez je serais étonné que ce soit du java, mais je pense que le débat serait clos sur le fait de pouvoir utiliser java pour un jeu avec les standard actuels.

  19. #19
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 396
    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 396
    Points : 20 507
    Points
    20 507
    Par défaut
    Citation Envoyé par harold35 Voir le message
    Je sais qu'il y a des "puristes" pour qui il n'existe que le C++. Pour ma part le langage n'est pas determinant, ce qui importe c'est le produit final.
    Cela fait des mois que je dis cela..pourtant on n'en voit pas beaucoup de produits finaux dont tu parles..

    A mon avis par exemple pour faire tourner un cube en java ou en c++ le frame rate doit être sensiblement identique ce qui au final ne m'apprendra pas grand chose sur la puissance comparée de l'un et de l'autre.
    Tout le monde sait faire tourner un cube en 3d peut importe que cela soit en Java ou C++ tout le monde fait des démos mais peu font des projets de jeu convaincants..
    un jeu c'est pas que afficher des meshes 3d il ya l'IA derrière , est-ce que Java est performant là dessus ?

    Citation Envoyé par harold35 Voir le message
    je suis totalement d'accord sur ces point, je pense que dans les années a venir la donne va changer, avec toujours plus de puissance sur les machines, il est fort probable que le gain de puissance qu'apporte le c++ deviendra négligeable au regard de la lourdeur du processus de production qu'il impose. .
    C'est un argument qui est sans cesse rabaché et comme tout le monde tu te trompes.
    De quelle puissance parles-tu ? Intel sort toujours des CPU bloqués à 3Ghz parce que technologiquement on ne peut pas faire des CPU plus puissants...

    Le problème c'est que les outils de développements et les OS deviennent (inutilement) lourdingues et avec des CPU dont les performances semblent faire du surplace, je ne vois pas comment la puissance des machines peut évoluer..

    Citation Envoyé par gouessej Voir le message
    DirectX s'intègre parfaitement? Qu'est-ce que ça veut dire ça????? OpenGL marche très bien. 3D Studio Max et Maya utilisent OpenGL, où est le problème?
    .
    Nom d'une pipe c'est pas possible.
    Je te dis et redis que sur mon portable pour faire tourner Flightgear pour ne pas le nommer y'avait rien à l'affichage.
    Pareil pour un projet de quelqu'un qui fréquente ce forum...
    Par contre pour des programmes commerciaux comme Vue d'Esprit oui cela fonctionne bien..

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 21
    Points : 24
    Points
    24
    Par défaut
    C'est un argument qui est sans cesse rabaché et comme tout le monde tu te trompes.
    De quelle puissance parles-tu ? Intel sort toujours des CPU bloqués à 3Ghz parce que technologiquement on ne peut pas faire des CPU plus puissants...
    J'ai bien conscience de ces limites, mais je ne pense pas que dans 10 ans on en soit encore au 3ghz, sauf erreur. Pour ma part le basculement du c++ vers d'autres langages pour des jeux commerciaux type triple A je ne l'envisage pas pour l'année prochaine. Mais c'est à mon avis une évolution cohérente.

    Par exemple le developpement de projet 3d temps réel de type jeux publicitaires se font de plus en plus avec des middlewares qui on leur propre langage, le c++ n'y est déja plus la régle. C'était impensable il y a quelque années. Je me trompe peut être en effet mais ce n'est pas inimaginable non plus que le C++ passe la main un jour dans l'industrie du jeu vidéo.

    Parce que le jeu vidéo n'a pour but de developper en c++, mais de faire des jeux qui se vendent et qui sont rentables.

    Donc je pense qu'il faut rester ouvert, se renseigner sur les évolutions dans telle ou telle direction pour avoir une vision d'ensemble de ce qui existe. A ce titre la discussion sur le java m'interesse et je ne demande qu'a avoir des éléments pour nourrir ma reflexion.

Discussions similaires

  1. Réponses: 39
    Dernier message: 13/07/2018, 04h48
  2. L’interview technique est-il adapté pour les recrutements ?
    Par Cedric Chevalier dans le forum Actualités
    Réponses: 103
    Dernier message: 08/07/2013, 09h38
  3. [Autre] HTML5 est-il adapté pour les jeux sur le Web ?
    Par Hinault Romaric dans le forum Publications (X)HTML et CSS
    Réponses: 42
    Dernier message: 22/01/2012, 12h17
  4. HTML5 est-il adapté pour les jeux sur le Web ?
    Par Hinault Romaric dans le forum Balisage (X)HTML et validation W3C
    Réponses: 42
    Dernier message: 22/01/2012, 12h17

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