Entretien avec Xfennec

Xfennec est l’un des développeurs les plus actifs chez CQFD Corp. l’équipe à l’origine du jeu Maniadrive, mais également d’autres projets moins connus.

Xfennec a gentiment accepté de répondre à nos questions, et de nous en dire plus sur le moteur Raydium, le projet Memak et la suite de Maniadrive.





Jeuvinux : Peux tu nous présenter l’initiative CQFD Corp. ainsi que ses membres ?

Xfennec : CQFD Corp. est avant tout un regroupement d’amis, dont les activités évoluent quelque part entre l’organisation de barbecues géants et la création de jeux vidéo libres. Même si nous avons récemment monté une association pour faciliter nos démarches lors des salons et festivals,CQFD reste avant tout une entité informelle et très ouverte.

En ce qui concerne la partie développement, l’équipe est un peu plus restreinte. J’en suis le principal codeur, avec un groupe de contributeurs réguliers (je pense ici particulièrement à vicente et ouille) ou moins réguliers, mais tout aussi importants : RyLe, PRoSPeRe, Mildred, ...
Pour l’aspect artistique, les contributions sont beaucoup plus nombreuses et ponctuelles (SamB, batcox, neubet, whisky, flex, Cocorobix et une tonne d’autres qui vont m’assassiner pour les avoir oubliés). En fait, je pense qu’un bon tiers des 150 inscrits sur notre forum à joué un rôle, à un moment ou à un autre, dans les projets de CQFD Corp.

Jeuvinux : Qu’est-ce qui vous a motivés à faire vos projets sous licence libre ?

Xfennec : J’ai commencé à coder des choses qui pouvaient (vaguement) commencer à avoir de l’intérêt du coté de 1997, avec les débuts de Metal-Taste, un jeu de voiture inspiré de Micro-Machines (en plus « réalisto-trash ») qui tournait sous DOS. A cette époque, j’étais déjà très loin d’avoir la prétention de vendre le jeu, même si j’avais naïvement imaginé proposer, en plus du téléchargement proposé sur le site web, une version sur CD vendue à 50 FF :). Ceci dit, il me semblait inconcevable de donner mon code source, de peur de le voir s’éparpiller aux quatre coins d’Internet, et de voir des gens s’approprier - peut être même sous leur nom ! - les centaines d’heures déjà passées sur le projet.
Bref, Metal-Taste était à moi.

Mais cette période a aussi été pour moi la découverte de projets libres, comme en particulier DJGPP, le port de GCC pour DOS, puis évidemment de Linux, qui commençait à faire beaucoup de bruit, et donc de la GPL. Dès lors, j’ai vite commencé à comprendre les avantages qu’un code source ouvert pouvaient apporter à son auteur et le seul frein a la « libération » de Metal-Taste et des autres projets que je rédigeais à l’époque était la crainte des railleries, probables face à ce qui n’était que du code rédigé par un débutant de 17 ans :)

Dès les premières lignes de Raydium, en 2001, j’ai essayé de faire les choses (très relativement) proprement pour ainsi pouvoir placer mon code sous GPL, ce que je fis, avec succès, dès les premiers signes de maturité du moteur.

Jeuvinux : Raydium est un moteur axé sur la simplicité d’utilisation, quels sont ses autres atouts ?

Xfennec : Aucun ! La seule chose qui a motivé l’écriture de Raydium était mon désir de simplifier, factoriser, vulgariser l’écriture des jeux 3D. Les concepts mathématiques nécessaires à l’écriture d’applications de rendu 3D « software » avant l’arrivée des cartes 3D m’avaient profondément traumatisés :) Lorsque j’ai eu (enfin !) la possibilité d’écrire mes propres univers 3D, en particulier grâce à l’arrivée des implémentations OpenGL accélérées sous Linux, j’ai tout fait pour me simplifier la tâche à l’extrême. Raydium est ainsi devenu un moteur 3D de jeu à la fois simple et complet, qui permet par exemple à un grand débutant de programmer un petit jeu de billard en 3D en moins de 200 lignes. Ou de réaliser un jeu complet, en moins de 70 Ko de sources, comme ManiaDrive ;)

JPEG - 48.2 ko
Exemple de rendu avec raydium

Jeuvinux : Comment se positionne Raydium par rapport à d’autres moteurs tels que Ogre, ioquake3 ou Crystal Space ?

Xfennec : Les objectifs ne sont effectivement pas les mêmes. L’exemple d’ioq3 est très bon, puisque contrairement à ce dernier, évidemment très axé sur les FPS, Raydium est très généraliste : le projet a déjà été utilisé pour réaliser des choses aussi diverses qu’un jeu de saut en parachute (NewSkyDiver), un jeu de course arcade (ManiaDrive) ou un FPS (notre Test6 et le FPS-ou-on-comprend-rien en cours de développement chez MindentBele). Au delà des jeux, si l’on considère que Raydium est aussi utilisé pour réaliser des Trackers Laser, pour un simulateur de drone à l’IUT de Clermont-Ferrand (LpIer2007), pour des maquettes « temps réel » pour l’aménagement intérieur de bâtiments ou pour des démos de réalitée augmentée, il est plaisant pour nous de constater que Raydium atteint son but en tant que moteur 3D généraliste.

Nos gros concurrents sont donc des projets comme Ogre, Crystal Space ou même Irrlicht. A coté d’eux, Raydium semble très petit : ces moteurs sont très orientés objet, sont gérés par des équipes beaucoup plus conséquentes que la notre, possèdent plus de fonctionnalités et ont prouvé leurs capacités grâce à des projets d’envergure. De ce point de vue, Ogre est le meilleur représentant de cette famille, et je parie ma chemise que Ogre va très vite devenir un projet tout aussi important que Blender dans le monde de la 3D libre.

De son coté, écrit en C , Raydium, vise la simplicité, la légèreté et offre une couverture vaste des besoins des applications 3D. Là ou Ogre va par exemple se présenter en tant que moteur 3D, Raydium va aussi se proposer de gérer le son, les entrées utilisateur (clavier, souris, joysticks, joypads, volants, ...), la physique, ou même des fonctions de lecture vidéo : support des webcams ou codec vidéo embarqué pour jouer des vidéos en fond de menu ou incrustées dans des modèles 3D, par exemple. Et toujours dans un esprit de simplicité, et sans transformer le moteur en un gigantesque bloatware quasi-impossible à compiler.

Certaines personnes nous ont rapporté avoir été, lors de leurs débuts avec Raydium, assez interloqués face à la documentation du moteur où scripting PHP, éclairage par radiosité et serveur HTTP embarqué se côtoient. C’est assez représentatif de ce que je souhaite pour Raydium :)

Jeuvinux : Il n’y a pas eu de mise à jour récente de Maniadrive, le projet est-il abandonné au profit de MeMak ?

Xfennec : Oh que non ! ManiaDrive est clairement notre principal projet à l’heure actuelle, et c’est en fait le cas depuis sa première release publique, pour des raisons que je vais tenter d’expliquer :)

Les premières lignes de ce qui allait devenir ManiaDrive sont nées suite à la lecture d’un journal de Larry Cow sur LinuxFR, si mes souvenirs sont exacts, qui écrivait quelque chose comme « je veux ce truc sous Linux ! » avec juste un lien vers le site de Trackmania, qui ne montrait alors pas grand chose d’autre que quelques captures d’écran ... Mais quelles captures ! Des enchevêtrements incroyables de sauts, de loopings, de vrilles ... N’importe quel joueur qui a touché, plus jeune, à des jeux mythiques comme Stunts, Fatal Racing ou Hard Drivin’ ne pouvait que tomber raide dingue devant un projet comme Trackmania.

En y réfléchissant maintenant, je pense qu’a ce moment là je me suis demandé plus ou moins inconsciemment pourquoi j’avais pas eu moi-même cette idée avant. Ne pouvant décemment pas attendre la sortie de Trackmania sans porter atteinte à ma santé mentale, j’ai dû écrire la première ligne de code du projet moins de 3 minutes après avoir vu le premier screen du jeu.

Le résultat a été un tout petit programme de génération de circuit, qui a ensuite été couplé à un de nos tests du moteur physique (avec notre fameuse voiture rouge fétiche, qui est restée dans la version finale :), puis de nouveaux blocs sont arrivés, et le tout a commencé à former un ensemble relativement cohérent. Après le succès de notre premier jeu public, NewSkyDiver, j’ai souhaité retenter l’expérience à plus grande échelle avec un jeu plus complet, et c’est comme ça qu’est arrivée la première beta de ManiaDrive (après pas mal de boulot quand même :) J’ai passé un petit journal de seconde page sur LinuxFr pour annoncer la beta du jeu, et nous nous sommes retrouvés avec une centaine de réponse là je doutais pouvoir dépasser la dizaine. Et le pire, c’est les retours étaient très positifs. Je pense que c’est là que l’équipe a commencé à réaliser que le jeu avait un réel potentiel, et ne devait rester une simple démo technologique de Raydium.

La 1.0 est sortie, puis les updates ... et nous sommes maintenant à près de 150 000 téléchargements du jeu, selon SourceForge (ça représente un truc comme 6 To de données, je crois), et depuis un an, des scores du mode « Internet Tracks » arrivent plusieurs fois par minute sur le serveur, parfois depuis des pays dont j’ignore jusqu’à l’existence. Nous avons aussi eu le bonheur de voir le jeu, de façon spontanée, parmi les packages de certaines distributions Linux, testé et distribué par certains magazines papier, etc.
Bref, c’est une situation qui donne évidemment envie de ne pas abandonner le projet :)

JPEG - 21.6 ko
Maniadrive et ses loopings géants

Ceci dit, effectivement, cela fait quelques mois que nous ne communiquons plus sur le jeu, et il faut savoir qu’il n’y aura plus de mise à jour majeure de ManiaDrive, pour une raison simple : nous sommes en train de construire ManiaDrive 2 ;)
Nous avons eu énormément de retours sur ManiaDrive (vraiment !) sur ce qui plaisait dans le jeu, mais aussi ce qui plaisait moins. Je fais mon possible pour tenir compte de tout ça pour MD2, tout en essayant de suivre mes propres convictions quand à ce que doit offrir un jeu de caisses. En résumé, on prend très à coeur la réalisation d’une suite « digne » pour ManiaDrive, et ça demande pas mal de temps à toute l’équipe.

Jeuvinux : Quelles nouveautés allons nous découvrir dans les versions futures de Maniadrive ?

Xfennec : L’évolution principale concerne la création d’un nouvel univers, qui comprend une nouvelle voiture (voire plusieurs), une nouvelle physique, et tout un ensemble de nouveaux blocs. Ce dernier point représente un travail très conséquent, maintenant bien avancé grâce à l’excellent travail de SamB ces dernières semaines. Les blocs de ManiaDrive 1.x avaient été créés au tout début du projet, dans le besoin, là ou les nouveaux blocs sont le résultat d’une réelle recherche artistique , et surtout, ils sont réalisés par un graphiste :) On retrouve ainsi un monde axé sur du sable, de la terre et des rochers, ainsi que de nouveaux blocs plus funs : rampes, rails, tremplins, containers, ...

La physique du véhicule va donc subir elle aussi des changements. Il a beaucoup été reproché à ManiaDrive une conduite trop exigeante, trop complexe. J’ai donc commencé à coder l’opposé de cette conduite (à l’aide d’une ray-car pour ceux qui aiment les détails :) pour arriver à un style intégralement arcade. Et c’est après des heures et des heures de tuning sur cette physique et pas mal de tests que je suis arrivé à une conclusion terrible : c’est nul. La voiture tourne sans la moindre peine, ne glisse plus, absorbe des sauts gigantesques sans broncher à l’atterrissage, ... Bref, la conduite n’a plus aucun *style*, avis confirmé par d’autres membres ("On dirait du Mario Kart"). On ne trouvera donc pas dans ManiaDrive 2 de conduite arcade insipide. Et tant pis si vous êtes fan de Mario Kart :)

Ensuite, je me suis décidé à éplucher la tonne d’avis à propos de la conduite de ManiaDrive 1.x pour essayer de comprendre pourquoi certains joueurs étaient fans de cette physique alors que d’autres y était complètement allergiques. il ressort que globalement, les joueurs aiment que la conduite demande du doigté et aiment sentir le poids et l’inertie de la voiture. En revanche, il semble qu’ils aient l’impression qu’il existe une part d’aléatoire dans la conduite. Un bon exemple est le comportement de la voiture à la réception d’un saut, qui ne tolère effectivement aucune faute.

Ma piste actuelle consiste donc à proposer une conduite un peu plus nerveuse et technique que la physique actuelle, en particulier en ce qui concerne les sous et sur-virages, mais surtout, beaucoup plus tolérante au niveau des suspensions. Le comportement dans les loopings, ainsi que dans les lignes droites à forte vitesse devraient aussi être revu. Dans le même genre, les contacts avec les barrières (la voiture a tendance à vouloir « grimper ») ont été jugés frustrants par la majorité des joueurs, et vont êtres modifiés (tout comme la limitation de vitesse trop forte en marche arrière).

Au rang des autres modifications, on retrouve aussi un support des « props », c’est à dire des objets légers posés sur le sol ça et là, et soumis à la physique : pierres, plots, poteaux, buses et autres devraient habiller les circuits tout en ajoutant un petit plus au gameplay. L’éditeur de circuit va lui aussi subir une ré-écriture partielle, pour faciliter la création du sol, et pour permettre un placement plus précis de la piste. Quelques effets graphiques devraient voir le jour : nuit, feux stops, fumée et projections au niveau des pneus. Je me pose la question d’utiliser des shaders (pour les réflexions sur les voitures et pour l’eau) qui peuvent rendre ManiaDrive un peu plus crédible face aux jeux commerciaux du moment, mais qui risquent de compliquer les choses pour le support matériel.

JPEG - 35.7 ko
Effet de réflection grâce aux Shaders

Les replays/ghosts ont aussi été très demandés et font partie de la TODO, tout comme un panneau de configuration des contrôles pour les volants et les joysticks/joypads. Je dois encore oublier quelques trucs, mais finalement, ça fait déjà une belle masse de boulot :)

Jeuvinux : Peux tu nous décrire le projet MeMak ?

Xfennec : MeMak devait être le premier jeu utilisant Raydium. En effet, deux ans après la naissance du moteur, toutes les fonctionnalités de base étaient présentes dans Raydium, et j’avais enfin sous la main un truc qui permettait de faire un vrai jeu ! Restait à déterminer quel jeu.

J’ai lancé un appel aux amis, collègues et autres connaissances pour que nous nous réunissions pour imaginer le jeu idéal (vaste programme, hein ?). Nous nous sommes retrouvés à 20 ou 30 personnes, avec des profils de joueurs très différents, à parler des jeux marquants auquel nous avions déjà joué (je cite le wiki du projet : « des références telles que Interstate 76, Operation Flashpoint, Hunter, Ultima, Mad Max ont été citées ») et a imaginer ce que pouvait devenir *notre* jeu. Ça a duré toute la nuit, et c’était tout simplement passionnant.

Le forum a été monté durant la journée suivante, et le projet est entré en pleine effervescence au fur et à mesure que nous dessinions les trais principaux du projet.

Dans les grandes lignes, MeMak a été imaginé comme un jeu multijoueurs, avec des parties persistantes, avec pour objectif la simple survie du personnage et de son éventuelle équipe, s’il a décidé d’en rejoindre ou d’en créer une. L’action se déroule dans une ambiance désertique, sur un sol aride parsemé de ruines et de carcasses rouillées. L’idée principale étant la construction : le monde regorge de diverses pièces éparpillées ça et là, planches, morceaux de métal, moteurs, fixations, ...

Grâce à l’utilisation du moteur physique, le joueur est complètement libre de créer ce qu’il souhaite (aucun modèle n’est pré-défini) : abris, hangar, voiture, catapulte, machine volante, grue, ou toute autre invention de son choix. L’objectif étant que les joueurs se liguent pour se mettre sur la tronche entre équipes à l’aide de leurs constructions,. Ou s’amusent simplement à expérimenter de nouvelles constructions et de nouvelles règles du jeu. (Nous sommes en 2003/2004, et le Garry’s Mod n’existe pas encore, pas plus que le terme « emergent gameplay » :)

J’invite ceux qui voudraient en lire un peu plus sur l’univers de MeMak à jeter un oeil au wiki.

Jeuvinux : À quel stade en est rendu le projet ? Une idée de date sur une éventuelle alpha ?

Xfennec : C’est là que le problème se trouve :) Quelques moins après le lancement fulgurant du projet, le forum à commencé à devenir très calme. Cela semble être le lot commun de beaucoup de projets du genre, et nous n’avons pas échappé à la règle. C’est d’ailleurs grâce à ça que Raydium a continué à évoluer de son coté et que des projets comme ManiaDrive ont vu le jour ! Mais même après 4 ans, MeMak n’a pas dépassé le stade du concept (certes détaillé).

Cependant, nous avons déjà quelques éléments, graphiques en particulier, et je pense ici aux maps crées avec par neubet, bien après le lancement du projet. Il a réussi à reproduire dans ses maps l’ambiance torturée du jeu (étant lui même un esprit torturé :) : désert à perte de vue, ruines d’un pont suspendu, autoroute en partie ensevelie par les sables, des épaves rouillées partout, ...

Tout ça fait que pour l’heure, MeMak reste quelque part entre le phantasme et le projet qui pourrait démarrer dès demain. Le fait que j’en rêve régulièrement en est une preuve ;)

Jeuvinux : Un coup de gueule ?

Xfennec : Tu parles du DADVSI, des brevets logiciels ou des DRM ?
Pour tout le reste, je dois avouer c’est plutôt le contraire : j’apprécie profondément la liberté qu’offre le développement de jeux libres, ainsi que la gigantesque communauté qui gravite autour. Je conseille à toute personne vaguement désireuse de créer un projet libre de se lancer dans l’aventure : c’est passionnant et particulièrement enrichissant :)

Jeuvinux : Mot de la fin ?

Xfennec : J’adresse de gigantesques remerciements à toutes les personnes qui ont participé aux projets autour de Raydium, de quelque manière que ce soit (et ça fait du monde ...), ainsi qu’a la tonne de joueurs de ManiaDrive pour leurs encouragements et leur implication.

Et enfin merci à toi et à Jeuvinux pour cette intervew. J’ai connu le site grâce à Google lors d’une recherche sur ManiaDrive, et j’y retourne régulièrement depuis ... Bravo pour votre travail !

Jeuvinux : C’est nous qui te remercions pour avoir répondu à nos questions, continue de faire vivre tous ces projets et nous attendons tous avec impatience Maniadrive2 :)

Liens

- Le site officiel de Raydium
- Le site officiel de Maniadrive
- Le projet Memak

Brèves




Article sous GNU Free Documentation licence - Jeuxlinux.fr