Showing posts with label rectoverso. Show all posts
Showing posts with label rectoverso. Show all posts

Monday, June 30, 2025

Dangerous, not evil

If you could read the very early design documents of Bilou's Adventure, you'd note a mad scientist (somehow mix of Dr. Eggman and Dr. Gero). All the bosses are experiment he conducted and likely all the baddies are after you because of him. He was actually imported from sketches of "Calimero". He didn't last long.

Au début du design de Bilou, en '93, le joueur était face à un savant fou (importé de Caliméro), une sorte de mélange entre le Dr. Gero de Dragonball et le Dr. Robotnik de Sonic qu'il lui faudrait affronter dans le combat final, et tous les monstres qu'on allait affronter étaient de son fait ou dans son camp. 

Later on, when working on the "ultimate game maker" idea, I tried to introduce an invading species like the Kremlins in DKC or the Koopas in SMB, that would justify the quest, but that didn't last long either (actually, I couldn't come with anything interesting enough to give it a variant for every zone Bilou travels).

Plus tard, en '98, en parallèle aux recherches techniques sur l'Ultimate Game Maker, j'ai essayé d'ajouter une espèce invasive -- l'équivalent des Koopas ou des Kremlins des jeux Nintendo -- mais rien ne marchait vraiment. Entre autre à cause de l'aspect hétéroclyte du monde de Bilou qui n'a pas grand chose en commun avec le Royaume Champignon. Puis alors que la BD de Bilou prenait petit à petit corps, pas mal de personnages qui étaient au début des monstres se sont retrouvés à jouer un rôle nettement moins "noir ou blanc". Le champignon fou se met a avoir un idéal dans la vie (parvenir à voler) et des mouvements d'humeur.

On retrouve quelque-chose du même tonneau avec la gomme qui charge le crayon (qui l'a réveillé en sursaut), mais qui discute tranquillement devant un gogo susceptible de lui construire un pont. Avec les esquisses de la rencontre avec Bangbash, c'est devenu un mécanisme narratif assumé: il y a des personnages dangereux, au même titre qu'un taureau ou un sanglier sont (plus ou moins) dangereux, mais il n'y a pas de méchants (ou très peu: ce seront les pendats de School Rush, par exemple). Et voici une petite gribouille de 2009 qui reprend cette idée pour la première fois à plat.

Then came the comic, and with the comic, many of the baddies stopped being "evil". The bopping mushroom (now known as Funky Funghi) may occasionally become excessively angry, but he also asks Bilou how he manages to fly and whether he could teach him to fly as well. The RectoVerso eraser is aggressive against the crayon who woke him up, but can just stay there and chat when it seems that he could trick Bilou and Bouli. 

And the picture you have above puts it into words for the first time: they are *dangerous* (like a bull), not evil. Very few of them attack you just because you're a non-them, but you should rather not mess with them either because you could quite easily got hurt. With a few exceptions (like the pendats), what you're facing is *not* an army.

Le truc s'invite même rétrospectivement dans School Rush avec un "évidemment que les gommes sont énervées: l'encre monte", soutenu par un graphisme de gomme qui dort une fois qu'on a rebouché la fuite, ou l'idée pour Dreamland que les applemen soient passifs tant qu'on a pas ramassé de mini-pomme. On justifie l'aggressivité des applemen de Apple Assault par le fait que le vaisseau de Bilou et Bouli vient de s'écraser dans la forêt, saccageant leur habitat naturel (désolé, les compotes ^^")

Saturday, November 17, 2018

They won't show up in School Rush (?)

a few post-mortem sketches of ideas for the good-ending of Bilou: School Rush that didn't make it to the game.

since early in the redesign of the game on NDS, I tried to work with the idea that most foes we encounter while playing a Bilou game are not really evil, although they can be quite dangerous.
I hope I made it clear enough with the ink.jets who are trying to defend their realm against a pendats invasion but may occasionally help Bilou.

The comic shows the bopping erasers speechless quick to anger when disturbed during nap time. The theory in School Rush was that the sudden ink rise made them very nervous. The secret ending should have shown them relaxed again, being taught that pendats are dangerous, but that they should behave friendly with Bilou.
Unlike bladors, erasers aren't speechless, although I'm not sure I've ever published any of my sketches about the "erasers bridge", and you'll have to dig deep into this blog to see some evidence that they can speak (or trust the picture shown just nearby).

All my attemps so fan to draw those erasers as pixel art were unsatisfying once I reached the "animate them" step. But I was trying to just reuse the sprites from "normal" erasers, with some overlaid sleepy eyes or snoring mouth. I was about to just write "I'll just use regular eraser instead" burl had my DS in my pocket, so I tried another approach.

First I used a draft 32x32 blocks page to draw a few keyframes for a sleeping eraser. I used SEDS limited animation features to check it was fun and only then I split them into 16x16 blocks for AnimEDS. This way i keep only 2 sprites for the animation, but I can do squashes, stretches and wobbles to make the animation look smoother.

Saturday, November 18, 2017

power-button bug

On the game design axis, I am quite satisfied with the final level of school Rush and how it integrates with the earlier levels. It took A. (from the S-Team) Some 30 attempts to beat it, but she hasn't turned mad or bored, and even enjoyed being wrapped to level 1 afterwards.

On the technical side, my latest personal tests hit me with a bug I thought I fixed long time ago: getting stuck in a ceiling, There are few places where this can happen in the game, but if it happens, you will remain stuck, possibly forever unless you use the power button to trash all your progress and reboot. Would a player feel like starting the game again in such conditions? I don't think so.
 
The thing is, the basis pretty hard to track, a bit tedious to reproduce and all my attempts to fix it have failed ... so far.

What I truly need is a tool that will allow me to identify the sequence of state transitions that led to the offending state when I finally manage to reproduce it. Another debugging tool that would complement Inspector widget for cases that cannot be solved by single-stepping on setting breakpoints.

edit: let's stop rambling, let's start cracking ...

Bug is tedious to reproduce

Then let's make it easier to reproduce. Let's have e.g. a build of the game with much more lives, more hitpoints if needed, that drop you in a place where it is easy to try reproducing the bug. Let's go to that level with the DS, too, and try to get into the wall in as many ways as possible (runMe is neat for that because it let me launch any level), to get a better understanding of the conditions that make it happen.

Moreover, we're running on an emulator, here. And emulator typically have a free save-state mechanism. I'm unsure whether it works flawlessly with desmume, but it's worth giving it a try.


Bug is hard to track

Then let's make our best to get as much information as we can from a succesful run.

Granted, the ideal would be to have a curve plotted, annotated with state changes, in readable colors and where I could get any set of gob variable at any time by just pointing at a spot on the curve. But we don't have that. Granted, last time I had to use both ddd breakpoints and Inspector widget, but that doesn't mean I cannot do better this time.

So the ideal would be a time machine that let me replay things if I ever manage to produce the bug, and view what happened in slow motion, eh ? Wait ... that tool exists already. That tool is ... recording game + Inspector widget as an animation and replaying it!


Bug couldn't be fixed so far.

I thought I knew what happened by looking at the code that makes Verso bounce, because I know I had to fix the problem for Verso (the bouncing eraser). And the solution was to detect the impact's vertical speed to tell ceilings apart from floors, and prevent the 'fail [assuming on the ground]' from happening when what really happened was 'fail [on the ceiling]'.

So after I located something similar with the "HIT" state of Bilou, I thought I got rid of the problem. But since I don't have well-isolated test cases for the state machine (yet), seeing the bug again doesn't mean that the fix wasn't effective: simply that it might not be an isolated case.

To be continued ...

Thursday, March 24, 2016

Bon pour le son!




Ok les gars: accrochez-vous bien à vos baskets, voici toutes les captures animées dont mon frangin aura besoin pour me faire la "palette sonore" de School Rush, ré-appliquant le procédé qu'il a mis au point avec Lazy Cow pour son jeu "PowerGlove" récompensé au concours de RGCD.

I tried several ways to get the right sound effects for Bilou: School Rush, and I ended up with the following observation: it must be tested both against the background soundtrack and against the in-game timing (and possibly the look) of the action. On the other hand, I'm not convinced that "playing" it is actually needed. So, following the advice of my brother, I captured an avalanche of animated gifs to be used as basis.








On va dire que ça compte comme "release d'anniversaire", mais j'espère avoir pour le courant des vacances de Pâques une release stable avec un vrai menu de sélection du niveau de difficulté.

Given the real-life interference of the last days (Brussels attacks seems to have damaged my laundry machine), this will be my birthday-gift-to-the-Internet for this year... but I now have all the pictures I wanted to implement the "difficulty selection" bottom screen, and I should have that built somewhere next week.

edit: quicklink to the latest download if you enjoyed this


Thursday, February 20, 2014

Vieux coups de crayon...


2005
 En vrac, quelques petites illustrations bilou-esques qui s'étaient glissées parmi mes documents de doctorant, et qui correspondent justement à la "zone creuse" de Bilou: L'encrier en 2005 pendant que je reluquais surtout les graphismes de petitcarreaux.fr pour améliorer mon trait,

I think I mentioned that idle timeslice between 1998 (Badman III) and 2006 (the pencil and the sharpen-her), where I mostly focused on operating systems design. While cleaning up my office, I dug a small collection of easy-to-date sketches of Bilou-related characters. 
2006
We see an inkjet from 2005, while I was attending a conference on grid computing, some pendats covering empty space between some IXP microcode in March 2006 (PhD years, just before starting the comics, afaik) and some standalone emotions of Verso-the-eraser which I would date from 2002 (or possibly late 2001 when I was finishing my master thesis ?)

2006
Un de ces crayons qui peuplait les ébauches de level design dans l'ambiance "bibliothèque 3D" de 2006 (pendant ma phase BD-couleur-photoshop). En mars de la même année, j'avais essayer de l'imaginer se déplacer en 3D avec du "tilting" pour la marche et de la rotation pour la course.
2002
Plus vieux (à mon avis vers 2002), quelques réactions de "recto-verso" dont les gags ne voulaient pas prendre, marquant ainsi la fin du "Bilou's Book".

2003
2004 ?
2003
Et pour clôturer, malgré leur arrivée tardive, voici enfin quelques gribouilles de Bilou et d'autres personnages de la School Zone datant avec précision de 2003. Curieusement, Bilou se remet à faire des grimaces qu'on ne lui connaissait plus depuis les années '90.

Plus délicat à dater, une tentative de mise en page du retour-éclair de Bilou dans la Green Zone où il devra "recharger les pouvoirs de la gemme dans le deuxième monde". Rien que ça. Le croquis est tracé au dos d'un document présentant Reiser4 (paru en '2004, et j'ai des raisons de penser que je suis tombé dessus assez rapidement après sa sortie). Côté scénaristique, ça ne marche pas suffisamment, et je reste donc calé du point de vue "Bilou's Book".


Thursday, November 07, 2013

Fixing Monsters

Walls ? Caves ? Where ?
I mentioned earlier a post on frogatto blog about the danger of setting the bar too high for your monsters adaptiveness. E.g. it would be pointless to develop A* pathfinding so that lakitu can track you in a caves maze. Yet, when I explained Didier that I froze development with a list of fixes before the next release and things that would be allowed to be missing, he raised an eyebrow at his son's game screen and wondered in a laugh whether an eraser stuck on the ceiling, twisting like a fly in a spider's web qualified as "it doesn't stop moving for some coder-could-guess reason".

(/metagolf) Si le sommet d'une gomme touche le plafond d'une plateforme, elle y reste parfois coincée. J'en ai shooté une avec un taille-crayon et elle a reculé de manière statique jusqu'à atteindre un mur. Peut-être revoir la FSM ?

En effet. Et ce n'est pas le seul point sur lequel Armitage, concepteur de MetaGolf, a raison. J'avais suivi le conseil des dévelopeurs de Frogatto et prévu mes monstres pour qu'ils aient le bon comportement (sauter, faire demi-tour, continuer à sauter) dans le bon environnement (sol plat, ciel dégagé, faible brise au NNO ...). Mais que le joueur passe par là et ouvre la route vers le bas du niveau et les gommes peuvent le suivre -- bien qu'en général, elles éviteront puisqu'elles sont programmées pour éviter les trous.


The thing is I crafted RectoVerso's behaviour so that it should stay confined in some area, and ensured no issues could arise in those areas ... i.e. the ceiling is high enough, and discontiunity of the ground -- rather than walls -- define when RectoVerso turns back. But at some point, by opening the path to the lower part of the level, you also allow some RectoVerso to enter a place that wasn't designed for them: ceilings, books stacked onto each other, etc.
Playtesting showed that it happens more often than I'd ever have expected, so I took the time to fix those testpoints.


RARE! Rectoverso went down!
Qu'est ce qui change, donc, entre la version qui marche et la précédente ? L'utilisation de l'enregistrement de la vitesse d'impact en cas de choc (GobGravityController), et remise à zéro de cette valeur après qu'elle ait été utilisée pour que le contrôleur n'hésite pas à la ré-enregistrer au coup suivant.
Avant, toute impossibilité de continuer à avancer pendant un saut était interprété comme "arrivé au sol", maintenant, on se sert de la vitesse d'impact pour détecter l'arrivée dans un mur horizontal (impact_x <> 0) ou dans un plafond (impact_y < 0).  

PS: because blador can sit in wall when carried, it can also be thrown while being in a wall. Can we do something to fix this ? Yes! just update freemove mask makes him stay within the level. If we truly want so, it could also repel Bilou if getting too close (e.g. don't end up with Blador hiding Bilou's body completely when getting into a wall.

Wednesday, October 30, 2013

Fly, you fools!


Fly, you fools!
The way Bilou runs in the anniversary level was emergent behaviour for the given set of rules: it wasn't designed to happen: Bilou has just started to run on its own because no line of code was there to prevent him to go beyond the momentum's maximum speed.

Parmi les retours que je commence à recevoir du niveau-anniversaire, le côté peu pratique du démarrage de la course revient assez souvent. Moi j'avais bien aimé la façon dont il "suffisait" de faire "gauche->droite" dès que je me suis mis en tête "il suffit d'aller plus fort vers la droite" pour parvenir à courir, mais en fait, c'était loin d'être un choix de ma part. En fait, on pourrait presque dire que Bilou a appris à courir tout seul: c'est un un comportement résultant des règles définies que j'ai décidé de ne pas corriger plutôt qu'une fonction explicitement ajoutée dans le système.

Mais pour pouvoir donner une animation dédiée à la course (indispensable pour que l'utilisateur ait un feedback clair avant de faire un saut dangereux) et une façon fiable d'atteindre une vitesse donnée, je dois reprendre le contrôle. Mais comme vous pouvez le constater sur cette mini-vidéo, ça va me prendre un temps de midi de plus que prévu ...

But as I try to make him truly run, with a dedicated animation and such, it looks like he took Gandalf's quote "Fly, you fools" a bit too litterally ...

edit: with InspectorWidget's help, it's now fixed. And with Cyril doing more testing on a built where both "<->" and ">->" making you dash to the right, it revealed that at some point, people will start running when they intend to slightly turn back to avoid collision. That's not only un-intuitive, but dangerously counter-intuitive. I need to get it removed.

Sunday, October 06, 2013

6 days late

I have level design for the end-of-level sorted out. Blador interaction with other monsters is completed, why-pencils-dont-hurt question is sorted out. RunME is resumed, the level map is 80% complete (it could use some variations, but the basics are present). I still need to ensure that RectoVerso turns back when encountering a wall while jumping and check the design of the bonus rooms.

That-hurts-stars instead of wandering feet when Bilou get splatted by a RectoVerso eraser would also be better.

J+6. Trouvé un design correct pour la fin du niveau. Les interactions entre taille-crayon et le reste des monstres sont terminées. Les crayons font mal comme prévu. La carte du niveau est complétée à 80% (elle pourrait être un peu plus variée, mais le principal est là). Il faut encore que je m'assure que les gommes font demi-tour quand elles rencontrent un mur et que je vérifie le design des salles-bonus.

Tuesday, September 24, 2013

5 days left

I have some pixels for the "cork platform", I have tunable spongebops. Eraser jumps will not work very well with "invisible walls" as those would act as wall that make no physical sense for the player (unlike Rayman's airborn anti-toons and platforms trapped in cages). Instead, I could have the "prepare" state of verso testing the ground where the next jump should end, and turn back if that location isn't safe.

Would such a remote testpoint work ?

Plus que 5 jours avant la fin du mois de septembre, celui qui est 20 ans après la 'naissance' de Bilou. J'ai dessiné une 'plate-forme en liège', j'ai des éponges au mouvement ajustables. Les gommes-sauteuses ne marchent pas terriblement bien avec les 'murs invisibles' , donc je rajoute un état où elle se prépare à sauter et où elle 'sonde' le sol pour décider de faire ou non demi-tour. Si ça marche, ce sera un record battu pour les testpoints.

Sunday, September 15, 2013

Ready? School!

one whole line of airborn (trans)anims!
Aah ! Ça fait du bien! J'ai réussi à mener à bien les modifications synchronisées de l'éditeur de niveau et d'animations pour permettre jusqu'à 6 fois plus d'animations. Du coup, ma DS "green lime" est prête à reprendre le flambeau et me permet d'enfin bricoler ce "niveau anniversaire", qui a d'ailleurs bien avancé ^_^ Le fait que toute la famille ait été à moitié K.O.-microbes pendant le week-end n'y est pas tout à fait étranger ^^"


I'm kinda proud of this week-end's progress. LEDS, AnimEDS and runME have been syncrhonously updated to allow more animations (up to 6 sheets) and thus more flexibility in behaviours. That will give me plenty of headroom for "thrown by an inkjet", stunned by a blador and all other interactions that should make the School Zone interesting to play. As a result, I have doubled the content of the "anniversary school zone" level which I hope to be ready by the end of the month.

Btw, be ready to hate the bopping eraser. It will not exactly "chase" Bilou, but it's gonna turn back or adjust the height of its jumps depending on your position 0:-°

Friday, June 28, 2013

Incoming week-end ?

I cannot tell yet whether there will be significant development this week-end. I had a sort of marking-hangover last week-end and I barely managed to fix some bounding boxes and import some "school2.cmd" level to support the 20-year-old map I want to revive.

Ça ne donne pas l'air de bouger fort, hein, ces dernières semaines. En fait, j'avais commencé à ajouter les gommes sauteuses le week-end dernier pour me rendre compte qu'il y a toujours un sale défaut dans l'éditeur de niveau qui a tendance à bousiller la liste des monstres à chaque sauvegarde. Si je parviens malgré les valises que je traîne sous mes paupières à faire un peu de développement sur le projet Bilou ce week-end, ce sera donc très certainement dans 'LEDS' pour modifier la structure de données qui maintient le "gobscript" en mémoire ...

I'd have loved to include the pendat over the week, but I still have a dormant bug in LEDS which has been left pending since Easter's fixes. Now I need it fixed or I'll have to beam level scripts to the PC and back after every save to fix duplicate "gob% := state% (x,y)" statements.

Meanwhile, I had a nice idea for editing such blocks of text in a convenient fashion ... which led to an alternate design for processing the .cmd files that could solve the issue with monsters duplication. So if something happens in the svn tonight, it's likely to take place here.

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.

Saturday, December 31, 2005

inkjet (t.a.g.)

 Not the printers model, you fool. The character in the School Zone that can throw ink drops at you.


It is one of the original design for the school zone, with pendats, erasers, pencil sharpeners (redesigned as dumblador) and sponge (redesigned as spongebop). You'll note that bangbash is missing on the original spritesheet : that one is a 2000+ design.

C'est mes 4 mousquetaires de l'école en folie: crayons, gomme, encrier, taille-crayons. Ah oui, et l'éponge, aussi. Bon, bin on va dire "le club des 5". Ils ont reçus des p'tits noms au fur et à mesure que je les redesignaient (ou redessinaient), comme 'pendat' pour les crayons-soldats en 2001. "recto/verso" pour les gommes en 2004 (au pif). 'dumblador' pour le taille bête comme ses pieds et 'inkjet' pour l'encrier qui projette des gouttes. Et 'spongebop' pour l'éponge qui fait le pendule.

Il ne manque que bangbash, le redoutable point d'exclamation qui est le seul qui n'était pas présent dans les niveaux d'origine.