Desiderata (raté?)

Ce premier article sert d’introduction à un ensemble d’autres articles destiné à raconter mes rocambolesque pérégrinations qui s’étaleront sur la période 2018-2019, autour d’un projet :
[_] un peu fou*
[_] trop ambitieux*
[_] complètement inutile donc indispensable*

Je vais essayer de publier régulièrement au cour de cette aventure.

*cochez la case utile

IMG_20170226_161513.jpg

Tentation ? Hésitation. Décision !

Les choix à faire ne sont pas évident. Pour finir un projet multiple, il faut parfois passer par la simplification. Ou les desiderata d’un processus créatif, hâtif et actif.

Voilà plus de 2 mois que j’ai commencé mon projet, qui lui même résulte de la fusion de plusieurs projets lancés, puis abandonnés, puis repris, puis laissés en jachère. En effet, il est parfois sage d’attendre l’inspiration, plutôt que de fournir des choses, non pas parfaites, mais non abouties. Aussi, le projet du livre et des tutoriels étaient à l’origine 2 sujets séparés. Les voilà maintenant réunis.

Ecrire un livre

J’avais il y a déjà quelques années, initié l’écriture d’un roman. C’était plutôt pêchu au début (en tout cas à mon goût), mais l’inspiration ayant tari, je me suis retrouvé avec un début de roman, dont le héro qui s’appelle ‘Lev’, le diminutif de Levinski, subit une entrée en matière plutôt brutale. Mais je n’ai su écrire que ses 27 premières pages…

Donc l’envie d’écrire était là, mais plus l’inspiration. Je ne suis pas écrivain, et je n’ai pas de technique spéciale pour la provoquer ou la retrouver, cette inspiration. Je n’ai pas non plus les moyens de me retirer du monde pendant plusieurs mois pour pouvoir m’immerger dans un environnement plus adapté à l’écriture, genre une île lointaine, où un chalet en montagne (quoique les Vosges ne sont pas loin de chez moi 😉

D’un autre côté, j’avais un envie incontrôlable de partager des connaissances. Une envie de pédagogie soudaine, qu’il me fallait assouvir via internet. J’ai donc lancer une série de divers blog et tutoriels via diverse plateformes web, sans jamais aller vraiment au bout du truc. Certains étaient plus des notes à mon attention, d’autres des pense-bêtes pour retrouver facilement des trucs et astuce (see https://mcgivrer.wordpress.com, le plus abouti). Bref, rien de bien sérieux.

Aussi, il me restait l’option du changement de sujet. Un sujet qui me semblerait limpide et ne nécessiterait pas trop de mise en situation pour provoquer l’écriture.

Il me semblait donc évident de faire un livre en rapport avec mon métier de programmeur. ce qui serait une bonne occasion de partager un certain savoir (oui, j’ose qualifier mes quelques notions d’informatique de savoir. Ne m’en jetez plus, je ne suis jamais si bien servi que par moi-même :P).

Oui, mais parler de logiciel de santé, de logiciel bancaire et de construction continue me semblait plutôt rébarbatif. Et mon côté créatif n’aurait pas été satisfait. Car oui, j’ai un côté créatif à qui je dis régulièrement « Oula moins Vite mon joli ! ». J’ai effectivement une certaine tendance à vouloir créer un peu au dessus de mes moyens 🙂

Donc, le sujet devait être dans le monde de l’informatique, créatif, et j’ajouterai de ce pas nonchalant : « ludique ».

OK, résumons nous: une dose d' »Informatique », plus 2 doses de « Créatif », plus 3 doses de « Ludique », égale « Jeux Vidéo » ?

Où pour les plus matheux d’entre vous, chers et sympathiques lecteurs :

( Informatique x 1 ) + ( Créatif x 2 ) + (Ludique x 3 ) = (JeuxVideo x 6)

Que vaut JeuxVideo ? Vous avez 4 heures …

Non, je déconne.

Le sujet me séduisait, et semblait correspondre à mes attentes instinctives.

Si ce n’est que je n’y connais rien du tout en jeux vidéo, du moins, en conception de jeu vidéo. Qu’à cela ne tienne, « informons-nous », me dis-je en me regardant droit dans les yeux. Enfin, façon de parler.

Hop, ni une ni deux, internet, est dans bien souvent des cas, ton ami. Mon moteur de recherche préféré m’aiguille vers des tonnes de tutoriels sur la programmation de jeu. La GameLoop, la machine à état, le moteur de physique, les « tailleumapse ».

Ok, on va partir sur un sujet simplifié : « Concevoir un jeu vidéo des années 90 ». Et là, mon cerveau me régurgite le fameux « Rick Dangerous », jeu sortie en 1992 sur plusieurs plateforme dont l’Atari, l’Amstrad CPC, l’Amiga, qui était ma plateforme de prédilection de l’époque.

illustration-amiga-1200

Bon OK, me dis-je. Lançons nous. Mais pas trop fort.

Le Sujet est donc trouvé:

Réaliser un jeu au goût pixelisé, avec des techniques d’aujourd’hui, mais sans passer par un framework, paskekanmémonnépadesmauviettes !

Se donner les moyens

Je code depuis maintenant 15 années sur la plateforme Java, je vais donc me faciliter la vie en commençant mes recherches sur ce langage. Et je constate avec fierté qu’il est utilisé avec la plateforme Android(TM). Je vais donc choisir Java.

eclipse-1

Les outils me sont naturellement implicites: Eclipse et Maven, je les utilise tous les jours, gardons les pieds sur terre et utilisons ce que nous connaissons.

maven_image_gallery

Et maintenant, comment gérer ce projet, sachant que ce sera une activité menée en temps libre ? Il me faut :

  • de quoi rédiger des choses qui pourraient ressembler à des spécifications,
  • de quoi suivre l’activité, Histoire de se rappeler où j’en suis d’une session de travail à l’autre,
  • de quoi conserver mes sources en lieu sûr, et pouvoir revenir en arrière,

bref travailler en mode agile…

Donc, pour les spécification, un Wiki semble pas mal, pour le suivi d’activité, un système de gestion de tickets ou de tâches, et pour les sources, un gestionnaire de sources distribué.

Bon, le choix va se jouer entre github.com et Bitbucket.org: les deux permettent ce genre de chose, et bien plus ! Bon, il est certains que dire j’ai un bitbucket, fait moins hype que j’ai un github, dans la communauté des développeurs. Et question exposition, github est plus … exposé . Donc, va pour github.

logo-github

Ils intègrent tous les deux des possibilités de construction continue, bitbucket avec ses pipelines et github.com avec son intégration avec travis-ci.org. Ce qui me permettra de vérifier au moins la compilation avant le merge de branche.

logo-travis-ci

Ah oui, pour la gestion des branches, je part directement sur l’utilisation de git avec son extension git-flow, permettant une gestion organisée des différents cycles liés au développement moderne de logiciel d’aujourd’hui: features, releases, bugs; les trois mamelles du logiciel agile.

Et comme je construis mes différentes applications en m’appuyant sur maven, je vais utiliser cet outil. J’ai également besoin d’assurer un suivi précis des dépendances dans le temps et d’en maintenir la version.

Pour cela, le service gracieusement offert par versioneye.com semble tout indiqué. il permet de donner une vision claire des dernières versions, propose un système de badge comme ce que propose Travis-CI, ainsi en 1 seul coup d’oeil, on sait tout de suite si:

logo-versioneye

Bon, je pense qu’à ce moment là, il ne me restait plus qu’à me lancer dans l’aventure.

Ah non. Il me manque un dernier outil. je souhaite également raconter mes (mes?)aventures de l’intérieur.

Passons par wordpress.com, la plateforme d’origine de ces articles était storify.com qui ferme ses portes (longue vie à Storyfi).

A la prochaine fois, pour de nouvelles aventures pittoresques et rocambolesques, voir croquignolesques (des mots remis au goût du jour par la verve inarrêtable et jusque là inarrêtée de notre cher Président EM!)

Vous trouverez les premiers articles ci-dessous:

  1. Développer son premier jeu de plateforme avec Java
  2. Développer son premier jeu de platforme Java (part 2) La suite des aventures
  3. C’est toujours mieux avec une particule