Construire une manette dans une boîte à pizza

Comment jouer aux jeux-vidéo avec une boîte à pizza ? C’est la question que vous vous posez tous et toutes et à laquelle je vais répondre.

Je joue compétitivement à Super Smash Bros. Melee depuis quelques années. Ce jeu se joue habituellement avec une manette Gamecube, et bien que j’adore cette manette elle pose des soucis de santé pour ce jeu. Melee nécessite beaucoup d’inputs rapides et répétés qui provoquent des douleurs au mains (certains top players ont même de l’arthrite à même pas 30 ans). Possédant de petites mains, ce sont personnellement les mouvements de rotation du poignet droit qui me sont douloureux (je m’étais déjà blessé ce poignet en faisant du sport non-électronique).

Exemple de mouvement de mains

Le jeu et la console ont plus 20 ans, la communauté est relativement petite, il n’y donc aucune raison que Nintendo propose une autre manette spécialement pour ce jeu. Des contrôleurs alternatifs ont donc été développées par la communauté. Ces développements sont assez récents, donc les produits sont soit de mauvaise qualité, soit très chers, soit avec des temps d’attentes extrêmement longs. Par ailleurs certains membres de la communauté ont développé des contrôleurs Do It Yourself, peu coûteux et réalisables facilement chez soi. Je compte acquérir un Frame1 dans le futur, mais en attendant l’option DIY me convenait parfaitement. C’est l’occasion de me familiariser avec ce type de contrôleur, et de réaliser un petit projet d’électronique.

Le contrôleur que j’ai réalisé suit littéralement ce tutoriel conçu par Crane. Le contrôleur se base principalement sur des boutons de clavier mécaniques pour les entrées, et un Arduino pour la conversions des entrées en sorties équivalentes aux sorties manette. Il fallait aussi une boîte pour contenir tout cela et supporter les boutons, j’ai donc choisi une boîte à pizza pour son coût négligeable et aussi parce que c’est rigolo. (Je sais que vous vous posez la question : la boîte est propre et garantie sans huile qui dégouline. Le restaurateur du coin a gracieusement accepter de me donner une seconde boîte propre quand je lui ai acheté une pizza)

Réalisation

J’ai commencé par adapter la disposition des boutons à mes mains. Cette étape m’a aussi permis de placer les boutons par rapport à l’illustration de la boîte.

Puis le découpage :

Les boutons utilisés sont des Gateron Clear, plus durables que les boutons ronds arcade Sanwa (de l’ordre de 50 millions de pressions contre 1 million pour les Sanwa), avec des caps “DSA” (plats et carrés).

J’ai ensuite placé les boutons, renforcé l’intérieur avec du scotch et avec des cylindres de carton, pour éviter que la partie supérieur de la boîte ne plie sous la pression de boutons.

Vient ensuite le moment de la soudure ! Je craignais un peu cette étape, n’ayant jamais vraiment soudé quelque chose, si ce n’est très succinctement pendant les cours de technologie au collège, il y a très longtemps.

J’ai utilisé des fils monobrins rigides, me permettant une bonne planification et gestion du câblage.

J’ai d’abord soudé une ligne de masse, connectant ensemble une des deux broches de chaque bouton.

Il faut ensuite connecter chaque bouton à l’Arduino. J’ai utilisé un Arduino Leonardo car j’avais besoin de 20 entrée, une par bouton. Certains autres modèles d’Arduinos possèdent moins d’entrées. À noter aussi que la plupart des Arduinos Leonardo sont vendus avec des en-têtes pour faciliter la connexion grâces à des câbles Dupont. Néanmoins ces connexions sont plus fragiles que de souder directement sur l’Arduino, j’ai donc préalablement retiré ces en-têtes.

J’ai ensuite soudé le fil de chaque bouton à une entrée de l’Arduino. Le support de soudage (“troisième main”) était indispensable pour maintenir le montage dans une configuration qui facilite la soudure. Cela a été le travail le plus précis, car il fallait à tout prix éviter de souder deux jonctions ensemble. J’ai dû faire preuve de patiente (près de trois heures pour une vingtaine de connexions), mais je m’en suis tiré sans encombre, si ce n’est une brûlure mineure.

Avant d’aller plus loin, j’ai testé ces soudures. J’ai programmé l’Arduino pour envoyer une tension à intervalle régulier dans chaque fil, que j’ai mesurée grâce à un multimètre. J’ai été agréablement surpris par la facilité et la rapidité à programmer un Arduino, ayant pour ma part de bonnes connaissances en programmation.

L’ultime travail de soudure est de connecter l’autre extrémité des fils de signal aux boutons. Cela est bien plus aisé que les soudures sur l’Arduino, car elles nécessitent beaucoup moins de précision. Pour finir, un câble micro-USB vers USB réalisera la connexion vers l’ordinateur.

Une fois la fabrication terminée, j’ai téléversé sur l’Arduino le programme du tutoriel, qui consiste à convertir les pressions des boutons en sortie “manette”. Cette conversion n’est pas directe, notamment pour les sorties de type analogique (les directions du stick par exemple).

Pour s’assurer que tous les boutons fonctionnent, il est possible dans Windows d’afficher les pressions, grâce à l’utilitaire dans Paramètres > Périphériques et Imprimantes > Clic droit sur [notre arduino] > Paramètres de contrôleurs de jeu > Propriétés.

L’intégration à l’émulateur PC est directe, mon contrôleur étant équivalent à ce niveau aux solutions commerciales citées plus haut.

Le Jeu

J’ai évité cette question jusqu’ici, mais comment jouer à Melee avec ce type de contrôleur ? Quel décision ont mené à ce type de design ? À première vue, Il diffère grandement d’une manette, notamment par l’absence de stick.

Melee est un jeu que l’on pourrait qualifier d’analogique, toutes les directions du stick sont prises en compte, ou pour être précis, elles sont échantillonnées très précisément (352 valeurs possibles). Cela différencie Melee des jeux de combat classique comme Street Fighter, où seulement 8 directions différentes sont possibles. Dans Melee, il est aussi possible de réaliser des actions différentes si l’on incline le stick à fond ou à moitié de sa course. Par exemple, si l’on incline le stick totalement, notre personnage va courir, si l’on incline le stick qu’à moitié, il va marcher.

Différents angles possibles dans Melee

Sur un contrôleur qui ne possède que des boutons, donc seulement des entrées binaires (enfoncé ou non), il est plus complexe de réaliser chacun de ces angles et inclinaisons. La solution retenue est d’utiliser des boutons spécifiques (“modificateurs”) qui modifient l’angle et l’inclinaison défini par les boutons de direction Haut/Bas/Droite/Gauche. 48 angles sont disponibles avec cette méthode, et suffisent à une bonne expérience de jeu.

Différents angles possibles (gif propriété de Frame1)

Ce type de contrôles est relativement difficile à prendre en main. Néanmoins, une fois la phase d’apprentissage passée, elle permet une exécution plus fiable car il est beaucoup plus facile de réaliser avec régularité une pression d’une combinaison de boutons définis, que de réaliser un angle de stick précis. D’autres actions de jeu sont aussi facilités, notamment grâce au “pianotage” des boutons (répéter plusieurs fois la séquence gauche -> droite par exemple). Il est aussi plus facile avec des boutons d’effectuer des actions à un moment précis. Le temps d’adaptation observé chez des joueurs réguliers (plusieurs heures par jour) ayant déjà une connaissance experte du jeu est de 3 semaines au minimum.

 

Vidéo d’illustration de l’action de modificateurs (Course/marche, attaques inclinés ou non, longueurs de wavedash)
Les actions en équivalent manette sont affichées en haut à gauche, notez les différentes inclinaisons du sticks résultantes

Futurs travaux

À l’époque du Covid, la scène compétitive de Melee joue exclusivement en ligne sur émulateur PC. Néanmoins en temps normal les tournois se sont toujours déroulés hors-ligne sur console (Gamecube ou Wii). Ma boîte à pizza ne fonctionne que sur PC. Pour la connecter à une console, quelques travaux supplémentaires sont nécessaires, à savoir l’intégration d’un décaleur de tension et d’un câble de manette Gamecube en sortie.

 

Ressources et remerciements

Buon Appetito !