I also managed to put it on sourceforge download before my own laptop's battery told me to stop and go to bed...
Swimming got improved, too, and we finally see all the branches of that important tree, although it could use more leaves at the top ... that shall happen later on.Saturday, July 18, 2026
The July Demo
Tags: appleman, dr26, funky funghi, mybrew
Sunday, June 14, 2026
Funghi vs. Appleman
Funky Funghi, un des plus anciens personnages de la Green Zone sur DS, vient de se ramasser une pomme. Jusqu'il y a peu, la pomme serait juste passée à travers, mais alors que ce blog va sur ses 20 ans d'existence, j'ai rajouté les quelques lignes de code script qui manquaient pour que l'interaction proposée début 2022 devienne une réalité: on va pouvoir dégager les champignons du chemin à coup de jets de pommes.
Post by @PypeBros@mastodon.socialView on Mastodon
Bon, j'avoue que comparé aux "prunes rebondissantes" de Rayman, on est sur quelque-chose de nettement plus détendu: Funghi ne risque pas d'aller rebondir contre un mur et de revenir vous écrabouiller. Il ne reçoit que la moitié de la vitesse de la pomme et ralentit de moitié à chaque rebond. Juste ce qu'il faut pour passer d'une souche à "entre les deux souches" en une pomme. Mais ça devrait être marrant quand-même vu qu'il y a moyen de ramasser à nouveau la pomme et de la lancer une fois de plus. D'autant plus que maintenant, il va aussi être possible de rebondir sur le chapeau de Funky Funghi! (c'est peut-être encore un peu fort, d'ailleurs).
Post by @PypeBros@mastodon.socialView on Mastodon
La solution à laquelle je suis arrivé à coup de débuggeur d'expression est un rien intimidante ... entre autres parce qu'elle dérive de la collision destinée à faire rebondir Bilou, et que pour Bilou, je voulais que l'angle change selon qu'on arrivait plutôt sur le bord ou sur le centre de Funghi, comme s'il était vraiment un bumper de flipper. Pour ça, on va préparer deux valeurs et les combiner avec | dans le byte haut et le byte bas d'un entier 16-bit avant d'écrire le tout dans la 10e variable de Funghi avec :a. C'était rigolo avec l'appleman, mais ça devenait compliqué d'y ajouter le transfer d'énergie ... donc au final, pour l'appleman, Funghi agira toujours comme un mur qui absorbe 50% de sa vitesse horizontale et n'a aucun n'effet à la verticale. Et sur l'énergie absorbée, la vitesse acquise par Funghi est moitié moins importante que celle qu'avait l'appleman ce qui nous permet de calculer qu'un Funghi pèse à peu près 2 Applemen ;P
state0->state0 on found$apple [C_THROW we 0 >= w0 0 < & &]
(w0 2/ ~ $ff00 & w1 256 / $ff & | :a w0 4/ v0 + :0)
state0->state0 on found$apple [C_THROW we 0 < w0 0 > & &]
(w0 2/ ~ $ff00 & w1 256 / $ff & | :a w0 4/ v0 + :0)
w0) is transferred to Funghi, and the other half is bounced back. But since Funghi is bigger, the half it takes only result in 1/4th of the speed. Not pushing him very far, I'm afraid. And well, that's only the part w0 4 / v0 + :0. All the things that happen before are reusing the "protocol" defined for throwing things where the thrower decides of the direction of the thrown object I already used for dumblador. The X speed and the Y speed will be set in the 10th register of funghi with :a and later used by the appleman with
$RTHROWN->$LTHROWN on hit0 [C_THROW wa 0 < &] (wa $ff00 & :0 wa 256 * :1)
Mais dans le code de l'appleman, j'ai quand-même gardé un code générique qui se contente d'appliquer le vecteur-vitesse qu'il trouve dans la 10eme variable de ce qu'il a heurté. ça pourra me permettre par la suite de faire en sorte que les branches rebondissantes puissent elles aussi renvoyer les applemen ^_^. Petite subtilité: la transition hit de l'appleman est testée avant la transition found de Funghi mais c'est found qui fournit le vecteur vitesse que hit va utiliser. c'est pour ça qu'il y a un test qui s'assure que wa < 0, pour que lors de la première frame de collision, l'appleman conserve sa trajectoire pendant que Funghi calcule l'impact. A la 2eme frame, wa est défini et la trajectoire de l'appleman pourra changer.
Et pour la collision Bilou/Funghi, c'est la distance entre le centre des hitbox (we) qui va déterminer l'angle de l'impulsion que Funghi va nous imposer, entre (-3,0), (-2,-1), (-1, -2), (0, -3)
state0->state0 on found$bilou [C_THROW we 0 >= &] (we 4/ 256* we 4/ 3 - $ff & | :a)
we is one of the collision-specific parameter (rather than an internal variable of the collided object) containing the center-to-center distance between Bilou and Funghi, ranging from -24 to +24. At the very edge of Funghi, you'll get bounce horizontally by (+-3, 0), and at the center of his hat, you'll be bounced by (0, -3). In between, you could get (+-2, -1) near the edge and (+-1, -2) near the hat. And yup, it's got the overall expr_1 256* expr_2 $ff & | shape again to put both together in a single variable.
Il me restait un truc à régler: Funghi donne l'impression d'être en béton et que rien ne peut lui arriver même quand on rebondit dessus ou qu'on lui lance une pomme. J'aurais bien essayé de réutiliser l'animation "rebondit au sol" dans un sens ou dans l'autre, mais Funghi est toujours un "SimpleGob" premère génération, et je ne leur ai manifestement jamais ajouté le support des transanims.
Je profite donc de la p'tite canicule du week-end pour redécouper un peu Funghi dans le Sprite Editor, refaire ses animations dans AnimEDS et rajouter un "fait rebondir un truc qui arrive du haut" ainsi qu'un "fait rebondir un truc qui arrive sur le côté". Ce n'est pas spectaculaire, mais ça donne plutôt bien quand-même.
Tags: appleman, BOUNCE, collisions, dr26, form fits function, funky funghi, greenzone, THROW, video
Monday, June 30, 2025
Dangerous, not evil
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.
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.
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 ^^")
Tags: bangbash, bilou, funky funghi, monster design, rectoverso, y2k1, y2k9
Wednesday, October 30, 2024
October update
.more loading, and the like... - [done] separate exit special block from fall-through-door special block,
- [done] stop flashing school background by applying waterfall palette cycling only in the green zone
- [done] adjust bounding boxes ... many bounding boxes.
bbox x y w h command to align the visuals with the slope ... but it really was almost blind guesses.For some reason, the "box size" bits were ignored, and the "offset" bits were ... well, it will work better with offsets that says "pictures starts 4 pixels on the right in the 16x16 frame. Of course, fixing the size first made most of the offset wrongs until I've got new offsets computed.
Even after one more afternoon of map fixing, there are weird things happening in that school zone level, like
- [todo, not critical] Bilou not always hidden by front layer (e.g. hidden if you jump, but not if you're idle or walk)
- [todo, not critical] Inkjets not moving up and down following rails
Alors, voilà: un joli bouton vert vers une nouvelle démo à essayer chez vous. Bien sûr, ça reste très en chantier et vous trouverez pleins de trucs pas au point, mais au moins, les horreurs ont été éliminées. Rendez-vous en Décembre avec une démo incorporant BangBash ?
Ah, and it's not in the school zone, but [done] that ugly pink background showing up in the green2 level, too... I'd rather have that fixed before uploading a new demo...
edit: There we are: 2 work-in-progress levels can be found if you explore the three rooms properly. There is still much to do, but also much to explore if you've never launched anything earlier than School Rush.
Tags: done, download, dr24, funky funghi, level2, school zone, ThreeRooms
Wednesday, March 06, 2024
Reprendre les vieilles maps ?
Alors pourquoi ne pas inviter à la fête les maps de la démo 9/9/9 ? Elles auraient besoin d'un peu de vernis, mais elles pourraient faire l'office d'écran pour apprivoiser les mécaniques du jeu avant d'être lancé dans l'historique niveau 1 de la forêt ...
Et le 2eme niveau de la démo, avec ses petites plate-formes et ses funghi partout serait le terrain rêvé pour introduire les ponts et jouer un peu avec. Et si la question n'a pas suscité de débat remarquable sur twitter/mastodon, il y a au moins unanimité sur le fait que les faire intervenir au moins comme terrain d'exploration supplémentaire depuis la démo "three rooms" est une bonne idée.
- [done] import cube:/home/grizzly/pype/codinDS/dsgametools/schem.map
- [done] import cube:/home/pype/hobby/R4-bakcup/GREENY.MAP
- [done] import cube:/home/pype/hobby/R4-bakcup/GREEN2.MAP
- [done] see what they look like
- [todo] bring them back on NDS so they could be fixed with up-to-date tileset.
Tags: dreamland, funky funghi, greenzone, poll, ThreeRooms
Saturday, May 06, 2023
Funky 2.1 / A bridge to fun
Il y a bien longtemps (wow. 11 ans!), j'envisageais de faire un niveau vertical plein de Funky Funghis mais je voulais aussi quelque-chose qui soit plus original que la caverne aux champis de Commander Keen... Peut-être en utilisant un levier comme dans la BD.
Sauf que ... j'essaie que la forêt donne la sensation d'un environnement pas trop artificiel. Quelques statues, ok. Un puit, passe encore. Mais des planches-levier-d'acrobates ? J'aimerais autant pas. Bilou qui transporte des cailloux et des planches pour fabriquer lui-même le levier ? Je vais perdre les joueurs en route.
J'ai tenté d'autres approches, inspirés par l'une ou l'autre vidéo let's play (mais j'ai oublié lesquelles ^^" de l'excellent Tiny Thor à venir), comme cette gelée/résine dans les branches d'arbres ... d'un point de vue purement mécanique, ça pourrait faire l'affaire. D'un point de vue intégration dans l'univers ... euh ... bof bof.
Puis mes gamins sont passés à nouveau sur une plaine de jeu, et dans les plaines de jeux, il y a ces ponts suspendus sur lesquels les uns passent en courant pour faire tout trembler tandis que d'autres râlent, cramponnés aux rambardes, mais tentent de passer quand-même. Puis il y a ceux qui sautent pour tout secouer encore plus. Et dans ma green zone aussi, il y a des ponts (même si je n'ai encore presqu'aucun post qui en montre ^^"), bien qu'ils étaient assez peu marquant dans la version BASIC (en gros, certains morceaux pouvaient tomber. Voilà). Mais pour "dreamland", ce serait assurément assez sympa que ce côté "un pont, ça tangue" soit exploité, et en particulier, que Funky Funghi puisse faire "voler" Bilou vers le haut si on a le bon timing.
Tags: CarnetBleu, dr23, funky funghi, greenzone, JUMP, level design
Thursday, August 11, 2022
Funghi v2.0
Bon, il est temps que je blogge les cogitations de nouvelle année, vous ne croyez pas ? Je m'étais installé pépère dans le canapé pour récupérer un peu, agenda-cahier sur les genoux histoire de faire un peu le tri de ce qui doit encore être dit et ce qui doit être transférer dans la nouvelle année, mais c'était compté sans J.L.N.
Le p'tit bonhomme venait de se rendre compte qu'une SpongeBop, si on la repeind en vert, ça fait comme une branche d'arbre et que donc on pourrait en mettre dans la forêt! Il n'a pas tort, mais j'ai voulu vérifier ce qu'il connaissait déjà des autres habitants de la forêt de Bilou. Après tout, à part quelques parties de Apple Assault, il n'a pas encore eu beaucoup de contact avec la green zone.Il y a Funky Funghi, notamment. Le champignon sauteur. Si je permets de ramasser les applemen à la manière des dumblador dans School Rush, que se passe-t-il quand on lance une pomme sur un Funghi ?
L'idée de base, celle de la version BASIC, c'était que le champignon était ultra-toxique. Tiré assez directement de Commander Keen, je dois bien dire. Le moindre contact est dangereux pour Bilou. On ne peut même pas lui sauter dessus.
Mais bon, avec le recul, pour un premier niveau, c'est peut-être un peu exagéré. Je n'irais pas pour autant jusqu'à proposer que l'on puisse monter sur la tête de Funky Funghi et s'en servir comme plate-forme. Ce n'est pas franchement dans le caractère du personnage d'accepter ça.
Pas question non plus de permettre à Bilou de simplement 'pousser' Funky Funghi comme il le ferait avec un encrier (même si je n'ai toujours rien implémenté de la sorte ^^")
Faire se déplacer un ennemi sauteur invulnérable en visant correctement, voilà qui promet d'être fun. En tout cas, c'était fun dans Rayman.
Mais contrairement à Rayman, on joue ici avec des "munitions" limitées. Il ne faudrait donc pas que l'on bloque un Funghi dans un coin du niveau où il peut nous empêcher définitivement d'avancer! Une solution pratique contre ça, évidemment, c'est de placer un 'trou à champignon' au bout de la zone-bac-à-sable dans laquelle il est prévu de le déplacer. Quoi qu'on fasse, il ne peut aller plus loin et on a remplacé "passer par-dessous l'obstacle" par "passer par-dessus l'obstacle", qui est en théorie plus accessible.
Mais tout ça devient secondaire si - une fois déplacé - Funky Funghi devient utile. Bon, comprenons-nous: ça reste un PNJ peu fiable et dangereux sous les bords. Disons par exemple que son pied reste toxique (on ne le pousse pas à la main) et redoutable (on ne reste pas trainer en-dessous). Mais son chapeau, lui, avec sa jolie tête de bumper pourrait ne réserver aucune vacherie et agir effectivement comme un bumper. Mais un qui soit susceptible de nous propulser vers l'arrière ou vers l'avant si on ne le prend pas bien comme il faut. Bref, un bumper qui amène une touche d'imprévu pour le joueur inexpérimenté, une touche de challenge pour le paddawan, et une variable supplémentaire à intégrer pour le Maître.
A méditer.
Thursday, March 22, 2012
Funky Inside
Rompant avec les niveaux prévus par mon frère, je décide en 2001 de placer la confrontation entre Bilou et Big Caterpillar au sommet d'un arbre creux monstrueusement grand... et je fais totalement l'impasse sur ce qui se passe à l'intérieur de l'arbre. Puis, en pleine phase Cave-Story, je décide que la "clé du boss" ne sera pas une bête clé mais plutôt une interaction avec des NPC, notamment les Funky Funghi fraîchement relookés. L'occasion aussi d'un niveau tout en hauteur où je peux caser des bascules/tremplins et autres effets catapultants bien marrants (enfin, j'espère).In Bilou's Adventure as my Brother invented it, there was no such thing as a hollow tree level. Still, when I converted the yet-to-be-written game into a (web)comic in 2001, I figured out that a huge, hollow tree would be a nice place for Big Caterpillar to have his lair.
Later on, as I started to feel the interest that an organic (or even story-based) key may have and decided that 'plain keys' had no real place in the green zone, that hollow tree seemed to be a nice place to have a crowd of Funky Funghi that would make the boss a bit harder to reach...


I had no real luck on my hunt for reference material until that Rayman Origins screenshot me in the head with the naked truth: nobody said that your hollow tree had to be made of brown wood only. Actually, it quite makes sense that it would be invaded by moss, vines and other greeny stuff, especially if it's the resting place of the funghi ;)
Je m'étais mis en chasse de quelques souvenirs de jeux vidéos avec des arbres creux ... Mickey Magical Quest sur SNES ... Prehistorik 2 et ... ah bin non. Pas les rangers dur risque, finalement. Tout ça sans véritable coup de coeur: rien de vraiment utile. Par contre, j'avais passé déjà un certain temps à décortiquer le graphisme de l'arbre ronfleur de Rayman Origins (eh oui, encore lui ;) qui donne des pistes assez intéressantes. L'une d'entre elles ? Eh, qui a dit qu'un arbre creux ne pouvait pas être plein de mousse (et donc vert-sombre plutôt que tout brun) ? ... réponse : personne.
Tags: bilou, colours, funky funghi, greenzone, keys and locks, level design, pixels, rayman, sketch, titus
Sunday, March 18, 2012
Apple Assault: walkthrough video
My brother has started shooting some GBA gameplay videos with his semi-pro camera. So why not reuse that "studio" to shoot a decent Apple Assault gameplay video as well ? Better late than never, I guess.
Mieux vaut tard que jamais: voici une vidéo du jeu Apple Assault développé en 2010 et revu ce mois de Janvier.
Download version 1.5 "Berry Bat Things" and version 1.4. You still have 60 days to vote for your preferred version.
Tags: apple assault, appleman, berrybat, bilou, funky funghi, greenzone, portfolio, video
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.
Wednesday, January 13, 2010
Monsters!
The "model" part is written down : the level editor is now capable of parsing a .cmd script, investigate sub-scripts for state and picture information, and the MapWindow can invoke MonstersManager::display() to spice up the rendered level scene with monsters. Now to the "controller" part and ensure that I can move object around, change the state they use, etc.
C'est bon. Le côté "modèle de données" pour les monstres est fini. L'éditeur est capable de lire les scripts .cmd et d'en extraire les informations nécessaires pour dessiner les monstres aux positions adéquates sur la map. Ca n'aura finalement pas été si terrible dès que je me suis remis en tête la différence entre setupOAM, setOAM et changeOAM dans (ma propre classe) SpritePage :)
Maintenant, il faudra passer au côté "view & controller" pour véritablement déplacer et éditer tout ça ... et je sens bien que le côté "réécrire le fichier .cmd avec les modifications" promet des moments ... intéressants.
Tuesday, December 29, 2009
Xmas Checkpoint
Je ne vais pas vous faire le coup du changement de palette pour avoir une forêt aux feuilles toutes blanches de neige, ni affubler Bilou d'un gros bonnet rouge et blanc ... Mais joyeux noël et d'avance une bonne année 2010 quand-même.
A défaut de "release", voici l'état actuel de mes trois applications:
- le sprite editor, dont j'ai un brin amélioré l'édition de palettes.
- le level editor, avec son interface revue et corrigée.
- le moteur de jeu, avec support des pentes. J'ai aussi essayé d'un peu ajuster les collisions avec les ennemis. Vous pouvez donc vous amuser *aussi* à écraser les appleman.
But before I go for a "real" release (that is, an extended level that really showcases slopes), I'd like to improve my level editor so that it could handle .cmd files -- and especially graphically represent and edit monsters.
Je voudrais parvenir assez prochainement à vous faire une "nouvelle release" (comprenez, greendemo avec un 3eme stage) qui fasse profiter pleinenement de l'ajout des pentes. Mais pour ça, il faut que je progresse encore un peu sur l'éditeur de niveau, histoire de lui permettre de gérer les monstres présents dans le niveau. Grosso-modo, il s'agit de permettre graphiquement l'édition des lignes du genre "gob4 :state8 (300,240)" qui positionne un nouveau monstre et définit son état initial. La bonne nouvelle, c'est que puisque j'ai "extrait" les comportements dans des fichiers .cmd séparés lors de la dernière release, celà devrait réduire le nombre de lignes à traiter. L'inconvénient, c'est que je n'ai pas de liaison entre "state8" et une image représentant, p.ex. Funky Funghi à moins de me retaper le parsing de ces fichiers séparés (pour identifier les images associées aux animations associées aux états :P)
There's just a silly little thing to figure out for this: how am I going to know what graphic should show up as "state8" in a gob-description-line without importing the whole GameObject.cpp file into the level editor ...
Wednesday, September 09, 2009
Un Bilou tout neuf.
- démarrage simplifié, un seul fichier grâce à l'EFS de Noda
- musique de Pierrick H et (quelques) bruitages grâce à la libntxm de 0xtob
- gare à Funki Funghi (image de droite), le champignon écrabouilleur
- gare à l'appleman, débonnaire en apparence, mais tenace
- il vous faudra au moins 16 pommes pour passer le panneau du 2eme arbre (cf. image de gauche)
- un deuxième niveau non-terminé
- plein, plein, plein d'améliorations internes dont vous ne vous souciez probablement pas mais dont je suis super-fier
En cours de jeu, sautez avec X ou Y et dirrigez le personnage (la boule bleue, faut-il le répéter) avec le Dpad.
Start passe le jeu en mode pause debugging, L+START revient au mode normal.
The sign points to the left: you haven't collected enough apples to access the second half of the level.- sound & music by Pierrick H thanks to 0xtob's libntxm,
- ease-of-use thanks to Noda's EFS
- new monsters
- improved controls
- one extra (draft) level
- 5 hitpoints per lives and unlimited lives
- a few hidden places you needn't to find
- some more gfx
- parallax scrolling
Tags: appleman, bilou, download, english, funky funghi, greenzone, level2, milestone, screenshot, scrolling, sidescroller
Sunday, August 30, 2009
première photo du niveau 2 ...
Bon, on ne s'emballe pas : j'ai encore un paquet d'écrans à compléter dans ce niveau-là. Mais ça prend forme. Je teste des passages vicieux avec les Funky Funghi, etc.
J'essayais donc ce matin d'avancer un peu sur le comportement de l'appleman, et en particulier le faire "stresser" lorsqu'il aperçoit Bilou (une sorte de première phase d'attaque). J'ai donc ajouté une petite zone "déclencheuse de pièges" (cf. système de gestion des collisions) à Bilou (que je pourrais éventuellement désactiver lorsque Bilou a obtenu un bonus 'mode furtif'), et j'ajoutais une zone sensible à l'appleman. Bin pas de chance : ça n'a pas marché. J'avais oublié que si la zone active dans un test peut être plus grande que le personnage, il n'y aura vérification des zones passives que si l'objet lui-même est en contact. En d'autres termes, les zones passives sont toujours plus petites que les objets qu'elles recouvrent.
While I'm working on the improved behaviour of the Appleman, i have been tricked by the asymmetric nature of collisions in my own engine. While the *active* collision area can be larger than its own sprite, the *passive* area (that 'recieves' the collision, somehow) is inherently restricted by the bounding box of its sprite, meaning that the Appleman has to be active into detecting Bilou around (not the other way round). It requires a little more code to attach actions there that I'll write down as soon as we have sleep == (*deline && !me). I could also introduce a new kind of controller that simply fires an event when the player enters a given area, but for rectangular checks, it would just be useless work.
Alors on pourrait se dire "bah, il n'y a qu'à inverser" ... Le code n'était pas prêt pour ça, mais vous avez parfaitement raison. Alors cliquez sur un lien quelque-part pour continuer à lire, parce que moi ... bin Yaka.
Tags: appleman, bilou, collisions, flickr, funky funghi, greenzone, level design, level2, screenshot
Saturday, June 06, 2009
tromp ... tromp ... tromp
Entre deux couches de latex au plafond, je profite d'une heure de répit pour bidouiller la machine d'état de Bilou et affiner les collisions. Comme prévu, en court-circuitant la lecture de la croix directionelle lorsque Bilou se fait toucher, il n'y a plus moyen de passer "à travers" Funky Funghi.
J'en ai profité pour ajouter aussi un test "écrabouillé" qui bloque Bilou sur place un moment. Autant dire que dès que j'aurai commencé à décompter les points de vie, ça va faire mal ;)
I took a little hour off while the painting in my bathroom is drying, and reviewed collision transitions in Bilou's state machine. By giving "hit" its own state and disabling the D-pad there, it's no longer possible to "walk through" Funky Funghi.
He's now even more dangerous than ever thanks to the new "stomp" collision area that will flatten Bilou and make him stunned for a while. Needless to say that it's gonna hurt pretty much as soon as "hit points" will be coded.
Tags: aouch, coding, english, funky funghi, state machine
Tuesday, May 19, 2009
Le Bilou Nouveau est arrivé...
Comme promis, voilà la nouvelle démo de mon moteur de jeu. Ce n'est pas encore parfait, bien sûr, tant au niveau technique qu'au niveau graphique ou gameplay, mais ça vous permettra de voir faire une meilleure idée de ce sur quoi je travaille.
L'objectif est de récolter toutes les pommes du niveau, et un petit "GREAT" vous félicitera si vous en trouvez 16. Vous pourrez vous faire "blesser" (aussi souvent que vous le voudrez) au sol, mais pour l'instant, vous êtes invincibles en saut. Et il me manque toujours un fond convainquant.
Bref ... Work in progress.
Here you finally get it: a new demonstration of my game engine with my most up-to-date pixel art. It's not perfect, of course. Neither graphically, technically or in regards to gameplay. But at least it gives a better view of what i'm working on.
So far, your mission is to collect as much apples as you get (and you can get all of them in one row), a message "**GREAT**" will show you you've got 16 of them. Note, too, that you'll never get hurt while jumping. And yeah, it'd be much better with a background of some sort.
PS: dans cette version, il vous faut toujours appuyer quelques fois sur "Y" au démarrage de la démo pour lui forcer à "lire" le script du niveau. C'est une de mes priorités de retirer ça pour la prochaine démo, bien sûr.
PPS: last update: 2009/05/20: Kram reported a bug on real hardware. Fixed.
Greetings fly to: NODA (efs lib), OxTob (ntxm), the devkitpro team, Kram (DS2DS), CJ (R4), Pierrick & Tbob (music), lackey, victorX, pixelaroo, arachne, zeid, Helm and many more pixel pushers at Pixelation for artistic advices, sourceforge & blogger for project hosting.
Read progress reports
Tags: bilou, download, english, firstDemo, funky funghi, game, greenzone, milestone, mybrew, pixels, screenshot, sidescroller
Monday, April 27, 2009
Coding Funky Funghi
J'avais envie de mettre côte à côte "comment je me représente le comportement de Funky Funghi" et "comment je réalise ce comportement avec mes outils actuels.
state12 :anim15 {
using stopper
}
state13 :anim6 {
using gravity(24,1536);
testpoint off (16,32)
}
state12->state13 on done [t] (v4 0 = 200 * 500 + ~ :1)
state13->state12 on fail [t] (v4 1 + 4 % :4 0 :1)
[square brackets]) and an action that alters the object before it enters its new state.
Voilà donc à la fois un "mockup" futuriste de l'éditeur de monstres sur DS et le genre de script que je bricole en attendant pour quand-même avoir des monstres qui se balladent dans mes niveaux. Histoire que vous suiviez :
- Funghi a deux états: au sol (
12) ou en saut (13). Ca me permet notamment d'avoir une animation spécifique à l'état "au sol" et synchroniser la "déformation" du sprite avec la collision au sol (chose dont le RSD Game-Maker était incapable). - Comme tous les objets que j'ai jusqu'à présent, Funky Funghi respecte la convention que
v0est la vitesse horizontale etv1la vitesse verticale. A priori, ces valeurs sont gérées par le contrôleur et utilisées par la classe SimpleGob pour mettre les coordonnées à jour. Elles sont aussi accessibles dans la machine d'état (:1signifie "écrire la valeur dansv1) - Chaque "gob" possède 12 compteurs sous son entier contrôle. Funghi utilise le premier d'entre-eux (
v4) pour compter ses rebonds. "v4 1 + 4 % :4" est une expression post-fixée (pensez 'calculatrice HP' qui doit se lire "prendv4, ajoute 1, calcule le reste de la division par 4 et stocke le résultat dansv4à nouveau". Ce calcul est effectué chaque fois que Funghi entre en contact avec le sol.
2 3 +, as on a HP calculator). Hopefully, the existence of predicates allow me to compensate the lack of conditional expressions in actions by multiple transitions, each with a predicate and a separate action. See the code below, it's actually clearer (sort of) with similar efficiency.
A la fin de l'animation "déformation", la nouvelle vitesse verticale est définie. "500 ~ :1" donnerait à chaque fois la même implusion (~ est utilisé ici pour prendre l'opposé d'un nombre, donc v1 reçoit -500 ... eh non, je n'ai pas implémenté les constantes négatives. Sue me).
Pas d'expressions conditionnelles genre "si(test, réussi, échec)" comme on en trouverait dans Excel ici (ou test?réussi:échec pour les programmeurs); c'est une restriction délibérée, et sans doute la plus contraignante de mon évaluateur d'expressions jusqu'ici. Or, je dois décider de fixer la vitesse après rebond à 700 ou 500 selon qu'on est au 4eme saut ou pas. Ma première approche était de tenir compte du fait que v4 0 = teste la valeur du compteur de rebonds et laisse 0 ou 1 sur la pile selon le résultat, et de jouer sur la multiplication absorbante : t 200 * 500 + vaut 700 quand t=1 et 500 quand t=0. D'où v4 0 = 200 * 500 + ~ :1.
En fait, il y a plus simple puisqu'à défaut d'expressions conditionnelles, j'ai séparé prédicats et actions. Rien ne m'empèche donc de réécrire la machine d'état sous la forme suivante:
Alors oui, bien sûr, c'est horrible à relire. L'idée n'est évidemment pas d'obliger l'utilisateur final de GEDS à écrire des expressions de ce genre-là, mais plutôt de se donner un "langage intermédiaire" (un bytecode, quoi) comme résultat d'un éditeur de monstres plus graphique.state12->state13 on done [v4 0 =] (700 ~ :1) state12->state13 on done [t] (500 ~ :1) state13->state12 on fail [t] (v4 1 + 4 % :4 0 :1)
J'aurai donc quand-même mis un an entre "l'idée sur papier" et le protoype qui tient la route pour la définition des contrôleurs (bon, j'ai fait d'autres trucs entre-temps, évidemment). Et l'intégration des "test de possibilité de déplacements" dans le contrôleur (reléguant les testpoints au rang de sophistication optionnelle) n'est pas la moindre des décisions.
Sunday, April 26, 2009
Petit à petit ...
Le gros du "refactoring" est fait. J'ai bazardé le plus gros de ma gestion de collision basée sur les "testpoints" en faveur d'un test de propriétés sur la zone occupée par le sprite. Et progressivement, je mets à jour les règles définissant le comportement des différents sprites pour en tenir compte.
Une petite modif' d'une classe GobController par-ci, une commande 'xs = 0' dans les transitions entre états par-là ... Ca prend forme. Et j'en ai profité pour rajouter un funky funghi, histoire de voir ce qu'il donne animé.
Most of the refactoring effort on world collisions management is done. I'm now (slowly) updating the state machine rules to take new controllers into account (these use 3-state logic : EVENT, FAIL, NOPE rather than just boolean logic) and fixing bugs due to inconsistencies here and there. Initially,
Comment ?? Vous ne savez pas qui est Funky Funghi ??
Ah oui, c'est juste, je ne l'ai pas encore bloggé ici. C'est la version revue et corrigée de Boppin' Toadstool, qui apparaît dans la bande dessinée et que j'ai pixelisé il y a quelques mois en Suisse. Au départ, je voulais me le garder pour vous faire la surprise, une sorte de petite animation exécutable sur DS où on aurait eu les sprites rejouant le scénario de la BD.
This also allowed me to introduce Funky Funghi, the remasterised poisonous, bopping toadstool into the woods. Funghi confirms that 32x32 sprites work well with the engine and that Gravity controller can apply not only to the hero (though it required a bit of tweaking ^^"). He's also the very first monster to use internal counters: much like the Mad Mushrooms of the shadowlands, Funky Funghi will do three small bops before he goes for a higher jump.
J'ai encore quelques petits bugs à corriger, mais le plus gros est déjà réglé. Début de semaine, figurez-vous que dans certaines circonstances indéfinies, Bilou s'envolait à vive allure, hors de tout contrôle jusqu'au moment où, sortant de la zone de jeu, il provoquait un magnifique "Guru Meditation" ... Comme vous voyez, on revient de loin ^_^
Mais là, il y a un rayon de soleil et je vais aller me faire une p'tite balade jusqu'à la bulle de collecte des verres.
edit: cliquez sur la photo pour regarder la vidéo youtube.
Monday, February 16, 2009
[back then] La naissance de Funky Funghi
Suite à une requète de Lazycow sur Pixelation, je pixelise une première version de mon "Boppin' Toadstool" mi-février 2009.
C'est la retouche de Surt, ci-contre, qui va donner l'étincelle. Matthias lance le nom de "Fungus Fred", que je transformerai en "Funky Funghi".

Parce que la version que j'avais postée au départ, c'était pas franchement spectaculaire.
J'essaie donc de rajouter du contraste, cf. ci-contre, mais ce n'est toujours pas convaincant. Et en postant sa version retravaillée (en haut de post), il ajoutait.Mushroom needs contrast and lots of it.
Eye's don't much work for me. Are they meant to be sunglasses? If so you might want to add the temples to make it more clear, even if there's nothing for them to hold on to.
Some squash of the face during landing might give it more character. -- Surt
I played with it a bit much, but I think it should demo a better contrast level at least. I removed the blue from the sunglasses as I think it only confused things. I think solid black works well enough, or a simple specular highlight as in the edit. -- Surt
Cette version, je sais que je l'ai collée dans mon carnet-agenda de l'époque après l'avoir imprimée pour pouvoir revenir dessus au fil du week-end. Il y aura encore un peu de bricolage autour, mais le lundi suivant, le plus gros du boulot est fait. Pierrick apprécie. Tant mieux.
Ce post n'arrive dans le blog qu'en 2025. il sera resté un brouillon depuis le 12 février 2009. La première mention de "Funky Funghi" sur le blog aura attendu jusqu'au mois d'avril 2009.
Tags: archive, credits, funky funghi, greenzone, pixels
Tuesday, July 15, 2008
Bilou : première mise en page

Quelques images de "la farde Bilou" ... un document estampillé "P.P.P. Software '94", dans lequel pour la première fois le projet du jeu de plate-formes mettant en scène Bilou et Bouli est décrit avec un peu de cohérence. Jusque là, c'étaient essentiellement quelques croquis de Piet qui tenait lieu de scénario.
Dans les grandes lignes, le scénario est simple: Bilou et Bouli se baladent tranquillement dans l'espace quand un incident quelconque (c'est allé du rayon tracteur à la collision d'astéroïde selon les périodes) provoque un crash de leur "astro-cruiser".
A noter aussi qu'au départ, Bilou et Bouli sont supposé être des humains transformés par un rayon émis depuis cette planète (en cause, 7 pierres magiques qu'il va falloir rassembler pendant le jeu). J'ai laissé tomber cette partie du scénario quand je l'ai repris pour ma petite BD en 2000. Plus question "d'alien des plus étranges" donc.
This was not exactly "the very beginning", but that's the closest we have preserved from that beginning. Somewhere at the end of 1994, there was a video-game design contest where the first prize was to have your game realised by a professional team. It definitely motivated my brother and myself to get some real "design documents" written. This is how the first ever storyline for "Bilou's Adventure" was written. Funny enough, by that time, Bilou and Bouli were initially humans that got lost in space. They're unfortunately approaching a mysterious planet and get hit by a "beam" that both attracts their ship and crash it on the surface, but also turn them into "strange aliens" : a blue ball and a yellow stick.
This is where the 7 "magic stone" initially appeared (influenced by Sonic's chaos emerald ? who knows ?) : they're the key to get back to your old self again, as you probably don't want to stay a blue ball for the rest of your days. I totally droped that part when writing down the comic in 2000. Bilou and Bouli *are* aliens, they don't find themselves "strange" and they are happy to be a ball and a "stick".
Piet était super-motivé par ce fameux concours "décrivez votre jeu vidéo et on le réalise pour vous", puisque non seulement il avait doublé le nombre de niveaux de la Green Zone (apparition du "puit de la clairière", notamment), mais il avait même pris le temps de détailler le "gameplay": "Jumper Mushroom invincible à vos armes" (tiens, ça fait un peu Keen 4, ça, non?), levier pour "dépolluer" le puits avant de tomber dedans, respiration dans l'eau limitée à 5 secondes, avec un pouvoir magique (Blue Stone) pour le prolonger, etc.
De mon côté, il fallait illustrer l'utilisation de tous ces pouvoirs magiques imaginés par Piet qui --jusque là-- se limitaient à un ou deux mots : "invincible", "voler", etc.
Evidemment, au fil du temps, c'est cet ensemble de "pouvoirs" qui a le plus souvent été remis en question. Ainsi, dans la version BASIC, Bilou ne lance pas de gameboy mais a un poing téléscopique et peut s'aggriper au plafond (toute ressemblance avec Rayman est absolument fortuite, puisque celui-ci fait son apparition sous DOS et PSX uniquement l'année après, en 1995).
This has led my brother to start sketching levels for the Green Zone -- and not only sketching them, but also describing them, giving hints on the ennemies movement patterns, gameplay etc. It was full of fun (but impractical for me) ideas such as "stop the pollut-o-matic so that you can enter the river safely", floating, walking and flying bumpers, etc. On my side, i of course had to bring flesh to the bones, and visuals to all of those funny "special powers" that my brother had in mind. "flying", "diving", ... have seen a couple of animations sketched.
Somehow, after the School Zone (which was deeply influenced by Pierrick's sketches), it seemed that my brother had his focus moving away. He just recycled levels of our very first video game "Calimero Against the Black Empire" that i hadn't completed : pyramid zone, water zone, computer/techno zone and the "pipe zone" full of warp pipes and pirhana plants ... hum.
Certains pouvoirs (voler et nager, entre-autres) et la présence d'une "zone des pyramides" n'est pas sans rappeler notre tout premier jeu vidéo "Calimero against the Black Empire", et bien qu'il n'y ait jamais eu de niveau dessinés pour la Fire Zone ou la Water Zone de Bilou, je soupçonne fort mon frère d'avoir penser s'en tirer en repompant les niveaux que je n'avais pas su complètement exploiter dans ce jeu (dont seule la première zone avait été réalisée à grand coups de Gotos ;)
De mon côté, ces illustrations on pratiquement vidé mon microfin de l'époque et ma collection de marqueurs destinés à souligner les titres de mon cours de Français, mais qu'importe. C'était les tout premiers éléments ou je pouvais amener un peu de personnalité à ces deux bonshommes -- Bouli ayant été tout fraichement dessiné (avant ça, il était dessiné comme un "SuperLapin") pour être le dual parfait de Bilou, tant dans les couleurs que dans la version "Laurel & Hardy". Probablement une influence des frères "Jack & Elwood" des Blues Brothers auxquels on jouait tant ... Quoi que j'aie retrouvé en prenant ces photos une première esquisse pour le jeu "Logic Labyrinth", un puzzle-platformer inspiré de Rick Dangerous où mon frère n'avait pas prévu de personnage, et où je pensais bien introduire une balle avec des cheveux punk qui courait très vite et une espèce de saucisse faisant plutôt des sauts en hauteur (un début de Lost Vikings ?). Celui-là n'était pas daté, mais j'aurais tendance à le placer aux alentours de 1990, vu que je me limitais toujours à la palette CGA ;)
It's fun to think that this era is where i initially introduced Bouli in the game. Bilou was there for a long time ago, starring Pierrick's games as "a blue ball named Bubble". I somehow tried to make him look "opposite" to Bilou, unconciously using warm colours where Bilou was all of cold colours, being long and slim (mimmick'ing memorable duos such as Laurel&Hardy or Jack&Elwood) while Bilou was all round. Even his "mood" was different. Bilou started being fast and a bit "impetuous" while Bouli has that kind of "Zen Attitude" that suits the engineer of a revolutional spaceship -- Bilou being instead a talentuous pilot. Think about it: if things had not turned out that way, you might have seen Bouli dubbed "Superabbit" and Bilou might have been blue and magenta with some punk hair...
Voilà. Je vous laisse visionner les archives et je retourne faire mes p'tits trous dans les murs de la cave pour installer des étagères ;)
Tags: adventure, appleman, bilou, bouli, english, funky funghi, history, monster design, sonic, storyline, superpowers, throwable, y94












%20_%20Twitter.png)
%20_%20Twitter.png)






Vote for your favourite post
