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)

mercredi 3 octobre 2012

De nouveau en activité



Deux ans!

Wow! Deux ans que le blog n'a pas été actualisé.

Il m'est arrivé pas mal de trucs pendant ce temps là. D'abord, j'ai terminé ma deuxième année à Teesside. Ensuite, j'ai passé une année entière chez Blitz Games Studios en tant que programmeur C++. J'ai bossé sur le projet Puss In Boots.
Mon boulot a été de coder 90% des détections kinect, et d'autres trucs. C'était une expérience très enrichissante!
Ensuite, eh bien, j'ai commencé ma troisième année à Teesside. C'était pas aussi excitant que la deuxième.
Puis j'ai trouvé un travail, chez moi, à Toulouse. Un gros coup de chance si je puis dire! J'ai été accepté chez Levelup Studio, un des leaders d'applications pour smartphone Android (ils onf fait par exemple Beautiful Widget). J'ai travaillé sur un projet de jeu vidéo, parce que l'entreprise souhaite étendre son activité. Le jeu s'apelle PETI! Et il est sorti. Je vous conseille de regarder le trailer, il est bien sympatique.



Mon projet

Mais le contrat s'est terminé, et j'ai d'autres idées en tête. Je souhaite faire mon propre jeu indépendant! Donc depuis quelques mois, je suis libre, et je bosse sur mon projet. Là, j'en suis vraiment aux balbutiements. Je m'habitue à un nouveau train de vie pour pouvoir être bien productif. Je m'amuse à dessiner pour pouvoir être en mesure de m'occuper du coté artistique de mon jeu. Je commence à écrire, pour devenir bon en narration également. Mais surtout, le but est de me garder actif et motivé, car plus je crée, plus j'ai d'idées, et plus je suis confiant et efficace. Donc même en plus de ça, je compte essayer de composer des musiques et créer des jeux juste pour des concepts de gameplay. Ok, ok, pour l'instant ce ne sont que des mots. Mais c'est bien mon intention.

Mes intentions

Donc je prévoie de poster une note de blog au moins une fois par semaine. Les types de posts concerneront forcément la création de jeu vidéo, mais pas obligatoirement mon projet principal. Le but étant :
- d'être à jour (ça me forcera à être actif pour avoir quelque chose à montrer)
- d'attirer du monde (me faire connaître)
- paraître crédible (bon j'ai peur en ce qui concerne mes premiers dessins)
- obtenir une satisfaction personnelle :-)

A très bientôt!

samedi 4 septembre 2010

Dev d'un GTD

Depuis que j'ai décider de coder mon moteur de jeu, il m'arrive la même chose qu'avec beaucoup de projets : la motivation du début tombée, je n'y touche plus.

C'est un beau problème psychologique commun que j'ai là. Heureusement, il y a des solutions qui existent.
En parcourant le net avec des mots clef du genre "motivation" "procrastination", je suis tombé sur pas mal d'articles donnant des conseils visant personnes à tendances dépressives. De très bon conseils la plupart du temps, que j'applique souvent déjà depuis longtemps. Mais le conseil le plus intéressant et récurrent que j'ai pu trouver est celui d'utiliser une technique Getting Things Done (GTD).

Bon OK. Pour un geek comme moi le meilleur moyen d'appliquer ca est d'utiliser mon ordinateur. Et donc on tombe sur pas mal de logiciels, du genre Remember The Milk.
Problème: j'ai déjà utilisé ce logiciel et déjà tenté de résoudre mon problème avec. Ca n'a pas du tout marché. Le problème, c'est qu'il faut se fixer soi-même des dates limites. Généralement, les dates limites marchent bien avec moi. Sauf que la façon dont je les gère est celle d'utiliser le stress généré par l'approche de la date pour me motiver à bosser. Et je stresse car j'ai des ennuis si jamais je ne fait pas ce qui est à faire. Donc quand c'est moi qui me fixe une date limite, qui plus est sur un projet totalement personnel (le moteur 3D ici), la date n'a donc aucun sens et je finis par n'avoir rien fait.

Donc je me pose un instant pour réfléchir. Ce que je veux, ce n'est pas rendre quelque chose mais faire quelque chose. Donc avoir un système qui me dise de devoir faire telle ou telle tache tel ou tel jour. Un emplois du temps quoi.

Et si au final je ne fait pas la tache? Je n'ai pas envie que cette tâche soit reportée tout comme c'est le cas avec Remember The Milk. De plus, si elle reportée avec l'état "en retard" et qu'elle s'accumule avec toutes ses jumelles suivantes, tout cela perds encore de son sens et je finis par effacer toutes les taches et oublier le projet.

Donc je veux une tache récurrente, qui puisse être ratée, même complétée à un certain pourcentage. Voilà ce que ca a donné!


Code couleurs des tâches :
- Vert : pas à faire ce jour là
- Bleu : complétée à 100%
- Orange : entre 20% et 80%
- Rouge : en dessous de 20% (ratée)
- Cyan : A rapporter

On se rend compte que je n'ai pas beaucoup bossé sur le projet depuis longtemps ... Mais j'ai une bonne excuse, c'était justement pour programmer ce GTD.
En tout cas, le résultat est probant pour le ukulélé! J'ai énormément progressé cette semaine. Sauf que raconter ce détail sort du contexte du blog.