Mécaniques indulgentes : télépathie pour un 'gameplay' réactif GDC20 - En Bref
Comment rendre son jeu plus réactif en observant les intentions des joueurs et joueuses ; et élaborer des mécaniques plus indulgentes aux erreurs humaines.
Dans un jeu où l’on contrôle directement le personnage, il est crucial de le rendre agréable à jouer. Cette conférence explique les “triches” qui peuvent être mises en place pour améliorer l’expérience à l’insu des joueurs et joueuses ; et la philosophie derrière.
L’étude de cas sera exclusivement conduite sur le jeu de plateforme 2D “Levelhead: Platformer Maker” mais la réflexion derrière peut s’appliquer à tous les types de jeux.
Source
GDC2020 | 16 - 20 Mars 2020
Seth Coster : Cofondateur, designer et programmeur chez Butterscotch Shenanigans
Sommaire
Introduction
“Les contrôles ne sont pas réactifs.”
Cette phrase est une sentence de mort pour tous les jeux-vidéos. Des contrôles non réactifs conduisent à des échecs injustes, de la frustration, des joueurs et joueuses qui quittent le jeu et laissent des avis négatifs.
Qu’est-ce que sont des contrôles “réactifs” ?
Si cela veut dire que le jeu fait ce que les joueurs et joueuses lui disent de faire, cela ne devrait pas être dur à implémenter. Il suffit de rentrer dans le code : si la saisie est sur le bouton droit, le personnage va à droite. - FAUX ;
Faire un jeu réactif nécessite de comprendre les inconsistances de ses joueurs et joueuses, et de leur pardonner. Non pas philosophiquement mais littéralement, intégrer l’indulgence dans le design du jeu pour qu’ils et elles passent un bon moment malgré leurs imperfections et leurs erreurs.
Étude de cas
“Levelhead” est un jeu de plateformes 2D nerveux, centré autour de la création de niveaux par la communauté, dans la lignée d’un “Mario Maker”.
Lors d’un test en interne, après le premier mois de développement du jeu, un des artistes a remonté qu’il avait du mal à utiliser le ‘boost’ de saut après avoir rebondi sur la tête d’un ennemi. Il n’arrivait à l’utiliser que la moitié du temps.
Le code de la mécanique était pourtant simple : si le bouton saut est maintenu au moment du rebond, le ‘boost’ s’active. S’il n’est pas maintenu, il ne s’active pas.
Seth a observé cette personne et a remarqué qu’il essayait de synchroniser la pression du bouton saut au moment exact où il touchait la tête de l’ennemi. La moitié du temps il appuyait en avance, ce qui activait le ‘boost’. Et, l'autre moitié du temps il appuyait quelques millisecondes plus tard, ce qui n’activait pas le ‘boost’.
Dans ces moments-là, en tant que designer, vous devez reconnaître que les personnes sont inconsistantes et qu’attendre d’eux des saisies rigoureuses sur les contrôles ne donnera pas de bons résultats.
La philosophie des mécaniques indulgentes consiste à apprendre à anticiper ces inconsistances et intégrer des solutions dans les mécaniques de jeu.
Saisies
1. Indulgence des saisies prématurées
Parfois les personnes appuient sur les boutons trop tôt. Par exemple, si la commande du saut est saisie avant que les pieds du personnage touchent le sol. Pour rendre l’expérience plus agréable, il faut trouver une mécanique pour pallier ces erreurs de ‘timing’.
a. Mise en mémoire des saisies (‘Input Buffering’)
La mise en mémoire des saisies consiste à enregistrer une saisie pour une très courte période de temps (variable) et la déclencher si les conditions deviennent valides.
Dans n’importe quel jeu de plateformes, le déclenchement du saut est conditionné au contact du personnage avec le sol. Si la saisie du bouton de saut doit être faite en même temps que la condition soit valide, alors il y aurait beaucoup de sauts qui ne se déclencheraient pas. Dans le média ci-dessus, un trait apparaît au moment où le bouton de saut est pressé. En observant cela, on peut assumer que le personnage ne devrait normalement pas pouvoir enchaîner les sauts. Mais la mise en mémoire des saisies permet d’enregistrer l’intention des joueurs et joueuses de faire un saut, et comme la condition se valide dans la seconde qui suit, le saut se déclenche.
Une fois ce système installé sur le saut, l’équipe a cherché à l’appliquer partout où ils pouvaient : le grappin, les bonus, etc.
2. Indulgence des saisies tardives
Et dans le cas où les boutons seraient pressés trop tard. Quelles sont les solutions ? Les mécaniques du saut du Coyote (a.) et de l’étirement du câble (b.) permettent de donner le résultat attendu des joueurs et joueuses malgré une pression tardive des contrôles.
a. Le saut du Coyote (‘Coyote Jump’)
Dans le prototype d’origine de “Levelhead”, la variable can_jump
était booléenne. Si la valeur était vraie, le joueur pouvait sauter, fausse il ne pouvait pas. La valeur changeait à vraie uniquement si un saut était valide au moment exact de la pression du bouton. Cela ne laissait pas le droit à l’erreur.
La solution a été de changer le booléen par un chronomètre. can_jump
devient can_jump_timer
avec une valeur de 0.1 seconde. Par conséquent, le saut devient possible si can_jump_timer > 0
. Soudainement, les erreurs d’une pression tardive disparaissent.
Pour les joueurs et joueuse, ce système leur donne la possibilité de lancer un saut même si leur personnage ne touche plus le sol pendant une fraction de secondes.
Cette astuce a été nommée à partir du personnage de dessin animé Vil Coyote, qui ne tombe que lorsqu’il se rend compte qu’il n’a plus de sol sous ses pieds.
- Seth
Pour les joueurs et joueuses, cette solution assure des contrôles réactifs car leur intention était de franchir un trou en sautant et ils pensent avoir appuyé sur le bouton au bon moment. Donc ils s’attendent à le franchir sans encombre. Si le jeu le leur permet, alors ils seront comblés.
b. Étirement du câble (‘Cable Stretching’)
Une fois que l’équipe a ouvert son esprit à la possibilité d’accepter les saisies tardives, ils ont commencé à réfléchir comment l’appliquer sur d’autres éléments.
Dans le jeu, le grappin donne la possibilité d’attraper des objets à distance. La portée maximale du grappin est de 3 unités. Cette mécanique a donné naissance au mouvement signature du jeu : sauter sur une caisse et d’activer le grappin sous ses pieds pour attraper la caisse de nouveau. Cela permet de réutiliser une caisse comme une plateforme mobile.
L’équipe s’est retrouvée face à un problème. Le personnage peut sauter jusqu’à 4 unités, mais la portée maximale du grappin est de 3 unités. Si les joueurs et joueuses utilisent le grappin trop tard, ils ne pourront pas attraper la caisse.
La solution a été de créer une règle d’étirement pour le câble. La destination du grappin est verrouillée au moment de son activation. Dans le cas où le personnage s’éloigne au-delà de la portée maximale, l’extrémité du câble va s’étirer pour atteindre la position verrouillée. Cela permet de faciliter l’utilisation du mouvement spécial.
À ce stade, tous les problèmes de synchronisation de saisie des contrôles ont été traités.
Le design est passé d’une pression exacte des contrôles à un intervalle de temps, permettant aux joueurs et joueuses de valider leur action même s’ils appuient un peu avant ou après le 'timing' exacte. Leur offrant ainsi une marge d'erreur. C’est ce qu’ils appelleront des contrôles “réactifs”.
3. Pallier aux erreurs de saisies
Lors des tests du jeu, l’équipe s’est rendu compte que, dans les moments de tension, le cerveau des joueurs et joueuses est parfois déconnecté de leurs mouvements. Ils pensent appuyer sur un bouton mais ne pressent pas le bon, ou alors, ils le maintiennent au lieu de faire des pressions successives.
Que faire quand les joueurs et joueuses appuient sur les mauvais boutons ?
a. Réinitialiser la saisie
Exemple, le mode “chute” est un système qui permet de passer au travers de multiples plateformes en maintenant la pression sur le bouton du bas.
Le souci apparaît lors de son utilisation dans des situations dangereuses. Dans un couloir rempli de piques du sol au plafond, les joueurs et joueuses vont parfois nerveusement maintenir le bouton vers le bas et ainsi entrer en mode “chute” par accident, les faisant passer à travers les plateformes et s’empaler sur les piques.
Pour résoudre cela, lorsque le saut se déclenche, le personnage arrête de chuter. Ils ont supposé que celles et ceux qui sautent veulent aller vers le haut, tandis que la “chute” sert à aller vers le bas. Le saut réinitialise l’état de “chute”.
La seconde solution a été de permettre l’activation du mode uniquement lorsque le personnage touche une surface. Ainsi, le mode ne peut pas être activé par erreur pendant une chute aérienne.
Ces règles fonctionnent car elles sont alignées avec les attentes des joueurs et joueuses.
Les designers doivent accepter que parfois, les joueurs et joueuses vont oublier qu’ils continuent d’appuyer sur un bouton. C’est leur travail de faire en sorte que le jeu prenne cela en compte élégamment.
- Seth
b. Maintenir pour valider
Dans leur jeu, la gâchette numérique de gauche (LB) réinitialise le niveau au dernier point de sauvegarde. L’idée est de rendre cette option facile d’accès pour permettre aux sprinteurs et sprinteuses de jeux (‘speedrunner’) de tester de nouvelles stratégies rapidement. Environ un tiers des joueurs et joueuses pressent ce bouton par accident quand leurs mains agrippent la manette dans des moments de tension.
La solution a été de nécessiter une pression prolongée de 0.3 seconde pour valider la réinitialisation. C’était suffisamment long pour permettre à la panique de se dissiper et d’éviter les erreurs de pression.
Collisions
Lors des premiers tests du jeu, il était très difficile de naviguer dans les espaces étroits. Le personnage tombait dans le moindre relief et se cognait la tête en essayant de passer dans les trous du plafond. Le traitement des collisions était trop rigide et agissait au pixel près.
1. Pincement des boîtes de collisions (‘Hitbox Pinching‘)
Dans le cas d’un sol plat avec une petite marche, le personnage se retrouvait bloqué contre la marche, à moins de sauter. C’était extrêmement frustrant.
Pour résoudre cela, l’équipe a réduit momentanément la taille des collisions en fonction du mouvement du personnage. Cela lui permet de se faufiler dans des zones où il ne pouvait pas précédemment.
a. Pincement horizontal
Pour un mouvement horizontal, la collision du personnage est rétrécie en haut et en bas. Cela lui permet d’ignorer les aspérités du terrain le temps de son mouvement. En parallèle, le jeu réajuste la position du personnage pour qu’il ne rentre pas dans l’obstacle. Sur l’image ci-dessus, le jeu va surélever le personnage pour que la boîte carrée orange ne rentre pas dans la collision verte.
Cela a permis d’éviter d’interrompre la course du personnage à cause de petites marches ou de trous.
b. Pincement vertical
Lors d’un saut, la collision du personnage est rétrécie à gauche et à droite. Comme on peut le voir sur le média ci-dessus, ils ont réduit la collision à quelques pixels (centre du personnage), ce qui lui permet d’initier un saut même en étant partiellement dans un mur et le jeu va réajuster sa position par la suite.
Lors de la chute, la collision va se ré-élargir à sa taille normale (extrémités du personnage) pour éviter qu’il ne passe à travers des obstacles ou manque des plateformes en tombant.
2. Tailles et formes des collisions
Jouer sur les paramètres des collisions est la façon la plus simple et efficace de rendre plus indulgent le jeu.
a. Tronquer les collisions
Concernant les éléments qui infligent des dégâts au personnage, une pratique courante est de réduire la taille de leur collision comparée à leur visuel, pour réduire les risques de toucher le personnage.
Une autre pratique sur “Levelhead” est d’avoir des collisions rondes même si le visuel est carré pour permettre au personnage de naviguer entre les obstacles plus facilement et de créer un sentiment de tension et de maîtrise.
b. Exagérer les bonus
Concernant les éléments positifs comme les pièces à ramasser, leur collision est carrée et agrandie au-delà du visuel pour être touchée plus facilement.
c. Magnétiser les bonus
Parfois, avoir une grande collision n’est pas assez. Pour exagérer encore plus la récupération des pièces, ils ont mis en place un système d’aimantation où les pièces vont être attirées vers le personnage s’il est passé assez proche d’elles.
Cela permet aux joueurs et joueuses de ne pas avoir à revenir en arrière pour récupérer des pièces.
Ces éléments peuvent paraître trop exagérés. Mais quand le jeu tourne à une vitesse normale, les joueurs et joueuses n’auront pas le temps de percevoir ces supercheries.
- Seth
3. Arbre de décision en faveur des joueurs et joueuses
Quand le personnage est dans une situation qui peut se résoudre de différentes façons (positives ou négatives), le jeu va toujours privilégier le résultat le plus favorable pour les joueurs et joueuses.
Dans “Levelhead”, les ennemis sont le meilleur exemple. Toucher un ennemi c’est le vaincre, être touché c’est perdre.
Dans le jeu, les ennemis ont une collision rectangulaire sur leur moitié supérieure et une collision circulaire à leur centre. La zone rectangulaire est plus large que le visuel, et ses coins la rendent plus facile à toucher. Celle circulaire est plus petite que le visuel, et ses bords arrondis laissent une marge pour que le personnage puisse esquiver.
Quand le personnage saute sur l’ennemi, le jeu va d’abord vérifier si la collision rectangulaire est touchée. Seulement si cette condition est fausse, il va vérifier si la collision ronde est touchée. Cela permet de prioriser le résultat favorable (toucher l’ennemi) et de laisser une échappatoire en cas d’échec (la taille de la collision circulaire).
Le but est de donner aux joueurs et joueuses autant d’opportunités que possible pour vaincre et se sentir bon au jeu. Et seulement quand ils sont à court d’options pour s’en sortir, alors ils perdent.
Mot de la fin
Certains concepts sont plus compliqués que d’autres à intégrer et tous ne s’appliquent pas à tous les jeux. L’intégration dans votre projet risque d’être très différente de ce qui a été montré aujourd’hui. Mais ce n’est pas grave. La leçon principale à retenir est :
Vos joueurs et joueuses sont des personnes (imparfaites).
Concevez vos systèmes pour qu’ils soient utilisés par des personnes (et non des robots).
- Seth
C’est le travail des concepteurs d’aller à la rencontre de ses joueurs et joueuses et de leur donner la meilleure expérience de jeu possible. Et pour cela, il faut pardonner leurs inconsistances et établir des règles dans le jeu pour en tenir compte. Et seulement là vous aurez un vrai jeu “réactif”.
Voici la fin de cette publication. J’espère que vous trouverez les astuces qui correspondent à votre projet, pour le rendre plus indulgent.
N’hésitez pas à partager en commentaire quelles astuces vous utilisez pour votre genre de jeu !
Merci pour votre lecture !
Remerciements à Martin pour la relecture.
Super article à nouveau, merci beaucoup !