Showing posts with label THROW. Show all posts
Showing posts with label THROW. Show all posts

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.

Throwing apples around is a bit more fun since they've started rolling when hitting the ground, but one thing has felt odd so far: seeing the appleman crossing the path of a bouncing Funghi without triggering any effect. Since early 2022, I had the idea that we could have Bilou *bouncing* when hitting the hat of Funghi rather than being hurt, and that implied of course that a thrown apple should bounce as well. It was now time to implement that.

Post by @PypeBros@mastodon.social
View on Mastodon

Ah, and yeah, I've played a good deal of the original Rayman, including throwing fist at bouncy plums and yin-yan balls to make them reach the place I wanted them to be. With all this new bounciness, Funghi is no longer just a hazard and you might actually want him to be *somewhere* rather than just wanting him away. Some of the initial ideas -- such as having the hat deflecting apples and only the foot being the target to hit if you want him moving -- quickly proved unpractical, and uselessly tricky to do, especially for a World-1 interaction.  

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.social
View 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)

I ended up with something simple for Funghi/Apple interaction: half of the speed of the appleman (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) 

The idea inintially was to use the same behaviour as the one I coded for Bilou, where the angle you're bounced depends on the position you hit Funghi on. That's decided in Funghi's script with

state0->state0 on found$bilou [C_THROW we 0 >= &] (we 4/ 256* we 4/ 3 - $ff & | :a)

where 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.

I still had to do something for how static Funghi looks when hit by something. My first attempt failed because transanims with characters that are made of a single sprite, and so far, Funghi was still like that. But behold, Funky Funghi 2.0, remade in AnimEDS after I separated hats and feet, so that I can animate it more freely, at in-between frames of some sort, etc.

It doubles the amount of memory it takes, but I think it's worth it. 

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.

Saturday, April 11, 2026

Better THROWN->ROLL transitions

 Since the introduction of the appleman ROLL mechanics, there was something I couldn't completely fix: if you managed to throw the appleman straight into a "jump thru" platform, it would stop as if it was a wall, while you'd expect it to roll over the platform or fall through it instead.

I envisioned a number of solution to this problem until I realised there was one quite obvious one: just bounce the appleman upwards a little bit when that happens. It will then be able to advance sufficiently into the platform so that it is then in the normal "thrownroll" transition. If instead it was thrown into a solid wall, the bounce will be visible, but have no lasting effect

Au début, ça ressemblait à un petit détail: au moment de se mettre à rouler, un appleman pouvait se retrouver bloqué bêtement par un sol qui trainerait en l'air. Mais si, vous savez: ces plates-formes qu'on ne peut franchir que de bas en haut, mais qui vous retiennent quand vous allez de haut en bas.

Eh bien pour vous retenir, il faut qu'elle soient solides au moins pendant que vous tombez. Et à ce moment-là, elles ne font pas dans la dentelle: pas question de venir avec un "oui, mais non, mais regarde: en vrai je ne peut pas atterir, là: c'est juste le côté de mon haut qui passe de quelques pixels dans le bord de ton bas ... j'fais qu'passer, quoi!". Nada. Je me retrouve avec une pomme qui était lancée à vive allure et qui s'arrête nette sur un plan d'herbe à travers lequel elle passait sans problème quand vous la portiez sur la tê♪te, la pomme ♫ i' faut pas'l'nier.

And let's be honest: it would have been a nightmare to debug without the recently introduced GobExpression debugger. You can quite easily end up in a situation where you expect some speeds to have been non-null in some condition and realise that, well, no they're null here.

The alternatives I had envisioned were globally more complicated, like holding the speed for some time and then restoring it. More complicated in the sense that they required introducing new states in the behaviour or even new controllers. Here, it's just one extra transition that says "stay in THROWN state if {conditions}, but update velocities as follows"
 

C'était devenu un sujet de cogitation dans mon carnet, et un assez bon exemple de ce qu'on pourrait vouloir faire avec un contrôleur "around" pour contourner les obstacles. Au final, ça se passe de ce genre de complication: il suffit de redonner une petite impulsion verticale, juste assez pour que la pomme monte d'un demi-bloc et puisse atterir sur la plate-forme plutôt que de passer à travers.

Tout ça grâce au nouveau débuggueur d'expressions que vous voyez dans le bas de l'animation, qui représente chaque opcode par un caractère qu'on fait avancer petit-à-petit avec la touche L et qui complémente agréablement ce bon vieil Inspector Widget :P 

Friday, December 05, 2025

Funnier Apples

Depuis le début de mon carnet en cours, j'ai un objectif "rendre les pommes plus fun". ça passera par des interactions révisées mais aussi par des compléments d'animation. Entre autre, quand on lance un appleman et qu'il arrive par terre. Le comportement actuel est tiré de dumblador, qui glisse légèrement sur les surfaces planes de l'école avant de s'immobiliser assez rapidement.

Finally! that little sketch of an appleman rolling away when hitting the ground has been teasing me for month at the start of my notebook, but now I've finally sketched something in AnimEDS. Hopefully I could try to integrate it in the prototype this week-end.

It should trigger when you've thrown an appleman and its hitting the ground. The current way it slide for a few pixels before settling feels incompatible with the spheroidal nature of an apple but I still have to decide whether it will bounce-roll or just roll. Likely "just roll" will work better with slowing it down. Or maybe it should just keep rolling until off-screen or stopped by a wall ? 

Mais soyons clair: ça ne donne rien de convaincant avec une pomme sur le sol de la forêt. D'où l'idée que la pomme roule un peu en atterrissant ce qui 1) est fun et 2) lui donne un peu plus de portée qu'un projectile classique, ce qui est toujours le bienvenu dans un monde 1.

Alors tant qu'à faire dans le fun, on pourrait même laisser rouler la pomme jusqu'à ce qu'elle rencontre un obstacle, non ?

(En tous cas,  J.L.N approuve ... et apprécie le fix qui évite à Bilou de se retrouver figé dans un mur pendant qu'il nage) 

edit: The pull mask feature should allow me to make eyes and stem either in front of or behind the apple's "body" more easily. I had forgot it exist and made a messy animation where sprites are swapped, which makes it blink in the editor ^^"

Now, that simple animation opens up a lot of new options in terms of gameplay and interplay. What happens if an apple rolls into another apple ? and into a bopping funky funghi ? 

Game design brainstorm from 2022 suggested that you could "push" a funghi by throwing an apple at him when it's mid-air, but shouldn't it bounce the apple back at you if he's grounded ? and what if you're hit by an apple that's rolling back at you ? shouldn't that hurt ?

That starts making the appleman looking a bit more like a koopa and a bit less like a goomba, doesn't it ? My brother even suggested that it could be the core mechanics of a dedicated puzzle game ^_^

Ah. None of these are available yet, of course ^^"

 

Thursday, May 25, 2023

Battle Plan : Big Caterpillar

Maybe these should stay secret. Maybe I should make sure my blog doesn't spoil the game by having too much "strategy guide" items in it. Who knows ... Anyway, here's a few ideas on how being able to throw things or having the Big Punch power-up would affect the fight.

It keeps the 'crawl' and the 'tail attack' of the BASIC version. It keeps the 'changing target' where there's one segment to hit, and that's the one where the magic stone currently is. It simplifies the fight by assuming we're good hitting *the segment with the stone* rather than the one next to it "so that it pushes the stone in the right direction".

J'avoue, ça fait un moment que j'hésite à les poster, celles-là. Ce serait moins drôle que mon blog se transforme en soluce du jeu avant même qu'on ne puisse l'essayer, non ? Mais bon, en même temps, j'ai besoin de pouvoir me confronter à mes idées, les trier, les rassembler... et les cahiers à points ne sont pas forcément l'idéal pour ça.

Voilà donc mes notes pour le face-à-face Bilou/Big Caterpillar. Le seul boss qui ait jamais été codé dans la version BASIC. Je conserve la manière dont il avance en rampant sur le sol et son attaque "coup de queue". Comme je l'avais déjà dit, le fait que Bilou puisse depuis SchoolRush lancer des objets change la donne. Plus question de demander de frapper toujours la tête ou la queue. Mais si on doit viser un segment en particulier, il faut que ce soit évident pour le joueur. J'avais déjà envisagé d'utiliser la gemme magique comme illustration pour ça, mais avec un système tordu où il aurait fallu frapper le segment *suivant* la gemme pour la forcer à avancer, frapper le segment précédent l'ayant au contraire fait reculer. Plus rien de ce genre: frapper la gemme la fera avancer, frapper ailleurs sera sans effet.

Then I started trying to bring all that into one single state machine. The goal was to ensure actions taken by the boss would make sense and not lead to tricky corner cases. For instance, the 'tail attack' should only be performed if there's enough room in front of the boss so that it does not attack through the edge of the arena. (as a bonus, that also means that it won't do that attack in a case where that would 'trap' Bilou in a situation where taking damage is inevitable). But then there's a new 'coil' attack that is completely horizontal.

Mais à côté des "idées de gameplay", j'ai voulu regarder si je parvenais à rassembler tout ça en un comportement cohérent. A quel moment faire quelle attaque pour éviter que la moitié du boss ne se retrouve dans un arbre ou qu'une des attaques devienne complètement imparable parce que le joueur n'a pas la marge de manoeuvre nécessaire. C'est comme ça qu'on se retrouve avec une attaque supplémentaire, horizontale et dans laquelle le boss s'assomme lui-même (ou écrase Bilou) quand il arrive trop près des murs.

Thursday, February 24, 2022

Devant ou au-dessus ?

 Pas mon masque, hein. La carapace de scorpion quand Bilou la transporte. Celle qui doit me permettre de faire quelques petits moments-koopa dans la pyramide. La logique voudrait qu'on la transporte au-dessus de la tête de Bilou, comme les Dumbladors et les éponges dans School Rush.

Mais voilà, je me souviens bien qu'un des trucs que je trouvais dommage dans Super Princess Peach, c'est la manière dont elle ramassait les carapaces pour les tenir par-dessus sa tête avec son ombrelle, la laissant du coup vulnérable à une attaque frontale du plus élémentaire goomba. Je préfère de loin la technique de Mario qui peut se protéger (voire foncer dans un ennemi sans hésitation) dès qu'il a ramassé une carapace.

Should Bilou carry throwable scorpion shells in front of him, like Mario and Diddy or should he carry them over is head like Donkey and Princess Peach ? Both Twitter and my bro agree: over-the-head is better. It sure looks better: the shell is too large to be handled any other way. Plus, other carry-me items in the game already gets carried I can't forget however that I preferred the experience of in-front in all the games I played so far. It shields you against incoming foes, let you find hidden areas without taking any risks and avoids functional blind spots when you're throwing them.

Idem dans la série DKC: une des choses qui fait que j'ai toujours préféré jouer Diddy plutôt que Donkey, c'est que Donkey porte ses tonneaux au-dessus de lui. ça les rend à la fois moins utile comme bouclier et comme détecteur de passages secret: Diddy peut se contenter de s'approcher du mur alors qu'avec DK, il faudra s'approcher pas trop et lancer le tonneau (ou alors, on se baisse et on dépose le tonneau, quitte à le reprendre si on a fait chou blanc)


Du coup, j'ai fait un p'tit poll sur twitter pour voir un peu vos avis ... Majoritairement en faveur du 'par dessus la tête', visiblement. ça paraît raisonnable. J'imagine qu'on devrait pouvoir garder un côté "bouclier" en s'abaissant pendant qu'on porte la carapace, façon Blues Brothers / Tic & Tac. Il faudra par contre que je sois attentif à ne pas laisser trop de "zone morte" au moment du lancer pour éviter le défaut de DK, en particulier si je veux être efficace contre des ennemis à peine plus hauts que Bilou.

I think I can fix the shielding issue with some duck-while-holding that would reduce Bilou's hitbox and increases the odds that the shell takes the hit instead.

I'll need to take care of the functional blind spot. The shell should leave at a speed high enough that it feels 'fast' to the player (might be the other issue with Super Princess Peach's throw move). I sure can't afford the blind spot to be as large as in DKC (anything between Kong and banana on the picture above is out of the barrel's reach)

edit: Maybe my memories of Super Princess Peach are skewed. Re-playing it a few minutes didn't give me that feeling that koopa shells were broken, and one reason for that is that Peach also gives a (short-range) umbrella attack while throwing. 

Possibly the real issue is with button mapping: you use PICK UP to take the shell, but if you use the same button again, you'll drop an harmless shell rather than throwing it as a long-range attack. And if you press the ATTACK button instead of PICK UP when you don't have the shell with you, you risk of destroying the shell instead of getting a weapon. None of this should occur with Bilou, hopefully. And when you see that the shell in Princess Peach has lowered by more than 1 block within the first 4 frames of animation. Low enough to hit any possible monster with almost no build-up time.

Wednesday, February 03, 2021

Adapting Power-up design.

Here comes an old draft with a nice (?) sketch. 

There's a design decision dating back from 2001 for future Bilou games: to avoid using menus to "select a power" (thus move away from Megaman design) but rather having all of Bilou's super powers avaiable at all time, but potentially invoked by moves rather than mere button presses. Something much along the line of modern Kirby titles, although I'm not sure I had played "Amazing Mirror" yet. 

So when I thought about 'throw something further and faster than the average throw', I came up with a sort of 'straight throw dance' where the player would combine 'spin around Y axis' button (L) and repeat that to gain momentum before throwing the attack.

That might work when used in an explore-and-figure-out game, but for a game such as School Rush, this cannot be a good design. The time player has to make an attack move is short, and the game insists on you to move fast. At that rate, enforcing "down + B" for an attack effective against Pendats and "right + B" to release sponge bops would be unreasonably sophisticated, and thus error-prone.


Je voudrais que l'on puisse lancer des tailles-crayon plus fort, et surtout en ligne droite. Mais les projets étaient pour un jeu qui n'existe pas encore. Pour "School Rush", je ne vois pas cette idée aussi réussie. Ce serait un peu comme tenter de remplacer le menu de Megaman par des mouvements à la Street Fighter. Est-ce que ça donnerait un gameplay plus nerveux ? un meilleur rhytme ?

So even my "improved" plans for "straight throw" of DumbBladors (as opposed to gravity-affected throws) based on timing games cannot really match a power-up that makes the game simpler. If I want straight-throw in School Rush, I most likely want it as simple as regular throw. It could work, though in a game that is more exploration-oriented, with no externally-enforced timing, just like menu-ing works fairly when the levels are designed so that you don't have to juggle with items, but rather pick the few ones that work well within one zone (like in Zelda: Link Between Worlds).

Much along that line of thought, it could be good that the same (B) press that stuns a blador with BigPunch power-up also triggers "catch blador".

Saturday, October 21, 2017

drop your weapons

One of the most vexing gameplay bug I can think of in School Rush is that you can't enter inkjets when carrying a dumblador. That can easily lead to moments of panic for most reactive players and frustrating death for others.

I now have it fixed, by dropping the requirement of NO_WEAPON when entering inkjets, adding a "THROW" test area when being in the inkjet and ensuring that we DROP_WEAPON if this area ever gets triggered.

C'est probablement un des bugs les plus agaçants de School Rush: impossible d'entrer dans un encrier avec un taille crayon dans les mains (ouais, essayez donc vous-même, vous verrez). En phase de playtesting, ça donne lieu à des moments de panique frustrants pour les joueurs. Je corrige donc en retirant une contrainte sur une transition et en ajoutant un nouvel effet de bord.

What took me a bit too much time to figure out is that the impulse to drop an inkjet must be define as you enter the state with a F_THROW test area, and not on the found-matching-object transition expression (likely because the blador-side of the expression evaluation happens before the bilou-side expression).

Thursday, June 09, 2016

Frogatto, round 2

vous vous souvenez de Frogatto ?
Vous auriez du mérite, parce que je n'en parle pas souvent. Un jeu de plate-formes indépendant, libre, en pixel art aux couleurs à tomber par terre.
Avec mon nouveau laptop et son nouveau Linux, je peux m'installer frogatto rien que par un apt-get.

J'ai choisi de me faire une partie en mode "casual" histoire d'être sûr de ne pas me retrouver bloqué au premier monde. Jusqu'ici, je ne regrette pas ce choix: plus de renfort de vie et peut-être bien un système de retour-au-début-du-niveau-avec-toute-sa-vie qui fait du bien.

The revised frogatto, as distributed in Xenial Ubuntu, is far more stable and enjoyable than the one I played before. Maybe that's because I decided to play in Casual mode ? Well, more live fountains, more hitpoints recovery items dropped by monsters, and a fair chance to re-start the level if you happen to fail it. Good thing.

On the graphics side, all the environments I've crossed are well polished, colorful when needed, dark and gloomy when suited, but always varied. If there was a single thing I'm not fan of, it is this way of rotating sprites to make them "climb slopes" or rotate pulleys. Why ? because the pixels of the game are scaled, so when art is simply rotated, you see a mixture of vertical/horizontal pixels and some slanted pixels. And to my eyes, this *never* works well. It makes the pixelization an arbitrary limit rather than an artistic choice.

Gameplay-wise, Frogatto is a bit harder to control than your average mustachied plumber. For the one thing, it tends to knock its head on ceilings a bit too early and too often, making you miss jumps here and there. A pity, for a frog. The other thing is spit control. Spitting out monsters is Frogatto's signature move, but it is really hard to master. How far, how fast and how high you spit depends on your own speed and direction keys you're pressing as you spit out. Combined with the fact that what you spit is affected by gravity and that -- unlike with Yoshi's Island -- there is no such thing as "spit out monster gets rolling on the ground", which compensates for the lack of aiming precision. Here, you miss your target most of the time. I'm glad I haven't insisted on pushing some similar THROW mechanics for Bilou's School Rush. And you'll be glad when you find more amno around you to hit that approaching freaky bug.


Il faut dire que dans la version précédente que j'avais essayée, le jeu crashais dès que je mourrais, résultat, j'étais obligé de reprendre de mon point de sauvegarde in-extremis avec un malheureux point de vie... comme dans Cave Story, sauf que le jeu se prête nettement moins au ""farming" de points de vie.

Les graphismes sont aussi agréables que dans le blog, et si je trouve les musiques trop angoissantes pour faire partie d'une playlist-passe-partout, elles sont tout à fait appropriées pour la mise en ambiance du jeu. La seule chose que je regretterait est l'utilisation de rotations du pixel-art déjà zoomé ... euh, ça casse un peu l'effet...

Côté gameplay, maintenant. Le jeu est globalement chouette, mais parfois un peu confus. L'attaque principale de Frogatto consiste à relancer des ennemis qu'on a avalé au préalable, façon "Yoshi's Island". Tout comme dans mon "School Rush", les ennemis que l'on recrache sont affectés par la gravité. Par contre, là où j'avais décidé d'avoir une seule trajectoire pour les objets lancés, les projectiles de Frogatto suivent un trajet différent selon qu'on saute, court, qu'on est à l'arrêt, etc. De plus, là où un maskass craché par Yoshi se mettra à rouler en boule une fois qu'il atteint le sol, les projectiles de Frogatto rebondissent un peu, d'une façon assez difficile à prédire à moins d'être un caïd de la balle magique.

Quelques niveaux plus tard, je me vois offrir un tir d'énergie-mauve-à-tête-chercheuse... mais qui malheureusement peut très bien décider de cibler un projectile ennemi plutôt que l'ennemi lui-même, ce qui rend la survie en forêt assez ... aléatoire.

Saturday, October 03, 2015

Confirmation pour Double-B(ig-punch)

Petite soirée chez les parents de JB, console en poche. J'y retrouve N, A et L de la S-team, mon équipe de beta-testeurs attitrés. La nouvelle technique de "planer en gardant le bouton enfoncé" est adoptée par tous. Les nouvelles trajectoires pour le lancer n'ont perturbé personne et ont permis aux nouveaux-venus de récupérer pas mal de power-ups alors que jusque là, les P-UPs laissaient plutôt les joueurs indifférents.

Presque tous les plus jeunes, à l'instar de Zim, essaient de continuer à ramasser des taille-crayons même après avoir gagné "Big Punch". Ils se placent juste sur le blador et appuient sur B encore et encore, ajustant leur position. Mais sans se rendre compte que Bilou ne ramasse plus rien dans ce cas-là. Inévitablement, les pieds du blador se rapprochent, il se réveille et blesse Bilou, souvent plusieurs fois d'affilée le temps que le joueur comprenne ce qui lui arrive.

Je peux soit faire en sorte que un coup de poing nécessite un double-B ou veiller à ce que donner un coup de poing dans un blador assomé le ramasse ... mais il faut que je fasse quelque-chose.

S'accrocher aux éponges est passé pas trop mal chez le nouveau joueur après que je lui ait dit que

  • oui, on peut grimper dessus
  • tu tiendrais mieux dessus si tu t'accroches
  • j'ai dis "tenir dessus". Là, tu essaies de l'attraper par en bas. 
Il y a un petit coin du niveau 1 ou j'ai placé quelques lettres qui mênent du balancer d'une éponge à une plate-forme en hauteur, c'est un bon moyen pour aider un joueur inexpérimenté à réussir cette action pourtant fort délicate.

This week-end featured some social beta-testing session with kids between 7 and 15, including the S-team. Compared to earlier release of the game, the power-ups were much more used and seeked by the players. The "straight-throw" mechanism was set as default throw and it pleased the players. Only the eldest player asked me how the former "ballistic-throw" could be achieved and used it in a few place when short distance was preferred.

I take note that young players will tend to stick on "pick up bladors" even though they gathered a BigPunch power-up. With the current mechanics, however, they will stun the blador again and again with no effect, wondering why they can't pick up that blador now, getting closer, and completely missing the facts that blador's feet are getting dangerously near. When the blador finally wakes up, odds are high that Bilou will be recovering a BigPunch blow and that he'll get hit by the blador's move, no matter how fast they spam the B button. I think this stems for BigPunch invoked by a Double-B mechanic while single-B remains "pick up" through the whole game.

The alternative would be to ensure that punching a stunned blador means you pick it up. It sounds both more perplexing (you lose the mechanic's individuality, which is an important factor of cleanness)

Wednesday, September 30, 2015

Deuxième essai pour StraightThrow.

Je n'ai pas grand-chose de solide à opposer au commentaire de Zim comme quoi le lancer de School Rush manque de punch. En fait, en voulant faire les petits dessins-tutoriels pour l'action "lancer un taille-crayon", je me rends compte que la seule façon de le montrer, c'est avec un taille-crayon qui part en ligne droite vers sa cible. Un "Straight Throw", en somme.

Je fais donc un essai de gameplay: B fait un Straight-Throw, UP+B fait un Classic-Throw. Ainsi, je fais du cas de figure le plus important l'action par défaut tout en donnant de la marge pour planter un blador sur un crayon ou placer une SpongeBop pas trop loin dans l'encre.

  • [done] rebondir sur un ennemi pourrait faire sauter plus haut
  • [done] lancer manque de punch (ça ne va pas très loin), si l'on pouvait contrôler la distance et la direction rendrait le maniement plus jouissif (l'impression de faire ce qu'on veut)
  • [done] lancer en pleine course pourrait augmenter la portée du "projectile" (il me semble que c'était pas possible)
Lancer plus fort en pleine course ne donnait rien avec le Classic-Throw, parce qu'il devenait impossible de juger de la trajectoire. Avec Straight-Throw, ça ne devrait plus être autant un soucis, et ça encourage le joueur à prendre de la vitesse, ce qui est le point central de School Rush.

Remember I said "straight throw" as a power-up didn't convince me ? Yet when it is time for me to illustrate "you can stun pendats with a blador", what naturally comes out is a straight throw. So it seems Zim wisely pointed out the lack of power in the current (classical) THROW. I changed the way impulse from Bilou is conveyed to thrown items so I can have "straight-throw" by default and "classical throw" on-demand with UP+B. That feels much more natural in this game, altough less original and possibly less suited to the Big Adventure that is yet to come.


Edit: I'm not sure players will feel that the blador is thrown further as they move faster, but at least they will not get the feeling that they're reaching it back.  Another mechanic to change in a similar way would be to require double-B to use Big Punch.

Note to future self: remember how you spent displeasant hour trying to figure out the reason for a Guru Meditation after you compiled this TryThrow.nds from the mercurial sources in Trusty Tahr. Remember how you promised yourself to spend at least equivalent amount of time on a "build.sh" script that would make the start-of-work from a fresh hg clone reliable.

  • [done] update spons.cmd.c so that it also obeys two-dimensional impulse as the bladors do.
  • [done] merge in "hang-on-spons" when Bilou miss an AIRHOP auto-move.

Wednesday, August 26, 2015

J'ai tenté le "straight throw"

Une impulsion de départ un rien différente, et je me rapproche du "lancer horizontal", dernier élément style "power-up" auquel je pensais pour School Rush. Mais ça ne marche pas. Vérifiez vous-même. Ok, on a fortement élargi la portée du dumblador lancé (la zone où sa courbe croise la hitbox des ennemis), mais le même lancé pour SpongeBop donne quelque-chose de complétement inutilisable.

I tried giving thrown bladors more range ... something towards "straight throw", but it is quite a failure. it works fine when used as weapon, but all the other throw-related actions (floating spongebops, bladors turned into platforms) become impossible to use due to the difficulty to guess where things will land -- and whether you'll be able to reach the "platform" you created.

C'est qu'il ne suffit pas de lancer Spongebop pour flotter sur l'encre: encore faut-il être capable de sauter jusque là. Et assez rapidement, ça cesse d'être possible à moins de faire un saut couru parfait. J'ai tenté de donner aux deux une trajectoire distincte, mais le résultat n'est vraiment pas convaincant.

I had plans to have Straight Throw available as soon as you collect a BigPunch power-up. Your punch power has increased, so you throw faster. But that makes the elementary "regular throw" harder to master because you'll have to learn two curves rather than just one. The solution for making them both available when BigPunch is collected is quite obvious: have Straight Throw activated by charging your throw. But I precisely noted that I didn't want to introduce another mechanic in School Rush. Maybe holding the button down to charge would work correctly in this game ?

Saturday, August 22, 2015

Throw down.

Implemented a nice little feature, suggested about one year ago by my nephew: throwing things downwards. This way, when you're carrying a spongebop, you can save yourself from a deathly ink pit by throwing down the spongebop you're carrying... and safely landing on it.

Aah ... un petit ajout rondement mené. Ce sera un peu chaud à maîtriser (bas + B pendant un saut), mais ça permettra au joueur qui le tente de se sauver inextrémis d'une mort par noyade en lançant un SpongeBop transporté vers le bas pour atterrir dessus plutôt que de tomber dans l'encre.

Saturday, August 15, 2015

Todo list des vacances

Petit arrêt au calme au milieu des écureuils. L'occasion de faire un peu le point sur "School Rush" et de ce qui manque pour compléter le jeu en faisant le tour de mes petits calepins:

  • [don't] BigPunch => StraightThrow. Une façon d'encourager le joueur à continuer à emmener des Dumbladors avec lui même après avoir obtenu un "BigPunch".
  • [done] Rallonger l'effet d'un "air punch" sur les Pendatz.
  • [how?] Implémenter quelque-chose de similaire sur Verso.
  • Une "danse de la victoire" à la fin du niveau
  • [done] Autoriser le FLOAT à partir du High-Jump (inkjets, gommes-bumper)
  • [done] Passage à FLOAT automatique quand Bilou obtient le Power-up FLOAT
  • [how?] quelque-chose de similaire pour BigPunch
  • Indique l'état des power-up sur le "HUD"
  • [done] Eliminer les Pendatz en mode "dizzy".
  • Donner une utilité aux bonus à récolter.
I played some School Rush this week, and read back scribbled notes to isolate todo items I still have to address. Many of these are related to the power-ups, the way to ensure their state can be understood by the player and to have coherent behaviour accross the game.

I would like to augment the GameScript class, too -- the level parser -- with a "reload()" method that would keep the state machine structures, but reload maps, evaluate expressions and reset GOBs to their scripted positions, so that we can efficiently retry the level when the player failed.

I also analysed the layout of my two first levels. I want to add a layer of collectibles that would give gameplay hints:

  • you can pick up a stunned blador
  • you can throw bladors at pendats
  • you can ride spongebops
  • have you tried to throw a blador in spikes ?
  • bladors can un-wire spongebop
and in the level 2:

  • hold (A) and you'll float at the top of your jump
  • big punch can defeat pendats
  • DOWN + (B) let you grab bladors although ou have Big Punch
  • sponges do float
  • bladors can stun inkjets.
The idea would be to have it look like a star-coin in NSMB, but also reveal a small drawing when discovered.

Saturday, March 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.

Sunday, October 12, 2014

Énergie Scolaire ...

Vous aurez peut-être noté le nouveau sondage de ce blog: quels power-ups ajouter au jeu "Bilou: School Rush" ? Ces power-ups seront essentiellemt détenus par les crayons-soldats, histoire de rendre les affrontements avec ces derniers plus excitants. Voilà donc ce à quoi vous pourriez vous attendre:

If you feel so, and especially if you have played Bilou: School Rush a few times, I'd love you to vote for the following nominated power-up candidates. Writing them down, and given the short length of the game, it would likely be cheap if these were permanent power-ups. I rather see them as "consumable" powers, e.g. you could have 3 throws, 5 float and 1 pound left.

Straight throw: fini le lancer en cloche. Comme dans les esquisse, le super-throw lance l'objet droit devant vous. Il reste actif jusqu'à ce qu'il sorte de l'écran ou heurte un mur. De quoi rendre plus aisé l'assomoir d'encriers.
Default throw fits physical laws by making bladors fall. Bilou throws them at an angle of 45°, making it a mid-range weapon that's demanding to aim, like Worms' grenades or DK barrels. Straight Throw switches instead to Blues Brothers' like weapons, where the blador is moving faster, perfectly horizontally, and at constant speed until it gets off-screen. The counter-part is that when you miss your target, your weapon is gone for good nonetheless.

Air dash: Le bon vieux mouvement aérien qui permet de se tirer d'affaire en nous soustrayant un instant à la gravité pendant qu'on part à toute vitesse. On le retrouve dans Giana Sisters, par exemple.

Air Dash and Ground Pound allows you to reclaim control from gravity. You should have fallen, but you're allowed for a short distance to follow a straight line by pressing a single button. You should have been waiting to reach terminal velocity but you get it instantaneously, and get rid of that annoying horizontal speed for an accurate land. Wall Kick, finally, is a twisted version of Air Dash, that can be chained (more open along time), but is restricted in space (only along walls). 

Ground Pound est son complémentaire direct, qui annule toute vitesse horizontale pour passer directement à une chute en vitesse terminale. (cf. les 2 derniers 'super pouvoirs' sentis pour la "version GBA" du jeu).

Wall Kick, la désormais célèbre technique de ninchat du jeu de plate-forme ne serait que moyennement utile dans ce type de jeu, à moins de bien l'ajuster pour qu'elle permette de compenser un saut un poil trop court.

Big Punch, l'attaque niveau 2 de Apple Assault, qui serait capable d'incapaciter crayons et gommes (voire encriers) à courte distance. Le seul avantage sur un lancer de taille-crayon serait ici ... qu'il n'y a pas besoin de disposer d'un taille crayon. Peut-être moins marrant que dans le jeu d'exploration puisqu'il perdrait en grande partie son intérêt de "brise-craie".

Remember Apple Assault ? "Big Punch" is the intermediate weapon you could receive, that dispatched apples at safe distance, with a massive move. Here, it could stun pendats and recto-verso jumping erasers without requiring you to carry bladors around.

Float-Land, lui aussi, agit directement sur la gravité. Il s'agirait de doter
Super Powers as sketched in Summer 2014.
Bilou de l'équivalent des cheveux de Rayman ou de Dixie, voire d'une feuille-mojo pour planer un peu et atterir en sécurité quand il s'avère que le saut est trop court.
Maybe you'd rather float safely to that next book rather than rely on a timed jump ? That power-up is for you, raccoon friend ;)

Last one, the Wide Grab, is for all those who'd love to catch big air with a spongebop, but typically miss their (B) timing. Wide Grab would double your grabbing hit box. How couldn't you love that ;)


Wide Grab permettrait d'élargir la distance à laquelle Bilou peut se saisir d'un taille-crayon ou d'une éponge, sans aller jusqu'à lui faire don d'une "main-lasso". Cette marge de manoeuvre supplémentaire permettrait soit un gameplay plus "nerveux" (assomer et attraper un blador en un seul mouvement) mais aussi donnerait plus de chance aux joueurs de faire du rodéo sur les éponges.

Restera un choix crucial: celui d'octroyer un pouvoir semi-permanent (p.ex. jusqu'à la prochaine blessure) ou des "munitions" pour le pouvoir en question (mais autorisant de cumuler plusieurs pouvoirs). Vu le côté "arcade" de School Rush, je pencherais plutôt pour la 2eme option.