En tant que joueur passionné de Donjons & Dragons et passionné de technologie, j'ai décidé d'améliorer ma configuration de jeu en créant une table basse personnalisée dotée d'un écran intégré. Ce tableau affiche des cartes, des jetons, joue des effets sonores et montre même des illustrations pour les joueurs. Tout cela passe par une plate-forme puissante appelée Foundry VTT, similaire à Roll20 mais avec un meilleur modèle de tarification et un système de modules ouverts étendu. C'est parfait pour personnaliser votre expérience sur table.
En explorant les moyens d'améliorer ma configuration, j'ai remarqué des modules qui permettaient d'intégrer les stream decks à Foundry. Ces outils offrent un accès rapide aux macros et aux commandes, rendant le jeu encore plus fluide. Cependant, après avoir vu le prix d'un stream deck (200 euros !), je n'étais pas prêt à faire cet investissement.
Puis je me suis souvenu de quelque chose : il y a quelques années, j'ai construit une machine d'arcade. Même si la machine a été démontée depuis longtemps, j'avais toujours les boutons et les cartes contrôleurs du projet. Avec un peu de créativité et une imprimante 3D, j'ai réalisé mon propre "stream deck" personnalisé en imprimant une petite boîte avec des emplacements pour les boutons.
Maintenant, j'avais le matériel prêt, mais l'intégrer à Foundry VTT représentait un défi. Je voulais utiliser l'API Gamepad dans le navigateur pour enregistrer mes pressions sur les boutons, mais j'ai été choqué par le manque de flexibilité dans la façon dont l'API gérait les entrées. L'approche par défaut consistait à utiliser une boucle while (true) pour interroger constamment l'état enfoncé de chaque bouton. Bien que cela fonctionne bien dans une boucle de jeu utilisant requestAnimationFrame, pour mes besoins, cela me semblait inefficace et franchement stupide. Je voulais simplement répondre aux pressions sur les boutons avec les écouteurs d'événements, pas vérifier constamment l'état de la manette de jeu dans une boucle sans fin.
Cela m'a amené à créer le SDK Gamepad que je partage aujourd'hui.
Avec ce SDK, j'ai simplifié le processus en permettant aux développeurs d'ajouter directement des écouteurs d'événements pour les pressions sur les boutons, les relâchements et les changements d'axe - aucune interrogation n'est requise. Il inclut également la prise en charge de la connexion et de la déconnexion des manettes de jeu, ce qui facilite l'intégration à des plates-formes telles que Foundry VTT ou à tout projet basé sur un navigateur.
En utilisant ce SDK, n'importe qui peut connecter son contrôleur personnalisé à une application basée sur un navigateur sans avoir à vérifier manuellement l'état de la manette de jeu. Pour ma table D&D, cela signifie désormais que je peux utiliser de manière transparente mon stream deck de fortune pour contrôler les macros, les actions et bien plus encore dans le jeu, tout cela grâce à quelques boutons et un peu de code.
Si vous êtes intéressé, consultez le SDK et n'hésitez pas à nous contacter si vous cherchez à résoudre des problèmes similaires !
Le Github : https://github.com/RamonGebben/Gamepad-SDK
NPM : https://www.npmjs.com/package/@pindakaasman/gamepad-sdk
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!