dernière mise à jour: 07/2003

Questions fréquemment posées

Quand avez-vous commencé à programmer ?
Quel est votre plus haut diplôme ?
Pourquoi avez-vous choisi l'industrie des jeux vidéo ?
Quels sont les domaines qui vous intéressent ?

Quel était votre travail à Haiku Studios ?
Quel était votre travail à Winwise ?
Quel était votre travail à Duran ?
Quel était votre travail à Microids ?
Quel était votre travail à BSF335 ?
Pourquoi avez-vous quitté les différentes sociétés pour lesquelles vous avez travaillé ?

Que faites-vous actuellement ?
D'après vous, quels sont vos points forts ?
D'après vous, quels sont vos points faibles ?
Quels styles de jeux préférez-vous ?
Votre site web fonctionne-t-il toujours ?


Quand avez-vous commencé à programmer ?

J'ai commencé à programmer lorsque j'avais 14 ans, en 1985. Les premiers ordinateurs sont arrivés à l'école, et j'ai immédiatement été fasciné par la possibilité de créer tout ce que je pouvais imaginer. Ma soeur et moi avons réussi à convaincre nos parents d'acheter un Thomson TO7-70 (machine française avec 48Ko de RAM) pour Noël, c'était une très grosse dépense pour un cadeau.

J'ai rapidement appris le Basic, puis parce que c'était trop lent pour afficher des images je suis passé à l'assembleur, l'hexadécimal pour être plus précis (le seul livre que j'avais pu trouver était écrit dans cet obscure langage, avec des choses comme C6 et B9 partout). J'ai codé un petit jeu de combat 2D - aventure appelé Samouraï (le genre où vous tapez sur des ennemis et ramassez des clés pour ouvrir des portes) avec de très beaux décors dessinés par ma soeur, et nous avons gagné le 2ème prix dans un concours régional (seulement le 2ème car le jury ne pouvait pas croire que nous l'ayons fait sans l'aide d'adultes).

En 1987 nos parents ont acheté un Amstrad CPC 6128 (128 Ko RAM), l'ordinateur avec un lecteur de disquettes intégré (dans le clavier) ! J'ai appris son Basic, et l'assembleur Z80 (cette fois-ci du vrai assembleur, avec add hl,de). C'était vraiment une très bonne machine, avec laquelle j'ai fait beaucoup de choses, la plus grosse étant un jeu d'action en 2D en 1991 nommé Dédalis et utilisant une bidouille matérielle connue sous le terme d'"overscan" (les bordures noires entourant l'écran sont supprimées, ainsi on obtient une zone d'affichage de 46*23 caractères au lieu de 40*20, et différents modes d'affichage étaient employés en même temps : le mode 0 (160*100, 16 couleurs) pour le niveau du jeu, le mode 1 (320*200, 4 couleurs) pour les textes en dessous). Cela m'a pris 14 mois pour le finir, le code source fait environ 26 000 lignes d'assembleur pour le jeu, plus sensiblement la même chose pour la page de titre et la table des scores (qui était une démonstration technique de ce que je pouvais faire avec le hardware, d'où la taille). J'ai essayé de le vendre à un éditeur, malheureusement à cette époque ils abandonnaient tous les machines 8 bits pour d'autres plus puissantes, et on m'a répondu que ce serait d'accord si je faisais la même chose sur PC (mais je ne connaissais rien à la programmation sur PC).

Fin 1992, j'étais en Ecole d'Ingénieurs et j'avais plusieurs projets à réaliser pour le cours d'informatique, ainsi que de nombreux rapports à taper chaque année ; j'ai donc acheté mon premier PC, un 386DX40. J'ai commencé à coder en Turbo Pascal et assembleur, écrivant des routines pour afficher des sprites et des formes variées en mode X. Puis j'ai découvert la scène démos avec Unreal (la démo de Future Crew, pas le jeu !) et Second Reality, et j'ai en même temps fait la connaissance d'un étudiant de ma promotion qui faisait la même sorte de choses que moi pendant son temps libre. Nous avons décidé de joindre nos forces, nous avons programmé ensemble pendant 3 années (1994-96), et avons participé à plusieurs compétitions dans différents pays européens. Des images de nos démos sont disponibles ici. Notez la date : évidemment ces programmes sont des exécutables DOS, ils n'utilisent pas de carte 3D, ils ont été prévus pour tourner sur des 486DX2 ou des P90, et ils sont codés principalement en assembleur, avec du Turbo Pascal ou du C (lorsqu'il n'y avait pas de limite de taille imposée).


Quel est votre plus haut diplôme ?

Je suis un ingénieur généraliste, avec une spécialisation en informatique. J'ai été diplômé en 1995.


Pourquoi avez-vous choisi l'industrie des jeux vidéo ?

Je pense que c'est la suite logique de mon activité de démomaker. J'étais heureux de pouvoir être payé pour faire les choses que je faisais auparavant pendant mes loisirs, et de travailler sur des sujets qui m'intéressent (voir question suivante). A mon avis un jeu vidéo est l'une des choses les plus complexe et complète sur laquelle on puisse travailler dans l'informatique, avec des problèmes très variés à résoudre. Enfin j'aime probablement l'idée qu'un jour ou l'autre le produit arrivera sur les rayons des magasins, que des gens l'achèteront et s'amuseront avec.


Quels sont les domaines qui vous intéressent ?

Je suis principalement attiré par le rendu temps réel et la 3D (y compris la physique), j'ai été passionné par la 3D alors même que mon CPC n'avait pas suffisamment de puissance et de vitesse d'affichage pour dessiner plus de 3 ou 4 cubes. J'aime également optimiser, cela paraît peut-être moins nécessaire aujourd'hui que ça l'était lorsque le processeur principal était lent et s'occupait de tout, et cependant c'est toujours très important et souvent sous-estimé (à dire vrai, un nouveau matériel est chaque fois disponible sur PC avant que vous ayez fini d'optimiser pour le précédent ; c'est en cela que les consoles sont plus intéressantes).

Un autre domaine que j'apprécie de plus en plus est le développement d'outils. Un bon moteur n'est rien sans outils, alors que vous pouvez faire des jeux superbes avec un moteur moyen si vous avez de bons mécanismes de jeu et des outils productifs. Je pense aussi que développer des outils propriétaires aide à montrer aux graphistes et designers que vous êtes à l'écoute de leurs besoins, quand dans le même temps vous leur donnez un tas de contraintes techniques à respecter, ce qui est probablement frustrant.

J'ai travaillé sur le son pour les démos (jouant des soundtracks sur différentes cartes avant que DirectSound n'existe) et c'était intéressant, mais je ne suis pas un spécialiste. Une chose que je n'aime pas est la programmation réseau, j'en ai fait une fois pour Intel, et je me souviens que c'était un cauchemar à débugger (et même déjà pour reproduire les bugs).


Quel était votre travail à Haiku Studios ?

Mon premier travail a été d'ajouter le support de l'accélération matérielle pour la carte 3D Blaster dans un jeu MS-DOS quasiment terminé et appelé Demon Driver. C'était un jeu cartoon de courses de motos acceptant jusqu'à 5 joueurs en LAN, qui n'a jamais été publié en raison des difficultés financières de Philips Media. Le code était constitué de 60 000 lignes d'assembleur plus quelques fichiers C, et il contenait déjà l'accélération pour la S3 Virge. Quelques semaines plus tard 3Dfx nous rendit visite et nous laissa quelques cartes Voodoo, je fis donc une version 3Dfx avec Glide.

J'ai ensuite travaillé avec le programmeur principal de Demon Driver sur le prototype d'un autre jeu de course utilisant la même technologie, avec davantage d' effets spéciaux. Lorsque la société commença à avoir des problèmes de liquidités on me demanda de développer un prototype de jeu 3D à la 3ème personne en urgence, parce que je faisais ce genre de chose pour le plaisir à la maison et que c'était ce que voulaient les éditeurs après le succès du 1er Tomb Raider. Malheureusement Haiku Studios ferma en octobre 1997 après un dépôt de bilan.


Quel était votre travail à Winwise ?

Après une semaine de formation aux MFC, j'ai travaillé sur un programme pour la Direction Générale des Armées. Il s'agissait d'une base de données SQL avec une interface utilisateur en MFC, destinée à gérer les différents équipements (tanks, etc) et leur maintenance. Mon travail a consisté à écrire la documentation technique (plus de 400 pages), à programmer divers rapports d'état avec un logiciel dédié, et (plus surprenant) à développer un outil pour obscurcir le code.

J'ai ensuite travaillé dans les bureaux d'un gros client (Bouygues), sur le prototypage de l'interface utilisateur de son prochain logiciel destiné à être utilisé sur ses sites de construction. C'était une mission en tant que spécialiste MFC, pendant laquelle j'ai également utilisé le composant Objective Grid de Stingray.

Enfin, j'ai fait un peu de R&D sur DirectPlay, pour répondre à un appel d'offre de France Telecom (qui voulait créer une zone de jeu internet, maintenant connue sous le nom de Goa).


Quel était votre travail à Duran ?

J'ai rejoint Duran pour être le programmeur principal d'une démonstration pour Intel. Ils préparaient le lancement du Pentium 3 (appelé à l'époque Katmai), nous avions quelques-uns des premiers processeurs dans nos machines, et nous devions montrer que les instructions SSE pouvaient améliorer les performances de différentes routines coûteuses en temps de calcul. Le principe de la démo était le suivant : deux ou trois personnes sur leurs ordinateurs respectifs pouvaient communiquer grâce à des micros, voir des avatars les représentant bouger et parler (lip-synch) à l'écran, et agir sur l'apparence de leur avatar. Ces personnages étaient formés de surfaces paramétriques (splines), ce qui permettait de changer leur résolution en temps réel (et par exemple d'avoir plus de détails sur un Pentium 3 que sur un Pentium 2 à vitesse égale).

Ma tâche sur ce projet était de faire fonctionner les différentes parties les unes avec les autres (je ne m'occupais pas du son, de l'animation, ou des calculs de splines) en tant qu'application indépendante ou dans Internet Explorer, d'écrire le code réseau (avec DirectPlay), l'affichage (DirectX et Glide), et de gérer les entrées des utilisateurs (souris+clavier avec DirectInput). J'ai aussi ajouté quelques effets spéciaux, et programmé des textures procédurales pour augmenter la différence de performances entre le P2 et le P3 (cette sorte de routine étant bien adaptée au parallélisme). Le code spécifique au SSE était écrit en assembleur inline, et compilé avec le compilateur d'Intel.

L'autre projet sur lequel j'ai travaillé à Duran est le jeu Virtual Skipper : c'est un jeu 3D de régates sur internet, le plus réaliste disponible à ce moment-là (maintenant c'est Virtual Skipper 2 je suppose ;). J'ai conçu la totalité de l'architecture orientée objets du jeu, j'ai écrit le système de fichiers et l'outil associé, j'ai repris des sources de mes démos pour gérer les transformations 3D et l'éclairage (pas de cartes TnL à cette époque, seul le tracé des triangles était accéléré), j'ai codé l'affichage DirectX et Glide (le support OpenGL a été fait par quelqu'un d'autre), et j'ai donné des coups de main dans d'autres domaines comme les trainées des bateaux ou le débuggage d'ensemble.

Ce jeu a été presqu'entièrement programmé en C++ avec Visual 6. Il a reçu de bonnes critiques en France (j'ignore ce qu'il en est dans d'autres pays) lorsqu'il a été publié par Ubi Soft au début de l'année 2000, et il y a de nombreux sites web qui lui sont consacrés dans différentes langues.


Quel était votre travail à Microids ?

Mon premier poste à Microids était un poste de programmeur principal en R&D. La société venait juste d'acheter le moteur 3D NetImmerse de NDL, et je devais y ajouter une couche supplémentaire pour gérer les besoins spécifiques de nos futurs jeux d'aventure. Le but était de mieux intégrer les personnages en 3D temps réel dans des environnements précalculés (avec des caméras fixes) en permettant aux objets précalculés et temps réel de s'éclairer et s'ombrer mutuellement. Il y a des images dans mon CV en ligne où on peut par exemple voir un spot multicolore dynamique éclairer les murs et colonnes pré-rendus d'une pièce (image de droite).

Pour ceux qui sont intéressés, cette partie fonctionne en gros comme ceci : j'ai deux images prises depuis la même caméra, une avec les conditions d'éclairage "normales", et l'autre dans une situation beaucoup plus claire (= sur-éclairée). J'ai également une scène 3D simplifiée (peu de polygones) représentant la pièce et les objets à l'intérieur (image de gauche), nécessaire au minimum pour les tests de collision (je l'utilise également pour initialiser le z-buffer, afin que les objets les plus proches cachent les personnages 3D temps réel). J'affiche cette scène non texturée dans une texture, en projetant sur les objets l'image que je veux pour le spot ; avec les paramètres adéquats le résultat est que les parties de la salle non éclairées par le spot sont noires, et les parties qui tombent dans son cône sont dessinées avec l'image du spot sur elles. Puis j'utilise du multitexturing pour tracer le décor, selon la formule : pixel = Dark + Mask*Diff. Diff est la différence (précalculée) entre l'image sur-éclairée et l'image normale, Mask est la texture que je viens juste de générer et Dark est l'image normale. Vous voyez donc que pour les pixels noirs (= non éclairés) de Mask j'obtiens la couleur "normale", et pour les pixels éclairés la couleur "plus claire" (notez que pour un pixel rouge dans l'image du spot, seule la composante rouge est éclaircie, c'est pourquoi il n'y a pas que les spots blancs qui fonctionnent).

Lorsque le Directeur R&D a quitté la société j'ai pris sa place, et recruté une autre personne pour m'aider à continuer ce travail. En même temps j'étais responsable du support technique de NetImmerse à Microids, c'est à dire que j'essayais de répondre aux questions et résoudre les problèmes rencontrés sur les différents jeux en cours, et que j'étais le contact officiel de NDL pour obtenir des informations (techniques ou sur les futures versions etc), signaler des bugs potentiels ou des corrections, et suggérer des modifications. En tant que Directeur j'ai été envoyé à la GDC 2001 à San Jose, pour assister aux conférences de programmation les plus pointues.


Quel était votre travail à BSF335 ?

Je possédais le titre de Directeur du Développement, ce qui signifie que j'aurais été responsable de toutes les décisions et des plannings concernant la programmation. En fait cela n'est jamais arrivé, parce que le studio n'a pas eu le temps de grandir comme prévu, et qu'il n'y a jamais eu plus de 6 personnes (2 programmeurs) à travailler ici.

Ma première tâche a été de prendre un moteur existant et l'éditeur correspondant developpés par notre maison-mère Bits Studios, et les modifier pour satisfaire les besoins du prototype d'un nouveau jeu. Après quelques mois le PDG décida que l'idée à la base du jeu ne pourrait jamais être vendue à un éditeur, il licencia la moitié de l'équipe et admit que nous devions développer une nouvelle technologie dans le futur. L'autre programmeur commença donc à travailler sur l'affichage, les animations, un plug-in Max, et le gameplay, tandis que je construisais un outil MFC au-dessus du moteur pour permettre au designer rescapé de modifier et régler les niveaux en temps réel tout en jouant.

Après quelques mois supplémentaires le conseil de direction de Bits prit la décision de fermer son studio français pour raisons financières. Pendant le préavis de 3 mois on me demanda de faire de la R&D sur l'éclairage à base d'images (image based lighting) pour la GeForce3, puis de m'occuper du déménagement des ordinateurs et des meubles de Toulouse vers Londres (cela paraît irréel mais c'est vrai !).


Pourquoi avez-vous quitté les différentes sociétés pour lesquelles vous avez travaillé ?

Malheureusement je n'ai pas quitté tant de sociétés que ça, certaines ont fermé.

- Haiku Studios a mis la clé sous la porte en octobre 1997 après un dépôt de bilan. La structure existait depuis 5 ans, j'y ai travaillé pendant la dernière année.

- J'ai rejoint Winwise parce que j'avais besoin de regagner de l'argent de toute urgence, mais cette société n'a rien à voir avec les jeux vidéo. J'y ai appris pas mal de choses, en particulier quand je programmais pour Bouygues, mais lorsque d'anciens dirigeants d'Haiku Studios m'ont contacté pour travailler avec eux chez Duran, j'ai immédiatement accepté.

- Duran n'est pas non plus une compagnie de développement de jeux, son activité première consiste à réaliser des effets spéciaux pour la télévision et le cinéma. Le patron était séduit par la technologie Mendel développée par des gens d'Haiku Studios, il les a embauchés pour l'utiliser dans un outil de storyboard 3D en temps réel, et en parallèle nous sommes arrivés à signer une démo pour Intel et à faire un jeu. Mais ça n'a jamais été un vrai studio de développement de jeux, j'en suis parti car je n'avais pas envie de faire Virtual Skipper 2 ou du travail de R&D qui ne serait jamais utilisé, et depuis l'été 2002 Duran a complètement arrêté le développement de jeux ou de logiciels internet.

- J'avais une bonne place à Microids, et j'y ai toujours un grand nombre de contacts. Je souhaitais quitter Paris un jour ou l'autre pour vivre dans un endroit tranquille et ensoleillé, et j'en ai eu la parfaite occasion lorsque d'anciens employés d'Haiku (une fois de plus, mais il ne s'agit pas des mêmes) travaillant pour Bits Studios à Londres m'ont informé que leur compagnie allait créer un studio dans le sud de la France. De plus je voulais travailler sur un jeu console et je pensais que ce serait plus facile dans une société développant uniquement des jeux sur console (ce n'est pas le cas de Microids, qui a une tradition bien établie dans le domaine des jeux de stratégie et d'aventure sur PC). Je connaissais certaines des personnes avec lesquelles j'allais travailler, en théorie nous étions libres de faire exactement le type de jeu que nous souhaitions, donc... je n'ai pas pu résister.
Remarque : depuis le milieu de l'année 2003, Microids a cessé tout développement en France et y poursuit simplement son activité en tant qu'éditeur.

- BSF335 a fermé pour raisons financières fin août 2002.


Que faites-vous actuellement ?

Après mon préavis à BSF335 j'ai pris un peu de vacances, puis j'ai essayé de me faire embaucher dans un studio de développement quelconque sur la côte ouest des Etats-Unis. Je suis allé faire une reconnaissance et passer un entretien en Californie en novembre 2002, mais mes démarches n'ont malheureusement pas abouti.

A présent je code un projet personnel pour garder les bonnes habitudes tout en cherchant du travail en France. J'écris également un article pour le livre Game Programming Gems 4 à paraître en 2004, et j'ai travaillé en juin sur la visite virtuelle d'une abbaye pour un musée (voir cette page).


D'après vous, quels sont vos points forts ?

C'est la question la plus difficile ! Je pense que je suis très organisé, autonome, et par dessus tout persévérant. J'aime résoudre des problèmes, trouver des astuces, et optimiser. Je n'aime pas passer trop de temps à debugger, aussi mon code est habituellement clair et opérationnel dès le départ.

Les gens disent que j'explique bien les choses même techniques, ce qui est une bonne nouvelle puisque c'est quelque chose que je souhaite continuer à faire tant au travail que sur mon site web.


D'après vous, quels sont vos points faibles ?

J'aime le calme de la nuit, il est plus facile pour moi de me coucher et de me lever tard que tôt.
Je suis un peu susceptible si je sens que les gens en face de moi sont agressifs ou croient toujours avoir raison.
Je n'aime pas passer toute la journée en réunions.


Quels styles de jeux préférez-vous ?

Par le passé j'ai joué principalement à des jeux d'action/aventure sur mon PC, Tomb Raider étant un bon exemple de ce que j'aime, plus bien sûr pas mal de Counter Strike et un peu de Quake ou Unreal en LAN avec mes collègues. Lorsque j'avais un CPC 6128 j'ai essayé tous les types de jeux, et c'est à peu près la même chose maintenant sur Xbox : je joue à des FPS, jeux de combat, jeux de course et de sport, et même jeux de rôle. Mais ma catégorie favorite reste définitivement l'action/aventure.


Votre site web fonctionne-t-il toujours ?

Bien sûr ! Je n'ai pas énormément de temps à consacrer à sa mise à jour, mais j'espère avoir quelque chose d'un peu conséquent et intéressant à mettre dessus dans quelques temps. Quoi qu'il en soit, j'essairai de continuer à écrire des articles de temps en temps, quand j'estime avoir codé quelque chose qui pourrait servir à d'autres personnes. J'aime beaucoup le faire, mais ça prend énormément de temps.




haut de la page