Mit GameInput stellt Microsoft eine Eingabe-API der nächsten Generation bereit, die als im Game Development Kit (GDK) dokumentierte Schnittstelle die bisherigen Lösungen XInput und DirectInput ablöst. Die API fasst Eingabegeräte aller Art hinter einer einzigen, konsistenten Schnittstelle zusammen und gilt laut Dokumentation als funktionale Obermenge sämtlicher älterer Eingabe-APIs. Dazu zählen neben XInput und DirectInput auch Raw Input, das Human Interface Device (HID) sowie die WinRT-APIs.
GameInput ist auf der Xbox über das GDK verfügbar und auf dem PC über das NuGet-Paket Microsoft.GameInput. Unterstützt werden ältere Windows-Versionen zurück bis Windows 10 19H1, also das Mai-2019-Update. Für Titel, die mit dem GDK für Xbox One entwickelt werden, ist GameInput nach Angaben der Dokumentation die einzige verfügbare Eingabe-API. Microsoft empfiehlt den Einsatz von GameInput für sämtlichen neuen Code unabhängig von der Zielplattform. Das GDK selbst rückt zuletzt verstärkt in den Mittelpunkt, etwa mit den GDK-Plug-ins für Unreal-Workflows.
Einheitliches Modell für Gamepads, Tastatur und Maus
Die API legt Eingaben von Tastaturen, Mäusen, Gamepads und weiteren Controllern über ein einheitliches Eingabemodell offen, das auf eine gemeinsame Zeitbasis synchronisiert ist. Der Code zur Verarbeitung dieser Geräte ist dadurch nahezu identisch und nutzt dieselben Funktionen mit unterschiedlichen Filtern. Laut Microsoft lässt sich auf diese Weise die Unterstützung zusätzlicher Eingabegeräte ergänzen, ohne den Eingabe-Code grundlegend umzubauen.
Der Funktionsumfang reicht vom einfachen Gamepad-Status mit festem Format bis zum detaillierten Low-Level-Zugriff auf Rohdaten der Geräte. Eingaben lassen sich per Polling oder ereignisgesteuert über Callbacks abrufen. Haptik, Sensoren und Force Feedback werden vollständig unterstützt. Entwickler können zudem eigene Geräte-SDKs von Drittanbietern auf GameInput aufsetzen, um auf herstellerspezifische Funktionen zuzugreifen.
Performance, Thread-Sicherheit und Versionierung
GameInput setzt direkt auf den Hardware-Schnittstellen von Windows auf, um die Eingabelatenz und den Ressourcenverbrauch gering zu halten. Nahezu alle API-Funktionen arbeiten laut Dokumentation lock-free mit festen Performance-Zusagen und bleiben dabei vollständig thread-sicher. Damit eignen sie sich für den Aufruf aus zeitkritischen Kontexten wie Render-Threads. Die größte Ausnahme bildet der Aufruf GameInputCreate. Fortgeschrittene Anwendungen können die interne asynchrone Arbeitsverteilung direkt steuern und festlegen, welcher Thread die Arbeit übernimmt und wie häufig.
Zur Wartbarkeit unterstützen neue Versionen der GameInput-Laufzeit alle API-Versionen von v.0 bis zur aktuellen. Spiele geben an, mit welcher API-Version sie entwickelt wurden, und funktionieren dadurch auch dann unverändert weiter, wenn neue GameInput-Versionen mit zusätzlichen Funktionen erscheinen. Ältere Titel profitieren laut Microsoft zugleich von Verbesserungen der Windows-Plattform, etwa der Unterstützung neu eingeführter Hardware-Geräte und plattformseitiger Korrekturen. Wie tief sich solche Microsoft-Werkzeuge inzwischen in PC-Engines integrieren lassen, zeigte zuvor auch das Godot-Beispiel für die Xbox-Entwicklung auf dem PC.