Ceci est la partie 2 du gros thread sur les hitbox Ninja Gaiden!
La suite juste ici en dessous 🙂 ⬇️
Le plus gros problème du jeu est lié au scrolling. Celui-ci doit mettre à jour le background chaque fois que le joueur avance de 16 pixels et chaque fois que cela arrive le jeu saute les routines de collision sur cette frame pour compenser.
16/32
Sur ce gif, rien que durant le saut, on voit cela arriver 6 fois (les 6 frames ou il n'y a donc aucun test de collision visible).
Ce n'est pas un bug. Il y a vraiment une ligne de code qui va volontairement faire ce choix entre collision ou mise à jour du background.
17/32
Et ce n'est pas forcement idiot pour repartir les ressources car la mise a jour du background est une charge très ponctuel, pas récurrente, qu'il est donc intéressant d'alterner avec autre chose.
C'est un choix dicté sans doute par cette obsession du 60 fps sans drop.
18/32
Sauf que comme je vous l'ai dit plus haut. Le slash est actif une seule frame donc si tu slash à la même frame ou le jeu met à jour le background alors ton slash ne fonctionnera pas! Et ça c'est un gros problème.
Voilà ce que ça donne si on slash au mauvais moment 😕.
19/32
Alors que si on slash la frame après (ou avant) cette interruption ne pose plus de problème évidemment🙂.
Sachant qu'on se déplace à une vitesse de 1.5 pixel par frame, ce bug peut donc arriver presque 1 fois sur 10 (9.4% de chance). Ce n'est pas rien.
20/32
Ce bug va concerner uniquement le air-slash car au sol on ne peut pas se déplacer en slashant. Et ne concerne pas le slash de box d'item (puisque celui ci dure 4 frames comme expliqué précédemment) ni les combats de boss ou les début/fin de stage car pas de scrolling.
21/32
Mais c'est quand même une occasion non négligeable de mourir quand on saute un trou en voulant slasher un ennemi qui fait barrage.
Mais pour une fois on peut remercier le knock back qui va alors souvent nous sauver en nous repoussant d'où on vient😅.
22/32
Mais c'est donc aussi un bug qui est localiser. Il est lié à notre position dans le stage. Il suffit de tracer une ligne verticale tous les 16 pixels sur une map du jeu pour savoir à quelle position du joueur ce bug peut faire des siennes 🙂.
23/32
L'autre truc mal fichu c'est la hurtbox des ennemis. Elles ont une largeur qui reprend celle de leur hitbox mais une hauteur qui est une valeur fixe et unique pour tous les ennemis. Ils ont tous la même hauteur de hurtbox que ce soit un projectile ou un boss🤨.
24/32
Ça veut dire que les petits ennemis ou projectiles ont une hurtbox (en vert) exagérément haute donc a notre avantage car ca nous permet de taper largement au-dessus de la cible, mais c'est quand même un choix bizarre.
25/32
Et à l'inverse les boss ont une hurtbox avec une hauteur très faible (puisque la même que les autres ennemis). Si on slash en sautant il y a de forte chance de ne pas le toucher comme on peut voir sur ce gif ou contrairement aux apparences je ne touche pas le boss😕.
26/32
Ca c'est pour le slash mais c'est encore pire quand on utilise les attaques Shuriken ou Fireball.
Cette fois même la largeur des hurtbox est une valeur fixe standardisée. On a donc une hurtbox intégralement commune à tous les ennemis (largeur et hauteur).
27/32
Et la hauteur standardisée de ces hurtbox est encore plus faible qu'avec le slash!
Sur ce gif aucunes de mes attaques Shuriken ou Fireball ne touche le boss car sa hurtbox est ce petit carré vert minuscule à ses pieds 😕.
28/32
Ce sont des choix étrange car à l'inverse pour l'attaque Cyclone (et le Shield) les hurtbox ennemis correspondent simplement à leurs hitbox.
C'est exactement ce qu'on aurait aimé pour les autres attaques aussi. Le cyclone slash est vraiment la meilleure attaque🙂.
29/32
Il y a aussi un bug amusant dans la façon dont le jeu initialise mal la hitbox du slash en l'air ce qui a pour effet d'utiliser la valeur précédente donc si on fait un slash accroupi avant de faire un air-slash celui ci aura une taille booster (celle du slash accroupi).
30/32
Et le air-slash sera encore plus gros si on fait une attaque cyclone juste avant😀(pour les même raisons).
Autre bug amusant. En réunissant certaines conditions j'arrive même à produire un double slash (à gauche et à droite à la même frame🙂).
31/32
J'ai même vu un endroit du code ou il manquait une instruction majeur (un RTS) mais heureusement sans conséquence (si ce n'est ajouter 6 cycles de plus).
Mais ca aurait buggé si la hauteur des hurtbox ennemi n'était pas une valeur commune a tous.
32/32
Et voici le lien pour jouer avec ce script sur Mesen. Un script très précis qui affiche des hitbox pixel perfect, frame perfect, et qui prend en considération toutes ces bizarreries et ces bugs. C'était bien chiant à faire alors profitez en😄.
drive.google.com/file/d/1LYlpZs…
Je conseille vivement de mapper le frame advance sur le pad pour bien utiliser ce type de script et visualiser frame par frame 🙂.
Vous pouvez retrouver tous mes autres threads sur les hitbox dans ce thread qui les réunis tous:
Et la partie 1 de ce gros thread ce trouve ici🙂 ⬇️
J'ai complètement oublié de dire que j'avais corrigé le bug du slash qui ne fonctionne pas en l'air.
Je l'ai fait de façon indirecte en ajoutant simplement une frame active à ce air-slash qui dure maintenant 2 frames et donc même s'il y en a une qui saute la seconde nous sauve🙂.
Cette correction je vous l'ai fait sous la forme d'un patch ips ou simplement d'un code Génie🙂: ZAAEEPPA
Le code fonctionne sur toutes les versions. Ça permet d'avoir un air-slash plus fiable (et plus généreux) de quoi offrir un certain confort de jeu🙂
drive.google.com/file/d/1Wmt8Jl…

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Upsilandre

Upsilandre Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @upsilandre

20 Mar
J'ai plein de gif sur les FX de Batman & Robin #Megadrive. Une bonne occasion de faire un thread sympa pour parler des tables de scroll de la Megadrive qui est un peu sa signature hardware.
Déroulez le thread pour en prendre plein les yeux...
#Retrogaming #Batman
1/18
Les tables de scroll de la MD sont une prise en charge hardware de certains effets de scrolling qui nécessitait des raster effect avant cela comme les effets de parallaxe ou de line scroll.
C'est donc une fonction hardware qui simplifie énormément ce type d'effet.
2/18
Et qui évite de surcharger le CPU 68000 qui est mal adapté aux raster effect à cause de ses nombreux registres qui rendent les interruptions coûteuses.

Ca permet aussi de faire des choses qu'on ne pouvait pas faire en raster effect comme les parallaxes de bandes verticales.
3/18
Read 18 tweets
19 Mar
Hier j'ai testé Rockman Megaworld sur #Megadrive la compilation de #Megaman 1,2 et 3 🙂.
Comme je commence à bien connaître ces 3 épisodes, c'était l'occasion de comparer. Si la mise à jour graphique est appréciable, le reste est un peu bancal...
#Retrogaming #NES
1/15
On est clairement sur une adaptation à l'ancienne, c'est-à-dire qui tente de copier de façon empirique juste en observant le jeu original tourner et pas en s'appuyant sur du code originel. Donc malgré le désir de reproduire fidèlement, le jeu est différent...
2/15
Le gameplay, la physique, les timing, les patterns ennemis et leur placement... ce n'est pas le même jeu même si ça y ressemble fortement.
Par exemple, les attaques des Hot Dog sont souvent impossible à esquiver même frame perfect. C'est très mal réglé.
3/15
Read 15 tweets
18 Mar
La physique de l'eau et de glace de #Megaman 2 reprend les mêmes bases que MM1 comme pour le reste mais avec des améliorations.
Sur ce gif j'avais expliqué comment MM1 baissait volontairement le framerate pour donner une sensation de plus forte inertie...
#Retrogaming #NES
1/9
MM2 reprend cette idée un peu saugrenu qui évite d'avoir à réellement changer l'inertie de tout le jeu (ennemis, bullets...) mais au lieu de caper le framerate à 45 fps (un freeze toutes les 3 frames) cette fois il est capé à 48 fps (un freeze toutes les 4 frames)...
2/9
MM2 ne s'est pas contenté de cela contrairement à MM1. Le jeu modifie aussi la gravité sous l'eau ainsi que l'impulsion de saut.
Une gravité qui vaut alors seulement 37% de celle hors de l'eau et une augmentation de +13% de la vélocité de l'impulsion initial du saut.
3/9
Read 9 tweets
7 Jan
J'ai encore codé un viewer de hitbox. Cette fois pour Castlevania 3 ainsi j'ai toute la série🙂.
C'était pas simple car il y a beaucoup de routines de collision différentes a intercepter et décrypter mais ca me permet de vous proposer une petite série de gif.⬇️
#NES #retrogaming
Un truc intéressant qu'on peut remarquer c'est que Grant a réellement une hitbox plus petite que les autres.
Cela lui permet de rendre quasi inoffensif certains ennemis en passant sous les bullets ou les slash.
Cet ennemi pourtant dangereux ne peut rien faire contre Grant...
On peut même passer sous les tirs des célèbres Pillar of Bones qui sont alors bien plus facile a éliminer (ca dépend de l'orientation évidemment)...
Read 11 tweets
5 Jan
Un petit thread sur quelque FX de CV3 (qui en utilise beaucoup).
On commence par le fog. Un gros raster effect pour générer moultes parallaxes, presque du line-scroll, et un changement de priorité (le sprite de Trevor passe derrière le background). La suite👉...
#NES #Retrogaming
On a aussi cette bascule avec un chouette effet de rotation🙂. Une bascule composée de 16 sprites sur lesquels on applique une rotation des coordonnées + une animation précalculé des tuiles qui simule la rotation de chaque bloc...
J'aime la façon dont la magie de glace freeze l'eau (modification de palette) de façon progressive de proche en proche et pas instantanément🙂.
Et un effet de transparence dans l'eau en produisant un flickering sur cette portion des sprites (pas vraiment partageable en gif).
Read 7 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!

:(