Tuesday, June 16, 2009

Bilou sur DS

p1370645 Ce billet est une tentative de FAQ reprenant une partie de mes discussions ou de réaction aux commentaires récents de nouveaux arrivants qui ne m'ont pas vu gribouiller des p'tits Bilous dans tous les coins depuis des années.
An English translation of this FAQ is available here.

Qui est Bilou ?

Un personnage imaginaire -- une balle bleue avec de grands yeux, des pieds et des mains "en orbite" -- servant de héros à mes jeux vidéos, que je tiens initialement de Pierrick, et autour duquel s'est construit tout un petit monde "cartoon" où l'on retrouve des influences de Lewis Carol et des premiers dessins animés, mélangées à du Commander Keen et du SuperMario.

Pourquoi sur DS ?
Parce que la DS est la plate-forme dont je rêve depuis que j'ai un C64. Mixage son en hardware, graphisme multi-couche et support des sprites en hardware. Elle combine un écran tactile assez précis pour des applications graphiques et des contrôle de jeu à la SNES idéaux. Elle a des possibilités d'interconnexion avec le reste du monde et du stockage local pour peu qu'on se donne la peine de les faire fonctionner. Elle est un peu restreinte en resources (33+66Mhz et 4Mo de RAM), ce qui oblige le dévelopeur à chercher des solutions plutôt que de coder comme un bourrin, mais elle a quand-même assez de puissance pour ne pas nécessiter que _tous_ les aspects ne nécessitent une micro-optimisation pour pouvoir faire quelque-chose d'intéressant comme une SNES ou une Genesis. Ses possibilités 3D ne sont pas extraordinaires, mais si jamais je veux m'en servir, elles sont mieux documentées que les nvidias.
Enfin, elle existe. Si je devais coder mes jeux ailleurs, il y a de fortes chances que je commencerais par me donner l'équivalent de la DS en machine virtuelle.

Quel genre de jeu ?
J'ai un faible pour les jeux de plate-forme, donc ce sera un jeu de plate-forme. Ceci dit, j'ai encore des hésitations sur le type de gameplay. Course rapide à la Sonic ? Puzzle à la Fury ? Arcade à la Johny Biscuit ? Exploration à la Commander Keen ? Avec une composante RPG comme dans Cave Story ? Il y a de fortes chances pour que je touche un peu à tout avec des petits groupes de niveaux d'une sorte ou de l'autre, sans chercher à intégrer le tout au départ. Ca permet aussi de continuer à avancer et à proposer du fun aux joueurs.

Peut-on l'essayer ?
Oui. Les démos sont annoncées au fur et à mesure dans la section "downloads". Il s'agit de travaux en cours : je n'ai pas une équipe de béta-testeurs très étendue, et un regard neuf est toujours apprécié, même si certaines propositions ne seront pas adoptées telles quelles.
Pour les faire tourner, il vous suffit d'une DS "homebrew-ready" ou d'un émulateur.

Homebrew ?
Le développement officiel sur console Nintendo est très fermé. Ca va plus loin qu'un simple SDK coûteux ou qu'un droit de regard sur ce qui est publié et ce qui ne l'est pas. Sans une structure commerciale pré-existante et bien reconnue, c'est l'impasse. Heureusement, il existe des outils permettant malgré tout de programmer la console sans passer par le kit officiel. On dit que les jeux et programmes faits de cette façon sont "fait-maison" ("home-brew" a un petit côté "je distille mon alcool de framboise en effilant les tubes de verre moi-même" qui colle assez bien au résultat comparé au développement sur d'autres plate-formes plus ouvertes). Si vous savez ajouter des jeux sur votre DS via une carte-mémoire type SD ou micro-SD à l'aide d'un gadget acheté à un ami ou sur Internet, vous avez ce qu'il faut pour faire tourner les jeux homebrew. Bravo. ^_^

Où sont les vidéos ?
Je ne fais que rarement des photos d'écran et encore moins souvent des vidéos. Celà demande un investissement en temps colossal pour avoir quelque-chose de correct à montrer. Si vous mettez en ligne des photos ou vidéos de mes productions, je vous invite à l'annoncer à tous via un commentaire sur la démo en question.

Comment est-il programmé ?
Le moteur de jeu est en C++, de même que le modplayer responsable de la musique, le tout dans l'environnement libre "devkitpro" sous Linux. Le côté "PC" de certains outils est généralement bricolé en PERL parce que je le vaux bien. Je tente de garder au maximum la logique de jeu séparée via un langage de script spécifique, dans la veine du micro-basic d'Eric Chahi (Another World) ou de SCUMM (Maniac Mansion et successeurs). Tout ce qui doit être invoqué en permanence (moteur de collision, déplacement des sprites, lecture des touches, etc.) est gardé en C++ de sorte que les scripts n'interviennent que lors d'évènements (changement d'état d'un personnage, collision, fin d'une animation, etc.)

Verra-t-on Bilou dans les magasins ?
C'est très peu probable, et ce n'est pas mon but. La politique commerciale de Nintendo laisse très peu de place aux petits développeurs indépendants. C'est un autre monde où un jeu doit être rentable et disponible dans les bacs à Noël. Je m'appuie sur l'expérience de Cave Story et de Qwak. Je cherche à faire un jeu amusant, et il sera prêt ... quand il sera prêt. L'aventure a commencé il y a 15 ans. L'expérience de Qwak, ce jeu GBA homebrew produit en série limitée et vendu sur Internet, ouvre aussi des perspectives intéressante pour passer du stade "petites démos" à un "produit fini". On verra en temps utile.

En 3D sur PC / Wii / Xbox ... ?
C'est très peu probable également. Je n'ai jamais été séduit par le contrôle d'un personnage dans un environnement 3D. Celà demande également des techniques de programmation, d'animation et de développement très différentes de ce que le "développement-dans-le-grenier" permet. J'ai exploré cette piste pendant une bonne 10aine d'années sans réel succès, et l'arrivée des nouvelles consoles ne change pas fondamentalement la donne.
Intégrer des éléments 3D dans le jeu pique ma curiosité, mais pas au point de quitter l'approche "pixel art" que j'ai choisie.

Open Source ?
Le moteur de jeu et les outils que je développe dans le cadre du projet "Bilou sur DS" sont disponibles dans le projet sourceforge "dsgametools". Mon ambition est de m'approcher autant que possible d'un système de "game maker" entièrement présent sur DS: édition des niveaux, des graphismes, du comportement des personnages, etc. Vous pourrez donc les réutiliser pour créer votre projet complet.
En revanche, je conserve la propriété intellectuelle intégrale sur l'univers et les graphismes de Bilou. Je ne souhaite pas que X fasse une "suite" au jeu, ni que Y réutilise tel ou tel élément dans son jeu. Pour cette raison, les démos disponibles et à venir sont distribués comme un .nds "tout-en-un". Je vous demande de respecter ce choix. Si vous êtes fan de mon travail au point de vouloir proposer un "level pack", les "dsgametools" vous permettront de "schématiser" vos idées et de produire un prototype sur lequel on discuterait d'une collaboration.
Le vrai fan comprendra et respectera ce choix.

3 comments:

Romain Villeneuve said...

Super ce billet cela répond à plusieurs de mes questions. Ton logiciel que tu dis game maker sera t'il disponible pour l'ordinateur ou seulement orienté ds, car si tu fais un programme du style rpgmaker pour jeux de plateforme la je serais interessé si il pourra compiler bien sur en nds pour les cartes type r4 ou autres

PypeBros said...

Les outils que je développe actuellement (éditeur de niveau, éditeur de sprites, etc.) sont des programmes .nds, qui tirent parti de l'écran tactile de la DS et de son côté mobile. Je peux rajouter un monstre dans mon jeu n'importe où : dans mon salon, en attendant le métro, à l'anniversaire de ma belle-mère, au cours de latin, etc.

Je vise le même genre de fonctionnement pour l'éditeur d'animation, le comportement des personnages, etc. Je verrai à l'usage si un côté "PC" de certains outils s'avère nécessaire pour garder une vision suffisamment globale du projet.

Quant à "compiler en un .nds" il s'agirait essentiellement de "repackager" le moteur de jeu et les fichiers ressources en un seul binaire. C'est une tâche qui pourrait être effectuée aussi bien sur DS que sur PC, voire disponible "en ligne" (tu m'envoies tes fichiers, je te renvoie ton .nds ficelé). Ca n'a évidemment de l'intérêt que pour distribuer le jeu à d'autres, et pour l'instant, c'est encore très manuel.

Pour un connaisseur de la plate-forme Windows, ce serait assez simple de réécrire les outils sous windows à partir de la bibliothèque que j'ai pour DS. Ce n'est pas un job pour moi, mais je ne refuserai pas un coup de main dans ce sens-là.

A côté de ça, je suis les traces de Chahi, à savoir que la logique du jeu (le produit du game-maker) reste indépendante du matériel, et une grande partie du moteur de jeu est constituée de code C++ également portable. Il suffirait donc de reprendre libgeds et de remplacer le code qui déplace les sprites par de l'OpenGL pour pouvoir par la suite faire tourner un jeu développé avec le game-maker sur d'autres plate-formes. De nouveau, ça reste un aspect disponible pour d'éventuels collaborateurs.

Pour l'instant, je suis pour ainsi dire seul sur le projet "game-maker + Bilou", donc j'essaie de concentrer mes efforts sur ce qui me permet de progresser. La tentative précédente (game engine et game-maker sur PC) s'est transformée en un projet de nouvel OS tellement j'étais dégoûté de la manière dont windows et DOS fonctionnent. J'ai fini par mettre cet OS (Clicker) en stand-by au bout de 10 ans quand j'ai acheté la DS.

cyborgjeff said...

voilà un beau condencé ! et j'aimais ton approche de "pack" démo pour au final un projet "cartouche" homebrew comme on en parlait il y a qq jours.

pour la musique... je réfléchissais à qqch. Afin de donner au final une homogénité au musique... pourrait-on envisager que les fichiers musicaux finale soit par exemple des .XM sans instruments et sample et que ceux si soit à part afin d'optimiser l'espace ... ou cela au contraire complexifierait et ralentirait le fonctionnement du jeu ?