Showing posts with label adventure. Show all posts
Showing posts with label adventure. Show all posts

Saturday, October 23, 2021

Le tout premier ?

 

Je viens de retomber sur une pièce d'anthologie. Une reproduction colorisée de ce qui pourrait bien être le tout premier synopsis de Bilou's Adventure! On y voit d'ailleurs dans le bas un 'bubule' dessiné par mon frère.

Premier élément remarquable, la 'school zone' est loin dans le jeu alors qu'elle passera assez rapidement comme deuxième zone. La zone aquatique est visible dès le départ, mais nécessitera des palmes (juste avant la School Zone) pour qu'on puisse y entrer ... Comme dans Commander Keen.

My brother had a fascination for maps back in '93, so I should not have been surprised if one of the first documents he brought me after we decided to rename the 'buble' character 'Bilou' was a world map of the games' big adventure. 

And on the back of that world map, there was a set of sketches for the games' introduction sequence ("magic" stones get scattered during a space shuttle crash), the main menu screen, and so on. Unlike in previous documents, the character is already identified as 'Bilou', and we are 'PPP Studio'.

Cerise sur le gateau, au dos de cette feuille, les croquis de mon frère pour l'intro, les menus, etc. Qui nous confirme que même si on dans du tout vieux, le nom "Bilou" avait déjà été arrêté.

There are a few interesting similarities between that map and the ones from the original Commander Keen trilogy. Notably the abundance of world map teleporters and an early-visible area that requires a swimming upgrade to be visited.

Compared to other maps of the game, the school zone appears quite late in this proposal, and the final boss is "catvador", the evil ruler of the Black (sic. we meant dark) Empire recycled from Calimero.
 

Friday, April 14, 2017

L'interview avec P-Y.

Il y a un mois ou deux, j'ai eu le plaisir de répondre à l'interview de P-Y, un doctorant qui s'intéresse tout particulièrement aux motivations des développeurs de jeux amateur et hobbyistes. Plus ou moins trois heures de questions-réponses que je vais un peu indexer, histoire peut-être d'en faire une vidéo illustrée par des extraits de blog ? Parce que vous vous en doutez, quand je raconte tout ça, j'ai des bouts de mon blog en tête, bien sûr.

Voilà donc pour la première heure

00% -- Comment en es-tu venu à vouloir faire des jeux ?
09% -- La première fois où tu t'es dit "j'ai envie de faire un jeu vidéo" ? (05:55) -- c64 -- calimero
18% -- Si vous aviez eu la super-nintendo à la maison, vous n'auriez pas pu faire de jeu sur SuperNES -- tiled -- hardware
32% -- Le lien entre créer et continuer à jouer. (20:00)
38% -- L'analyse des jeux comme prolongement du jeu (23:00) -- critical link -- rpg -- mechanics -- dangerous -- mario
47% -- Il y a des amateurs de jeu vidéo comme il y a des cinéphiles ? (28:50)
52% -- une couleur chaude pour les sauts difficile, une couleur froide pour les sauts faciles. (31:59)
54% -- le platformer comme de la lecture à vue (33:07) -- mario
59% -- Guitar Hero n'est pas un jeu, c'est un concours ; Manic Miner est un puzzle (si tu lui mets les vies infinies) (36:00) -- beyond-blogosphere -- do-you-sass-zx-willy
76% -- Quand tu fais un jeu, est-ce que tu cherches à exprimer quelque-chose ? (46:22)
81% -- L'appropriation, l'expression des mécaniques appréciées dans la création. (49:00)
85% -- Comment a disparu l'envie de piéger le joueur ? (52:15) -- rayman -- badman
94% -- Amateur = je le fais pour moi ? (57:00) -- feedback

PS: oui, l'environnement était un peu bruyant. A refaire, on ne s'installera plus dans une cafétaria.

Saturday, October 19, 2013

20 ans!

Il y a 20 ans, Bilou voyait sa première aventure esquissée sous les crayons de mon frère d'après les programmes CPC de Pierrick. J'ai fait de mon mieux alors pour transformer les "idées papier" de mes ainés en lignes de code et en pixels, mais la School Zone m'avait tenu en échec: le niveau de complexité dépassait ce que mes outils pouvaient supporter, menant peu à peu à la mise au grenier du projet.
Gain speed to break through that pencil barrier.

Aujourd'hui, je prends ma revanche avec ce homebrew pour Nintendo DS qui vous emmène à travers le dernier niveau dessiné par mon frère avec les monstres de Pierrick. Plus vous ramasserez de bonus, plus on vous emmène loin dans le temps...

That's it: the anniversary level celebrating the 20 years of Bilou video game sketching, design and coding is ready to play. At last, Pierrick's ennemies and my brother's level come to life and challenge you to gather all the letters scattered through the chemestry classroom. The more you get, the further we take you back in time. Can you make it back to 1993 ?

A: sauter et rebondir / jump & bounce
B: attraper et lancer / grab & throw
Bilou can run faster if you do a sharp turn back (tap left and slide to the right to run to the right). You can bounce on monsters by tapping A just when stomping them.

Pour courir vers la droite, pressez d'abord la croix vers la gauche puis glissez le pouce vers la droite. Pour courir vers la gauche, faites l'inverse. La "barrière crayon" peut être traversée si Bilou tombe d'assez haut.

Playing on the Real Thing
You need a DS and a linker device that can play homebrew files. With most linkers sold after 2007 (that support DLDI), all you'll have to do is drop the .nds file somewhere on your media card and launch it as any game.

With older linkers, you need to patch the .nds file manually using the driver compatible with your hardware. If your hardware need patching and you haven't patched, you'll see the bottom screen displaying only purple background with the words "NODA!" written in the middle. (and other boot info around).


Playing on an emulator
You're suggested to use desmume and follow these instructions to set the "GBA slot image" as being the .nds file itself. Other emulators (notably iDeaS, patch as R4TF) will require manual DLDI patching (see above). You'll get a better experience with a SNES-like gamepad.

Known Bugs/limitations
Although it's an anniversary, it's also a first release. There are things that are not visually consistent and room for improvement. It was however decided to release early and that those features would be left for future levels/releases.

edit: fix anniversary-G88 released.

Friday, March 29, 2013

Floating or non-floating ?

J'étais donc arrivé à vaincre les premiers défis techniques liés aux encriers et j'avais une animation assez convaincante. Suite à une demande de Lazycow, j'y ajoute une capture vidéo montrant les 2 "inkjets" qui bombardent Bilou à l'écran...

S'en est suivi une discussion assez animée sur pixelation qui est partie beaucoup plus vers les choix de gameplay que vers le côté "artistique" pur et dur, ce qui n'était pas forcément pour me déplaire.
Mais on touche à un élément "sensible": les encriers peuvent-ils ou non flotter dans les airs sans support apparent. Ce ne seraient pas les plate-formes mobiles les plus incongrues qu'on ait vu, mais ça représente un "décalage" par rapport à tout ce qu'un encrier est supposé pouvoir faire. Or, ça fait un moment que je me suis convaincu qu'il est primordial de faire en sorte que le monde virtuel dans lequel le jeu se déroule soit cohérent de façon à ce que le joueur y reste impliqué et qu'il continue à s'identifier au héros (fût-il une balle bleue :)

It's a fairly long story that all started on "way of the pixel" as Lazycow asked for the droplets to complete the inkjet animation. So I showed up a byzanz record of my on-going level and everyone stared at those floating inkers, suggesting that they rather feel ground-borne. But floating inkjets is a pretty well established design decision that has already been used in several maps. Still, I don't want the fiction to fall apart just because of some detail that looks too-odd-to-fit-the virtual world.

Quand Helm dit
I would never think to use them as platforms and even when I would figure it out I would say 'well... this is weird' and it would take me out of the game.
"Il ne me serait jamais venu à l'esprit de m'en servir comme plate-forme. Et si même j'avais fini par trouver, je me serais dit "c'est ... bizarre" et ça m'aurait ~sorti du jeu lui-même~".
La fin (entre ~) n'est qu'une traduction approximative, mais j'y lis une rupture du vortex reliant l'esprit du joueur à l'univers du jeu. Le genre de "glitch dans la matrice" qui fait que l'esprit se persuade qu'il est impossible qu'il soit dans la réalité. La frontière entre une bonne fiction et un délire où le lecteur ne parvient pas à rejoindre l'auteur et le regarde se bidonner tout seul.

Clairement, ça clashe. J'ai mis le temps pour re-penser à tout ça: les encriers-volants étaient un des premiers élément de gameplay que j'ai introduit moi-même quand j'ai commencé à faire du "level design" pour Bilou en 2007. Ils figurent sur la bannière de ce blog. Ce n'est pas rien. Mais oui, je suis le Grand Conteur de l'aventure (pardon pour les majuscules) et je peux trouver mieux que cette solution "peu chère" même si j'y suis émotionnellement attaché.

Quite some time ago, I planned and kept secret the addition of a "cork lid" being a sort of organic key that Bilou carries along to change the behaviour of inkjets. The idea is that the height Bilou could reach would be higher when he's using the lid. The ground-based and the airborne inkjet thus co-existed in level designs, with little attempted to harmonise that. Of course, it would still be possible to ride an inkjet with no lid, but that wouldn't throw you as high.

Parmi les solutions envisagées, il y avait la possibilité de faire en sorte que Bilou soit "propulsé" vers le haut en lieu et place de gouttes d'encre, s'il saute dans un des encriers. C'est une autre façon d'atteindre les hauteurs, et je pourrai donc l'exploiter à certains endroits où je retire un encrier-flottant-verticalement.

J'avais aussi prévu depuis un moment qu'on puisse rajouter un bouchon par-dessus un encrier, pour l'empècher de bombarder d'encre, mais aussi pour pouvoir être propulsé encore plus haut ...

Dans l'exemple "lancer le taille-crayon", je jouais sur le fait que Bilou arrivait dans un encrier pour motiver le fait qu'il lui était impossible d'emmener un taille-crayon. Celui-ci est facile à adapter: il me suffit de descendre un brin l'encrier (vide) de façon à ce qu'il flotte dans l'encre. Rien d'anormal ici.

A first use case featuring the inkjet was the "bridge" that brings Bilou to the blador-and-pencil area. Here, Inkjet is different from any platform by the fact that Bilou need his hands to grab the inkjet and avoid falling. Therefore, he cannot bring a dumblador along. It's fairly easy to adjust, though: an empty inkjet could easily float in the ink, so I just need to raise the level of the ink swamp by one tile and I'm done.

Le "niveau de rémi" me bloque beaucoup plus. Je voulais combiner les 2 propriétés du taille-crayon (solide et transporteur) pour lui faire bloquer l'entrée d'un passage vers la gauche. Cette entrée n'aurait été débloquée qu'une fois l'encrier en route vers le haut (avec Bilou à son bord). Seulement voilà: une fois engagé dans le conduit, pas moyen de sortir de l'encrier. On devra pour ce faire attendre d'être arrivé à l'étage au-dessus, et on aura donc à combiner un bon timing tout en évitant Bangbash et la rangée de crayons pour entrer  dans le passage sans pour autant se faire écrabouiller par l'encrier qui redescend.

My nephew-drawn level brings a tougher challenge. The inkjet here is moving vertically, only when triggered by Bilou's landing. When idle, it blocks the way to a secret room. Without that room, Plummet -- the scribble feather -- could have been used, but I specially designed around the presence of a moving block that push the player into a narrow vertical pipe. You can't escape that pipe until the inkjet has reached the ground level, with a Bangbash to take care of.

S'il n'y avait pas eu ce passage secret, j'aurais pu faire appel à Plummet, la plume qui accompagne l'encrier bougon qui sert d'introduction à "Deep Ink Pit" Mais suspendu à une plume, on peut se détacher n'importe quand ...

Dans un autre essai de niveau, j'avais mélangé encriers et livres-écrabouilleurs pour forcer le joueur à ajuster son timing plutôt que de foncer toujours plus vite en avant. Ici aussi, le fait que Inkjet soit solide oblige de correctement calculer son coup pour ne pas tomber dans les crayons.
Une éponge qui monte et descend devrait pouvoir reprendre le rôle, cela dit.

Another timed challenge that used inkjet moving up and down to force you dodging the smashing book rather than rushing forward. I guess Spongebob could easily be used instead, here.

Ici, image d'archive (excusez la qualité moyenne du scan): le premier niveau de la school zone dessiné par Piet avec deux encriers qui montent et qui descendent. Ils ont pour rôle de mettre suffisament la pression au joueur pour qu'il soit tenté de minimiser les risques et du coup "loupe" la clé nécessaire pour quitter le niveau. Mais vu leur côté ascenceur, on pourra si nécessaire refaire un essai en faisant demi-tour une fois l'erreur constatée.

And last but not least, here comes ancient scroll where my brother depicted the first school zone level. First inkjet ever, and they weren't floating on their own, but were rather standing on "magically floating erasers" ... not much better. They were used to intimidate the player and make her miss the key among the bonuses, while offering the option to move back upwards and eventually grab it. Would it work if I had some bouncing erasers on the ground with the inkjets bopping up and down ? it's fairly high ...  

Les encriers sont-ils sur des gommes volantes dans le dessin de Piet ? sans doute. Est-ce une meilleure idée ? J'en doute.
Assez rapidement j'ai voulu "habiller" ces deux encriers, par exemple avec une grosse poulie et des cables: ils se retrouvent dans le matériel prévu pour le cours de physique et montent/descendent accrochés l'un à l'autre. Sauf que si c'était réellement le cas, Bilou devrait pouvoir s'accrocher lui aussi à la ficelle, non?

Ce n'est qu'en commençant ce texte et en voyant les lattes côte à côte que mon cerveaux embrumé par mes 34 ans tout frais à suggérer l'interprétation de "ce sont des flacons du cours de chimie accrochés à ces saloperies de statifs universels gradués, et ils sont maintenus par des pinces qui montent et qui descendent" ...

I was staring at those two-decade-old inkjets and suddenly, the rulers started looking like those graduated rails that the chemistry teacher used to build goldberg machines featuring erlenmeyers and test tubes. They would perfectly grip on an inkjet, wouldn't they ? you can move the grips up and down at will, too ... and the rail itself is too slippery, so Bilou cannot grab it on his own! Eurèka!

J'ai enfin fini les corrections des TP de mes étudiants, donc je chope un microfin et je fais un test ... Hmm ^_^
Oui, ça j'aime beaucoup mieux. ça ne sera pas utilisable partout, mais des classes de chimie, il y en a aussi. La tige sur laquelle la pince est montée est suffisamment glissante et large pour qu'intuitivement on puisse admettre que Bilou ne parvient pas à s'en servir seule. Reste à ajuster la perspective pour qu'il n'y ait pas trop "d'espace mort" entre l'encrier et la tige (qui fait office de mur).

Je crois qu'on y est. Coder ça, ce sera l'affaire de quelques pixels supplémentaires ... rien à voir avec "la plume en 3D" ou "une grosse poulie avec des cordes et tout ^_^



Pendant ce temps, sur Way of the Pixel, ça ne chôme pas. Chacun y va de sa petite proposition.

J'aime assez bien l'approche d'Ymedron (ci-contre) pour un "passage imposé" où il faut ajouter un bouchon pour passer. C'était le genre de petites scribouilles que Julien, Piet où un autre membre de PPP Team m'aurait suggéré il y a 20 ans quand le projet venait de commencer. On aurait pu rêver meilleur cadeau d'anniversaire ? ^_^

Habemus Atramentarium. And thanks to Ymedron's alternate solution, I now even have the perfect scenario for introducing the cork lid without involving some boring text-based tutorial ^_^.

Wednesday, October 10, 2012

Courir ?

En testant la démo "Back to School", Facet regrettait l'absence d'un bouton "RUN" dans le comportement actuel de Bilou. D'un côté, un mini-jeu comme "nuts'n'bolts" ne devrait pas avoir besoin d'un tel bouton (pas de grand trou à franchir, et un gameplay plus basé sur le timing que sur les réflexes). D'autre part, je ne suis pas encore décidé sur le mode de fonctionnement de la course.

Il faut un bouton pour courir, ça c'est assez évident. Mais sur le DPAD ou comme bouton d'action ? Est-il vraiment indispensable de le garder enfoncé tant qu'on veut courir ? A la fin d'une partie de Mario, on finit par attraper des crampes... Pourtant j'aime bien la phase "gagner de la vitesse" que ce genre d'approche permet, par rapport au mode "un coup de bouton X et ça y est, on court à pleine vitesse" dans Rayman. Au point que Peach et Shantae ont carrément un bouton "ne pas courir".

Have you felt the lack of a RUN mechanics in the latest Bilou demo too ? Facet surely did.

I was really missing a run button and the little pauses and lack of inertia take away from the fluidity. I'd like to bounce and slide more.

After I spent some time thinking about it, it becomes clear that "Bilou's adventure" will have such a RUN mechanics, where speed progressively increases, but that this would be absent of "Nuts and Bolts" (and possibly other in-between arcade games featuring Bilou).

I would like, however, to be able to release the button, and not force the power-player to keep RUN button pressed for 30 minutes if he wants to speed-run the game. Fundamentally, what I'd love to try is a sort of "cruise control" behaviour, where you press a button only when you want the DPAD to make you "accelerate". Once you release that button, you keep moving at the reached speed until you release the DPAD as well.


Mon impression, c'est que le fait d'accélérer progressivement ou non peut être découplé du mécanisme de "lecture" du gamepad. En d'autre termes, on pourrait avoir un bouton qui n'est pas "courir", mais "accélerer". Si le joueur mêne Bilou dans une direction sans enfoncer ce bouton, Bilou ne change pas d'allure. Par contre, dès que le bouton "accélerer" est enfoncé, la vitesse de Bilou augmente (plus ou moins) progressivement jusqu'à la vitesse maximale. Que celle-ci ait été atteinte ou non, Bilou conservera la vitesse acquise si on relâche le bouton d'accélération.

The poll is now open: which sort of RUN do you actually prefer ?
Mario: 62%
Rayman (PSX): 12%
Shantae: 0%
Kirby: 0%
Bilou (new): 25%

Sunday, November 06, 2011

On repeind l'école ...

Après pas mal de soirées à effacer les modifications que j'avais faites, j'ai enfin une variante des "blocs de bois" pour l'école qui soit un peu plus colorée que la version de 2007 ... La tentative de "miniature" pour définir une nouvelle palette aura donc porté ses fruits ^_^

Last week, I tried to update the school zone pixels so that foreground and background would look like a common, 3D environment. It sounded a good way to start with colours that worked well as BG in the school zone. It was a flop. The picture was all greyish. I tried something new to solve it: a miniature level (started as a 32x32 bitmap and zoomed to 64x64) where I could do all the colour experiments I wanted, as they had no link with the former spriteset. Then it took me almost all the week to make some decent wooden block with those saturate-and-nicely-mixing colours. I think I finally managed to get something that works. It still needs a bit of anti-aliasing and some more touches here and there, of course.


Friday, July 22, 2011

Futurs pixel-artistes: ne vous découragez pas

Ca me fait toujours sourire quand on me dit que je "dessine bien". J'aime ça, mais faites un tour sur pixelation ou deviant-art, et vous verrez que "dessiner bien", c'est autre chose. Voyons un peu ce que ça donnait en '96

Une vieille (~1997) tentative d'amélioration du graphisme de Bilou. Je venais donc de finir mon "modplayer" 6 pistes en assembleur, j'avais racheté à Pascal son scanner Logitech et je m'attaquais à convertir le nouveau look de la "green zone" en pixels "prêts à l'emploi". Mes nouvelles connaissances sur le mode X aurait dû fournir le dernier élément pour faire de Bilou un jeu MS-DOS capable de rivaliser (hum hum ^^") avec Rayman "himself".

Sauf que n'ayant pas une équipe de 100 personnes avec moi, j'avais encore beaucoup à faire.

Here's an old file dating back from '97 where I saved the steps to convert the output of a scaled-down scan into pixels "ready for integration in a game". As you can see guys, don't feel disappointed if your pixel art is not yet on par with your favourite artist. Mine wasn't either (and still isn't, by a large extent). I'm quite glad I had already learnt that one should not use black artlines at pixel-art scale. A dark color is much better. I hadn't learnt yet that hue shift is the key to nice colours, and I was using "plain value ramps" (where you build linear gradients from a saturated color towards white and black, making everything just look like plastic). And of course, I was overusing automated gradients. That may have saved me from pillow-shading, but it makes the petal looks like spheres rather than having the curve they deserve.

Il y a pas mal d'erreurs de débutants dans ces graphismes. Sur-utilisation des dégradés automatiques de Deluxe Paint qui rajoute une texture granuleuse à tout (que ce soit le bienvenu ou non) et aucun "hue shift" : chaque dégradé part d'une couleur et en diminue linéairement les composantes RVB vers le noir. Point. Pour le jaune et le vert, l'effet est particulièrement raté.
En revanche, déjà là, j'avais appris à fuir comme la peste les "art lines en noir", quitte à refaire entièrement le contour. à la main. Il faut dire que devoir supporter "Skunny the Wild West" m'a ouvert les yeux sur l'horreur que ça donne au final. Et j'ai évité le "pillow shading". C'est toujours ça de pris.

Monday, April 04, 2011

Deep Ink Pit: "Backstory"

Nous voilà en plein milieu de la School Zone ... Bilou va avoir besoin de l'aide d'un encrier vétéran et de sa plume volante ... mais celui-ci n'est pas dupe.
la lettre d'introduction de Maître Pad ne suffit pas: il veut une preuve tangible que Bilou est bien le héro légendaire qu'il prétend.


Well, this is not exactly "necro-posting", but yet, these pictures were waiting in the "draft" subjects since May 2010 ^^" ... and they were likely drawn from a long time ago by then, since the chose-your-game poll of January 2010 was already featuring the concept of Deep Ink Pit. And I know these small sketches, between design document and comic book, were drawn as the concept of the Deep ink Pit was forming in my mind.
I bet that's the best I can do tonight to make you forgive me for being so much overwhelmed with work that I can barely give you a blog update ...

Sunday, January 23, 2011

La (old-)school zone

Après "Apple Assault", il y a de très fortes chances que le prochain "mini-jeu" de Bilou soit basé dans la School zone, ce curieux temple de la connaissance imaginé par Pierrick H. J'en ai déjà présenté pas mal d'éléments aux débuts de ce blog, vu que c'est dans la school zone que se plaçait le mini-récit qui m'a propulsé dans la blogosphère en 2006.

Précédent le premier Rayman de quelques mois, la school zone doit sans doute une bonne part de son inspiration à Zool, où elle n'aurait certainement pas fait tache entre le monde musical et le monde des outils.

Above you, the seminal sketches of Pierrick who suddenly decided to turn our daily school into a deathly zone where supplies are turned into monsters. Just below, a "pixelated" rendition some weeks later in '94. You'll note that there was no Rayman screenshot to be seen by that time. But there were many other games where the school zone could draw inspiration from. Zool is clearly one of them, and those school supplies would have perfectly fit between the musical and the toolbox worlds.

These supplies account for most of the ennemies I still plan for the DS version of Bilou (only BangBash is missing), although the movement patterns sketched by Pierrick have been strongly revised.

Le crayon, tout d'abord, a été promu pendat, milicien du désordre imposé par le boss. A noter que celà ne s'applique qu'aux crayons noirs, à mine dure. Les crayons de couleurs, à mine plus tendre, semblent tout à fait sympathique, bien que ne parlant pas.

The major drift came out while drawing the mini-comic: pencils turned into an organised army, under the control of the Big Book. Other encounters, such as the erasers, may be hot-headed, but they do not directly engage the fight.

Les gommes sauteuses sont restées, bien qu'ayant tendance aussi à faire de longues siestes ... un peu inspirées de certains blorks de Kid Paddle. Elles ne sont du camp de personne, et les pendats ont bien compris qu'il vallait mieux les éviter.

Quant aux encriers (maintenant 'inkjet'), s'ils sont si irritable, c'est simplement que ceux que l'on rencontre à l'extérieur tu Temple de l'Encre en sont les gardiens. Ils ne sont pas là pour rigoler, contrairement aux jeunes novices, qui eux, sont plutôt facétieux. Ils ont aussi acquis la faculté de flotter dans les airs (et donc utiles comme plate-forme mobiles) et peuvent projeter ce qui boucherait leur orifice au loin par la seule pression de leur encre. C'est de loin le personnage dont j'ai le plus ajusté le comportement.

By blogging further, many supplies started needing a "code name". Inkjets and spongebop name reflect their ability to serve as springs and moving platforms, respectively. This is somehow an attempt to understand what made the Mario series so interesting: interplay with monsters that create both counterpoint (the "tool" you need to solve a situation is hazardous) and deepness (you get richer interaction by combining sequence of simple actions).

Many have argued that the look of the inkjets doesn't invite interactions. This is somewhat deliberate: they are the guardians of the area and you are a stranger. They have no reason to show friendly although you have a common ennemy (the pendats). Hopefully, all you need to get help from them is to hop and bop on their top. Since this is how one dispatch ennemies, it should still allow the player to discover what to do.

L'éponge elle aussi a vu son comportement sérieusement remanié pour devenir ""Bop l'éponge". Pendue à son fil comme une araignée, pouvant flotter sur l'encre, elle joue à la fois le rôle de paratroopa et de plate-forme temporaire. Clairement, je veux construire un moteur de jeu riche en interactions là où les mouvements prévus pour par Pierrick étaient destinés à du BASIC en VGA.

Dumblador -- le taille crayon -- perd la faculté de se déplacer dans les airs: il sera plus utile comme projectile "vivant" (cf. les ShyGuy de Yoshi's Island) pour se débarasser de certains pendats trop encombrants. Une "clé organique", dirait Kirby Kid.

Le gros-livre-écraseur est toujours là, et son rictus lui vaut le surnom de "SquareRoot". Il serait un des professeurs de cet étrange école dont le caractère s'est empiré au point qu'il veuille dominer le monde. D'autres livres de ses collègues (notamment le Pr. Harraps) semblent heureusement avoir échappé à ce sort.

Some more drawing of the "big book" gave him the nick-name "Square Root", related to his eyebrows... And some more DS playing suggested a pre-battle level where one would have to keep climbing shelves while Sqrt follows you, causing shakes everytime it hits the ground, causing more supplies to fall down at you. That could be an interesting alternative to "Deep ink pit", btw.

Enfin, la "school zone" s'est aussi enrichie de PnJ tels que les tampons-encreurs, BangBash (totalement lié à une tentative de passer le jeu en 3D), et on y voit parfois de curieux Pr. Brush ou Pr. Atlas.

Monday, August 02, 2010

Le vieux Synopsis.

Petite scéance d'archivage: voici en comparaison ce qui tenait lieu de "Synopsis" à Bilou après la scéance de "brainstorming" pour le concours de 1994: tout juste un nombre de niveaux, l'ordre dans lequel il est possible de les parcourir (notamment via les téléporteurs triangulaires) et les pouvoirs gagnés après le combat contre les boss.

C'est bien sûr ma version "synthétique" de travail, mon frère m'ayant confectionné quelque chose de plus graphique avec une grosse tortue et une île volcanique ...

Bo - Look. This is an ancient map of the planet we've landed on.
Bi - Yep, it's curious that they had technology to build teleporters, but still named their lands along some primary elements such as "Fire", "Water", "Green"
Bo - I wonder what these "pyramid" and "turtle" places could look like.
Bi - Feel like doing some exploration, at last ?
Bo - Don't be stupid ! Archeological curiousity has nothing to do with your "exploration" stuff!

PS: eh oui, finies les "vacances 2010". Fini les coups de rouleaux sur le plafond, les tuyaux qui fuient et les tiroirs à monter ... ma cuisine est à nouveau prête à l'emploi (peu s'en faut), ce qui signifie que je peux à nouveau déployer un laptop dans mon salon :P

Wednesday, July 14, 2010

Synopsis



Possibly the very first Bilou level drawn by my brother
Quand Bilou était dans son jeune age et prévu sous Amiga/CPC, mes niveaux "tombaient du ciel", dessinés par mon frère. Je n'avais plus qu'à les "pixeliser". Mais maintenant que la "computer zone", la "turtle zone" et la "pyramid zone" ne sont plus d'actualité, que la "water zone", la "pipe zone" et la "fire zone" ont besoin de sérieux relooking, comment envisager la structure globale du jeu ? pas avec mes mini-démos, qui serviront au mieux à introduire quelques personnages ou tester un principe de jeu.

Je pensais donc essayer de placer sur une carte unique l'ensemble des "lieux clés" (puits de la clairière, temple de l'encre, la boule de neige dans l'usine chimique du Groenland, etc.), chacun occupant un ou deux écrans DS (allez, disons 512x512 pixels au max), ce qui devrait permettre de me concentrer sur les "interactions majeures" (genre 'au sommet de la montagne infernale, tu trouveras la vanne qui contrôle le niveau du Lac Those), et donner les grandes lignes de chacun des lieux. Restera ensuite à migrer "Synopsis" vers le jeu complet, en y ajoutant les phases d'actions.



... and a second take when it become "level B", a couple of year later
Back then, in the earliest days of the Bilou project, I hadn't to worry about game or level design. My brother had some Great Plans in mind and provided me hand-drawn maps that I could simply "pixelate" and code. Unfortunately, he never drawn anything past the green and school zones, and most of the other "zones" he named are questioned today (turtle zone and computer zones needs a replacement, fire and water zone clearly need more character).

I'm reaching a point where I'd like to have a better understanding myself of what happens on the curious planet where Bilou and Bouli crashed. The small one-feature demos that I planned as milestone won't help me with that. Sketching a few idea for my Bro's next CD, I ended up thinking that I could equally sketch the game's synopsis as a collection of "small rooms" (one per "encounter", max 512x512 pixels in size) that would represent the core goal of individual levels in a more "willy-inspired" game where the exploration dimension would be enhanced, and action dimension reduced to a minimum.

Oh, and btw, I haven't dropped the "Apple Assault" milestone, before you ask. I'm just waay too busy with painting and building up my new kitchen to make any noticeable progress there right now.


Au fait, avant que les questions ne fusent: non, je ne laisse pas tomber "Apple Assault" à 90% de l'objectif: je suis juste légèrement accaparé par le montage de ma nouvelle cuisine :P

Thursday, April 15, 2010

Bat Attack!

Almost everything is in place to build Apple Assault except arenas. Yet, I only had "little stars" to check I can shoot something... So I did a silly thing and started shooting berrybats out of applemans when the appleman is surprised to see Bilou. You may think of it as a performance test ... somehow.

Eh bien voilà: techniquement, le code est prêt pour un "Apple Assault". Je n'ai plus qu'à faire quelques "arènes" à coup de level editor. En attendant ... eh bin, j'ai bidouillé le code de l'appleman pour qu'il jette de petites étoiles et des berrybats lorsqu'il apperçoit Bilou. Ca ne sert à rien, mais c'est marrant, et ça me permet de tester les performances du moteur de jeu. De ce côté-là, rien à signaler.

Par contre, dès que j'appuie sur "START", c'est la galère. Avec autant de GOBs qui apparaissent, et vu le comportement des BerryBats (suivre Bilou), je suis régulièrement en contact avec une demi-douzaine d'entre-elles ... Et InspectorWidget essaie de remettre à jour son affichage à chaque fois, avec un "trashing" inévitable, puisqu'il ne peut m'en montrer plus que 3 à la fois. Je prends donc note de ces 2 ou 3 petites choses à règler mais qui n'empèchent pas pour autant de se lancer dans la réalisation du mini-jeu.

A few things have to be fixed, though they do not prevent the Apple Assault game to be started.

  • [done] Appleman remains too often "stuck in the air" after a fall.
  • [done] InspectorWidget should not break more than once per frame when a new monster enters the collision area. Plus I implemented a simple way to switch the focus to other GOBs (just click their "headline").
  • [wish] I need to randomize somewhat the behaviour of berry bats, which tends to "glue" to each other rather than tracking Bilou individually.
  • [done] make sure I can step-debug without having Bilou to jump. now START = debug, L (when debugging) = step and L+START = continue. That allowed me to inspect the stop and to figure out that the "slowing down" of Bilou was not accounting for walls. So you indeed receive a "stop" signal when hitting a wall, but still advance by one pixel into that wall when "stopping". That was enough to have Bilou then "glued" to the wall. It interferes with usual "L+click" commands, though... maybe I should've used R+START.
  • [done] When something land on ground, its speed is adjusted so that it exactly hit the ground. The "impact speed" -- that we'd like to use for bouncing -- is lost. We should keep that in a specific var. Bounces make Bilou harder to control, though.
  • [done] there is a 1-frame lag between sprite positioning and screen positioning that gets visible when falling at high speed (baddies get 'sucked' by the ground). We may want to delay camera move by one frame so that computed GOB coords is indeed valid.
  • [wish] replacement of a "gun" by a new one doesn't seem to work very well. I've got enough "spare guns", though.
  • [done] I miss something to perform x-align-against-block when a horizontal move is cancelled. That's why it's so hard to climb in the tree. There's interference with animation-controlled movements here.
  • [done] Work out a fail-proof initial state for Appleman and Funky Funghi. such failures interfere with game debugger.

Wednesday, March 31, 2010

- * aouch * -

I'm not going to claim that 'it works! I can't believe it". It's a little too early for that, but at least I've got the framework set up and the boring stuff done. I can have little stars shot away from Bilou when he's stomped by Funky Funghi. There are still weird things to be investigated such as "why doesn't they disappear as expected?" or "why do they look like coming out from Funky Funghi rather than from Bilou?"

Il est encore un peu tôt pour crier victoire, mais ça prend forme. Ces petites toi-toiles s'échappent de Bilou lorsqu'il se fait écraser par Funky Funghi ... les éléments permettant de gérer des objets dynamiques s'assemble ... l'objectif "apple assault" se rapproche. Il me reste à comprendre et corriger quelques effets curieux. Ce serait aussi bien qu'elles disparaissent lorsque leur animation est terminée par exemple ... et qu'elles proviennent effectivement de Bilou.

Source-checking and cross-checking doesn't seems sufficient. I'll have to meditate this.

edit: les petites étoiles sont supposées rebondir quelques fois sur le sol puis disparaître grâce au code suivant:

state19->state19 on fail [v1 $20 >] (v1 $40 - ~ :1)
state19->nil on fail [t]
mais curieusement, ça ne marche (presque?) jamais avec [v1 $40 >] comme gardien et seulement de temps en temps avec le code ci-dessus. Je viens de réaliser que le contrôleur "gravity" ajuste la vitesse verticale lorsqu'on rencontre le sol de manière à ce que la chute se termine sur le sol. Ca casse évidemment tout mon beau mécanisme puisqu'au moment de l'évaluation des transitions, ce n'est plus la vitesse de l'impact étoile-sol que je lis, mais la distance à laquelle l'étoile se trouvait par rapport au sol. Je vais réviser ça. Ca pourrait bien expliquer quelques autres bugs dans le comportement de Bilou et de l'Appleman.

Oh, and btw, here's a small UML snippet of the classes involved in such "extra actions". The 'red path' show interactions when an action definition is parsed, and 'blue path' how the actual "shooting" occurs.

Thursday, February 11, 2010

Berrybats!

Bion, ça ne va pas être un post extraordinaire parce que j'ai la crève. Et ce n'est pas une évolution extraordinaire non plus, en fait. C'est juste qu'à additionner 2 et 2, on finit par avoir 4. Et en l'occurence, ici, 4, c'est une baie sauvage volante non-identifiée qui colle Bilou au train dans les bois. Voyez plutôt. Ou jetez un coup d'oeil aux sources de la démo, c'est selon. Bien qu'ayant changé de nom à plusieurs reprises, les BerryBats restent l'ennemi le plus ancien de Bilou (bon, okay, il ne fallait pas trop se forcer pour y penser au départ). J'avais prévu un long post de rétrospective mais je vais plutôt finir de boire mon ciment et retourner me coucher. Je vous invite à retourner voir l'ensemble des posts marqués "berrybat" pour vous faire une idée de ce que j'aurais causé. I'm sick. So don't expect some very fancy stuff around. I just put the last bits together that were needed to have a berry bat flying around and tracking Bilou in the woods. It's mostly harmless at the moment. It's not even "turning back" nor does it sits sleeping until Bilou gets close. But it is the eldest of Bilou's ennemies and I had kept its pixels secret for too long. Enjoy. I'm gonna have my medecine and get some sleep. Enjoy the previous posts tagged "berrybats", that should tell it all. Oh, au passage, faites donc un tour sur Pixelation, j'y avais fortement fait évoluer le "look" des chauves-souris entre leur version "pomme" et leur version "baie".

Thursday, September 24, 2009

Sur GBA

On est en janvier 2001. Le GBA commence tout doucement à prendre de l'ampleur et je rencontre dans le bus un gars qui s'est acheté une "cartouche programmable" pour y mettre plus de jeu. Je me renseigne un peu, entre 2 release de Clicker, et je trouve pas mal de documentation technique confuse, mais alléchantes, sur les capacités de la bête.

Ma petite BD de Bilou a le vent en poupe. Je fais 2 à 3 "mini-strips" par semaine, et je commence à envisager la possibilité de réimporter tous ces petits personnages dans un jeu ... sur GBA, justement. L'occasion de donner un coup de jeune aux mouvements possibles. La version BASIC était assez simpliste de ce point de vue-là : un bouton (ENTER) pour passer au pouvoir magique suivant, et un autre (SPACE) pour utiliser le pouvoir sélectionné. [L] et [R] pourrait bien jouer ce rôle ici, mais après quelques heures passées sur Megaman X, je me mets à chercher quelque-chose qui n'interromperait pas l'action à tout bout de champ.

A.D. 2001, I discover the Game Boy Advance and meet in a bus a guy who bought a strange cartridge with some 256MB of flash memory that can host games you upload from a PC. I dig the hardware specs that seems very interesting though still incompletely understood. By the same time, my little Bilou comic project is gaining speed, with 2 to 3 strips a week, and i'm starting to dream of re-importing those characters into a newer version of the video game ... on the GBA.

Finalement, la réponse de Nintendo concernant ma demande d'informations supplémentaire sur le hardware son de la GBA et la perspective de devoir gérer le mode thumb et les copies entre ROM et RAM de quelques Ko auront raison de l'aventure avant même que je n'aie installé une suite GCC pour ARM (que mon frère s'était quand-même empressé de télécharger chez Wan, avec tous les tutos disponibles à l'époque! Il y croyait dur comme fer!)

These drawings are a testimony of an attempt to re-think the controls of the game. After each level, Bilou recovers one of the "magic stones" that increases its abilities. Here, i tried to stick to two buttons and avoid interupting the action, while the BASIC version had a "select power" button (ENTER) and a "use power" button.

Despite my brother's efforts to make me start working on it, Nintendo's reply (we were asking for detailed information about how the sound worked on the device) and some awkward aspects of GBA programming (co-existence of thumb and normal instruction set and the need to manually move data between ROM and a fairly small SRAM area) burried down the project. Only the Nintendo DS that can potentially serve both as the game platform and the development platform revived the dream of a Bilou game on a true gaming console.


Tout ça parce que dans son commentaire sur "Summer Flight", mon frère mentionnait que le mod avait été remixé plus tard pour la version GBA de Bilou (qui, je le rappelle, ... ok, je sors)

Wednesday, June 24, 2009

Je vous parle d'un temps que les moins de 20 ans...

Bien avant Internet, du temps où les diskettes étaient molles et que les écrans étaient le plus souvent monochrome, je programmais déjà. Petit retour sur la version "BASIC" de Bilou en image, stimulé par le fait que j'ai utilisé la "distribution" de Bilou pour QEMU comme .torrent de test dans les TPs de mes étudiants (pas de téléchargement proposé, parce que je me suis rendu compte que certains paramètres y étaient encore incorrects :P)

There was a time were the network wasn't interconnected yet and had to travel the real world enclosed in sectors of floppy disks that were actually floppy. Screens had usually no colors but I was already coding. Here are a few shots of those coding sessions, with the BASIC version of Bilou's adventure.

Tout d'abord, construire le niveau lui-même. A grand coup de "Data" qui sont lues séquentiellement à partir d'un autre point du programme. Une sorte "d'Embedded File System" avec ses avantages et ses inconvénients, l'inconvénient majeur étant sans doute l'impossibilité de construire son niveau autrement qu'au clavier.

Vous reconnaissez la scène dont la capture d'écran est sur ce blog depuis des mois ?

Venait ensuite la 'routine de gestion de l'écran', quelque-part au coeur d'une énorme boucle du genre:

  • lire les DATA et les afficher
  • select CASE ecran
  • ajuster la position de Bilou et boucler

A level was built out of 'DATA' lines that encoded pixels or tile arrangement for a room. But that wasn't quite enough. Over the background layer, I had small chunk of code that placed interactive graphics, and a loop that animated every object on the room, tested for collisions with bonuses, bumpers, etc. and "doors" area towards the next screen. Yes, every room with its own game loop. Never do that again, kids.

Cette "routine" va dessiner tout ce qui n'est pas décor (ennemis, bonus, dégradés, etc) avant de traiter en boucle le comportement de ces objets avec des sous-routines (ouf. Il y en a quand-même) genre "move" pour Bilou, "pomme" pour tester si bilou touche une pomme, "gold" pour tester s'il touche une pièce d'or, etc. Vous avez vu cet horrible hack ? répéter n fois ce qui ne dépend que de Bilou avant de passer au test de timer histoire que Bilou puisse effectivement se déplacer plus vite que le petit ver. On a échappé au 'FOR I = 1 TO 1000 : NEXT', ceci dit.
Des choses aussi élémentaires que "suis-je mort" ou "faut-il passer à l'écran suivant" devaient être répétées pour chaque écran. Wéééééé. :P

Allez, un autre petit écran. Je me suis demandé en reparcourant le code "mais enfin, pourquoi diable ce "if ... then mort". Bin parce que sinon, Bilou pouvait se promener allègrement dans les pics dessinés un peu plus haut. J'aurais pu trouver autre-chose... une couleur mortelle, par exemple.

Au passage, il n'y avait plus de sprites dans le QuickBasic (pas plus qu'en EP-BASIC). Tout fonctionnait par copier-coller entre l'écran et des variables tableau (ce que les amigaistes appelaient sans doute le "blitting", mais qui en l'occurence était du PUT et GET. Concept farfelu, ces "copies" pouvaient faire appel à un opérateur booléen pour combiner les pixels existant et ceux du buffer. Je suis parti de jeux monochrome où j'effaçais le personnage du fond noir en le "XOR"ant avec lui-même pour finir par utiliser un système de masque en deux passes (AND/OR). En l'occurence, dans ce jeu-ci, j'avais droit à 15 couleurs de fond (respectant le pattern xxxx1111) et 15 couleurs de sprites (0000yyyy) de sorte qu'un "AND" bit-à-bit entre un sprite et le fond affichait le sprite, et une couleur automatiquement transparente (255). De tous mes hacks, je crois que ça reste le plus tordu. Toute tentative de programmer sa propre routine d'affichage en BASIC étant évidemment inimaginable, car d'une lenteur affligeante.

Figurez-vous que même les tests étaient lents. Je veux dire les "if-then-else" Du coup, j'essayais dans mes routines de comportement (appelées plusieurs dizaines de fois par seconde quand tout allait bien) d'en utiliser le moins possible. En témoigne ce genre d'expression optimisée -- surréaliste aujourd'hui -- qui utilisait le signe de la différence de position pour ajuster la vitesse du "Bubble Bat". Il m'en reste encore des séquelles aujourd'hui (cf. Coding Funky Funghi).