Showing posts with label transanim. Show all posts
Showing posts with label transanim. Show all posts

Saturday, October 19, 2024

On y est !

Enfin ! Un peu de bidouille, un sprite qui doit encore être invisibilisé, mais j'ai enfin les physique voulue pour cette branche rebondissante! Dites-moi ce que vous en pensez, mais moi, je suis plus que satisfait par son mouvement ^_^

Euh ... non, je n'ai pas grand-chose de plus à en dire, en fait... mais bon, ça traine depuis tellement longtemps que je voulais marquer le coup avec un p'tit post qui reprenne l'image. 

Je ne suis pas sûr que ça mérite de ré-uploader un .nds ... je vais plutôt me faire un jus et me mettre au lit. Ciao tutti ;)

Finally ... Finally, I've got my bouncing branch working with the intended "furblock" physics. Almost everything else is said in the previous post, and you also have a download link there to try the physics on the original furblock ... But this has taken so long, I wanted it to have its own post.

edit: there was a little issue left: if you watch the animation closely, you'll note that the branch makes an extra wobble one time, and no such thing on the next time. It wasn't intended at first, but it felt nice when happening, so I made an extra "smaller wobble" animation to use as a transanim in the "throw->idle" transition. But it still had that odd/even behaviour, doing it only every other time. It turned out that when Bilou lands on the branch during a transanim, it did not reset the transanim flag. This is a desirable feature when making transition animations for Bilou mid-air, but not here. there's an extra anim2.force script line I can add to say "this animation (big wobble) may interrupt any ongoing transanim", but its implementation was apparently broken. Should be fixed now.

edit+: OMG. I just stumbled upon the original bouncyBranch.xcf discussed in the first post... timestamp is 24-08-2020 ^^"

Monday, October 20, 2014

catch this!

A new animation and a good deal of "sprtools" to merge pixels drawn on "lime" DS and animations built on the DSi ... Unfortunately that will not be enough. There's one "dead" moment where you cannot see the "grab-in-the-air" animation whatever you do: when Bilou reaches the top of his jump. The reason is that there's already a "transition animation" running at this time, and that there is no way so far to cancel such an animation for another. I may have to fix that before I can proceed any further: it will likely be very important for super powers.

Une nouvelle animation, quelques coups de sprtools pour fusionner les pixels dessiner sur l'une des DS et les animations présentes sur la DSi. Eh pas de bol: ça ne suffit pas pour avoir un mouvement 'attraper en l'air' qui rendrait le gameplay de SchoolRush plus fluide. En fait, ça marche presque tout le temps sauf lorsque Bilou est au sommet d'un saut. La faute à l'animation de transition qui s'active à ce moment là: le moteur de jeu n'a pour l'instant aucun moyen 'd'annuler' une animation de ce genre. Je vais aller corriger ça, parce que ça risque d'être critique pour les coups spéciaux.

  • [done] "force" flag to override transition animations
  • [done] make "grab" a dedicated state
  • [done] edit areas directly in AnimEDS
  • [done] import AnimEDS areas in GOB states
  • [done] selectively activate/deactivate areas in AnimEDS

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, September 27, 2013

3 days left.

Not so much achieved yesterday, but this day is off, so I can fix inkjet's behaviour. Some state command adjusted, and I have Bilou thrown up for the first time with a little thrill ... Now I have to find the tuning that makes the animation work fine.

Hmm ... something wrong with transanims, but it's getting to late to get that sorted out >_<

... oh, wait ... I'm not parsing :anim%u tail in transitions on 'done' or 'fail' but only on 'event' and 'found' in very specific situations ?? wth? 

Le J-3 est un jour de congé, et ça tombe bien, parce que je n'ai pas avancé autant que j'aurais voulu hier. Quelques commandes state à ajuster et voilà Bilou qui se fait projeter par un encrier pour la toute première fois. Petit frisson. Reste à ajuster l'animation pour que ça marche correctement. Et corriger le parser pour qu'il prenne les animations de transition en compte dans tous les cas, et pas seulement quand la transition est le résultat d'une collision.

Sunday, September 15, 2013

Ready? School!

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


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

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

Saturday, September 01, 2012

Back to School!

Here's at last the demonstration of game engine improvement and new graphics for the School Zone, on a temporary soundtrack by Cyborg Jeff.
There's no "gameplay" or "mission" yet: you can navigate through a single map, bop sponges and dumbladors and track bugs (there sure are some). The ink doesn't hurt yet, but the baddies do. How many roll-jump can you chain ?

New features:

  • better animations with AnimEDS
  • transition animation (in jumps, mostly)
  • improved parallax scrolling
Known bugs:
  • Bilou may pause at the end of a downward slope. Just release the DPAD and move forward again.
  • Bilou may get stuck in corners. I need to figure how and why.
  • Dumbladors can be trapped mid air.
  • If the bottom screen turns pink, you've entered debug mode -- known as InspectorWidget. Press 'L' trigger for frame-by-frame game or hold 'L' and press 'START' again to resume "normal" gaming.
  • if all you can see is "efs:/strtrk.xm not found" on black background, you're using an incompatible linker or emulator. If you're using desmume, you need to add "--gbaslot-rom=self" on the command line.
Download SchoolTest.nds and have fun.

Oh, this is the 700th post, by the way ^_^
vu sur dev-fr.org, et - chose amusante - c'est aussi mon 700eme post sur dev-fr (et ça, je jure que c'est pas fait exprès :P)

edit: just understood and fixed the slope issues.

Friday, August 31, 2012

pullmask working!

That's quite an achievement for the z-order branch: I got the 'pull mask' technique working properly in the game engine. No more than 14 hours ago, I still had Bilou disappearing (with only one hand remaining) when I made him do a roll-jump. I also altered the engine so that a transition animation *always completes* before another animation is launched. Switching to mid-roll-jump transition to jump/fall transition just kills the whole purpose of transanims (offer some more smoothness). The "new Bilou" track is thus completed and ready for a new release.

Après le décor, c'est Bilou qui - in extremis - est prêt pour la Grrande Riliize de Septembre. Il n'y a pas 14 heures, faire faire un saut-boule à Bilou le faisait disparaître presque complètement... c'est maintenant résolu. Les "transanims" sont donc prêtes à l'emploi et il me restera au plus à faire une copie-miroir du saut-boule (pour qu'on puisse aussi en faire vers la gauche ;) Mes nouveaux outils sprsplit, dumpanim et sprmerge ont été bien utiles dans la bagarre, si vous voulez savoir.

Reste donc juste à peaufiner la map pour faire un premier schooldemo.nds... et là aussi j'ai une bonne nouvelle: je viens de retrouver sous un fauteuil le chargeur de la DS "phat" de ma fée (la DSlite étant en réparation depuis sa Grande Chute du mois de juin et la DSi pas encore homebrew-ready, mais j'y travaille :)

Il me restera donc tous les aspects "collisions étendues" pour l'après-vacances.

Monday, August 13, 2012

transanims get rolling!

Voilà. Après une soirée de debugging intense (entrecoupée de chasse aux bananes dans Donkey Kong Returns :P), j'ai réussi à faire "tourner" les animations de transition. C'est encore trop rudimentaire pour vous en montrer une démonstration (j'ai une seule transanim que j'applique à tort et à travers juste pour vérifier que ça fonctionne), mais c'est fait.

Got transanims working ! The effect is not yet convincing because I haven't created all the due animations, but at least it demonstrates that parsing was correct and that triggering of the anims work. Huzzah! Now adding the dynamic priority thing to CompoundGob.cxx

Sunday, July 22, 2012

pullmask

Je vous disais que l'animation de Bilou avait été fortement inspirée par Fury of the Furries ... Ça m'a donc semblé normal d'utiliser le "roulé-boulé-en-l'air" comme cas de test des "animations de transitions". Entre "je tombe" et "j'ai rebondi", par exemple.
Après avoir dessiné quelques sprites de plus pour Bilou lui-même, je me suis retrouvé tout bête dans AnimEDS: pas moyen d'avoir les pieds de Bilou qui passent devant puis derrière son corps, vu que l'ordre d'affichage reste fixe.

Bilou has Sonic and Fury-of-the-Furries influences, and one of them is rolling in the air. I wanted to use that as a test for transanims, and I started pixel'ing more rolling frame for Bilou's body. But when I opened AnimEDS to convert it into a full-blown animation, I just went ^^" : it's notwasn't built for animations where the relative order of limbs change over time. In short, the order you add limbs in the 'skeletton' also define which limbs obscures which other one. To do a roll, Bilou's feet need to be shown in front of his body in some frame, and behind his body on other frames. That just was impossible before AnimEDS revision 999 which features a "pull" button that let some limbs belong to a "second pass" rendering.

Bon, maintenant, il faut que je trouve le moyen de faire ça *aussi* dans le moteur de jeu.

The trick is easy to do in the animation editor: I can just use hardware OAM priorities and set ATTR2_PRIORITY(0) on those limbs that are on the "pulled layer". Unfortunately, that won't work in the game engine. I could end up with some limbs randomly appearing in secret passages or with other limbs randomly disapperaring when moving in front of complex background elements. The only viable option here is to re-order limbs in the Engine::sprites[] array. Let's see which is the best way to do it ...

Wednesday, July 18, 2012

transanims: into the code

Maybe I should start a new branch once again: the amount of updates I brought to the code gets sensible, and it doesn't feel like it'd be a good idea to commit yet. The result is that I only keep on coding when I'm *the one* of my 3 daily computers which has the modified code :(

So far:

  • it should be possible to add 'pop' when importing an animation (anim%u = spr:%x) to indicate that the animation should be POPed when it's done
  • GobTransition has now a GobAnim field
  • CompoundGob will reload_state (actually, the animation) if a POP instruction is encountered.

I still have to decide how the code will install a GobAnim on GobTransitions, and how following the transition will set up the transanim on the gob.

Friday, July 13, 2012

transition animations

Jusqu'ici, chaque "état" du comportement de Bilou pouvait avoir sa propre animation. Tomber, marcher, sauter, finir le niveau, etc. Tout ça fonctionne très bien dans Apple Assault, mais avec mon nouvel éditeur d'animation, j'ai envie de profiter de la liberté accrue pour donner encore un peu plus vie à Bilou: pirouette au sommet du saut, demi-tour moins brusques, etc.

Mais là, les choses ne vont plus comme prévu. Il y a de curieux soubresauts dans l'animation du saut de Bilou, qui tient plus du numéro de claquettes aériennes à la Snoopy que d'une performance d'athlète, je trouve. Le problème ? eh bien, j'ai créé une animation "chute" qui fait la transition entre la dernière image du saut et la position traditionnelle de Bilou qui tombe, les 2 pieds en avant et les mains en l'air. Le hic, c'est que dès qu'on entre dans un nouvel état, l'animation de cet état est lancée dès le départ. Donc, dès que je fais faire demi-tour à Bilou pendant son saut, il recommence l'animation sauter/tomber. Idem si je relâche ou ré-enfonce le bouton de saut.

Not so long ago, I was still convinced that having one animation per state would be just enough. Maybe some tricks would be needed to pause the animation until a certain speed would be reach or so, so that you could have funny transitions like turning back or fall-and-crash vs. fall-and-land. After the first attempt of re-doing Bilou animations with AnimEDS, I have to face the truth: that wouldn't work properly, and adding "cosmetic states" just for the purpose of having the desired animations would be a real nightmare: the state machine describing Bilou's behaviour is already quite complex.

Bref, il me faut un nouveau type d'animation, des animations de transition, qui sont déclenchées quand on passe d'un état à un autre, pour ensuite céder le pas à l'animation prévue pour l'état de destination. En théorie, il serait possible d'émuler ça avec des états supplémentaires et des "quitter l'état X quand l'animation est finie", mais pour cette fois, ce serait introduire une complexité tout à fait inutile et un fameux méli-mélo quand il s'agira de trouver les bugs dans un comportement aussi complexe. Bref, c'est ma prochaine intervention sur le moteur de jeu: faire en sorte que "stateJL->stateJR on event [DPAD RIGHT &] () :anim9" soit compris et retoucher les animations en fonction.

What I really need, is the ability to assign a specific animation to a transition. Not only you've got anim X when Bilou is idle and anim Y when Bilou walks, but you have also anim Z that will play when you switch from idle to walk and anim Z' that plays when you switch from walk to idle. As soon as Z or Z' is done, it automatically resumes with Y or X (resp.), and you're already in the "walk" state when Z starts playing. If you switch from fall to idle, however, neither Z nor Z' is played. Maybe you'll use Z" for that.

I've proceeded to some sketch and UML reasoning, and I think I figured out how to start coding that. I can't wait for the house to be clean so that I can start experimenting with some libgeds improvement ^_^

Wednesday, July 04, 2012

A new Bilou is coming soon ...

here you go: new animations for Bilou under test. I still have lot of work to do before it gets really convincing, but it's clearly an animation improvement compared to the former, frame-by-frame animation, don't you think ?
  • [done]that makes too much frame to toy with manual mirroring of the animations
  • [done] all the animations are looping, which makes jumping look funny and the recovery infinitely long.
  • [done] I have animations that guide movements, but not yet movements that regulate the speed of animations.
  • [done]in "zoomed in mode", limb selection on the frame editor widget go completely crazy.
  • [found] Bilou shouldn't get stuck on the ground like that
  • [found] Why is nobody climbing up that ruler ?
  • Dumblador should not got stuck on structure' edges
  • [transanim] any statJ6->statJ6 transition reset the jump-take-off animation mid-air. I should have a way to tune that.
  • [done] make sure my foot stops hurting
Eh bien, voici donc ces nouvelles animations à l'oeuvre -- c'est fou tout ce qu'on peut animer en une petite journée d'immobilisation quand la batterie de la DS est bien chargée ^^. C'est encore loin d'être parfait -- sinon, j'aurais fait une "release SchoolTest", mais ça prend forme... et ça me rallonge ma liste de choses à corriger ^^"

Ah, oui. J'en ai profité pour corriger cette histoire d'encre animée. Chouettos, mais vu que Bilou ne grimpe plus le long de la latte, on ne sait plus aller voir ce que ça donne ^^'