jeudi 16 août 2012

Ecrans tactiles: l'incertitude et les contrôles virtuels


un discret contrôleur virtuel se superpose au jeu
Dans les discussions de game designers à la machine à café, le débat sur le jeu mobile est toujours vif. Un bonheur qui amène des tombereaux de nouveaux joueurs pour les uns, un fléau qui fixe le prix d'un bon jeu à 79 centimes pour les autre? Mais le vrai débat reste sans doute sur la qualité de ces jeux. Comme pour la Wii ou le Kinect, l'espoir de nouveaux gameplays qu'a amené l'émergence d'un nouveau mode de contrôle a vite été douché par ses propres limites.

Les adaptations téléphone/tablette de jeux consoles ou même arcade sont globalement une catastrophe, essentiellement en raison de l'utilisation de "contrôleurs virtuels".  Mais ce n'est pas une fatalité!


Souvent les jeux à contrôles virtuels sont des adaptations et des portages de jeux consoles ou d'anciens jeux.
Mais de façon plus surprenante, il existe des titres qui ont vu le jour sur mobile/tablettes et qui semblent considérer comme une bonne solution d'utiliser un  contrôleur virtuel. Là, pas d'excuse.


Un exemple typique: l'adaptation de Lode Runner, le chef d'oeuvre de Broderbund (Apple][, C64, 1983), sur Androïd par Avko Labs. Ce n'est pas une émulation d'une quelconque version originale, elle a été développée pour une plateforme mobile. Le jeu souffre d'une imprécision due à l'utilisation d'un  contrôleur virtuel, or c'est typiquement un jeu où l'erreur ne pardonne pas. C'est dommage, car en plus de bons contrôles il ne lui manque pas grand chose (à part un graphiste). Pourtant une solution aurait pu redonner son lustre à ce monument du jeu de plateforme: dessiner son chemin avec le doigt  pour déplacer le héros (désactiver le scroll pendant que l'on dessine), toucher les cases à détruire... Un peu d'automatisme n'aurait certainement pas dénaturé le jeu. On peut toujours espérer une mise à jour...


Quel est exactement le problème?

Lorsque l'on contrôle un jeu avec les pouces, comme sur un vrai paddle, on propose à l'utilisateur de déplace ses pouces sur différents emplacements correspondant à différentes fonctions (avancer, reculer, sauter, etc.).
Or le pouce est un organe singulier: une articulation à la base du poignet permet une rotation sur deux axes dont un "latéral" beaucoup plus ample que pour tous les autres doigts. C'est cette particularité qui permet de composer, au dessus des boutons d'un contrôleur, un déplacement selon une surface et permet une pression sur tous les points de cette surface. Fermez votre poing et déplacez le pouce au dessus de l'indexe replié. Voilà! vous constatez que le pouce peut couvrir une surface qui correspond à peut près à une croix directionnelle. Jusque là, tout va bien.
Mais justement le déplacement du pouce sur la surface est loin d'être un mouvement trivial, et c'est là la source des erreurs. Dans le but d'atteindre un point de cette surface (par exemple la direction droite), le cerveau gère une combinaison assez complexe de muscles. Pour passer de la direction droite à la direction gauche d'un D-pad, le cerveau combine le déplacement latéral, qui fait décrire à l'ensemble du pouce un arc de cercle vers la gauche. En même temps, pour corriger la trajectoire, il fait agir les deux dernières articulations pour raccourcir la longueur du pouce. C'est un déplacement en coordonnées polaires pour les plus matheux d'entre vous.

On peut s'émerveiller de ce miracle de la nature qui ne semble exister que pour mettre une raclée à Zangief, mais cela ne vient pas sans un petit défaut: Comme dans toute mécanique, chaque fonctionnalité qui dépend d'une autre multiplie sa marge d'erreur avec celle de son "père". Pour faire simple, à chaque déplacement du bout du pouce, on accumule les erreurs de la première phalange, de la seconde, et tout ça s'ajoute à celle de la base qui est une articulation plus complexe que les deux autres. Les erreurs ne sont pas tellement dans le positionnement qui se fait avec une marge finale de moins d'un millimètre, que sur le retour de cette position au cerveau.

Le plus difficile après un positionnement (à l'aveugle s'entend) de son pouce est de savoir précisément où il est après ce mouvement.

Et mouvement après mouvement, cette imprécision ne fait que s'accumuler. Alors une autre merveille de la nature nous permet de compenser ce défaut: le toucher. Quand il apprend le mouvement, cette phase de quelques secondes à chaque nouvelle console où l'on regarde ses doigts sur le paddle, le cerveau retient la sensation d'un pouce bien placé. Il associe le toucher du relief des boutons à la position correcte. Faites le test: déplacez votre pouce sur un paddle, sans regarder vous savez exactement si vous être ou non au bon endroit. Faites le même test avec deux croix sur une feuille de papier, et en moins d'une minute vous ne savez même plus sur laquelle appuie le pouce.
C'est là que le contrôleur virtuel coince: la surface est la même partout et le cerveau n'a pas de retour fiable. Petit à petit le pouce se déplace, arrive sur un autre contrôle, et c'est le drame. Zangief vous carre une double baffe sur les oreilles.

Une autre application de ce problème est le manque de feedback sur l'activation du bouton. On ne sait si le contrôle est réellement saisi que lorsqu'il est interprété par le jeu. Et lorsque le joueur constate que la conséquence espérée n'est pas advenue, il ne sait pas trop si c'est du fait de la logique de jeu ou d'une mauvaise manipulation.

Dans ces deux cas, on ajoute à un jeu une composante que l'on croyait disparue avec le dernier joystick analogique: l'incertitude.
L'incertitude, c'est quand le programme ne peut pas être certain que l'action saisie par le joueur correspond à son intention. 

Alors que faire?

Dans un premier temps, bien sûr, le mieux et d'éviter le problème. Quelque soit la situation, le contrôleur virtuel est forcément la pire des solutions. Un écran tactile offre plein de possibilités, ne prenez pas la pire.

Si les contrôles virtuels semblent inévitables (producer radin, émulateurs), c'est à dire l'utilisation de zones à l'écran pour simuler des boutons et des directions à appuyer, il y a alors deux principes à appliquer au mieux
  • remplacer le feedback tactile par l'oeil du joueur.
  • considérer et gérer un pourcentage d'incertitude. 

L'oeil du jouer:

Là où le toucher n'est pas possible, laissons le joueur recalibrer la position de ses pouces par rapport à ce qui est visible à l'écran. 
Plusieurs problèmes cependant empêchent de simplement dessiner les boutons pour que ce soit efficace. 
  • Les pouces ne sont pas transparents. Grave oubli de la nature, mais on ne peut plus y faire grand chose. Quand un pouce est sur l'écran, on ne voit donc pas ce qu'il y a dessous. Sony a résolu le problème sur la PSVita en plaçant une surface tactile à l'arrière de l'appareil. Malin! Mais sur téléphone, et encore plus sur iPhone, (Apple semble considérer que les joueurs aiment les écrans de taille ridicule) les pouce couvrent déjà une surface non négligeable de l'écran. Ajouter des repères qui en débordent semble un sacrifice de surface bien exigeant. Et pourtant, il n'y a pas d'autre solution. 
  • l'oeil ne se concentre pas sur les doigts lors du jeu, mais sur le jeu lui même. Et même sur un iPhone où la surface est resserrée, et les doigts forcément dans le champ visuel, on ne prête pas attention à ses doigts; le cerveau est focalisé sur l'action qui -si le jeu n'est pas trop mal pensé- ne se déroule pas sous les pouces. Il faut donc arriver à déporter, superposer les informations doigts-boutons sur la surface de jeu. C'est à dire représenter, de la façon la plus intuitive, là où le doigt a réellement touché par rapport au contrôleur virtuel, le tout par dessus ce qui focalise l’intérêt du joueur. Bonne chance pour négocier ça avec les graphistes.

L'incertitude

Comme nous l'avons vu précédemment, il faut considérer que l'utilisateur a à nouveau une marge d'erreur dans le passage de l'intention d'interaction à l’exécution de celle-ci.
"A nouveau" car ce n'est pas la première fois que cela arrive dans l'histoire du jeu vidéo, et l'incertitude provenait alors la plupart du temps des périphériques dont les composants et surtout leur façon de communiquer avec la machine étaient peu fiables. Par exemple certains système de joystick renvoyaient un signal avec un intervalle de temps dépendant de la position du joystick. En gros, pour connaitre la position X du stick, on comptait le temps entre deux signaux. Pour faire court, on était dans l’approximation et son cortège de problèmes, et les jeux demandaient régulièrement de recalibrer le joystick.
A chaque jeu sa solution technique. Mais avant tout il faut en finir avec le sacrosaint dogme du "le joueur a appuyé sur le bouton, je veux rien savoir". Il faut accepter qu'il y ait une incertitude. Il faut la mesurer, et même aller jusqu'à permettre à l'utilisateur de signaler d'une façon ou d'une autre que son geste était une erreur.

  • comparer la saisie du joueur avec la pertinence de la situation. Si le jeu n'a que faire d'une diagonale, un tel contrôle est probablement une erreur
  • considérer les erreurs physiques. Les erreurs sont souvent dues à un déplacement naturel du doigt sur un contrôle limitrophe. Un (BAS) va se transformer en (DROITE), mais très rarement un (DROITE) se transforme en (GAUCHE).
  • regarder aussi la position précise du toucher dans le contrôle et voir si elle dérive avec le temps. Si le passage de (DROITE) à (HAUT) s'est fait avec un écart de 5 pixels du toucher, c'est plus suspect que s'il s'est fait à 50 pixels. Encore plus suspects si les x contrôles précédents identiques se sont fait avec une dérive du même ordre.
  • considérer une statistique des chaines de contrôles. Selon le jeu, des occurrences de chaines de contrôles peuvent avoir un sens. Par exemple un certain jeu aura à 50% des séries de 6 contrôle (A) et seulement 2% de (A)(A)(B). Donc quand on reçoit un (B) après deux (A), le doute s'installe.
  • comparer avec des enchaînements recherchés, essentiellement dans les jeux de combat. Une série de 8 contrôles  qui ressemble à un combo mais avec juste une erreur à la fin est hautement suspecte.

Au final et selon la situation, il convient d'établir, avant d'envoyer le contrôle supposé au jeu, le degré d'incertitude de ce contrôle, degré établi par une combinaison de facteurs du type de ceux sus-cités. Selon ce degré d'incertitude, il faut faire un choix:

  • L'envoyer quand même, 
  • ne pas l'envoyer, 
  • le corriger et l'envoyer.

Que faire avec un contrôle suspect?

facile à dire: toujours laisser au joueur le bénéfice du doute. Encore faut-il être capable de comprendre la situation du joueur. Dans les émulations et les portages, la partie jeu est quasiment une boite noire. Il faut s'adapter à la situation. Un exemple: dans un jeu de combat, il est relativement aisé de projeter le contrôle suspect sur une table de toutes les séquences de contrôles possibles. De cette table on choisit le combo probable qui a le plus de valeur dans l'absolue. On ne tombera pas juste à chaque fois, mais on réduira grandement la frustration du joueur. Les puristes des jeux de combat hurleront que c'est contre l'esprit même du genre, mais les puristes des jeux de combat n'ont rien à faire sur Street Fighter IV iOS.


Les 4 croix rouges sont toutes des erreurs de manipulation
-> 1% des saisies sont des erreurs
Un autre exemple typique de jeu ruiné par un refus de considérer l'incertitude: Logic Square (dev square) est pratique car il permet de mesurer ce degré d'incertitude juste en jouant. Il s'agit d'un clone de PicCross (lui même clone du Hanjie) mais qui pour des raisons incompréhensibles se passe de contrôles tactiles pour désigner la nature d'une case au bénéfice d'un paddle virtuel. Prenez une grille de 20x20 et jouez. Chaque fois que vous faites une erreur de type "Bordel! mais c'est pas ça que je voulais faire!", vous notez. Quand le puzzle est fini, vous divisez le nombre d'erreurs par 4 et vous avez votre pourcentage d'incertitude de la saisie de chaque coup. Malheureusement pour lui, dans ce jeu, la moindre erreur de saisie peut faire perdre et est extrêmement frustrante. Personnellement j'arrive à une incertitude assez constante d'environ 1%. Cela n'a l'air de rien, mais c'est énorme. Cela veut dire qu'à chaque fois que j'appuie sur un bouton, j'ai 1% de chance de perdre la partie sans ce que soit de mon fait. Voilà comment un jeu plutôt bien léché (malgré son LD médiocre) finit en eau de boudin.

Il serait pourtant facile d'y détecter les contrôles erronés. Il se produisent souvent lors de déplacements répétés, où l'on passe d'une direction à l'autre. Un déplacement rapide avec un changement de direction en plein milieu est un cas d'usage quasiment inexistant. On pourrait même l'interdire dans ce jeu.







donc en Bref:

  1. Oui, on peut utiliser des contrôles virtuels sur un écran tactile, mais il ne faut pas :)
  2. Si vous le faites quand même, arrêtez de penser que le contrôle que vous recevez du joueur est systématiquement son intention. 1% de contrôles erronés est très optimiste. Et cela suffit généralement à rendre un jeu frustrant.
  3. Adaptez à chaque jeu / plateforme un protocole pour déterminer l'incertitude du contrôle.
  4. A chaque contrôle, décidez selon cette incertitude, et toujours à l'avantage du joueur.
  5. Evitez quand même d'utiliser des contrôles virtuels sur un écran tactile.



Aucun commentaire: