> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Chargement indépendant de GameInput

> Décrit comment déployer le runtime GameInput à côté de votre jeu au lieu d'installer le composant redistribuable GameInput.

À partir de GameInput 4.0, vous pouvez déployer le runtime GameInput, `GameInputRedist.dll`, dans le même répertoire que l'exécutable de votre jeu. On parle alors de *chargement indépendant* (sideloading). Un runtime chargé de manière indépendante permet à votre jeu d'utiliser les fonctionnalités et correctifs GameInput avec lesquels il a été généré et testé, même sur un système où le composant redistribuable GameInput n'est pas installé ou dont une version antérieure est installée. Ce modèle est similaire à celui utilisé par le SDK DirectX Agility.

Le chargement indépendant est pris en charge sur PC et sur les consoles XBOX. Sur XBOX, le chargement indépendant nécessite le GDK d'octobre 2025 (2510) ou une version ultérieure, et il permet à votre jeu d'utiliser une version d'API plus récente que celle prise en charge par le runtime du GDK, par exemple l'API v4 avant le GDK d'octobre 2026. Pour plus d'informations, consultez [GameInput sur les consoles XBOX](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-xbox.md).

> [!NOTE]
>
> L'installation du composant redistribuable GameInput reste la méthode privilégiée pour déployer GameInput sur PC. Un runtime installé prend en charge toutes les fonctionnalités de GameInput, est partagé par toutes les applications et est mis à jour indépendamment de votre jeu. Utilisez le chargement indépendant lorsque l'installation du composant redistribuable n'est pas pratique, par exemple lorsque votre canal de distribution ne prend pas en charge l'exécution de programmes d'installation, ou sur les ordinateurs de développement et de test.

## Obtention du runtime pouvant être chargé de manière indépendante

Le package NuGet [Microsoft.GameInput](https://www.nuget.org/packages/Microsoft.GameInput) contient le runtime pouvant être chargé de manière indépendante aux emplacements suivants.

| Chemin dans le package | Contenu |
| - | - |
| `native\bin\x64\` | `GameInputRedist.dll` et `GameInputRawInputProxy.exe` pour les jeux PC 64 bits |
| `native\bin\x86\` | `GameInputRedist.dll` et `GameInputRawInputProxy.exe` pour les jeux PC 32 bits |
| `native\bin\arm64\` | `GameInputRedist.dll` et `GameInputRawInputProxy.exe` pour les jeux PC Arm64 |
| `native\bin\xbox\` | `GameInputRedist.dll` pour les consoles XBOX |

Le package NuGet ne copie pas ces fichiers dans la sortie de votre build. Ajoutez à votre processus de génération ou d'empaquetage une étape qui copie les fichiers correspondant à votre plateforme et à votre architecture cibles à côté de l'exécutable de votre jeu.

Sur PC, déployez également `GameInputRawInputProxy.exe` dans le même répertoire que `GameInputRedist.dll`. Le runtime chargé de manière indépendante utilise ce processus auxiliaire pour recevoir les entrées du clavier et de la souris. Un runtime chargé de manière indépendante utilise uniquement le proxy situé à côté de lui, jamais celui d'un composant redistribuable installé. Si le proxy est absent, le runtime reçoit les entrées du clavier et de la souris dans le processus de votre jeu.

> [!WARNING]
>
> Les runtimes PC et XBOX portent le même nom de fichier. Veillez à déployer la copie qui correspond à votre plateforme cible. Si la mauvaise copie est déployée, `GameInputCreate` échoue avec `HRESULT_FROM_WIN32(ERROR_EXE_MACHINE_TYPE_MISMATCH)` (0x800700D8).

## Sélection du runtime

Vous n'avez pas besoin de modifier votre code pour utiliser un runtime chargé de manière indépendante. Liez avec `gameinput.lib` à partir du package NuGet et appelez [GameInputCreate](https://docs.xbox.com/fr/reference/input/gameinput/functions/gameinputcreate.md) comme d'habitude. Lors du premier appel à `GameInputCreate`, le chargeur de `gameinput.lib` recherche le runtime GameInput aux emplacements suivants :

1. Le runtime intégré à Windows, `GameInput.dll`, dans le répertoire système.
2. Le runtime du composant redistribuable installé, `GameInputRedist.dll`, dans le répertoire système ou dans le répertoire où le composant redistribuable GameInput est installé.
3. Le runtime chargé de manière indépendante, `GameInputRedist.dll`, dans le répertoire de l'exécutable du jeu.

Le chargeur utilise le runtime dont la version de fichier est la plus élevée. Si deux runtimes ont la même version, le runtime chargé de manière indépendante est préféré au composant redistribuable installé, et le composant redistribuable installé est préféré au runtime intégré à Windows.

Sur PC, lorsqu'un runtime chargé de manière indépendante est chargé et qu'un runtime GameInput plus récent est installé sur le système, le runtime chargé de manière indépendante transfère tous les appels au runtime installé plus récent. Le runtime chargé de manière indépendante sert donc de version minimale : votre jeu utilise toujours soit la version que vous avez livrée, soit une version installée plus récente. Le jeu est néanmoins toujours considéré comme chargé de manière indépendante, et les limitations décrites dans la section suivante continuent de s'appliquer.

## Limitations

Sur PC, certaines fonctionnalités de GameInput dépendent de composants qui ne sont présents que lorsque le composant redistribuable GameInput est installé, comme le service GameInput qui gère le focus d'entrée. Lorsque votre jeu utilise un runtime chargé de manière indépendante sur PC, les limitations suivantes s'appliquent. Ces limitations ne s'appliquent pas aux consoles XBOX.

* Les appels à [IGameInput::EnableBackgroundInput](https://docs.xbox.com/fr/reference/input/gameinput/interfaces/igameinput/methods/igameinput_enablebackgroundinput.md) avec `true` n'ont aucun effet, car l'activation de l'entrée en arrière-plan revendique également les boutons système, ce qu'un runtime chargé de manière indépendante ne peut pas faire.
* Le focus d'entrée n'est pas géré par le service GameInput ; GameInput ne filtre donc pas systématiquement les entrées selon que votre jeu a le focus ou non. Selon le périphérique, votre jeu peut recevoir ou non des entrées lorsqu'il n'a pas le focus. Si votre jeu dépend d'un comportement de focus cohérent, vérifiez s'il a le focus avant de traiter les entrées, ou installez le composant redistribuable GameInput.
* Dans les versions d'API v1 à v3, `IGameInput::SetFocusPolicy` accepte uniquement `GameInputDefaultFocusPolicy` et `GameInputEnableBackgroundInput`. Les autres stratégies de focus, y compris toute combinaison d'indicateurs, sont ignorées.
* Dans les versions d'API v1 à v3, `IGameInput::RegisterSystemButtonCallback` échoue avec `GAMEINPUT_E_FEATURE_REQUIRES_INSTALL` (0x838AD02B). Dans la version d'API v4, les boutons système sont signalés dans des lectures de type `GameInputKindSystemButton`, qui fonctionnent avec un runtime chargé de manière indépendante. Pour plus d'informations, consultez [IGameInputReading::GetSystemButtonState](https://docs.xbox.com/fr/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getsystembuttonstate.md).

## Recommandations

* Utilisez la même version du package NuGet pour l'en-tête GameInput, `gameinput.lib` et le runtime chargé de manière indépendante.
* Testez votre jeu avec et sans le composant redistribuable GameInput installé.
* Si votre jeu nécessite l'entrée en arrière-plan ou un comportement de focus cohérent sur PC, installez le composant redistribuable GameInput au lieu de charger le runtime de manière indépendante, ou en complément. Pour plus d'informations, consultez [GameInput pour PC et console avec NuGet](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-nuget.md).

## Voir aussi

[GameInput pour PC et console avec NuGet](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-nuget.md)\
[GameInput sur les consoles XBOX](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-xbox.md)\
[Gestion des versions de l'API GameInput](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-versioning.md)\
[Notions fondamentales de GameInput](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-fundamentals.md)\
[Référence de l'API GameInput](https://docs.xbox.com/fr/reference/input/gameinput/gameinput_members.md)


## Related topics

- [Membres de l'API GameInput](https://docs.xbox.com/fr/reference/input/gameinput/gameinput_members.md)
- [GameInput sur les consoles XBOX](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-xbox.md)
- [Gestion des versions de l'API GameInput](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-versioning.md)
- [GameInput pour PC et console avec NuGet](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-nuget.md)
- [Utilisation de plusieurs versions de l'API GameInput dans une même application](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-version-interop.md)
