Showing posts with label resize. Show all posts
Showing posts with label resize. Show all posts

Tuesday, August 05, 2014

Corner Case

Oui, voici *encore* Bilou coincé dans un mur. A mon avis, une sombre combinaison d'une animation de transition qui tente de suivre le mouvement avec le passage vers un état qui n'est pas sensé utiliser ce type de suivi. Dans ces conditions, difficile de se rendre compte de l'évolution de la difficulté du niveau au fur et à mesure que la vitesse de montée de l'encre augmente O_o.
Ce qui est curieux, c'est que selon le "contrat" entre personnages et contrôleurs, il ne devrait jamais y avoir un "déficit de mouvement" tel qu'il puisse m'envoyer dans un mur ...

Everytime I end up with a character in a wall is an annoying proof that my tools are still merely hobby things. I wish so much they were cleaner than this. I have a nasty transanim-with-selfmove combination that somehow allows Bilou to enter a wall on walk/idle transition that disappears as soon as those transition animations are removed. So let's have them removed at the moment and have their return as a "todo" item.
A more curious case, now: bouncing from the ground (thus moving up under gravity, but not in "jump" state) allows Bilou to slightly enter the ceiling. If I then turn to another state, I'll end up merged with the level once for all ... And not even David Herdeg could pull him out.


  1. Bilou atterit, il a toujours une vitesse horizontale et l'animation tombe/marche est activée;
  2. le DPAD est relâché mais avec son inertie, Bilou va continuer à accumuler des déplacements-en-retard;
  3. au moment où il passe de "marche" à "arrêt", Bilou fait un pas quantique vers l'intérieur du mur;
  4. une fois bloqué dans le mur, Bilou y reste.
  5. Si je retire l'animation de transition, le problème disparaît. 
Chose plus étonnante, alors que j'essaie de corriger quelque-chose d'équivalent lors du choc avec le plafond: Bilou qui rebondit *ne cherche apparemment même pas* à ne pas rentrer dans le plafond: au moment où la transition "rebond/tomber" se produit, Bilou est *déjà* rentré dans le mur.

edit: En combinant le mode pas-à-pas d'InspectorWidget avec les breakpoints de ddd, j'ai pu pointer que la vitesse est correctement annulée par GravityController: Bilou n'entrera pas dans le mur. Mais au moment d'activer l'animation utilisée pour l'état "idle" (puisque dans le cas "encastré dans le coin", le point-test indiquant une collision avec le plafond est resté inactif), la position de Bilou est remontée de quelques pixels pour qu'il "s'aligne avec le sol dans ce nouvel état où il prend plus de place"... Haha. La bonne blague. La vraie solution, c'est la vitesse d'impact verticale qui est négative alors qu'elle serait positive dans une collision avec le sol. Une correction qui a déjà été utilisée lors de la mise au point de la gomme sauteuse.

Friday, January 17, 2014

Falling through.

Je voudrais faire en sorte que, lorsque Bilou marche sur la craie-qui-bloque le passage du niveau-anniversaire (appelons-le "la classe de sciences" une fois pour toutes ?), une sorte de figure grimaçante apparaisse, qui suggère au joueur qu'il est sur quelque-chose d'interactif et pas un "simple sol". Je voudrais aussi que lorsqu'on lui tombe dessus (mais pas assez fort que pour le briser), "chalkman" tire un peu plus la tête, histoire que le joueur soit guidé vers l'intuition "eh, si je tombe de plus haut, je devrais pouvoir ouvrir le passage!"

Playing "Bottle Grotto" level of Link's Awakening (once) again confirmed me that using a face on that "breakable chalk" is possibly the best way to hint the player that falling from greater heights might let him go through. Much more than having some subtle scribbling about Ep=Ek <=> mgh=mv²/2 -- despite the science-theme of that level.

  • Bilou must get in contact with the "solid" tiles so that it gets stopped
  • Chalk-man can easily test for Bilou's presence above itself, but it cannot receive stomps outside of its own bounding box. Having the "stomp box" of Bilou out of the "body box" would definitely help. Hopefully, a recent update to the game engine makes it possible.
  • But as soon as I say it can be stomp'd, it also means Bilou will slightly bounce on contact, and bounce higher when pressing (A), just like for any stompable monster. One of stompable monsters' internal variables can be used to indicate an additional vertical impulse (for bumpers and such). I can use it to avoid bouncing in some cases.


Mais ce n'est pas si simple que prévu à mettre en oeuvre. Il y a des interférence entre le bloc-qui-ne-laisse-passer-que-si-on-tombe-assez-vite et le sprite-qui-tire-la-tête-quand-on-lui-marche-dessus.

Et puisqu'on en est là ... Au départ, mon frère avait conçu cet endroit comme une "serrure", avec un interrupteur ou une clé (selon l'humeur) un peu plus loin. C'est en jouant à imaginer comment je pourrais transformer cette situation en un "challenge" basé sur les mouvements possibles de Bilou (s'accrocher, sauter, rebondir) que l'idée est venue d'en faire une porte-qui-s'ouvre-en-tombant. Bilou peut passer "par le haut" (les éponges) et directement être prêt à ouvrir la porte en contournant toutes les difficultés (crayons pointus, saut sophistiqué et louvoyer entre les gommes), mais pour ça, il faut maîtriser le saut-hors-de-l'éponge. Il peut aussi assurer ses arrière, éliminer une gomme, faire le "grand tour" et passer en s'accrochant à une seule éponge, puis tomber pour ouvrir le passage. Le joueur casse-cou peut rebondir sur une gomme et prendre assez de hauteur pour forcer le passage. De quoi permettre à chacun d'y exprimer son style propre.

I could go the easy way and make something that looks like a big, shiny keyhole, and put a key somewhere else. Everyone would immediately understand -- or check the console taste. That's how my brother initially designed the level, but I changed it into a challenge based on Bilou's core mechanic (JUMP) so that players could experience different ways to overcome it: take the "easy climb" at the right of the level, or use the "secret" chain of sponges to get early access to that strategic location. Or just be bold and do some recto/verso rodeo by bouncing on top of the jumping eraser with the right timing to gain speed and smash through. Now that the level is part of a larger game, I can start thinking about ways to undermine that challenge... Apple Assault's BigPunch(tm) and a "ground pound attack" could be funny alternative ways to crack the gate open.

Mais qui dit "challenge" suggère aussi la possibilité de contourner le challenge. Qu'est-ce qui peut jouer ici le rôle d'une fleur de feu ou d'une étoile d'invincibilité ?
Ceux qui ont joué à Apple Assault se souviennent du "gros poing", deuxième niveau d'attaque, qui s'applatit sur le sol. Avec un coup pareil, nul doute qu'on aurait assez de puissance pour éclater cette craie et forcer le passage. Autre possibilité, offrir l'équivalent de l'"attaque rodéo" de Yoshi's Island, bien sûr. Vous savez maintenant sur quels types de power-up je cogite :)


Saturday, December 21, 2013

Shrink and Grow!

http://www.flickr.com/photos/68105287@N03/7941244748/in/photostream/
It's somewhat time to allow my game "objects" to take the "drink me" bottle and to change size as the game goes. Well, they can already do so. Well, they can already change size, but it usually result in characters stuck in walls, since the coordinates doesn't change.

Jusque là, si M. Miyamoto était revenu me voir après sa pause-déjeuné au Palais du Champignon Chinois, j'aurais bien tiré la tête en l'entendant dire "Mario géant, on ne va pas le faire géant dès le départ: il aura une taille comme dans Mario Bros. et il deviendra géant seulement après avoir attrapé un champignon. C'est bien connu: ça pousse vite, les champignons". Si mon éditeur d'animations me permet effectivement de changer la taille de la zone occupée, le fait que la position du personnage (de son coin supérieur gauche, pour être précis) reste identique l'envoie plus souvent qu'à son tour se faire emmurer.

So despite I'm feeling as dizzy as an egg, I managed to update the game engine so that you can now indicate which edge of your character should stay in place when coming from a state where the major hitbox (the one which is used to test collisions against the world) has a different size. At last, that allows Bilou to adjust his position as the inkjet shrinks while preparing a "blow".

Mais cette fois, j'ai enfin intégré une amélioration du moteur de jeu trop souvent retardée: premettre d'indiquer sur quel bord/coin de sa zone le personnage doit s'aligner. Ça me permettra prochainement d'ajouter de sympathiques animations pour l'aterrisage de Bilou (comme Lazycow l'avait suggéré). Plus directement, ça me permet enfin de décaler légèrement Bilou vers le bas quand un encrier se prépare à le propulser en l'air ^_^

Merry christmas.