GameMaker Studio 2 dispose d'un certain nombre de fonctions dédiées qui peuvent être utilisées pour détecter les contrôles analogiques et numériques à partir de plusieurs pads de jeu connectés. Ces fonctions fonctionnent de la même manière que les entrées de l' appareil, en ce sens que vous pouvez détecter jusqu'à quatre pads de jeu XInput connectés (et jusqu'à 8 manettes de jeu DirectInput) et gérer les entrées de chacun en utilisant les mêmes fonctions. Notez que lorsqu'une manette est branchée sur votre appareil (ou qu'elle est retirée), un événement système asynchrone est déclenché, dans lequel vous pouvez gérer la situation en utilisant les fonctions appropriées.
Les gamepad "slots" sont indexés à partir de 0 avec les slots 0 - 3 inclus étant uniquement pour les gamepads Xinput, à savoir: les contrôleurs Xbox360 et compatibles. Cependant, vous pouvez également vérifier les slots 4 - 11 inclus pour les gamepads DirectInput, ce qui signifie que vous pouvez détecter de nombreux autres modèles de contrôleurs lorsqu'ils sont connectés via ces slots. Il convient de noter que lorsque vous utilisez les manettes de jeu DirectInput, les constantes indiquées ci-dessous peuvent ne pas correspondre exactement aux boutons que vous attendez lorsqu'elles sont enfoncées, à cause de la manière fragmentée et non standardisée de l'API. Il est recommandé d'avoir une sorte d'écran de configuration de la manette de jeu dans vos jeux où les gens peuvent redéfinir les boutons de la manette en fonction de l'entrée de n'importe quel appareil connecté pour atténuer les problèmes. Notez également que l'interface d'entrée directe est exécutée en mode coopératif, ce qui signifie que votre jeu n'a d'accès que lorsqu'il est l'application de premier plan, ce qui provoque la perte des contrôleurs d'entrée directe si le jeu utilise le focus et le trouve ensuite à nouveau quand il revient sur le point (cela peut être détecté dans l'événement système et traité).
Lorsque vous travaillez avec les fonctions de la manette de jeu, il y a un certain nombre de constantes intégrées qui devraient être utilisées pour obtenir / définir les boutons et l'axe du bâton etc...:
| Constant | La description |
|---|---|
| gp_face1 | Bouton supérieur 1 (ceci correspond au "A" sur un contrôleur Xbox 360 et à la croix sur un contrôleur PS) |
| gp_face2 | Bouton supérieur 2 (ceci correspond au "B" sur un contrôleur Xbox 360 et au cercle sur un contrôleur PS) |
| gp_face3 | Bouton supérieur 3 (ceci correspond au "X" sur un contrôleur Xbox 360 et au carré sur un contrôleur PS) |
| gp_face4 | Bouton supérieur 4 (ceci correspond au "Y" sur un contrôleur Xbox 360 et au triangle sur un contrôleur PS) |
| gp_shoulderl | Bouton de l'épaule gauche |
| gp_shoulderlb | Gâchette d'épaule gauche |
| gp_shoulderr | Bouton de l'épaule droite |
| gp_shoulderrb | Gâchette d'épaule droite |
| gp_select | Le bouton de sélection (il s'agit d'une pression sur un contrôleur PS4) |
| gp_start | Le bouton de démarrage (c'est le bouton "options" sur un contrôleur PS4) |
| gp_stickl | Le stick gauche appuyé (comme un bouton) |
| gp_stickr | Le stick droit pressé (comme un bouton) |
| gp_padu | D-pad up |
| gp_padd | D-pad vers le bas |
| gp_padl | D-pad à gauche |
| gp_padr | D-pad droit |
| gp_axislh | Bâton gauche axe horizontal (analogique) |
| gp_axislv | Axe vertical gauche (analogique) |
| gp_axisrh | Axe horizontal du stick droit (analogique) |
| gp_axisrv | Axe vertical du stick droit (analogique) |
Pour mieux comprendre exactement quelle partie du contrôleur chaque constante représente, vous pouvez vous référer à l'image suivante d'une manette standard: 
Vous trouverez ci-dessous une liste de toutes les fonctions du gamepad:
- gamepad_is_supported
- gamepad_get_device_count
- gamepad_is_connected
- gamepad_get_description
- gamepad_get_button_threshold
- gamepad_set_button_threshold
- gamepad_axis_count
- gamepad_axis_value
- gamepad_button_check
- gamepad_button_check_pressed
- gamepad_button_check_released
- gamepad_button_count
- gamepad_button_value
- gamepad_set_vibration
- gamepad_set_axis_deadzone
- gamepad_set_colour
La liste suivante montre la compatibilité actuelle entre les plates-formes (notez que cela va changer avec les futures mises à jour):
sudo apt-get install jstest-gtk
sudo apt-get install joystick.
Cela va installer le support de l'interface graphique pour le joystick / gamepad ainsi que l'API joystick / gamepad elle-même.
Idéalement, sur toutes les plates-formes cibles, vous souhaitez énumérer une liste des "slots" de gamepad disponibles, puis les vérifier pour voir si des périphériques sont détectés, quelque chose comme ceci:
var maxpads = gamepad_get_device_count();for
(var i = 0; i < maxpads; i++)
{
if (gamepad_is_connected(i))
{
// do stuff with
pad "i"
}
}