dimanche, mars 29, 2015

BigPunch, 3rd try.

Second try was based on track(Bilou), but it was ridiculously non-working. Picture big punches flying around, chasing Bilou like berry bats... No. Really not. I dropped the code-driven approaches, made an animation of Bilou punching the ground, then erased the punch for the last frames and synchronized the apparation of a punch object when it disappears from the animation. That way, the punch can pound to the ground even when the ground is lower than Bilou's feet level.

La troisième est la bonne. Voilà un coup de poing qui passe plutôt bien. Pas comme la tentative pathétique d'adapter le comportement des berry bats pour que ça tourne comme un coup de poing autour de Bilou.

edit: 30/3: fixed flickering glitch

samedi, mars 28, 2015

Nitrome, Ni trop peu

Il y a 25 ans, avant de commencer le projet Caliméro et devant le refus de mon frère de me dessiner d'autres niveaux pour Logic Labyrinth, j'avais imaginé utiliser RND() pour me construire des variations de la "Bridge Zone" de Sonic 1 (SMS) sous le nom de code "Sonic Labyrinth".
Le projet n'aura débuté, mais vous comprendrez que quand j'ai vu "Platform Panic/Infinite Platformer" sur twitter, ma curiosité était immédiatement piquée.

Thanks to birslip, I discover "Platform Panic" by Nitrome studios. I said earlier I wasn't interested in procedural generation for platformer levels, but I once had ideas like that, so cute pixel + implementation of some old fantasy of mine = curiosity leveled up.

May the Seed be with you
After watching some trailers and playing the game with my brother, I don't believe we have procedural generation here. It rather looks like a flip-screen game where the screens were turned into decks of cards and each deck was shuffled. When starting a new game, the system draws a few screens from each deck (and each deck correspond to a difficulty level). The combinations are numerous, and you will never face the same game, leading to some level of permadeath. Still, you will recognize rooms you have met before, and each room gives a feeling of being designed with care.

Il ne s'agit pas véritablement ici de créer des niveaux aléatoires au sens d'un roguelike et de son générateur de map. Je pencherais plutôt pour une base de données de salles parmi lesquelles on tire une séquence de salles pour la partie donnée, comme dans Qwak, mais généralisé. Tout comme Spelunky, on est ici dans un jeu à "permadeath" -- comprenez que votre mémoire ne vous sera que moyennement utile si vous échouez parce que la partie suivante pourrait très bien ne pas faire ressortir la salle qui vous a donné du fil à retordre. Et c'est du "one-shot", aussi ... à la Fury!


Building Blocks

I tend to believe that playing a video game is learning. The most obvious is to learn the topology of the playfield, but with the shuffling, this is not as useful here as in Donkey Kong Country. But you still learn. How far a jump goes. How close you can approach from hazard while still being safe. And most of all, what is hazardous and what to expect from it. Platform Panic feature most of what you could expect from split-screen platformer if you ever played any Spectrum-era willy-esque game. Crumbling floor, revealing spikes, springs that throw you up at first contact ... to get you reach the spikes on the ceiling, plus your usual falling hazard and shooting walls.

Bloc escamotable, pointes qui chutent ou qui sortent après votre passage, ressorts qui propulsent sans crier gare ... sans oublier les plate-formes mobiles, bien sûr. Les ingrédients du level design de Platform Panic sont de vieilles connaissances qui ont fait leur preuves -- si vous êtes du millénaire dernier. Par contre, les contrôles résoluments iThing, ce qui rafraîchit la donne. Avec un mouvement "demi-tour" et un mouvement "saute", le petit perso n'est qu'à moitié sous votre contrôle ... à peine plus qu'un lemming, en fait. Ce n'est pas sans rappeler "Rayman Jungle Rush" de Pasta Games / UbiSoft, mais ici en "flip screen".

While all this might feel réchauffé, it is served with your favourite touchscreen indie sauce on controls. One move to make you turn back, and one move to jump. No sophisticated buttons to press this time, but no time to rest either. Your character is always moving, and most of the time, it is moving towards instant death. You'll have to learn to identify those hazards quickly and plan ahead if you don't want to trap yourself.

Pixel Perfect
Côté graphisme, Helm nous a concocté un environnement agréable, rétro ni trop peu, facile à "lire" (bleu=inerte, pas bleu = méfie toi), mais pas surchargé non plus, et des petits personnages de toute beauté. J'ai bien peur que mes capture de trailer youtube n'en donne qu'une idée très déformée... Et c'est tant mieux, parce qu'il y en a, des pièges retors, et qu'avec un perso qui avance en permanence, on a qu'un rapide coup d'oeil pour analyser la situation et voir que "si je me laisse tomber ici, les pics vont me suivre et me prendre au piège".

Hopefully, Helm did a wonderful job on the pixel art. It is charming, varied while remaining easy to read. I'm afraid the screenshots from youtube videos won't do it justice and you'll need an alternate source to get a clear idea of their quality. The design of the characters is lovely as well,


Je suis assez bien fan du design des robots de cette usine (?), qui se déclinent jusqu'ici en "sauteurs", "marcheurs" et "volants". Il y a aussi les mines, bien sûr.

No Tuto
A l'exception des glissements de doigts suggérés sur l'écran d'accueil (la salle 0), il n'y a pas de réel tutoriel. On apprend de ses erreurs. Heureusement, elles se produisent surtout en début de partie quand on a pas encore appris ce que font les différents blocs interactifs. Je suis tenté de penser que les niveaux sont regroupés en "phases" et que le jeu progresse d'une phase à la suivante avec une difficulté qui augmente par palier. Niveau 1, une seul obstacle par salle. Niveau 2, on commence à combiner (p.ex. blocs à pointe et tir de missiles). Niveau 3, il faudra enchaîner les contrôle comme faire demi-tour en cours de saut.

I love how the Nitrome team dared to go to the essence of the game and not clobber it with tutorial on each hazard. You learn from you mistake. You fail a lot when you start, but your failure is just another way of exploring. Because you're not repeating the very same steps every time you retry, dying is not so frustrating. It gets more frustrating when you reached some depth in your path and now have to start again at room #1. But that's more the kind of irritation that make you want to beat your own score rather than some frustration that makes you wish you weren't playing.

Coin Layers
You will then realise that those coins that look randomly dispensed in the level have more value than you thought. They can be used to purchase continues (try again the room you fail) and other power-up that will change how you experience the game (I guess, although you might have to farm a lot for that). But mainly, placing the coin at this or that part of the screen allows for slightly more variations and bring closer to "infinity"... 
All to say, I love the game's design. It's an effective way to build fun time from old-school gameplay elements. I might reuse the idea when time will come to make a mini-game in Bilou's pyramid or castle zone.


Que faire à part s'éclater dans ce jeu ? Eh bien collecter des piécettes. D'abord parce que c'est brillant et tournoyant alors qu'il y a de la gravité, mais surtout parce qu'à un certain niveau dans le jeu, elles vous permettront de vous acheter des continue plus que bienvenus (15 pour le premier, 30 pour le second, etc.). Elles permettent aussi de débloquer des persos supplémentaires (l'armure double-saut, p.ex.) ou des nouvelles compétences (rebondir sur les ennemis ?). Placées adroitement, elles permettent tout comme dans un bon Mario de pousser le joueur un peu plus dans les cordes. Elles ajoutent aussi une couche d'"infini" puisqu'elles ne sont visiblement pas toujours au même endroit lorsque le jeu vous ressert la même salle.

Voilà. J'aime beaucoup la recette, et j'ai très envie de la resservir dans un des "mini-jeux" qui servent de jalon le long de la route qui mène à Bilou's Adventure ... Ça marcherait assez bien avec la Desert Zone, voire avec la Castle Zone.

jeudi, mars 26, 2015

Big Punch ...

Quelques petits essais de gros coups de poings comme 2eme power-up... mais je ne suis pas tout à fait satisfait du résultat au niveau animation.
You voted for BigPunch, and indeed, it would be a good power-up as it allows to bypass many challenges. Here's a first attempt, with gravity-based animation. I'm not quite convinced by the result.

dimanche, mars 22, 2015

Au ralenti ...

J'avais noté de fort ralentissement sur émulateur dans le nouveau niveau. Il me restait malheureusement à constater que les ralentissement se produisent aussi sur la console, du moins pendant que les encriers projettent et si j'ai assomé beaucoup de dumbladors sans permettre à leur pieds de les rejoindre.

Slow downs are only fun when you control'm
The new level wasn't playing well on emulator. In fact, it was so slow (about 15 fps rather than 60) that I  could barely test it. I first thought my PC was unable to emulate it -- I had similar issues with e.g. Yoshi's Island DS when trying to get some snapshots. Running it on real hardware seemed to work fine until I started stunning bladors. With their feet as additional GOBs to animate, the system started to show slow downs occasionally (when jumping while inkjets throws drops). In my former level, I was 4 monsters, 16 drops and 14 feet under the threshold of what the 66MHz of the Nintendo DS can sustain.

Il y a 45 intervenants dans le nouveau niveau, dont 8 encriers et 7 dumbladors, soit un potentiel pour générer 30 objets de plus -- près du double. Oui, c'est risible comparé aux systèmes de particules qui peuvent tourner sur les PC moderne. Même pour 66MHz, ça ne devrait pas faire une telle différence. Mais voilà, à permettre aux gouttes d'encre de s'arrêter sur les éponges, à veiller à ce qu'un encrier puisse interrompre la marche d'un pendat ... bref, en ajoutant des interaction entre les ennemis et pas uniquement entre Bilou et ses ennemis, j'augmente les nombre de tests de collision, et il est possible que ce soit ce genre de chose qui fasse grimper la charge de calcul.

Is it the extra processing with of those monsters, with the animation parsing ? I could get up to 100 of them in Apple Assault, unless I try to make them react against each other (that would mean ~10000 collision checks). I do have some of those monster-to-monster tests, especially with ink droplets since I want them stopped by spongebops you carry along.
My plan so far to address this issue was to create sections of the game and to allow for collision testing only between objects belonging to the same section. Putting that into code lines didn't come out fluently, so I opted for the Commander-Keen inspired approach of freezing GOBs that are out of display range (that is, more than one screen away of what's on-screen). You can still try to collide against them when they're frozen, but *they* won't try to do anything. It was enough. It works well with the current game's flow. I'll revise it to something more generic later.


J'ai bien esquissé un système permettant de rassember les ennemis selon des sections, les collisions étant limitées entre personnages appartenant à une même section. Mais au moment de passer à l'implémentation, rien ne se combinait avec le code existant de façon souple. Je suis donc repassé à une technique plus traditionnelle -- le gel complet des personnages qui se retrouvent en-dehors de l'écran, qui était déjà à moitié implémenté (ils n'étaient plus traités par la couche graphique). Les listes à parcourir pour les collisions restent longues, mais c'est tolérable, d'autant qu'il y a moins de personnages qui provoquent des tests de collision. Et vu la constitution du code "GameObject::play", avec ses chaînes de contrôleurs et ses listes de commandes d'animation à interpréter, il n'est pas évident que la centaine de comparaison de coordonnées supplémentaire pèse tellement lourd par rapport à 5 objets supplémentaires à gérer entièrement.

There's an important effect of this mechanism. Yesterday, the position of a moving inkjet when you approach it depended on the time you took to reach it, from the start of the level. Today, it only depends on the speed you approached it for the last 2 screens. It will make learning of patterns easiers, as the level can be broken down into smaller chunks. It also means that the pattern of multiple GOBs (like two-inkjet-close-to-each-other) can now be manipulated by how you approach them... much like in Super Mario World.

samedi, mars 21, 2015

Titus the Fox dans Pix'n'Love #15

Parmi les excellents dossiers du magazine "Pix'n'Love" que j'aimerais voir réunis en un ouvrage dédié au game design, il y a une interview très intéressante d'Eric Zmiro sur le développement de "Titus the Fox / Moktar". Moktar est un des premiers jeux de plate-formes auquel j'ai pu vraiment m'essayer ... comprenez avec autant de tentative que je ne le voulais parce qu'il n'y avait pas de fin de vacances, de fin de courses au GB ou de fin de pièce de 500 Lires pour m'obliger à passer la manette de manière définitive.

Il y avait beaucoup de bonnes choses dans ce jeu -- notamment la possibilité d'emporter plein d'objet et de construire le gameplay sur leur manipulation -- et c'est toujours un peu triste pour moi d'entendre les joueurs console cracher sur la société qui a produit les premiers jeux sympas pour PC que j'aie rencontrés. Il y a aussi beaucoup de choses discutables que l'article me permet de comprendre mieux. Le scrolling, par exemple, fonctionnant par à-coup, qui se révèle être un hybride entre le scrolling continu d'un Mario/Keen et le screen-flipping qu'on trouvait déjà dans le premier opus de Prehistorik. Bien sûr, il était techniquement possible en 1991 de faire mieux, mais pour un éditeur qui n'agit qu'en France, il est important que les titres PC tournent sur tous les PC. Pas seulement sur le 286 équippé d'une carte VGA de mon voisin Alain, mais aussi sur un 8086 CGA.

L'écart de fluidité entre les version Amiga et PC, le choix de jeux à licence laissait imaginer une équipe encleinte à la facilité. L'interview révèle une équipe extrêmement réduite (un graphiste et un programmeur pour le jeu "Moktar") qui n'hésite pas à reprendre la partie la plus technique du moteur de jeu pour pouvoir supporter des sprites plus gros et des niveaux plus vastes quand la direction déclare juste "on va faire un jeu avec Lagaf'. Changez juste le personnage de Blues Brothers et ça ira comme ça" (citation officielle). Et la description de l'environnement de création habituel, très "bride sur le coup", de Titus Interactive donne aussi un autre éclairage sur cette déclaration. "On a un contrat pour un jeu, les gars. Et cette fois on a une date limite. Alors pas question de démo techniques qui n'aboutissent à rien cette fois-ci." (interprétation personnelle, ce qui n'a de toutes façon pas beaucoup d'importance puisque de toutes façons, pendant les mois passés à attendre les graphismes, Eric Zmiro a eu l'occasion de faire un tout nouveau moteur de jeu). Quand aux versions Amiga, elles ne sont pas développées en interne, mais confiées à des spécialistes free-lance de cette machine, sans doute une fois que le jeu a fait ses preuves et que les rentrées permettent d'envisager des frais supplémentaires.

Merci à Eric pour cette interview officielle, mais aussi aux longues discussion en privé depuis son premier commentaire sur ce blog en 2007.

mercredi, mars 18, 2015

Bilou: The Last Level

Emplacement: School Zone
Ennemi principal: pendat
Niveau de difficulté: entre "*deline" et le niveau 2
Niveau de réalisation: 85%, jouable
Particularité: construit presqu'entièrement à partir de situations présentes dans le niveau 2 ou le niveau 3 pour lesquels les joueurs manquent généralement d'entraînement, en "dégradant" un challenge proposé dans un de ces niveau pour le rendre plus accessible.
Usage du copier-coller: important au sein du niveau, pour post-poser un élément jugé un peu dur à son premier essai puis pour introduire des paliers-tampons entre les challenge pour laisser souffler le joueur.
Durée estimée de réalisation: 2 à 3 heures stylet en main (playtesting compris).
Niveau de crampe du poignet pour le bouton 'L': tolérable, mais il faut se reposer maintenant. Le bouton 'L' de la DSi, lui, est mort dans l'aventure.
Sous-terrains pour éviter les dégats: pas trop
Passages aériens pour aller plus vite: pas encore

Probabilité d'ajouter un autre niveau à School Rush après celui-ci: 10% pour un niveau horizontal; 35% pour un niveau vertical. Taux de flemme estimé à 55%.

It is so hard to build a level that is accessible to lambda players that I can build a whole new level by converting the "challenge" areas of current levels 2 and 3 into some "training" areas for a new level 2. That will give me the 4 horizontal levels I wish for School Rush. If I am to add more levels after this one, it will most likely be a vertical ultimate challenge. Pendats will be the main opposing force in this level, but you'll also encounter a good deal of dumbladors. The idea is that you should have *plenty* of opportunity to gather power-ups by dispatching pendats. I'll have to work on a "high path" that allows the player to experience the fun of floating, too.

selective WiFi transfers.

My .spr files are becoming large. That's especially annoying when you remember that issue with DS-to-PC bandwidth issue, which I still haven't investigated more. Look at all that grey and all that purple: these are not used by the game engine. I started an evolution of RunMe where you could selectively transfer "tiles" or "sprites" or "animations" of one .spr file, and then reconstruct the whole file on the PC side, but it's dormant, waiting (yep, that one too) for the game to be properly polished.

vendredi, mars 13, 2015

Il faut que je finisse "School Rush".

Voilà quelques jours que je ne parviens pas à me mettre à la programmation des derniers éléments de School Rush. J'ai l'impression qu'il est temps que ce volet se clôture. Il y a 3 ans, je mettais en ligne -- vidéo à l'appui -- la première démo du moteur de jeu supportant les animations créées dans AnimEDS. Le premier écran reconsitué de la School Zone, lui, a encore 6 mois de plus, et comptait mettre en oeuvre un jeu type "arcade sans monnaieur" -- deep ink pit.

Là, je commence à avoir envie de changer le décor de fond du jeu, à déguiser l'encrier de l'écran de menu en vieux moustachu, mais le thread sur wayofthepixel fait déjà plus de 160 messages, et je ne parviens plus vraiment à attirer l'attention. J'ai envie de coder ces lattes-qui-tournent et les signets auxquels on s'accroche. Les power-ups m'écartent du gameplay prévu. Je ne suis pas sûr d'intégrer le "wall kick". "Big Punch", ça, clairement.

Et puis il me faut du son. CJ? T'en es où, avec ton son ? J'ai fait quelques essais, un petit roulement de percussions fait un bruit décent pour un crayon qui fait demi-tour. Jouer le même son avec "pitch bend" vers le bas pourrait aussi faire le bruit du crayon dégommé. Je dois introduire des "GunPalettes" dans le moteur de jeu pour pouvoir ajouter assez d'effets sonores ... Ou alors j'associe directement les sons aux animations.

Il me manque un palier de difficulté entre les niveaux 1 et 2, mais le bouton L de la DaiSi me fait à nouveau faux bond. Migration de mon iPlayer vers "lime" retrouvée il y a un bail dont je viens du coup de vider la batterie.

Là, il est temps que je release et que je passe à la suite, je crois, sinon je vais sombrer dans le traçage d'historique de développement ...

C'est quand, la prochaine vidéo du JDG ?

dimanche, mars 08, 2015

Programmation GBA dans Login 92

 J'aimais vraiment bien le magazine Login:, bien plus riche que tous les Linux Mag' sur lesquels j'ai pu mettre la main. Romain Guy y signera une série d'articles, sur la programmation GBA début 2002. Un an trop tard pour moi, malheureusement: je suis à fond dans la construction de Clicker avec une demi-douzaine de collaborateurs potentiels, et en passe de devenir modérateur sur le forum Mega-Tokyo.

We never had a great collection of programming magazines in Belgium, unless you read German fluently and live in the eastern cities, I mean. But in the later years of my university studies, I had a stable dealer of "Login:" (and earlier Dream) magazine, covering a wide variety of open source, coding, and chip vendors news. I thought the blog would be a nice place to write a tribute post to Romain Guy's work, for instance his series about homebrew GBA programming. That arrived one year after I considered the option of re-creating Bilou's Adventure on that platform, and after we received a cold reply from Nintendo explaining their requirements for allowing a company to get an SDK.

Beside the relative complexity of the GBA platform -- where you had to manually decide whether to use Thumb instructions, and with very small RAM for code and data with the need to decide which part of your code would migrate from ROM to RAM to meet real-time constraints -- homebrew hardware was still quite repellent, with cartridges having internal flash, rather than using standard media cards, and requiring dedicated programming devices ... I dropped the idea and pursued my research on Operating Systems instead ...


Il y a aussi le côté "lourd" des équippements nécessaires pour programmer les cartes. La miniaturisation de la SuperCard n'a pas encore été atteinte ... ou peut-être les carte SD n'étaient elles pas encore assez répandues. Toujours est-il qu'on se retrouvera avec une cartouche unique, avec une certaine quantité de mémoire flash embarquée et une espèce de périphérique dédié à connecter sur PC pour réécrire le contenu de la mémoire embarquée. Mais tout ça est gros. Pas aussi lourd que la version "on sort un cable ATA pour se repiquer sur un micro disque dur clipsé sous la console", mais le côté "console portable" disparaît.

samedi, mars 07, 2015

BigPunch for free ?

In last week's post, I was suggesting that giving some power-up "for free" earlier in the level might be the best way for the player to experiment them. I was especially thinking about "big punch" power-up, that allows Bilou to dispatch school supplies without having to rely on carrying dumbladors around.

Je pensais avoir trouvé la bonne technique pour amener les joueurs à s'intéresser un peu plus à l'interaction "ramasser un blador et l'emmener jusqu'à un pendat pour le dégommer", la semaine dernière. L'idée aurait été de mettre un power-up "Big Punch" visible, dans une sorte de cage au début du niveau. De cette façon, on avait un peu plus de chances que le joueur se rende compte qu'il y a un intérêt à se débarasser des pendats, et ça, même s'il n'est pas encore très à l'aise avec le lancer ballistique de taille-crayon. Sauf qu'à bien y réfléchir, j'avais sans doutes tout faux.

 That might work, but not for the intended purpose: show players that they can stun pendats, and that it's a cool thing to do (after all, pendats are the invasion force trying to ensure that mathematics are the only canon knowledge taught in the school, or something similar). By giving the power-up for free, will the player ever learn that she can use dumbladors for that purpose ? Won't I put her into believing that power-ups must be found in the level and that without them, there's no way to dispatch a pendat ?


Ben oui. Mettez-vous à la place du joueur qui entre dans le jeu, voit un truc qui ressemble à un bonus, l'attrape, et peut ensuite éliminer les crayons. Qu'est ce que vous feriez au prochain taille-crayon, vous ? L'emmener en voyage ? Et si finalement, vous perdez quand-même votre pouvoir du poing-marteau ? Considérerez vous qu'il doit y avoir un autre moyen d'éliminer les crayons, ou simplement vous direz-vous "Arf! Je vais devoir les éviter jusqu'au prochain power-up!" ? La plupart des jeux pousseront plutôt le joueur à adopter la deuxième attitude (cf. Super Mario et ses plantes-piranha).

Maybe I should try another approach. Maybe the power-up shouldn't be granted *at the start* of the level, but prior you enter the level. And the first thing you'd encounter in the new level is a dumblador/pendat pair that you can dispatch with your freshly-acquired BigPunch (tm). Dispatching the pendat would then grant you another power-up. The next few screens should then be harmless enough so that the player can experience new abilities before putting them to work.

Par contre, il pourrait être intéressant de mettre le "power-up gratuit" en fin de niveau. En particulier si le niveau suivant commence par un terrain d'expérimentation idéal pour dégommer des crayons. Un passage avec le power-up pour apprendre qu'un crayon, ça donne un bonus. Et un deuxième passage dans des conditions idéales pour lui lancer un taille-crayon sans prendre de risques. Pas d'éponges ni de structure pour faire obstacle à votre jet. Rien qui ne puisse vous distraire entre le projectile et la cible... Je suis même prêt à utiliser les "passages secrets" du premier niveau pour disséminer des indices sur ces possibilités.

 Would she eventually fail, she'll start over that level, with no power-up. She'd face the same blador again, and now she knew there's a power-up available if she knocks out the pendat. I can also arrange the level terrain so that the player can stay safe and still throw her blador at the pendat.

Par contre, je préfère ne pas tomber dans le classique panneau "interdit aux taille-crayons" placé sur le chemin de ronde du pendat. Trop éculé.

If that's still not enough, I plan to use those chalk boards and other areas of level 1 to hide some schoolish tags showing pendats taking over the school and bladors offering resistance due to their tough nature. I want to hint, but I don't want to enforce tutorials. I also don't want to use the typical "don't do XXX" to hint the player to exactly do XXX.

dimanche, mars 01, 2015

Floating ... design notes.

N'ayant pas trop le temps de squatter mon ordi, très sollicité par les vaisselles, je gribouille mes pensées dans un carnet jaune. Comment ajuster le fonctionnement des power-up dans "School Rush" pour améliorer la prise en main par les joueurs ?

I have the setup to generate pseudo-random item when stunning a pendat. I took some time this week-end to think about what were the barriers to the adoptions of these power-ups are. It make me re-consider the pause and animation when Super Mario gains powers. To be reliable, it's important that the player can keep track of whether he has the power-up or not ... which was so far an abstract counter. I think it could also be important that one finds, in-game, a "free" power-up, whithout having to stun a pendat -- especially given that stunning pendats with bladors is quite difficult. Being able to have hint on what pendat will release could help, too ... Although it would require much work to reverse the monster engineering.

Et tant que j'y suis, même genre de notes pour la mise en place des générations de power-ups. Là, j'ai quelque-chose de correct pour la perte de power-ups (on les voit quitter Bilou et tomber dans le bas de l'écran).

And for the fun, I used a similar sunshiny hour last week-end to select the way power-ups are released, and how they interfere with Bilou's behaviour. The current trigger to start floating is now a double-tap on the "JUMP" button. This may not be mis-interpreted as a bounce-to-be on an eraser, a monster or whatever. And this remains ergonomic enough.