Java/OpenGL, un avenir ?

molgow

Membre expert
Club iGen
4 Janvier 2002
5 496
613
42
Suisse
Hello,

On m'a fait découvrir récemment le jeu Tribal Trouble. D'ailleurs, une news lui est consacrée cette semaine dans la MacGameZone.

Si j'en parle ici, c'est parce que sa conception est intéressante d'un point de vue développement. Il est écrit en Java/OpenGL. Il a donc le double avantage d'être multiplateforme et d'être tout de même très rapide, puisque utilisant l'accélération OpenGL.

Qu'est-ce que vous en pensez ? Est-ce que les jeux en Java/OpenGL ont de l'avenir ?
Si quelqu'un a plus d'infos sur cette technologie, des exemples ou tutoriaux pour faire du OpenGL avec Java, ça serait intéressant de les poster ici aussi !

A+,

Molgow
 
A mon avis, ça n'a pas d'avenir.

Java reste un peu trop lent.
Dans un jeu, il faut traiter les déplacements, les collisions, le son, etc.
Java est un peu trop lent et je vois mal comment utiliser un moteur physique récent.

Mais bon, l'initiative est bonne.

Sinon, j'aime bien Java, c'est un super langage qui fonctionne très bien, très consistant avec une bonne documentation. Mais son défaut est sa lenteur d'éxécution.
 
SuperCed a dit:
A mon avis, ça n'a pas d'avenir.

Que tu dises le contraire m'aurait étonné... ;)

As-tu testé le jeu dont je parles ? Car il est tout sauf lent !

Lorsque je demande si ça a un avenir, ce n'est pas pour le dernier first-person-shooter à la mode, mais il n'y a pas que ça comme jeu, il y a aussi des jeux qui nécessite moins de puissance de calcul.
 
molgow a dit:
Que tu dises le contraire m'aurait étonné... ;)

As-tu testé le jeu dont je parles ? Car il est tout sauf lent !

Lorsque je demande si ça a un avenir, ce n'est pas pour le dernier first-person-shooter à la mode, mais il n'y a pas que ça comme jeu, il y a aussi des jeux qui nécessite moins de puissance de calcul.

Ca a l'air prometteur, je l'ai essayé sur un G4 bi 2x1.25 c'est suffisamment rapide en ce qui concerne l'animation. Je trouve une legere latence aux reactions de la souris mais c'est minime.

Cordialement
 
molgow a dit:
Lorsque je demande si ça a un avenir, ce n'est pas pour le dernier first-person-shooter à la mode, mais il n'y a pas que ça comme jeu, il y a aussi des jeux qui nécessite moins de puissance de calcul.

Imo, pour de petits jeux comme Tribal Troubles, il n'y a pas de probleme, LWJGL est une technologie qui a de l'avenir même si elle demande beaucoup de ressources (un jeu de ce type en C/C++ devrait tourner sur des machines beaucoup moins puissantes que celles demandées par Tribal). J'espere meme voir arriver des jeux aux concept intéressant vu que du coté developpement c'est nettement moins complexe qu'avec C/C++. Les petits studios pourront se permettre de passer plus de temps sur le game design.

Mais comme le souligne SuperCed, si tu veux passer un cran au dessus, c'est non. Tribal Trouble propose une physique limité au maximum, une gestion des collisions assez grossiere (parfois les persos sont bloqués loin des objets ...), des textures toute petiotes et peu détaillées, quasi aucune gestion des effets de lumiere, etc ... Par contre, il a un gameplay qui change de ce que l'on voit habituellement dans les RTS.

@+

Guillaume
 
Mais c'est si lent que ça Java ?
Un de mes profs nous avait sorti des benchmark et il avait des perfs très proche ce celle du C++... ( pas moyen de remettre les mains dessus evidément :( )
Le problème de java était plustôt il me semblait qu'il un peu plus gourmand en rame de aprt la présence nécessaire de la JVM, et que si les librairies de bases pour faire de la 2D et de la 3D sont pratiques d'un moint de vue programmeur/feignasse, elles sont bien foireuses pour beaucoup d'autre chose...
J'ai jamais encore vu de comparatif objectif qui me montre la vrai lenteur de Java... J'aimerais bien en voir un d'ailleurs... Histoire d'être fixé...

Puis même, le duo opengl/Java permet de réaliser des applis en 3D plus que corrects très simplement et qui tourne plustôt bien... J'ai vu deux de mes condisciples réaliser un jeu de foot fonctionnel bien que simpliste graphiquement ( pas tant à cause d'un problème de perf mais plustôt à cause de l'absence de vrai graphiste dans leur équipe ) en plus ou moins deux mois de travail (en plus des cours donc ils n'y ont pas passé tant de temps que ça)...
Donc pour des programmeurs indépendants comme ceux de tribal trouble, et des "amateurs" ça me semble un duo plus que puissant.
 
Molgow, tu as tout à fait raison. pour des petits jeux, ça peut avoir un avenir, mais je n'en vois pas pour des jeux importants. On est donc tous d'accord.

Pour la vitesse de Java, j'ai fait un jeu il y a déjà quelques temps, c'est un jeu très simple avec un peu de 3D et une petite IA.
Il existe une version en Cocoa/C/ObjectiveC/OpenGL et une version en Swing/Java/Java3D.

Il suffit de comparer les 2 programmes qui sont similaires au niveau fonctionnement.

Tu te rendras vite compte que Java est quand meme beaucoup plus lent. Ca saute vraiment aux yeux sur Mac. Sur PC, je ne sais pas car il n'y a pas de version native Windows ou Linux.

Java3D est plus lent en affichage (Java3D vs OpenGL, normal, Java3D repose sur OpenGL), l'interface est moins réactive en Swing qu'en Cocoa, et finalement, l'IA aussi est plus lente (C contre Java).

Tu peux trouver le jeu sur mon site.

EDIT :
Finalement, je ne vois pas trop l'intérêt d'utiliser du Java à part peut être pour les temps de dev.
Mais sinon, l'intérêt du java réside surtout dans la compilation unique pour diverses plateformes.
Ici, il y a une version pour chaque OS (OpenGL oblige), donc on a l'inconvénient du java avec sa lenteur, et l'inconvénient du C avec une compilation par OS.
Je suis un peu déçu au final.

Java3D propose mieux : une seule compilation pour tous les OS.
Cependant, ce doit être encore plus lent. En fait, il s'agit dans ce jeu d'une solution un peu hybride.

Pour info, le C est portable à condition d'utiliser les bonnes lib.
 
SuperCed a dit:
Molgow, tu as tout à fait raison. pour des petits jeux, ça peut avoir un avenir, mais je n'en vois pas pour des jeux importants. On est donc tous d'accord.

Pour la vitesse de Java, j'ai fait un jeu il y a déjà quelques temps, c'est un jeu très simple avec un peu de 3D et une petite IA.
Il existe une version en Cocoa/C/ObjectiveC/OpenGL et une version en Swing/Java/Java3D.

Il suffit de comparer les 2 programmes qui sont similaires au niveau fonctionnement.

Tu te rendras vite compte que Java est quand meme beaucoup plus lent. Ca saute vraiment aux yeux sur Mac. Sur PC, je ne sais pas car il n'y a pas de version native Windows ou Linux.

J'avoue que j'ai l'impression que la jvm de Java sur mac est très lente. En tout cas dès qu'on fait appelle à Swing... Les applis ont bien le look de l'OS, ce qui n'est pas toujours la cas sous nunux ou windows, mais bon dieu c'est vachement lent et saccadé... Je veux bien croire que je code pas comme une dieu mais bon... Quand même...

Et heu... Il est où le site que je puisse tester ? :heu:

SuperCed a dit:
Java3D est plus lent en affichage (Java3D vs OpenGL, normal, Java3D repose sur OpenGL), l'interface est moins réactive en Swing qu'en Cocoa, et finalement, l'IA aussi est plus lente (C contre Java).

Moui... mais ton même jeu aurait pu être programmé avec Java/OpenGl sans passé par Java3D swing qui sont pas terribles-terribles d'après ce que je sais. La différence serait surement moindre. Il faudrait aussi tester les perfs de L'IA sur différents machines et OS...
Quoique je ne suis pas sur que ça puisse être considérer comme un vrai benchmark... Faudrait comparer le nombre d'opération à la seconde et ce genre de chose surement...

Mais comme tout le monde l'a dit ça me semble un bon choix pour des "petits jeux".. Garder l'efficacité et la simplicité de la programmation Java pour le métier et la "structure" et faire appelle à OpenGL pour te ce qui est graphique... C'est ce qu'on fait mes consdiciples et j'avoue avoir été impressioné par la fluidité du bouzin... ( même si effectivement c'est loin de Doom 3 leur appli ) Je vais essayer d'en joindre un, pour voir si ils comme il devaient le faire ils parlaient de le faire ils sont continué le développement de leur jeu... Histoire de pouvoir vous montrer...
 
Septa a dit:
Et heu... Il est où le site que je puisse tester ? :heu:
http://superced.dyndns.org/

Moui... mais ton même jeu aurait pu être programmé avec Java/OpenGl sans passé par Java3D swing qui sont pas terribles-terribles d'après ce que je sais. La différence serait surement moindre.
Je ne pouvais pas car le but de mon appli était d'etre réellement multiplateforme. J'entends par là que le meme programme devait fonctionner quelque soit l'OS, sans recompilation.
J'ai juste testé sur MacOS X et Windows 2000, mais je pense que ça doit également tourner sur les OS disposant de Java3D en général.

Il faudrait aussi tester les perfs de L'IA sur différents machines et OS...

Ok, ce serait sympa de faire ça.
Dans le mode difficile, l'IA prend un peu de temps, donc ce serait pas mal comme bench CPU et uniquement CPU car le traitement se fait sur des entiers.

Si ya du monde vraiment intéressé, peut être que je passerai le jeu en Open Source. A voir...