Quelques erreurs à ne pas faire en développant un jeu de combat

Mike Z, le développeur de Skullgirls, a participé à une conférence pointant les erreurs les plus communes concernant les interfaces et le gamedesign dans les jeux de baston. Nous vous proposons ci-dessous une traduction des problématiques de gamedesign et de la manière dont elles peuvent être réglées, avec des images d’exemple issues de la conférence.

La forme est un peu décousue et les vidéos pas forcément très belles mais cela permet d’en apprendre beaucoup sur quelques jeux connus et de voir comment certains développeurs contournent ou règlent certains détails auxquels on ne pense pas forcément.

 

LES TRADES

Dans Street Fighter 3.3 et dans le cas précis d’un trade (les deux personnages se touchent en même temps), le jeu garde les deux joueurs dans les frames actives du coup pendant le hit stop (la pause pendant l’impact) au lieu de montrer directement les frames de stun.

Aussi anecdotique cela puisse paraître, cette décision améliore la visibilité notamment pour les commentateurs. Ci-dessous une comparaison SF4 / SF3 :

 

DES HITBOX FIXES

Dans beaucoup de jeux, selon que l’on touche un adversaire à la tête ou au ventre, son animation changera. Malheureusement dans certains titres, les hurtbox aussi faisant que selon l’endroit où on touche, on ne peut pas faire le même combo. Par exemple ci-dessous, Ryu peut fait un Light Punch après le saut MP uniquement s’il touche Zangief à la tête.

 

Le mieux est alors de définir, et ce quelle que soit l’animation, que la hurtbox soit semblable à celle de la première frame de la stance du personnage, de façon à ce que, quelque soit l’animation de touche utilisée, les combos passent en toutes circonstances. C’est le cas par exemple dans Street Fighter 3.3.

 

LES CROSSUPS

Les crossups ne fonctionnent pas tous de la même manière selon les jeux. Dans King of Fighters ils ne retournent pas le sprite de l’adversaire mais toutes les hitbox sont cependant standardisées de façon à ce que tout fonctionne correctement malgré les tailles très variées des personnages.

Assez proche visuellement mais dans un tout autre but, dans Street Fighter 3.3, un personnage touché en crossup aura son animation opposée à celle de l’adversaire, autrement dit dans le mauvais sens par rapport au coup qu’il reçoit. Si ce n’est pas « logique » du point de vue visuel, cela fait que le mouvement de recul envoie le personnage touché VERS le personnage qui fait le crossup et non l’inverse.

 

Dans BlazBlue c’est l’inverse : chaque coup porté en crossup touche l’adversaire après qu’il se soit retourné vers l’attaquant, faisant que le recul du coup l’éloigne, et que donc le crossup ruine le positionnement avantageux que l’on avait auparavant.

 

On trouve le même système que Street Fighter 3 dans Street Fighter 2X appliqué à la défense : dans le gif ci-dessous, Zangief crossup Feilong qui fait un Dragon Kick alors qu’il subit un crossup. Zangief garde et son sprite est alors dans le mauvais sens visuellement. Étant donné que Zangief encaisse le recul du dragon en étant opposé à Feilong, cela le rapproche au lieu de l’éloigner, ce qui fait qu’il peut ensuite punir facilement au lieu de perdre son positionnement.

 

LES IMBLOCABLES

Dans beaucoup de jeux il existe des coups qui ne peuvent pas être gardés et qu’on appelle imblocables. Dans Marvel vs Capcom 3, Firebrand en possède un : il charge un coup qui devient imblocable et en règle générale, il l’utilise sur un personnage bloqué en garde.

 

Cela crée des abus évidents : si une méthode est trouvée pour systématiquement placer cet imblocable, le jeu devient idiot. Pour l’éviter, il suffit simplement d’enlever la propriété d’imblocable à Firebrand si l’adversaire est déjà en train de garder d’autres coups. A contrario, s’il est juste en garde mais n’encaisse pas un coup, l’imblocable fonctionne et brise la garde.

Pour les imblocables gauche/droite, le mieux est de tout simplement baser la garde non pas sur tous les objets présents dans le jeu mais sur le personnage principal. Autrement dit si personnage 1 se retrouve entre un projectile et personnage 2, le projectile perd sa « direction » pour s’aligner sur celle du personnage 2. C’est par ce biais qu’on garde les projectiles des assists dans Marvel vs Capcom, ou encore l’ultra Yoga Catastrophe de Dhalsim malgré qu’il se soit téléporté dans notre dos.

Cette simple variable n’existe pas dans Street Fighter 3, ce qui fait que Urien peut créer un imblocable avec le miroir.

 

Les imblocables haut/bas, qu’on connait surtout dans Marvel et Guilty Gear, sont également faciles à corriger. Dans marvel vs Capcom 2, le fait de pushblock (repousser un adversaire lorsqu’on est en garde) permettait de garder aussi bien en haut qu’en bas, faisant que les imblocables étaient extrêmement difficiles à mettre en place. Dans Skullgirls, à partir du moment où un personnage est dans un hitstop (la pause pendant l’impact du coup), il garde alors aussi bien en haut qu’en bas, faisant que les imblocables physiquement impossible à garder ne peuvent pas fonctionner.

Ci-dessous Eddie fait un imblocable à partir d’un projectile tapant bas, et lui tapant depuis les airs.

 

Dans Marvel vs Capcom 3 il existe un bug qui veut que, si on projette un ennemi à la même frame qu’il se protège d’une attaque, il ne peut alors plus éviter la projection, parce qu’il est considéré  comme touché par un coup, et ne peut donc déchoper.

 

Pour éviter, il suffit d’interdire à un personnage de se faire frapper par plus d’une chose à la fois à chaque frame. Par exemple ci-dessous, tous les projectiles de Iceman ne passent pas sur Zangief tout simplement parce qu’il est frappé par les rochers de Doom au même moment.

 

Dans le même genre, il faut faire attention à ce qu’un personnage qui est en train de subir une projection ne puisse pas être affecté par autre chose que la projection en cours. Un assist peut par exemple choper l’adversaire qui subit ensuite une attaque portée par le personnage principal, le tout en même temps, ce qui créera forcément des bugs.

 

AXE DU PERSONNAGE ET SOL

Tous les personnages ont un axe central permettant de les localiser dans l’espace. Dans la plupart des jeux, cet axe se trouve en bas du personnage, au milieu de son sprite. Quand un personnage saute, son axe monte avec lui, et quand il redescend, l’axe également, jusqu’à ce que celui-ci touche le sol. Le personnage est alors considéré comme étant au sol, et l’animation de réception est jouée.

Or cela peut créer un problème si on porte un coup en descendant, car celui-ci cessera d’être joué au moment où le fameux axe touchera le sol. Dans Marvel vs Capcom 3 les personnages comme Magneto, qui font des coups rapides au ras du sol, doivent donc porter leur coup au moment le plus bas possible avant que l’axe ne touche le sol, annulant l’animation de leur coup, sinon celui-ci ne touchera pas.

Pour éviter de complexifier le jeu pour rien, il suffit tout simplement de permettre, quand un coup est porté, que l’axe du personnage descende en dessous du sol jusqu’à une certaine limite que chacun choisira. Ainsi le coup sera porté très bas, permettant de faire les combos de manière facilitée. C’est le cas dans les vieux jeux X-men de Capcom :

 

LE FRAMESKIP

Quand on fait un frameskip, c’est à dire qu’on fait disparaître de l’écran des frames d’animation d’un jeu pour donner l’illusion qu’il est plus rapide, il faut faire attention à prendre en compte les commandes qui sont entrés pendant les frames non affichées.

Par exemple ci-dessous, Cable garde tout le temps l’attaque. La première fois tout va bien mais pas la seconde fois. C’est parce que lors du second essai, les frames retirés pour rendre le jeu visuellement plus rapide l’ont été juste au moment où il devait garder la furie. Comme les commandes ne sont pas enregistrés pendant le retrait, le jeu considère que cable ne fait rien, et il se mange donc la furie.

 

DASH -> DRAGON OU HADOKEN ?

Après un dash, il existe pas mal de jeux qui ne savent pas quoi choisir si un quart de cercle est entré par le joueur. Est-ce un projectile ou un anti-air ? Il y a deux solutions connues pour régler ce problème.

Dans Skullgirls et BlazBlue, si après un dash un quart de cercle est entré, le jeu fera un Dragon. Par contre si après un dash c’est un demi tour vers l’avant qui est entré, le jeu fera un hadoken.
King of Fighters propose une autre manière de faire : après un dash, un quart de cercle strict qui s’arrête vers l’avant donnera un Dragon, tandis qu’un quart de cercle peu strict qui se terminera vers avant + haut donnera un projectile.

Les deux méthodes sont valables et il ne s’agit que d’un choix personnel.

 

LE STUN

Il ne faut pas forcément implémenter du stun dans un jeu. Le problème de rendre les personnages étourdis est simple : cette variable crée de nouvelles stratégies dont certains personnages peuvent abuser. Par exemple dans Street Fighter 2, certains personnages avaient des setups menant à un stun en un combo, puis à un second stun via un second à partir du premier.

De plus le stun est très difficile à tester et équilibrer. A titre d’exemple Makoto possède un combo 100% stun dans Street Fighter 3.3, mais celui-ci n’a été découvert que 7 ans après la sortie du jeu.

Ne pas avoir de stun n’enlève rien de bon au jeu, rend celui-ci moins frustrant, et permet d’éviter beaucoup de problèmes.