« Touches entièrement configurables » : pour que tout le monde puisse jouer à votre jeu, quel que soit son CPC ou son émulateur

Bonjour à tous,

Beaucoup de jeux CPC sont super, et pourtant une bonne partie des joueurs ne peut pas y jouer confortablement. Non pas à cause du jeu lui-même, mais à cause des touches qu’il écoute. J’en ai parlé dans Why make such great games if most people can’t play them properly?, et j’aimerais aller plus loin : décrire les problèmes et proposer une solution.

L’objectif : le confort du joueur

Chaque joueur arrive avec ses habitudes, et un jeu est confortable quand il s’y adapte. Par exemple :

  • main gauche pour gauche/droite et main droite pour haut/bas, ou l’inverse ;
  • un losange sous une main ;
  • les touches fléchées ;
  • un joystick ;
  • le tir près du pouce, ou sous l’auriculaire.

Un jeu qui n’accepte qu’une seule de ces habitudes force tous les autres joueurs à rééduquer leurs mains, ou à abandonner. Un jeu qui les accepte toutes à la fois n’a besoin d’aucune redéfinition de touches : chaque joueur joue simplement comme il en a l’habitude.

Ce qui pose problème

Même un jeu qui propose de bonnes touches peut les perdre sur la configuration de quelqu’un d’autre.

Les lettres qui bougent. WASD, QAOP et compagnie supposent un clavier QWERTY. Sur AZERTY (CPC français, PC français), A et Q échangent leurs places, tout comme Z et W, et le M se déplace. Sur QWERTZ (PC allemands), Y et Z s’inversent. Un jeu qui se joue avec QAOP devient un casse-tête sur un clavier français avant même d’avoir commencé.

Les touches qu’un éulateur doit placer quelque part. COPY, CLR et les touches f0 à f9 du pavé numérique n’ont pas de place évidente sur un clavier PC, et encore moins sur un portable. Aujourd’hui, j’ai essayé My Roland, un projet en cours, où le saut est sur COPY. Selon l’émulateur, COPY se retrouve sur Alt ou sur Insert. Je ne suis même pas sûr de pouvoir dire que c’est jouable.

Les couches intermédiaires. Entre le doigt du joueur et votre jeu, il peut y avoir : la disposition du clavier hôte, le système d’exploitation, un navigateur, le mappage de l’émulateur (par position, ou par symbole, ce qu’Arnoldemu appelle « traduit »), parfois un bureau à distance. Chaque couche peut déplacer une touche. Lire les positions physiques des touches résoudrait une partie du problème dans un environnement sain ; mais dans de nombreuses configurations, l’interface ne les fournit tout simplement pas, et le programme apprend seulement quel symbole a été tapé.

Dans un navigateur, cela peut être pire. Avec le paramètre « résister au fingerprinting » de Firefox, la page s’entend dire que le clavier est un clavier standard (probablement US), peu importe ce qu’il est réellement. J’ai essayé un émulateur CPC intégré dans une page de cette façon depuis un clavier français : toutes les lettres fonctionnaient bien, mais les touches numériques donnaient de mauvais caractères ou rien du tout, et je ne pouvais même pas taper un " (détails).

Le résultat : un jeu fonctionne parfaitement sur la configuration de son auteur, et s’avère gênant ou injouable sur celle de quelqu’un d’autre.

Une proposition de solution : les touches « toute configuration »

J’appelle ça les touches toute configuration : un jeu de touches qui convient à chaque joueur, quelles que soient ses habitudes et quelle que soit sa configuration : vrai CPC de n’importe quelle langue, émulateur PC, émulateur web. Deux règles, la première avant tout :

  1. Utilisez uniquement des lettres qui restent en place. Ce sont celles qui sont au même endroit sur QWERTY, AZERTY et QWERTZ : B C D E F G H I J K L N O P R S T U V X. Évitez A Z Q W M (elles bougent sur AZERTY) et Y (s’inverse avec Z sur QWERTZ). Une lettre de cette liste se retrouve que l’émulateur mappe par position ou par symbole.
  2. Donnez à chaque fonction importante plusieurs touches, y compris des touches que chaque clavier possède. L’action sur le tir, la barre d’espace, RETURN, ENTER et COPY. Le menu ou la pause sur ESC, le second tir, et P pour la compatibilité avec la GX-4000.

Comment choisir ces différentes touches : adaptez-vous à toutes les habitudes à la fois. Joystick, touches fléchées, une main par axe dans les deux sens, un losange, les groupes de touches que les joueurs connaissent déjà ; le tir sous le pouce et sous l’auriculaire. Personne n’a rien à redéfinir : on lance et on joue.

Pas de routine de redéfinition des touches à écrire. Les joueurs n’ont rien à redéfinir, vous n’avez donc pas besoin d’écrire, de tester et de trouver de la mémoire pour un menu de redéfinition, et les joueurs n’ont pas besoin d’en passer par là avant de jouer. Rien ne vous empêche d’en proposer un aussi, mais aucun joueur ne devrait en avoir besoin.

Exemple : le jeu de touches de Just Get 9

Voici ce que Just Get 9 accepte, tout en même temps :

  • Déplacement, selon ce qui convient à vos mains :
    • les touches fléchées
    • joystick 1 ou joystick 2
    • une main par axe, dans un sens ou dans l’autre : main gauche sur V/B pour gauche/droite avec la main droite sur O/K pour haut/bas, ou main gauche sur D/C pour haut/bas avec la main droite sur H/J pour gauche/droite
    • un losange sous la main droite : U haut, N bas, H gauche, J droite
    • une ligne de style ZX : 4 gauche, 5 bas, 6 haut, 7 droite (les touches 5678 du ZX Spectrum décalées d’une touche vers la gauche, de sorte que 5 et 6 conservent leur signification du joystick 2)
    • les touches du joystick 2 de l’Amstrad : 6 haut, 5 bas, R gauche, T droite
  • Action : sous le pouce (barre d’espace, COPY, ENTER), sous l’auriculaire droit (RETURN), sous l’index (G, Y pour « yes »), ou le tir
  • Menu : second tir, ESC, P (le bouton pause de la GX-4000), F (second tir du joystick 2)

LORSQUE deux configurations partagent une touche, elles lui donnent la même signification, donc les mélanger ne vous surprendra jamais. Dessiné sur un clavier de CPC6128 (● action, □ menu) :

┏━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┳━━━┓
┃ □ ┃   ┃   ┃   ┃ ← ┃ ↓ ┃ ↑ ┃ → ┃   ┃   ┃   ┃   ┃   ┃   ┃   ┃   ┃   ┃   ┃
┣━━━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━━━╋━━━╋━━━╋━━━⫫
┃     ┃   ┃   ┃   ┃ ← ┃ → ┃ ● ┃ ↑ ┃   ┃ ↑ ┃ □ ┃   ┃   ┃     ┃   ┃   ┃   ┃
┣━━━━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┳━━┻┓ ●  ┣━━━╋━━━╋━━━⫫
┃      ┃   ┃   ┃ ↑ ┃ □ ┃ ● ┃ ← ┃ → ┃ ↓ ┃   ┃   ┃   ┃   ┃    ┃   ┃   ┃   ┃
┣━━━━━━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━┳━┻━━━━╋━━━╋━━━╋━━━⫫
┃        ┃   ┃   ┃ ↓ ┃ ← ┃ → ┃ ↓ ┃   ┃   ┃   ┃   ┃   ┃      ┃   ┃ ↑ ┃   ┃
┣━━━━━━━━╋━━━┻━━┳┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━┳┻━━━┻━━━━━━╋━━━╋━━━╋━━━⫫
┃        ┃  ●   ┃               ●               ┃     ●     ┃ ← ┃ ↓ ┃ → ┃
┗━━━━━━━━┻━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━┻━━━┻━━━┻━━━┛

Deux exceptions honnêtes dans ce jeu de touches. Y enfreint la règle 1 : sur QWERTZ, elle ne fait simplement rien, et il y a six autres touches d’action. Les touches numériques nécessitent Maj sur un clavier AZERTY : c’est très bien sur un vrai CPC et avec un mappage positionnel, mais elles peuvent échouer dans un émulateur web, comme dans le cas du « résister au fingerprinting » ci-dessus. C’est pourquoi elles ne sont jamais le seul moyen de se déplacer.

Les joueurs ont-ils besoin qu’on leur dise tout cela ? Just Get 9 ne le mentionne même pas dans le jeu ; le fichier README du téléchargement contient la liste et le schéma ci-dessus, et personne ne s’est plaint. Les joueurs qui ont des habitudes particulières explorent le clavier et trouvent quelque chose qui fonctionne pour eux.

À vous de jouer

  • Si vous écrivez des jeux : pensez à un jeu de touches « toute configuration ». Celui de Just Get 9 en est un exemple ; le vôtre peut être différent, tant qu’il respecte les deux règles.
  • Si vous jouez : quels jeux vous ont posé problème sur votre configuration (langue du clavier, émulateur, émulateur web) ? Lesquels fonctionnent directement ? J’aimerais les rassembler et peut-être en faire une page CPCWiki.
  • Si vous écrivez des émulateurs : c’est un sujet connexe mais distinct, le mappage de touches basé sur les symboles. J’ai écrit à ce sujet dans Introducing in-page emulator on wiki pages.

Merci de m’avoir lu, et bon jeu (toute configuration) !

7 « J'aime »

C’est un article vraiment impressionnant !

Et je suis tout à fait d’accord : ce serait génial si les jeux actuels proposaient autant de configurations de commandes différentes que possible.

Et le fait d’utiliser la manette ainsi que les boutons tir1 et tir2 signifie que cela fonctionne sur la GX4000 sans le moindre problème.

1 « J'aime »

Ouais, maintenant je fais en sorte que tous mes jeux aient des commandes au clavier entièrement reconfigurables, ainsi que leurs équivalents pour joystick/manette. J’utilise les mêmes modules et méthodes d’un jeu à l’autre, en les optimisant et en les améliorant au fur et à mesure que je les réutilise.

2 « J'aime »

Honnêtement, je pense qu’une option pour redéfinir les touches est une solution simple et flexible, et ça ne prend vraiment pas beaucoup de mémoire.

4 « J'aime »

Je suis d’accord, mais pour la console, il faudrait une option permettant de lancer le jeu sans clavier par défaut.

2 « J'aime »

Un schéma de touches comme celui-ci facilite la configuration du clavier : il n’y a tout simplement rien à configurer, on peut lancer un jeu directement. Mais il y a deux autres éléments à prendre en compte :

  • Si une boucle de jeu consomme beaucoup de ressources, limiter le nombre de touches suivies peut aider à gagner un peu de temps de calcul, même si le gain reste minime.
  • Une analyse approfondie serait nécessaire, mais plus le nombre de touches prises en compte est élevé, plus le risque d’apparition de touches fantômes (« ghost keys ») augmente. Ce problème ne se produit généralement pas sur un émulateur, mais il peut poser souci sur du matériel réel.
1 « J'aime »

Tout à fait, mais ce n’est pas trop compliqué. J’ai simplement opté pour « Fire to start/ESC define keys ». Et j’ai fait en sorte qu’on ne puisse pas attribuer la touche ECHAP au bouton de tir pour éviter de se retrouver bloqué. Je ne pense pas que quiconque ait besoin d’utiliser ECHAP pour tirer. Quand tu utilises un joystick, tu peux lancer le jeu directement.

L’un des avantages de l’option de reconfiguration des touches, en plus d’offrir une flexibilité maximale, c’est qu’elle lève toute ambiguïté sur la fonction de chaque touche. Le schéma de configuration ci-dessus est assez complexe à expliquer.

4 « J'aime »

100 % d’accord. Les touches ne devraient pas être une condition préalable pour un jeu qui n’en a pas besoin pendant le gameplay lui-même.

Au minimum, le contrôle au joystick devrait toujours être présent et le bouton de tir devrait toujours permettre de lancer la partie. Idéalement combiné avec un jeu de touches alternatif classique pour le clavier, réassignable pour ceux qui préfèrent une autre configuration ou qui doivent gérer les nombreux problèmes liés à la manière dont les émulateurs mappent les touches.

1 « J'aime »

Merci à tous pour vos retours !

TL;DR : un jeu est une sorte de spectacle, il doit tourner aussi de manière aussi fluide que possible. On revient également sur le choix surprenant dans Batman de Ritman et Drummond et d’autres jeux isométriques similaires.


Quand je jouais sur mon CPC, je préférais largement les jeux qui permettaient de redéfinir les touches.

Je le ferai peut-être pour mes prochains jeux. La simplicité reste néanmoins souhaitable.

Oui, excellente approche ! Est-ce que tu autorises plusieurs touches pour la même action ?

En fait, comme l’émulateur imite les pressions sur le clavier virtuel du CPC émulé, tu obtiens toujours les touches fantômes côté CPC, et peut-être d’autres problèmes liés à la configuration de l’émulation.

:keyboard: Au passage, le câblage du clavier du CPC a été choisi pour éviter les touches fantômes avec les joysticks, mais pas vraiment pour les touches fléchées. Saviez-vous qu’en appuyant sur la flèche gauche, la flèche haut et copy, cela génère une « flèche droite » fantôme ? Vous pouvez le vérifier dans n’importe quel émulateur : allumez-le, appuyez rapidement sur gauche, haut, copy puis relâchez. Sans touche fantôme, le curseur se trouverait sur la colonne tout à droite, au lieu de cela il se trouve sur le R de ready.

Cela pourrait être un argument en faveur d’une disposition fixe, bien étudiée pour éviter les touches fantômes.
Ou bien une routine de « redéfinition des touches » qui avertit l’utilisateur des touches fantômes et propose des solutions.


Vous souvenez-vous de la drôle d’interaction dans le menu de « Batman » (et d’autres jeux similaires de la même équipe) ?

  • Dans tout le menu, ENTER pour sélectionner une option (en fait la grande touche principale RETURN, pas le ENTER du pavé numérique).
  • N’importe quelle touche pour déplacer le curseur (vers le bas).

  • Lors de la redéfinition des touches, SHIFT pour terminer.
  • Un bon point : pour chacune des actions (directions, saut, porter, pause), on pouvait définir plusieurs touches.

Je comprends l’intérêt : quelle que soit la configuration, si tu peux appuyer sur Entrée et suffisamment d’autres touches, c’est bon.

Mais la navigation était lourde, il fallait appuyer sur plein de touches pour tout redéfinir, et il fallait se taper ça à chaque chargement du jeu pour régler les touches ou le son (l’option par défaut, bien nommée « nasty », jouait cette mélodie en continu pendant qu’on marchait) ainsi que la « sensibilité ». Je trouvais ça tellement bizarre et barbant de devoir tout refaire à chaque chargement.


Pour revenir à une vue plus générale, je ne sais pas vraiment à quel point c’est une contrainte pour le joueur qu’un jeu propose une disposition fixe mais multi-habitudes/multi-touches comme je l’ai fait sur Just Get 9 et suggéré dans le premier message du sujet. Personne n’a commenté ce point pour l’instant.

Retournement de situation : quand j’ai testé Just Get 9 dans le navigateur sur un téléphone Android (donc sans clavier), le clavier virtuel d’Android ne proposait pas de touches fléchées, mais je pouvais taper des lettres et appuyer sur « Entrée » pour les envoyer, et ça a marché. :sweat_smile: .

1 « J'aime »