mercredi 10 octobre 2012

Java et libgdx

Alors d'abord il faut clarifier les choses : j'ai déjà décidé depuis un moment de faire mon projet en Java.
Les avantages sont les suivants :
- il y a un système de GUI très connu, puissant, et facile à utiliser (Awt/Swing). Pratique pour développer des outils
- c'est multi plateformes
- multi plateformes, incluant Android
- la JVM est bien optimisée de nos jours, et nos machines plus puissantes que jamais. "Java c'est nul c'est lent" était vrai autrefois, maintenant c'est un mythe. Ca ne sera jamais aussi rapide que du code natif, mais il parait que c'en est plutôt proche maintenant.

Evidemment je n'ai pas choisi ça d'un seul coup. J'ai pesé le pour et le contre. J'ai fait pas mal de recherches pour voir quelles étaient les librairies qui valaient le coup. D'abord j'ai trouvé lwjgl, parce que OpenGL, en jeu vidéo indépendant, multi-plateformes ... c'est simplement la base! Je me suis amusé pas mal de temps avec, j'ai crée un début d'éditeur 3D en m'inspirant de Unity avec (j'en parlerai certainement dans un autre post).

Mais je me posais quand même la question... n'existe-t-il déjà pas des framework complets pour le jeu vidéo en Java? Ce lien dans le wiki de lwjgl en liste pas mal, voilà ceux que je n'ai pas choisi :
- JMonkeyEngine : paraît plutôt complet, mais ne m'a pas attiré parce qu'il y a beaucoup à apprendre et j'ai peur d'en être trop dépendant
- Ardor3D : payant
- Clyde : huh? pas de site? j'ai pas insisté
- jPCT : intéressant, mais la version Android est un portage, donc qui risque de ne pas rester à jour
- Xith3D : intéressant aussi, là j'avoue qu'il faudrait que je m'y intéresse de plus près
- Bonzai Engine : n'a pas l'air d'être très populaire, pas idéal pour le support
- Homura : intéressant mais ... forum? Android? tutos? pas trouvé

Ce qui nous amène à LibGDX. Supporte Android, html5, développement actif, forum vivant, des tutos, bref y'a tout ce qu'il faut.
En plus de ça, coder avec cette librairie ne donne pas du tout une impression de dépendance. Il y a plein de classes pour aider, qui servent de raccourci, et qui sont optimisés : par exemple Mesh, qui va automatiquement gérer un VBO, et Texture, qui gère lui même le pointeur OpenGL, et des fonctions comme bind() ou render() qui utilisent OpenGL. Mais dans tout les cas, on n'est pas obligé de l'utiliser. On a accès à OpenGL de toute façons, et si l'envie nous prend on peu décider de tout faire soi-même. Et ça, ça laisse un sentiment de liberté énorme! Qui plus est le code source est très accessible et bien documenté.

Voilà ce que j'ai pondu avec, juste pour me familiariser :


Télécharger
Télécharger les sources

Utilisez les flèches pour vous déplacer, maintenez clic droit pour regarder autour de vous, et clic gauche pour lancer une boule. Vous aurez besoin de Java pour le lancer. (extrayez-le et double-cliquez sur libgdxtest.jar)

Aucun commentaire:

Enregistrer un commentaire