なぜタイトルの入力コードを GameInput でサポートすべきなのですか?
GameInput は更新可能な入力プラットフォームです。これを使用することで、Windows は市場で入手可能なさまざまな入力デバイスをより適切に抽象化し、プラットフォームの更新を通じて、時間の経過とともにこれらのデバイスのサポートを継続的に改善できます。GameInput を使用すると、タイトルは Windows やハードウェアのリリースを通じて、新しいデバイスで動作するように自動的に更新されます。 さらに、GameInput は、以前は Windows で利用できなかった、インパルストリガーなどの新機能や、触覚やセンサーなどの機能のより優れたサポートへのアクセスを提供します。GameInput を使用することで、タイトルは最小限のコード変更でこれらの機能を活用できます。GameInput はどのプラットフォームをサポートしていますか?
GameInput は次の環境で利用可能です。- XBOX (2510 GDK 以降で V.1+)
- Windows 10 (バージョン 19H1/2019 年 5 月更新以降)
- Windows 11
XBOX と PC で異なるバージョンが必要ですか?
いいえ、同じ GameInput API がすべてのプラットフォームで動作します。2510 GDK 以降、最新の GameInput API は XBOX と PC の両方で利用可能で、同じヘッダーとバイナリが Microsoft.GameInput NuGet パッケージで提供されます。ランタイムは XBOX の GDK に含まれているため、GameInput インストーラーは PC でのみ必要です。GameInput は Unreal Engine のような一般的なエンジンで動作しますか?
はい、動作します。ただし、統合の度合いはエンジンによって異なります。一部のエンジンはエンジン プラグインとしてファースト パーティの GameInput サポートを提供しており、他のエンジンは自身で統合するサンプルまたはネイティブ プラグインに依存します。- Unreal Engine: GameInput サポートは、Unreal Engine 5.4 以降、プラグインのセットとしてエンジンに付属します。Game Input Base はコア機能とインターフェイスを提供し、Game Input (Windows) は Win64 および WinGDK 向けに実装し、XBOX Common Game Input は XBOX One および XBOX Series X|S 向けに実装します。これらのプラグインをプロジェクトで有効にすると、PC とコンソールの両方で入力を GameInput 経由でルーティングできます。詳しくは、Microsoft GDK plug-ins for Unreal Engine を参照してください。
- Godot: XBOX Godot Sample には、GameInput を Godot にバインドする GDExtension が含まれており、GameInput を Godot の
InputおよびInputMapシステムにブリッジする処理も含まれます。これはビルトインのエンジン機能ではなく、プロジェクト向けにビルドして適用するリファレンス統合です。詳しくは、Getting started with Godot を参照してください。 - Unity: 現在、Microsoft GDK パッケージには PC で Unity に GameInput を公開するものはないため、PC 上の Unity ゲームでは通常 Unity Input System 経由で入力を読み取ります。XBOX Series X|S および XBOX One では、Unity 向けの GXDK Input System パッケージが Unity Input System にコンソール固有の機能を追加します。詳しくは、GDK packages for Unity を参照してください。
アプリケーションが GameInput を見つけられません。何を確認すべきですか?
- GameInput ランタイムがターゲットマシンにインストールされていることを確認します。v.1 以降のバージョンでは、Microsoft.GameInput パッケージが必要で、ユーザーは Microsoft.GameInput NuGet パッケージ内の MSI パッケージからインストールできます。パッケージの最新バージョンをインストールするには、管理者コマンドプロンプトから
winget install Microsoft.GameInputを実行することもできます。 - アプリケーションが正しい GameInput ライブラリにリンクされていることを確認します。NuGet パッケージ内の最新バージョンは、プロジェクトがさまざまなエンドポイント/プラットフォーム全体で正しい GameInput バイナリを使用することを保証します。
- お使いの Windows バージョンが GameInput をサポートしていることを確認します (19H1 以降)。
XInput から GameInput への移植はどの程度困難ですか?
多くの XInput 関数は GameInput の同等のものに 1 対 1 でマッピングされ、一方から他方への移植作業を簡素化します。主な違いは、GameInput がフラットな C 関数の代わりに C++ インターフェイスを使用することです。GameInput は、XBOX One コントローラーやその他の同様のデバイスに搭載されているインパルストリガーへのアクセスなど、XInput では利用できない追加機能も提供します。DirectInput または Raw Input からどのように移植しますか?
GameInput は、GameInputDeviceInfo 構造体の一部としてインターフェイスパスを提供します。このフィールドは DirectInput API で使用されるものと同じであり、アプリケーションはデバイス列挙と情報取得のために既存の DirectInput コードを引き続き使用しながら、入力読み取りやその他の機能を GameInput に移行できます。詳細については、GameInput 移植ガイド を参照してください。GameInput サービスは何を行いますか?
GameInput サービスは、システム上の入力デバイスへのアクセスを調停し、他のアプリケーションに有用な互換性と抽象化レイヤーを提供する責任を負います。とりわけ、GameInput サービスは次のことを行います。- 入力のフィルタリングと同期の処理
- プラットフォームの更新とデバイスドライバーの改善の配信
- GameInput クライアントインスタンス間での入力デバイスへのアクセスの仲介
レンダースレッドから GameInput を呼び出すことはできますか?
はい、ほとんどすべての GameInput 関数は、レンダースレッドなどの時間的にセンシティブなコンテキストで安全です。主な例外はGameInputCreate で、アプリケーションの初期化中に呼び出す必要があります。
