mardi, octobre 22, 2013

Toujours plus haut!

S'il y a une chose à quoi les éponges de la School Zone ne sont pas encore prêtes, c'est bien à servir d'ascenceur dans "Deep Ink Pit". Plate-forme mobile par-dessus l'encre, ça oui. Avec un bon timing pour s'y accrocher puis sauter, on peut prendre pas mal de vitesse horizontale -- et c'est assez fun. Mais monter, ça ... c'est une autre histoire. Au point qu'aux endroits où il fallait passer d'une éponge à quelque-chose d'autre, j'ai fini par amener la trajectoire presqu'au-dessus de l'objectif, qu'on ait plus qu'à se laisser tomber.

With the anniversary level, Spongebop no longer directly hurts. There binding to a pin can be modified by the player too, to the point I wonder whether I should allow Bilou to carry them along. There's one thing they're still terrible at: allowing you to climb up! Too bad: that's what they should provide in Deep Ink Pit. With training, one can get significant horizontal speed when letting the sponge loose, but if you manage to find an idle sponge in the level, you may have hard time gathering the bonuses that float over it. 

While investigating the reasons, I figured out that the rule that makes SpongeBop "slightly bounce when you land on it" interferes with Bilou's attempt to use bop'd ennemy's vertical speed as an extra bounce impulse: first, the sponge gets a push downwards due to its collision with Bilou and then Bilou's jump strength is defined as default_impulse + other.yspeed. I cannot change that ordering: it is defined by who's active (Bilou) and who's passive in the collision. What can do, however, is to arrange a variable where the vertical speed of the monster is preserved (or an impulse bonus of some sort) and ensure that vertical speed is only used as a booster, never to reduce the impulse.

En fait, j'ai presque tué toute possibilité de rebondir au moment où j'ai ajouté la règle "l'éponge reçoit un choc vers le bas en cas de contact" pour donner un effet plus "élastique". Bilou ne peut du coup plus bénéficier de la vitesse montante de l'éponge pour sauter plus haut puisqu'il vient de lui forcer une vitesse descendante! J'imagine que c'est le genre de couac qui a poussé les auteurs de Frogatto & Friends à construire leurs scripts à grand coups d'expressions-qui-renvoient-des-affectations. Ici, il ne me restera qu'à sauver l'ancienne valeur dans une autre variable de Spongebop pour que Bilou puisse y accéder.

1 commentaire:

Sylvain Pypebros a dit…

quelques altérations qui donnent un résultat intéressant (une éponge qui est de plus en plus élastique au fur et à mesure qu'on rebondit dessus), mais à garder exclusivement pour les éponges qui ne se balancent pas.

- - - 8< - - - 8< - - -

-state0->state0 on event1 [v4 0 = v0 0 > &] (v0 :4)
+state0->state0 on event1 [v4 0 = v0 0 > &] (v0 :4 4 :9)
# replay it on the next ones.
-state0->state0 on event1 [v0 0>] (v4 :0) :anim1
+state0->state0 on event1 [v0 0>] (v4 :0 v9 1 + 4 M :9) :anim1

# on impact, vertical speed is transfered into the spons.
# spons' own speed is preserved in va for other's to get impulse.
-state0->state0 on hit0 (v1 :a w1 4/ 0 M v1 + :1) :anim0
+state0->state0 on hit0 (v1 :a w1 v9 1 M/ 0 M v1 + :1 v9 1 - 0 M:9) :anim0