Upsilandre Profile picture
Pour retrouver tous mes threads allez sur ce compte secondaire @UpsilandreA que j'utilise comme un blog. Et mon vrai blog ci-dessous👇pour les sujets plus gros.

Dec 4, 2021, 14 tweets

Suite au thread hitbox #TMNT on m'a beaucoup demandé de montrer le célèbre champ d'algues électriques à juste titre mais pour cela il a fallu que j'écrive un script dédié.
Le mystère est donc résolu mais il y a suffisamment à dire pour un nouveau thread😀
#Retrogaming #NES
1/13

Ce ne sont pas des collisions avec des hitbox. Ça exploite simplement la routine de collision du background utilisé pour les murs et le sol. C'est donc une toute autre routine qu'il a fallu comprendre pour visualiser cela mais ça vaut le coup pour une scène aussi culte🙂
2/13

Le premier constat qu'on peut faire c'est la très mauvaise concordance entre la map de collision et le visuel. Ils ont voulu donner un côté plus organique en ajoutant des tuiles aux fonctions uniquement esthétique mais en termes de design c'est très problématique.
3/13

Le joueur se trouve alors face à une information visuelle inexploitable pour savoir quel trajet suivre.
Mais à partir du moment où l'on voit la "matrice" on peut alors se permettre ce genre de taquinerie et prendre des bains d'algues🙂.
4/13

On remarque aussi un nouveau problème de placement de la hitbox. En plus d'être relativement grosse, celle-ci est décalée 4 pixels trop bas par rapport au point de référence du sprite.
Pour comparaison je vous affiche en rouge la hitbox utilisé pour les autres collisions.
5/13

Avec une hitbox de 27 pixels de large les couloirs de 32 pixels sont difficiles à négocier mais c'est faisable... à condition qu'il n'y ai pas de courant comme sur le premier gif mais pour être honnête, en situation habituel il y a un courant latéral et ça donne plutôt ça😅
6/13

Impossible de passer dans ces couloirs avec des secousses gauche-droite et seulement 5 pixels de marge.
Mais ce courant latéral n'est pas une fatalité. Il est causé par un autre bug car cette zone est bien marquée comme une zone sans courant (regardez les bulles).
7/13

Le courant s'active dans l'écran précédent quand on s'approche de la zone de la bombe dans le coin à droite (c'est donc inévitable) .
On peut identifier la présence de courant sous marin à la direction que prennent les bulles comme on peut voir sur le gif.
8/13

Il y a une explication à ce bug. Le courant agit sur la partie décimale de la vitesse horizontale du joueur alors que les directions du Dpad agissent uniquement sur la partie entière sans jamais toucher à la partie décimale, ce qui est maladroit.
9/13

Donc même quand on sort de la zone de courant et que l'on veut s'arrêter, il reste toujours un reliquat de la vitesse du courant stocké dans la partie décimale de notre vitesse horizontale pour nous pousser indéfiniment et qu'on ne pourra reset qu'en se posant au sol.
10/13

La solution consiste à sortir de la zone de courant puis se poser au sol pour reset notre vitesse horizontale et ensuite revenir tout doucement en venant à la limite de la zone d'activation du courant qui s'enclenche quand on voit apparaître la seconde colonne électrique.
11/13

Ça laisse peu de marge, quelques pixels, mais dans cette position on peut alors accéder au champ d'algue en montant et sans activer le courant ni le bug qui va avec. Il devient alors possible de franchir ce passage sans dégât (si on à bien assimiler la map de collision).
12/13

Mais tout ca fait perdre un peu de temps donc faut pas trainer car le chrono tourne, le défi reste intact 😀.
Pour finir je vous montre quand même aussi le dernier passage du stage qui lui est nettement plus simple mais mérite de dévoiler aussi ses mystères.
13/13

A savoir que dans le code du jeu il existe aussi une possibilité de courant ascendant qui n'est pas exploité.

Tout ça vient compléter le thread précèdent sur les hitbox qui se trouve ici 👇🙂.

Share this Scrolly Tale with your friends.

A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.

Keep scrolling