Java & OpenGL

Salut,

Je viens collecter des avis ! 

Je compte faire un jeu en openGL sous Java… J’aimerais donc des conseils du genre “Prends GL4Java comme plugin pour ton IDE” ou le contraire, ou “Ne programme pas en Java, et encore moins sous Win”

“Utilise GLUT”…
 
Enfin ce genre de trucs, car là c’est un peu le bordel vu le nombre de trucs qu’il y a sur le net.

Bref si vous avez des avis, des sites de tuto bien fait pour les n00bz de l’openGL assez pressés (cest un projet de developpement ds le cadre de mes études, on a pas des masses de tps), bref tout conseil est bienvenu !!

Merci à vous

Chato.

Si tu es pressé, utilise Java3D, c’est simple et efficace. Cependant, tu n’auras pas accès à des fonctions exotiques made in carte graphique dernière génération.

Mais Java3D a des tutoriaux complet et faciles.

Téléchargement et Doc

Doc

Note aussi que j’ai entendu beaucoup de bien de JOGL (qui lui permet de gérer les fonctionnalités avancées et serait rétro-compatible java3D à ce que j’ai lu). Mais là je peux pas t’aider car je ne l’ai jamais utilisé.

PS: Il me semble aussi que JOGL a été élu comme le successeur de Java3D et que ce dernier est abandonné au profit du premier…

EDIT: En fait, Java3D est passé en open source et devrait poursuivre son évolution…
Ce message a été édité par Sempai le 07/09/2004

Question : pourquoi tu veux forcément utiliser Java?
De base il existe pas de librairie OpenGL pour Java… Il en existe bien des portages comme JavaGL mais bon c’est pas top. Ca reste quand même beaucoup plus lent qu’un code écrit en C++ (ou C) avec la librairie OpenGL de base.

Sinon effectivement tu as Java3D mais dans ce cas c’est pas de l’OpenGL…

Je pense que le plus efficace serait d’utiliser la librairie Glut. Comme ça tu as un code portable (sur les systèmes qui ont la librairie Glut) et rapide.
En plus c’est une librairie simple à utiliser et tu trouves des milliers d’exemples et de tutoriaux sur le net.

Enfin… voilà ce n’est que mon avis et c’est clair que ça dépend beaucoup de tes besoins.

Explique-nous un peu plus ce que tu veux faire, ça aidera aussi pour savoir ce que tu devrais utiliser.

undefined de merde.

Bon, en résumé: tutos Open GL -> http://nehe.gamedev.net

Ce message a été édité par Twin le 08/09/2004
Ce message a été édité par Twin le 08/09/2004

Je te conseil d’aller voir ce site: http://grexengine.com/sections/externalgames/ section tech Il y a une liste des principaux framework pour faire de l’opengl ainsi que quelques scenegraph. Pour chaque élément il y des infos et des liens.

Ou sinon, si t’es sous win, tu peux toujours tenter CSGL (port de Glut pour le C#/.Net), voire carrement même Managed DirectX.

Note au passage, c’est gratos. Si t’as pas de visual studio sous la main, y’as toujours sharpdevelop (qui gere le managed directX comme un grand) et la SDK DX est dispo en dl (de plus de 200 Mo, je te l’accorde) avec tout plein d’exemples.

Pour moi, le java, faut pas trop vouloir sortir de la machine virtuelle pour taper dans le matos. Donc pour la 3D hardware, c’est a mon avis pas vraiment la bonne plateforme.

Juste pour contredire ce qui a deja ete dis, Java+OpenGL ca marche bien… Y’a juste a voir IL2 Sturmovik, programme en Java avec un rendu OpenGL pour s’en convaincre…

Merci a tous, sympa. Pour répondre à la question « qu’est-ce que je veux faire ? » A priori, on partirait sur un jeu de strategie basique, genre quelques unités sur un damier, possiblité d’affrontement, tour par tour, pas d’IA pas de reseau… Grosso modo cest ça, mais comme on est plus calé en Java qu’en C/Cpp bah, on pensait rester sur Java (surtt en voyant que les lib Glut & co fonctionnent bien…) On va donc partir sur du java, ca devrait rouler :confused: ^^ Au pire si on galere a installer les plugins et tout le toutim on passera sous C++ Merci bcp en tout cas pour les liens et les avis !

[quote]Juste pour contredire ce qui a deja ete dis, Java+OpenGL ca marche bien… Y’a juste a voir IL2 Sturmovik, programme en Java avec un rendu OpenGL pour s’en convaincre…[/quote]Pardon ?? IL2 en Java?? Tu peux citer tes sources s’il te plait? Sauf erreur, c’est du C++.

IL2 en Java? Mais Sun en aurait fait une pub énorme non?!?

Euh chateau_dur, sans vouloir paraître désobligeant, la règle de base en programmation, c’est que tu ne choisis pas pour un projet un langage parce que tu le connais, mais plutôt parce que c’est plus adapté. Bon je sais, il y a la contrainte temps, mais franchement, si tu tates en java, c++ va te paraître très simple (alors que le contraire n’est pas forcément vrai). Moi je ne conseil pas java du tout pour de la 3D, je sais,j’ai déjà donné pour un projet d’iut ou le langage était imposé Je suis passé par Java3D et mon dieu, c’était vraiment pas top (bon ensuite ça remonte à quelques années, peut être que c’est mieux maintenant).

Donc, moi je dis C++, avec bibli graphique que tu veux. SDL  est super sympa et simple d’utilisation paraît-il (pas encore testé). Je ne conseil pas DirectX si vous êtes pressés par le temps, car ce n’est pas forcément le plus simple même si au final perso je le trouve super puissant. Sinon donc openGL. Je n’ai pas codé grand chose avec mais j’en ai un bon souvenir. Pour un bon tut tu as nehe.gamedev.net, je sais il est déjà passé ce lien mais bon, ça vaut le coup de le redonner car il est vraiment top ce site   . Ou tout bêtement, pour toute info sur le game-developpment en général: 
gamedev 

Voilà voilà.

EDIT: si tu décides de faire de la 3D iso, je ne peux que conseiller ces deux livres: 3D ISo game programming et 2D in Direct 3D edités par Andre Lamothe.

EDIT 2 LE RETOUR: un autre très bon site, pas forcément orienté code : gamasutra
Ce message a été édité par BodySplash le 09/09/2004

D’après ce que je sais, le moteur d’IL2 est en c++ (ou c je sais pas) et toute la logique du jeu est en java. Le java fait des donc des appel au moteur en c(++) pour afficher.

[quote]D’après ce que je sais, le moteur d’IL2 est en c++ (ou c je sais pas) et toute la logique du jeu est en java. Le java fait des donc des appel au moteur en c(++) pour afficher.[/quote] +1. Le Java n’est pas utilisé pour le rendu graphique (ça se saurait…)

L’année dernière, nous avons nous aussi fait des project pour l’école, en 3D…
Un groupe a fait un casse-briques 3D sous Java3D => c’était mochissime, lent et ils ont galéré tout plein… Bref, perso je fuirais ce truc (j’ai bien dit « perso »)
Nous, on a fait une simulation de sabre laser (avec un capteur 3D et tout et tout) avec Ogre3D. On a galéré pour l’installer (mais en fait c’est vraiment tout con! je peux t’expliquer ca en moins de deux minutes maintenant) et pour se mettre au C++, mais le résultat était beaucoup beaucoup mieux. C’est sur, Ogre3D, c’est pas de la prog OpenGL, mais ca peut l’utiliser… Et puis le C++, c’est pas si dur que ça, la preuve : j’y suis arrivé!! :wink:

Donc, j’aurais tendance à te le conseiller. Et si tu veux, je peux même te filer pas mal de tuyaux pour bien commencer et pas perdre le temps qu’on a perdu nous…

Si tu veux des infos, n’hésite pas

[quote]L’année dernière, nous avons nous aussi fait des project pour l’école, en 3D…
Un groupe a fait un casse-briques 3D sous Java3D => c’était mochissime, lent et ils ont galéré tout plein… Bref, perso je fuirais ce truc (j’ai bien dit “perso”)
C’est subjectif tout ça… S’ils ont codé leur casse-briques avec les pieds aussi… C’est pas tout d’avoir de bons (ou mauvais) outils, il faut aussi savoir s’en servir.
Faudrait p’têt demander à Carmack de nous coder le moteur de Doom3 en Java3D…

Donc, j’aurais tendance à te le conseiller. Et si tu veux, je peux même te filer pas mal de tuyaux pour bien commencer et pas perdre le temps qu’on a perdu nous…[/quote]Vive le C++ c’est clair !

[quote][quote]D’après ce que je sais, le moteur d’IL2 est en c++ (ou c je sais pas) et toute la logique du jeu est en java. Le java fait des donc des appel au moteur en c(++) pour afficher.[/quote]+1. Le Java n’est pas utilisé pour le rendu graphique (ça se saurait…)

[/quote]Perso si quelqu’un pouvait m’expliquer la logique de la chose ça me ferait bien plaisir!
J’aime java, pas de problèmes, donc qu’on ne m’accuse pas de trolls par la suite
Donc je disais que je comprenais pas l’intérêt de faire la logique du jeu en Java. Parce que bon là on parle de jeu-vidéo, ou les perfs doivent être au top, et aux dernières nouvelles, Java n’est pas encore au top à ce niveau là… Ok avec java on fait du code plus propre et le garbage collector est là pour nous éviter les ennuis, mais on peut faire pareil en C++ en se forçant juste un peu à être propre, et pour des perfs que  je trouve toujours meilleures. Enfin techniquement, Java et ses prog compilés pour machine virtuelle restera virtuellement (si j’ose dire) toujours moins puissant qu’un code compilé tout court non?

Ca me parait fumeux, donc à limite, si vous aviez des liens pour expliquer le pourquoi du comment…

Et désolé pour la dérive de thread.

Ce message a été édité par BodySplash le 09/09/2004

° IL-2 Sturmovik (2001) by Maddox Games: Uses dirty Java by mixing Java with C++, such that logic and part of the game engine is in Java but all the graphics are in C++. This game has gotten very good reviews.
Trouvé ici: JavaGaming
On dirait que Vampire: The Masquarade aussi…
Extrait de chez Gamasutra:

300,000 for game, 66,000 lines of Java for scripts
Vala, bon ça n’en dit pas plus mais pour l’aspect technique je serai assez intéressé

Attention vous êtes entrain de comparer de l’opengl/c++ et java3d/java, ca n’a RIEN a voir! java3d est un scenegraph abandonné depuis des années que vous proposez est une techno en hardware de “bas niveau”. Il y a bien evidemment moyen de faire de l’opengl en java (cf le lien que j’ai donné avant).
Ce message a été édité par monkeyget le 09/09/2004
edit: connerie corrigée, java3d ést donc quand même acceleré (reste que c’est quand même pas terrible par rapport aux autres alternatives en java)
Ce message a été édité par monkeyget le 09/09/2004

[quote]° IL-2 Sturmovik (2001) by Maddox Games: Uses dirty Java by mixing Java with C++, such that logic and part of the game engine is in Java but all the graphics are in C++. This game has gotten very good reviews.
Trouvé ici: JavaGaming
On dirait que Vampire: The Masquarade aussi…
Extrait de chez Gamasutra:

300,000 for game, 66,000 lines of Java for scripts
Vala, bon ça n’en dit pas plus mais pour l’aspect technique je serai assez intéressé [/quote]

pour les details moi je vois un truc tout con genre une archi client serveur
le serveur est en java et le client en c++ fait les graphisme et le tout fonctionne en local …
c’est peut etre pas si con d’ailleurs comme mode de pensée :stuck_out_tongue:

[quote]Attention vous êtes entrain de comparer de l’opengl/c++ et java3d/java, ca n’a RIEN a voir! java3d est un scenegraph abandonné depuis des années qui tourne en software pure alors que ce que vous proposez est une techno en hardware de “bas niveau”. Il y a bien evidemment moyen de faire de l’opengl en java (cf le lien que j’ai donné avant).
Ce message a été édité par monkeyget le 09/09/2004[/quote] Juste pour dire que Java3D est une interface entre java et OpenGL/DirectX (selon version). Donc, c’est aussi de la 3D hardware puisque ca s’appuie sur une API hardware.

Quand au performances de Java par rapport à C++, j’ai un ami qui était chargé d’optimiser le byte code de java pour son travail de fin d’étude, et il avait trouvé des études qui démontraient que la “lenteur” de Java par rapport à C++ était en train de se réduire fortement (au point même de rejoindre les même perfs dans certains cas).

Puis, il y a aussi moyen de coder des fonction en C++ au beau milieu du code Java, il faut utiliser la JNI (Java Native Interface) pour ça. On peut par exemple coder les fonctions très demandantes en puissance en C++ et profiter des avantages de Java pour le reste. Ou encore d’avoir un code Java multiplatforme avec quelques libraires C++ dépendantes de la plateforme, mais il suffit d’avoir une version de la librairie C++ par plateforme visée.