> ## 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.

# GameInput のサイドロード

> GameInput 再配布可能パッケージをインストールする代わりに、ゲームの隣に GameInput ランタイムを配置する方法について説明します。

GameInput 4.0 以降、GameInput ランタイムである `GameInputRedist.dll` を、ゲームの実行可能ファイルと同じディレクトリに配置できます。これを*サイドロード*と呼びます。サイドロードされたランタイムを使用すると、GameInput 再配布可能パッケージがインストールされていないシステムや、古いバージョンがインストールされているシステムでも、ゲームのビルドとテストに使用した GameInput の機能と修正をゲームで使用できます。このモデルは、DirectX Agility SDK で使用されているモデルに似ています。

サイドロードは、PC と XBOX 本体でサポートされています。XBOX では、サイドロードには October 2025 GDK (2510) 以降が必要です。サイドロードにより、October 2026 GDK より前の API v4 など、GDK ランタイムがサポートするよりも新しい API バージョンをゲームで使用できます。詳細については、[XBOX 本体での GameInput](https://docs.xbox.com/ja-jp/build/core-features/common/input/overviews/input-xbox.md) を参照してください。

> [!NOTE]
>
> PC で GameInput を配置する方法としては、引き続き GameInput 再配布可能パッケージのインストールが推奨されます。インストールされたランタイムは、GameInput のすべての機能をサポートし、すべてのアプリケーションで共有され、ゲームとは独立して更新されます。配布チャネルがインストーラーの実行をサポートしていない場合や、開発マシンやテスト マシンなど、再配布可能パッケージのインストールが現実的でない場合にサイドロードを使用します。

## サイドロード可能なランタイムの入手

[Microsoft.GameInput](https://www.nuget.org/packages/Microsoft.GameInput) NuGet パッケージには、次の場所にサイドロード可能なランタイムが含まれています。

| パッケージ内のパス | 内容 |
| - | - |
| `native\bin\x64\` | 64 ビット PC ゲーム用の `GameInputRedist.dll` と `GameInputRawInputProxy.exe` |
| `native\bin\x86\` | 32 ビット PC ゲーム用の `GameInputRedist.dll` と `GameInputRawInputProxy.exe` |
| `native\bin\arm64\` | Arm64 PC ゲーム用の `GameInputRedist.dll` と `GameInputRawInputProxy.exe` |
| `native\bin\xbox\` | XBOX 本体用の `GameInputRedist.dll` |

NuGet パッケージは、これらのファイルをビルド出力にコピーしません。ターゲット プラットフォームとアーキテクチャのファイルをゲームの実行可能ファイルの隣にコピーするステップを、ビルドまたはパッケージ化のプロセスに追加してください。

PC では、`GameInputRawInputProxy.exe` も `GameInputRedist.dll` と同じディレクトリに配置します。サイドロードされたランタイムは、このヘルパー プロセスを使用してキーボードとマウスの入力を受け取ります。サイドロードされたランタイムは、その隣にあるプロキシのみを使用し、インストールされた再配布可能パッケージのプロキシは使用しません。プロキシがない場合、ランタイムはフォールバックして、ゲームのプロセス内でキーボードとマウスの入力を受け取ります。

> [!WARNING]
>
> PC 用と XBOX 用のランタイムのファイル名は同じです。ターゲット プラットフォームに一致するコピーを配置してください。間違ったコピーが配置されると、`GameInputCreate` は `HRESULT_FROM_WIN32(ERROR_EXE_MACHINE_TYPE_MISMATCH)` (0x800700D8) で失敗します。

## ランタイムの選択方法

サイドロードされたランタイムを使用するためにコードを変更する必要はありません。NuGet パッケージの `gameinput.lib` とリンクし、通常どおり [GameInputCreate](https://docs.xbox.com/ja-jp/reference/input/gameinput/functions/gameinputcreate.md) を呼び出します。`GameInputCreate` が初めて呼び出されると、`gameinput.lib` のローダーは次の場所で GameInput ランタイムを検索します。

1. システム ディレクトリ内の受信トレイ ランタイム `GameInput.dll`。
2. システム ディレクトリ、または GameInput 再配布可能パッケージがインストールされているディレクトリ内の、インストールされた再配布可能ランタイム `GameInputRedist.dll`。
3. ゲームの実行可能ファイルのディレクトリ内の、サイドロードされたランタイム `GameInputRedist.dll`。

ローダーは、ファイル バージョンが最も高いランタイムを使用します。2 つのランタイムのバージョンが同じ場合は、インストールされた再配布可能パッケージよりもサイドロードされたランタイムが優先され、受信トレイ ランタイムよりもインストールされた再配布可能パッケージが優先されます。

PC では、サイドロードされたランタイムが読み込まれ、より新しい GameInput ランタイムがシステムにインストールされている場合、サイドロードされたランタイムはすべての呼び出しを新しいインストール済みランタイムに転送します。その結果、サイドロードされたランタイムは最小バージョンとして機能します。ゲームは常に、出荷したバージョンか、より新しいインストール済みバージョンのいずれかを使用します。ゲームは引き続きサイドロードとして扱われ、次のセクションの制限事項が引き続き適用されます。

## 制限事項

PC では、入力フォーカスを管理する GameInput サービスなど、一部の GameInput 機能は、GameInput 再配布可能パッケージがインストールされている場合にのみ存在するコンポーネントに依存します。PC でゲームがサイドロードされたランタイムを使用する場合、次の制限事項が適用されます。これらの制限事項は XBOX 本体には適用されません。

* `true` を指定した [IGameInput::EnableBackgroundInput](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinput/methods/igameinput_enablebackgroundinput.md) の呼び出しは効果がありません。バックグラウンド入力を有効にするとシステム ボタンも要求されますが、サイドロードされたランタイムはシステム ボタンを要求できないためです。
* 入力フォーカスは GameInput サービスによって管理されないため、GameInput は、ゲームがフォーカスされているかどうかに基づいて入力を一貫してフィルター処理しません。デバイスによっては、ゲームがフォーカスされていない間に入力を受け取る場合と受け取らない場合があります。ゲームが一貫したフォーカス動作に依存している場合は、入力に応じて動作する前にフォーカスされているかどうかを確認するか、GameInput 再配布可能パッケージをインストールしてください。
* API バージョン v1 から v3 では、`IGameInput::SetFocusPolicy` は `GameInputDefaultFocusPolicy` と `GameInputEnableBackgroundInput` のみを受け付けます。フラグの組み合わせを含め、その他のフォーカス ポリシーは無視されます。
* API バージョン v1 から v3 では、`IGameInput::RegisterSystemButtonCallback` は `GAMEINPUT_E_FEATURE_REQUIRES_INSTALL` (0x838AD02B) で失敗します。API バージョン v4 では、システム ボタンは `GameInputKindSystemButton` 種類の読み取りで報告され、これはサイドロードされたランタイムで動作します。詳細については、[IGameInputReading::GetSystemButtonState](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getsystembuttonstate.md) を参照してください。

## 推奨事項

* GameInput ヘッダー、`gameinput.lib`、およびサイドロードされたランタイムには、同じバージョンの NuGet パッケージを使用します。
* GameInput 再配布可能パッケージがインストールされている場合とインストールされていない場合の両方でゲームをテストします。
* ゲームで PC 上のバックグラウンド入力または一貫したフォーカス動作が必要な場合は、ランタイムをサイドロードする代わりに、またはそれに加えて、GameInput 再配布可能パッケージをインストールします。詳細については、[NuGet を使用した PC およびコンソール向け GameInput](https://docs.xbox.com/ja-jp/build/core-features/common/input/overviews/input-nuget.md) を参照してください。

## 関連項目

[NuGet を使用した PC およびコンソール向け GameInput](https://docs.xbox.com/ja-jp/build/core-features/common/input/overviews/input-nuget.md)\
[XBOX 本体での GameInput](https://docs.xbox.com/ja-jp/build/core-features/common/input/overviews/input-xbox.md)\
[GameInput API のバージョン管理](https://docs.xbox.com/ja-jp/build/core-features/common/input/overviews/input-versioning.md)\
[GameInput の基礎](https://docs.xbox.com/ja-jp/build/core-features/common/input/overviews/input-fundamentals.md)\
[GameInput API リファレンス](https://docs.xbox.com/ja-jp/reference/input/gameinput/gameinput_members.md)


## Related topics

- [XBOX 本体での GameInput](https://docs.xbox.com/ja-jp/build/core-features/common/input/overviews/input-xbox.md)
- [IGameInput::EnableBackgroundInput](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinput/methods/igameinput_enablebackgroundinput.md)
- [GameInput API メンバー](https://docs.xbox.com/ja-jp/reference/input/gameinput/gameinput_members.md)
- [NuGet を使用した PC およびコンソール向け GameInput](https://docs.xbox.com/ja-jp/build/core-features/common/input/overviews/input-nuget.md)
- [GameInput API のバージョン管理](https://docs.xbox.com/ja-jp/build/core-features/common/input/overviews/input-versioning.md)
