I. Présentation▲
Pouvez-vous vous présenter en quelques mots ? Qui êtes-vous ?
Clément CORDE et pour mon âge, hmmm… Moi-même je préfère ne pas trop y penser…
Comment avez-vous appris la programmation ?
Quand j'étais gamin, le côté programmation m'intéressait, mais à l'époque il n'y avait que le BASIC. Mais bon, j'essayais quand même !
C'est à partir de l'IUT (en 1992) que j'ai vraiment commencé à m'y mettre, à avoir quelques bases, et à faire un peu de démos à côté en même temps.
Quel est votre parcours éducatif ?
Eh bien un DUT informatique ! Après j'ai fait quelques autres trucs sans trop de rapport avec l'informatique, surtout pour reculer le moment d'aller faire le service militaire.
II. Carrière▲
Quel est votre parcours professionnel ?
Comme 50 % des gens dans le milieu du jeu vidéo d'il y a quelques années, j'ai commencé chez Titus. C'est une boîte qui avait ses problèmes, mais qui avait aussi des bons points, comme embaucher des débutants.
Pour les boîtes qui ont suivi, ça gravitait autour d'une personne et il se trouve que je suis toujours en procès avec, donc je ne vais pas lui faire de pub.
Quel est votre emploi actuel ?
Je travaille dans la fonction publique. Jusqu'à il y a peu j'étais administrateur réseau.
Faites-vous toujours de la programmation dans votre travail ? Cela vous manque-t-il ?
Non, depuis que j'ai quitté le jeu vidéo, je ne programme plus au niveau pro. Et ça ne me manque pas vraiment : les plannings débiles avec deadlines intenables, le chef de projet neu-neu qui marque deux jours dans son planning alors qu'on vient de lui dire qu'il en faut trois et qui ne comprend pas deux jours plus tard que ce ne soit pas fini, les heures sup' à gogo non rémunérées… Non vraiment, ça ne me manque pas.
Surtout que dans le privé avec un BAC+2, aucun espoir d'évolution n'est possible.
III. La programmation▲
Quels sont vos langages préférés ?
Je suis très « bas niveau », donc le C ! J'aimais beaucoup l'assembleur quand j'étais plus jeune (68000 et 80x86, et pseudo Z80 quand je faisais de la GameBoy), mais à l'heure actuelle, je trouve que GCC s'en sort plutôt bien et le C a l'énorme avantage d'être portable. En vrai.
Quelles sont vos bibliothèques préférées ?
Je n'utilise que la SDL, qui elle aussi se trouve sur à peu près toutes les plateformes, donc c'est très pratique. Ensuite, j'aime bien réinventer la roue, donc je n'utilise pas de SDL_xxx, même si je ne doute pas que certaines soient bien fichues. Ah oui, et j'ai récemment aussi réussi à utiliser ST-Sound de Léonard/Oxygene (la bibliothèque est super bien faite) avec la SDL, donc je l'utilise aussi, liée en statique.
Si j'avais le temps, j'aimerais bien voir un peu comment fonctionnent les cartes vidéo modernes, parce que dans les démos, on voit des trucs incroyables en quelques kilos.
Pourquoi avoir choisi le C avec la SDL ?
Le C, parce que je ne connais que ça en langage « évolué », que c'est assez bas niveau, portable, et que je n'avais pas envie de me remettre à l'ASM. La SDL, parce que quand j'ai repris la programmation, je voulais un accès à l'écran et qu'avec la SDL on a un pointeur dans le buffer vidéo en trois lignes (hors vérifications). Bonus, la SDL existe sur des tonnes de plateformes !
Pourquoi vouloir utiliser directement le buffer ?
Pour le fun. Quand j'ai repris doucement la programmation, j'avais envie de refaire toutes les routines de base (sprites et compagnie). Il se trouve que finalement c'est plutôt rapide, mais à la base ce n'était pas du tout dans un but de performance.
IV. Demoscene▲
Dans quels groupes avez-vous participé ?
J'ai uniquement participé à un groupe qui s'appelait « US ». Le nom qui est resté est « Universal Soldiers », mais le but était de changer de nom à chaque fois. Malheureusement, le groupe n'a pas duré très longtemps, et je n'ai pas gardé de contacts.
Quelles démos avez-vous réalisées ?
À priori tout est là :
http://pouet.net/groups.php?which=1587
(Moi je n'ai participé qu'à Unsatisfied et à Yul Brynner.)
Est-ce de l'ASM ? Racontez-nous vos expériences, anecdotes avec ce langage. Coup de rush, démo finie à la va-vite ?
Oui, c'était de l'assembleur (pas le choix). On avait été à « The Party 4 » au Danemark. On avait fini (je crois) notre 40 kb sur place, mais sans plus que ça de précipitation.
Atari ou Amiga ?
Dans les années 90, j'avais un ST. À l'époque je n'étais que joueur. Eh oui, il n'y avait pas de net, et se mettre au 68000 tout seul dans son coin en partant de rien paraissait complètement inaccessible.
Venant des 8 bits, Airball et Goldrunner m'ont beaucoup marqué !
Quand j'ai commencé à coder, sur PC, j'avais dans ma classe un certain Schmoovy-Schmoov de Melon Dezign, du coup j'ai assez vite acheté un Amiga 1200.
Franchement, je crois que quiconque a codé sur Amiga ne pourra qu'approuver : un 500 était bien supérieur à un ST. Sur le son ou la vidéo, il n'y a pas photo. Et puis le copper, quelle classe ! Sur ST, pour faire de l'overscan, il fallait si je ne m'abuse compter les cycles, switcher la fréquence de balayage au bon moment, etc. Bref, c'était déjà de la bidouille de très haut vol. Sur Amiga, il suffisait de faire sa petite copperlist, préciser que l'écran commence là, fait 384 pixels de large, et basta.
Aimez-vous programmer pour l'Amiga ? Quels sont les outils et le langage ? Quelles sont les contraintes ? Continuez-vous à développer sur Amiga ?
J'aimais bien, oui !
À l'époque c'était assembleur obligatoire (ASM-One), parce qu'à 7 MHz, pas facile de tenir la frame autrement.
Non, je ne développe plus sur Amiga Classic. Par contre avec HunoPPC (http://www.clubevolution4.com/HunoPortSDL/), on a porté mes jeux sur Amiga NG !
Quelles sont vos démos préférées (oldschool & newschool) ?
Je n'ai pas suivi la « scène » depuis un bon moment. Apparemment ça a beaucoup évolué, mais c'est marrant de voir que certains sont encore dedans depuis tout ce temps ! Par exemple Chaos de Farbrausch, qui était à l'époque dans Sanity ! (Et qui était déjà très très bon à l'époque !)
J'ai découvert récemment les démos et intros PC de Razor 1911, codées par Rez, et je trouve ça génial. C'est vraiment du oldschool moderne !
Je ne résiste pas à donner quelques liens :
Cliquez pour lire la vidéo
(musique de 4mat, un vieux de la vieille également !)
Cliquez pour lire la vidéo
Cliquez pour lire la vidéo
Cliquez pour lire la vidéo
(Revenons au vif du sujet…)
V. La programmation de nos jours▲
J'ai vu que vous avez fait un essai avec le C++, était-ce une volonté de « toucher » à un autre langage ? Quelles raisons vous ont motivé à tester le C++ ? Pourquoi avoir indiqué « mauvais C++ » ?
J'en avais fait un peu à une époque, et déjà je n'avais pas accroché. J'ai voulu essayer d'en refaire un peu (j'avais l'illusion que ça pourrait me servir) et mal m'en a pris. Dans l'outil dont tu parles, j'ai fait à peu près tout ce qu'il ne faut pas faire en ++. Si j'avais du temps, il faudrait que je repasse tout ça en C.
Quels sont d'après vous les problèmes du C++ ?
Je n'ai pas grand-chose à dire à propos du C++, étant donné que je ne pratique pas du tout les langages « objet ». Je n'ai jamais réussi à me faire à la façon « objet » de penser, et j'ai l'impression qu'en C++ on passe son temps à réécrire sans arrêt les mêmes choses. Pour moi, ça donne un code plus lourd et je ne vois pas réellement de gain. Mais bon, je n'y connais rien.
Avez-vous tenté un autre langage orienté objet ?
Non, je n'en ai pas eu l'occasion.
Comment choisissez-vous un nouveau projet ? Quels sont les critères qui vous permettent de dire si tel projet est réalisable ou non ?
Un peu au feeling. Déjà s'il y a des maths, c'est non ! Ensuite sur des jeux 2D, mon humble expérience aidant, je vois à peu près ce que je vais être capable de faire ou pas. Tout en essayant quand même de faire des choses que je n'ai pas encore faites, sinon ce n'est pas drôle !
Vous ne nous avez présenté que des projets qui ont abouti, mais avez-vous eu des projets qui n'ont pas abouti ? Si oui, pourquoi pensez-vous qu'ils n'aient pas abouti ? Si non, qu'est-ce qui selon vous te permet de réussir tous vos projets ?
Non, je n'ai pas vraiment de projet qui n'ait pas abouti depuis quelque temps. Mais il faut dire que j'évite de me lancer dans des choses infaisables.
Quel processus utilisez-vous lors de vos projets ?
Je fais à ma façon, donc personnalisé ! ;p En général, j'essaye d'avoir une base (très) solide avant d'avancer sur autre chose, ce qui m'évite d'avoir à déboguer au niveau « moteur » une fois que je suis dans le codage du « jeu ».
Pour vous, quelles sont les qualités/prérequis nécessaires à programmeur pour réussir un petit projet ?
Que faut-il faire pour réussir au mieux un projet ?
Je crois que le tout c'est de ne pas se lancer dans des choses infaisables. Le truc classique, ce sont les gens qui commencent sans se rendre compte dans quoi ils se lancent. Par exemple « tiens, je vais faire un petit Mario… » Dans un Mario, il y a des graphismes enfantins, c'est sympa, tout ça. Sauf que ça reste un platformer, que c'est très compliqué et que donc ce n'est pas du tout par ça qu'il faut commencer ! Et on ne parle même pas du fait qu'il faut un éditeur de map !
Ensuite, bien garder en tête la règle des 90/90, et rester motivé, parce que c'est toujours plus long que ce qu'on imagine.
Le conseil que je peux donner, c'est de commencer par de petits projets, terminables. Plusieurs petits projets menés de bout en bout apporteront plus qu'une grosse usine à gaz qui explosera de partout et qui ne sera jamais terminée.
VI. Projets▲
Est-ce que le Tetris est votre premier projet ou vous aviez déjà fait des petits « essais » avant ?
Celui-ci, je l'ai fait après l'Arkanoid, à la base comme un petit exemple pour le fils d'un collègue. Avant l'Arkanoid, j'avais recodé plein de petits effets de demomaker pour me remettre un peu dans le bain. Et ce n'est pas le premier Tetris que je faisais dans ma vie. (Même si depuis, avec Tetris Friends, je me suis aperçu qu'il faudrait rajouter quelques fonctionnalités.)
Si j'ai bien compris, vous codez tout seul, mais d'où viennent les musiques et les images ? Est-ce que vous récupérez des images libres ou est-ce que vous les faites vous-même ?
Les images, je les trouve sur le net. Pour les sprites, il y a une bonne ressource : http://www.spriters-resource.com (il y a aussi du son sur un site frère). Ou alors je les rippe moi-même quand ce n'est pas trop compliqué.
Je ne suis pas graphiste, donc j'utilise des graphismes existants (la remise en planche, les recalages, etc. prennent déjà pas mal de temps). Le tout c'est de le préciser et de ne pas tenter de faire d'argent avec. À partir de là, je n'ai jamais été embêté.
Le son (qui n'est pas mon fort), je récupère les sons que je peux (libres si possible) et je les bidouille avec Audacity. Et récemment, j'ai réussi à utiliser ST-Sound de Leonard/OXG (http://leonard.oxg.free.fr/) avec la SDL, ce qui m'a donné des idées.
Vous semblez coder seul, mais n'avez-vous jamais envisagé d'intégrer ou de constituer une petite équipe ? Pourquoi ?
Le problème pour intégrer une équipe, c'est de la trouver ! La plupart des projets amateurs que je vois en présentation ont très souvent des objectifs irréalistes. Par exemple, un MMORPG. Moi je fais partie des gens qui pensent qu'un MMORPG amateur, ça n'existe pas (voir : http://conquerirlemonde.com/blog/2010/04/25/erreur-classique-n%C2%B011-faire-un-mmo-3d-amateur/). Et quand en plus c'est lancé par de purs débutants, le plantage est garanti.
Même si ça me semble compliqué, je ne suis pas opposé à l'idée d'intégrer une équipe. Pour peu qu'on arrive à s'entendre, bien sûr !
Quels conseils pourriez-vous donner aux autres ? Quelles difficultés principales avez-vous rencontrées ?
Eh bien Dam's a encore une fois tout dit ici : http://conquerirlemonde.com/blog/2010/02/16/erreur-classique-n%C2%B010-le-plantage-postproto/
En résumé, ne pas se lancer dans un projet trop ambitieux. Par exemple, « tiens, je vais faire un petit jeu de plateformes… » Le jeu de plateformes en 2D, c'est ce qu'il y a de plus compliqué avec le RPG, donc ce n'est sûrement pas par là qu'il faut commencer. Pour un jeu de plateformes, il faut avoir un moteur de sprites, savoir gérer des animations, un scroll (tuiles + différentiel), des monstres (apparition/disparition en fonction du scroll), des tirs, etc. Et il faut aussi les outils qui vont avec, par exemple un éditeur de map. Pour info, le Mini Slug m'a pris quelque chose comme 18 mois, et ça en sachant à peu près exactement où je mettais les pieds pour avoir déjà codé pas mal de jeux de plateformes quand je travaillais dans le JV. Certes, les specs ont évolué en cours de route et moi j'aime bien tout coder moi-même, mais c'est un gros travail.
Honnêtement, plusieurs projets simples menés à terme seront bien plus bénéfiques que de se lancer dans une grosse usine à gaz interminable.
Sur quel projet travaillez-vous actuellement ?
Hmmm… J'ai quelques projets en cours, mais je manque de plus en plus de temps. Donc je préfère ne rien dire…
VII. Remerciements▲
Nous tenons à remercier c1702 d'avoir répondu à nos questions.
Merci à ClaudeLELOUP et _Max_ pour leurs relectures orthographiques.