Upsilandre Profile picture
May 25 24 tweets 7 min read
Quelques constats en vrac sur Metroid après y avoir joué longuement. Ca va parler de problème d'input, de timer chaotique, de nuancier de PV et de duplicité du jump... THREAD ⬇️
#Retrogaming #NES #Metroid #Nintendo
Je commence directement par le truc qui fâche car je suis assez sensible aux problèmes d'input dans les jeux et Metroid n'y échappe pas malheureusement. Il a le droit à son petit bug d'input comme trop de jeux NES. Dommage.
Ça concerne le shot. Chaque fois qu’on presse ou relâche n'importe quel bouton (même les boutons de direction) pendant qu'on presse le bouton de tir alors ça enclenche un autre shot non voulu.
Par exemple ici je presse une seule fois le bouton de tir mais ça donne 3 shots successif car j'ai pressé "haut" (2ème shot) puis relâcher "haut" (3ème shot) avant de relâcher le bouton de tir.
Pour n'importe quel autre jeu ca serait un bug sans conséquence sauf que, pas de chance, l'un des éléments au cœur du gameplay de ce Metroid est la capacité à geler les ennemis mais pour ça il faut pouvoir faire des shots isolés. Un double shot va immédiatement dégeler l'ennemi.
Résultat on rate souvent nos freeze shot, c'est frustrant.
C'est d'autant plus étonnant d'avoir laissé passer ce bug car l'auto-fire du jeu a lui même été calibré pour permettre justement des shots isolés (il s'enclenche seulement si on maintient le tir plus de 32 frames).
Ça montre bien qu'ils avaient pourtant conscience de l'importance de pouvoir faire des shots isolés.
Mais ce bug offre à Metroid le firerate théorique le plus élevé que j'ai jamais observé (60 hz au lieu du max 30 hz habituel). Regardez ce triple shot en seulement 3 frames 😄.
Quand j'ai fait mon one life je voulais aussi la best ending (il y a 5 fins différentes dans Metroid) et pour cette raison je me suis intéressé au timer interne (et donc caché) du jeu car c'est lui qui décide quelle fin on obtient selon le temps que l'on met pour finir le jeu.
En regardant dans le code du jeu j'ai donc pu constater qu'il fallait le terminer en moins de 59mn04 pour avoir la meilleure fin. J'ai pu constaté aussi que le timer ne s'arrête pas lors des longues transitions de porte et d'ascenseur (j'avais espéré que... mais non 🤓).
Il s'arrête seulement pendant le freeze de quelques secondes lorsqu'on ramasse un item et quand on utilise la pause évidemment.
Mais j'ai surtout constaté un comportement chaotique du timer à cause d'une implémentation assez bancale. Je vous épargne les détails techniques.
Le timer va ralentir quand le jeu rame mais, en compensation, si il a le malheur de s'incrémenter sur une frame qui drop alors le timer va prendre 4 secondes d'un coup en une seule frame.
Quand on visualise le timer, ça donne ce comportement un peu aléatoire.
Ce chaos on le retrouve aussi chaque fois qu'on sort de la pause ou qu'on sort du freeze de récolte d'un item. A cet instant le timer peut gagner ou perdre entre 0 et 4 secondes d'un coup de façon aléatoire. une sorte de bonus/malus aléatoire.
Mais ce chaos dans le timer, de par sa nature aléatoire, se compense et s'annule statistiquement sur la durée de la partie. Au final on a bien environ 1 heure temps réel pour la best ending à 10 ou 20 secondes prêt.
Mon script pour afficher le countdown:
drive.google.com/file/d/16qFcba…
Une autre curiosité qui m'a interpellé concerne les PV. L'affichage des PV dans le HUD de Metroid est déjà plus précis que dans la plupart des jeux. Un affichage à 2 chiffres (0 à 99) plutôt que par segment. Mais en réalité en interne les PV sont stockés sur 4 chiffres (base 10).
Car il y a aussi les centaines, représenté dans le HUD par les E-Tank, mais aussi une partie décimale (non affichée) pour une précision au 1/10ème de PV.
Les PV ont donc un range qui s'étend sur 7000 valeurs entre 0 et 699,9. Une amplitude et précision rare pour un jeu d'action.
A ma connaissance cette précision décimale est utilisée seulement quand on marche dans la lave ou que l'on se fait pomper par les Metroids. Par exemple, dans la lave on perd 1,4 PV toutes les 8 frames mais seulement 0,3 quand on a la Varia Suit (qui est donc vraiment très utile).
D'ailleurs pour récupérer la Varia Suit rapidement sans devoir récupérer le Super Jump il y a ce trick sympa avec le freeze beam. Il faut juste avoir la bonne pattern ennemi quand on entre dans la room (il faut qu'il soit orienté vers la gauche).
J'en profite aussi pour détailler le fonctionnement des barrières qui protègent Mother Brain. Pour les détruire il faut les toucher 8 fois avec les missiles. Mais attention si on attend plus de 64 frames (~1 seconde) entre 2 hits alors elles se régénèrent et regagnent 1 hit.
Pour terminer j'ai envie de pointer un élément singulier du gameplay dont on parle peu.
La duplicité du saut de Samus. Selon que l'on presse une direction juste avant ou juste après avoir pressé le jump, ça enclenche un saut aux caractéristiques sensiblement différentes.
Suffit d'une seule frame de différence pour enclencher l'un ou l'autre.
Quand on presse la direction après le saut on obtient un saut avec une vélocité horizontale plus faible (1 ppf) mais surtout un air-contrôle total sans aucune inertie horizontale. Parfait pour le platforming.
A l'inverse, quand on presse la direction juste avant le jump alors Samus enclenche son spin (et la Screw attaque si on la possède). La vélocité horizontale est plus élevée (1.3 ppf) et donc le saut plus long. Mais on perd beaucoup en air-contrôle horizontal.
On ne peut plus stopper ni ralentir le mouvement horizontal (Vmax), on peut seulement l'inverser comme dans Contra ou TMNT.
C'est donc 2 sauts vraiment différents. Il est nécessaire de comprendre et maîtriser cette subtilité dans Metroid (qu'on retrouve aussi dans Super Metroid).
Il y a aussi des différences sur la gestion du tir vers le haut selon le type de saut.
Mais dans tous les cas, le saut de Samus n'a aucune inertie verticale. Elle retombe instantanément quand on relâche le bouton. Ça aussi c'est pas si courant.
Tous les autres threads sur le compte d'archive:
twitter.com/UpsilandreA

• • •

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

Mar 15
Je vais à nouveau parler d'un shmup NES: Parodius.
J'ai quelques remarques et gifs à balancer mais ce Parodius est surtout un très bon exemple pour comprendre pourquoi certains gros jeux Konami (Gradius 2, Crisis Force...) n'ont jamais quitté le japon. THREAD⬇️
#Retrogaming #NES
Il a exactement la même configuration de cartouche que Gradius 2 et Crisis Force a la différence que Parodius lui est bien sortie en occident (mais uniquement en Europe).
Mais on remarque rapidement l'absence de certaines animations comme certaines du boss final:
Ou cette animation de boss énorme qui tourne la tête quand il se fait toucher, assez couteuse en tuile et qui a disparu de la version Euro (ca aurait été la même chose si il y avait une version US. Ce n'est pas la faute du PAL).
Read 26 tweets
Mar 3
Dragon Spirit sur NES est une bonne adaptation (grâce a Now Production: Splatterhouse Wanpaku, Jackie Chan,Youkai Douchuuki...) qui a même ses atouts par rapport à la version culte PC-Engine.
Ca va notamment parler de hitbox encore une fois. THREAD ⬇️
#Retrogaming #NES #PCengine
En effet le truc agréable de cette version NES c'est d'avoir une hitbox de taille modeste (8x15) qui couvre juste l'abdomen du dragon (les ailes, têtes, cous et queue ne sont pas inclus) et donne donc un encombrement raisonnable de shmup classique. Ce n'est pas frustrant.
A l'inverse de la version PC-Engine qui s'inspire plus de la version arcade avec une hitbox qui couvre en grande partie les ailes en plus d'avoir un sprite plus large. La hitbox est vraiment très encombrante, 4 ou 5 fois plus large, pour un shmup c'est assez frustrant à jouer.
Read 15 tweets
Dec 9, 2021
Un dernier thread sur #TMNT pour évoquer d'autres éléments un peu bancales dans la technique. Autant l'art est plutôt sympathique (pixel art, musique, cutscene...) autant la technique, le code, est un peu en retrait pour du Konami.
#Retrogaming #NES
1/15
Premier constat. C'est un jeu 30 fps (ou 25 fps en PAL). Le standard étant le 60fps sur NES, c'est alors un peu décevant venant de Konami (cf. les Contra ou même Castlevania et son framerate 60fps ultra stable malgré que ce soit un très vieux jeu de 1986).
2/15
Mais parfois il est préférable de caper le jeu a 30 fps plutôt qu'avoir un framerate totalement instable comme le triste Contra Force (à pas confondre avec les Contra) qui n'aurait jamais dû viser les 60 fps.
Malheureusement le 30 fps n'empêche pas TMNT d'avoir des drops...
3/15
Read 16 tweets
Dec 4, 2021
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 Image
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
Read 14 tweets
Dec 1, 2021
Un thread sur les hitbox de #TMNT + d'autres informations utiles que j'ai extirpé du jeu.
On va commencer par ce gif (dont je suis fier ^^) de comparaison des 3 attaques (front, up, down) de chaque tortue synchronisée. Un grand mystère enfin dévoilé 🤓
#Retrogaming #NES
1/17
Je vous met même la version hires/lossless 🙂
i.postimg.cc/9Mt1d332/TMNT-…
Un gif qui permet de constater que les attaques sont assez complexes. Ce n'est pas juste une hitbox statique et très brève comme souvent. Ici on a une longue séquence dynamique pour chaque attaque.
2/17
Une complexité qui permet une identité propre à chaque attaque. Le gif permet de comparer la durée, la portée et le déroulé de chaque attaque, parfois l'attaque frontale tape même dans le dos ou au dessus ou revient plusieurs fois devant (en faisant tourner son arme).
3/17
Read 21 tweets
Nov 4, 2021
Un thread sur le "Charge-Shot" de #Megaman. Son apparition et évolution sur NES 🙂.
Le charge-shot du Mega Buster apparaît avec Megaman 4. Sa fonction est de proposer un shot puissant (l'équivalent d'un triple shot) en échange d'un temps de charge.
#Retrogaming #NES
1/19
L'influence principale c'est R-Type mais on l'a aussi aperçu très tôt dans Megaman 2 avec l'Atomic Fire ou dans Spellcaster sur Master System et dans Youkai Douchuu-ki arcade avant même R-Type.
J'avais fait un thread de recherche de chronologie:

2/19
Je suis un peu mitigé sur l'arrivée du charge-shot dans Megaman. Ça apporte de la fraîcheur à la série et enrichit le gameplay mais ça a aussi des défauts. Ça casse un peu le rythme (déjà impacté par le menuing), ça réduit la spontanéité (faut anticiper)...
3/19
Read 21 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

Don't want to be a Premium member but still want to support us?

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

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(