J'avais déjà mis à disposition une librairie pour prendre en charge les contrôleurs de jeux (gamepad et autres) sur Windows, Mac et iOS dans la librairie "Delphi Game Engine". Des composants plus faciles à utiliser que les classes et API de base ont été ajoutés : TGamepad et TGamepadManager.
Le composant TGamepad donne accès à un contrôleur de jeu. Des événements sont appelés à chaque action de l'utilisateur (en général très joueur).
Vous y accédez de façon classique depuis le concepteur de fiche dans un projet FireMonkey mais aussi dans un projet VCL. Du côté du code vous avez également l'état actuel des boutons, des axes et du pad de direction à tester quand vous en avez besoin.
Le composant TGamepadManager est une vue sur l'intégralité des contrôleurs de jeux connectés. Il reçoit les connexions et déconnexions, les changements d'état des axes, du pad de direction et des axes (joysticks, variateurs ou gachettes).
Si vous préférez coder sans passer par les composants vous avez la classe TGamepadDevicesManager (auto créée en singleton) pour accéder à la boucle d'interrogation des périphériques et des instances de TGamepadDevice pour accéder aux données de chaque contrôleur de jeu. Les composants sont codés par dessus.
Chaque contrôleur de jeu est identifié par un ID que vous pouvez lui attribuer en dur ou en demandant à l'utilisateur de cliquer sur un bouton spécifique au démarrage du programme ou avant de jouer. Pratique si vous faites des jeux pour plusieurs joueurs à la fois sur le même poste.
Des exemples de code sont disponibles dans la librairie Delphi Game Engine et bientôt sur les Delphi FMX Game Snippets.
Ce développement a été fait sur Twitch. Les rediffusions seront publiées sur Serial Streameur prochainement si vous voulez comprendre la logique de leur création.
Le tout a été testé lors du week-end de la Kenney Jam 2024 avec la création du jeu vidéo Ploumtris. C'est opérationnel et désormais à votre disposition.
Grégory Bersegeay a déjà intégré les composants à son jeu vidéo Nagory. Serez-vous les prochains ?
Dans les tuyaux j'ai toujours la prise en charge des contrôleurs de jeu sur Android et Linux à ajouter à la librairie. Les contrôleurs virtuels proposés par Apple sur iOS sont également prévus. Le tout sera transparent pour les logiciels utilisant déjà cette librairie et ces composants: il vous suffira de recompiler vos projets.