Steamworks-Dokumentation
Erste Schritte für Entwickler

Übersicht


Mit der Steam-Eingabe-API können Sie ganz leicht volle Unterstützung für Steam-Eingabe-Geräte in Ihrem Spiel aktivieren. Volle Unterstützung definieren wir wie folgt:

  • Ihr Spiel verwendet die richtigen Controller-spezifischen Glyphen, wenn Eingabeaufforderungen im Spiel anzeigt werden.
  • Der Bildschirm des Steam-Eingabe-Konfigurators verwendet anstelle von Tasten Aktionen im Spiel, die der Spieler in Ihrem Spiel ausführt.
  • Sie haben eine offizielle Konfiguration für die von Ihnen unterstützten Controller veröffentlicht.
  • Ihr Spiel schränkt die Möglichkeit des Nutzers, seine Steuerelemente anzupassen, nicht ein. Dies bedeutet eine gleichzeitige und beliebige Kombination aus Maus, Tastatur oder Gamepad.
  • Wenn Ihr Spiel eine Tastatureingabe erfordert (z. B. beim Benennen eines Avatars), verwenden Sie die API, um automatisch die Benutzeroberfläche zur Texteingabe aufzurufen.
  • Ihr Spiel hat keine Launcher, die eine Maus- oder Tastatureingabe erfordern – oder besser: es hat überhaupt keinen Launcher.

Um zu gewährleisten, dass die Benutzer von ihrem Sofa aus ein gutes Spielerlebnis haben, empfehlen wir auch Folgendes:

  • Ihre Benutzeroberfläche sollte aus einer Entfernung von mehreren Metern gut lesbar sein. Unsere Faustregel lautet: Wenn Ihr Spiel mit einer Auflösung von 1920 × 1080 ausgeführt wird, sollten Ihre Schriftarten eine Größe von mindestens 24 Pixel haben.
  • Starten Sie Ihr Spiel standardmäßig im Vollbildmodus, wenn der Nutzer Steams Big-Picture-Modus ausführt (in diesem Fall ist die Umgebungsvariable „SteamTenfoot“ gesetzt).
  • Um noch mehr Pluspunkte zu sammeln, rufen Sie beim ersten Start die Bildschirmauflösung des Benutzers ab und stimmen Sie Ihre Auflösung darauf ab.

Häufige Anwendungsbeispiele

Ich integriere die Steam-Eingabe-API bevor ich mein Spiel veröffentliche


Großartig! Folgen Sie den technischen Anweisungen in Unterstützung für Steam-Eingabe-API implementieren.

Ich integriere die Steam-Eingabe-API neben anderen Eingabebibliotheken


Selbstverständlich können Sie sowohl die konventionelle Gamepad-Eingabe als auch die Steam-Eingabe anbieten. Wenn Sie die Unterstützung für die Steam-Eingabe-API erst nach der Erstveröffentlichung hinzufügen oder Ihre Spiele auf mehreren Plattformen herausbringen, finden Sie sich wahrscheinlich in dieser Situation wieder. Ein paar Dinge sollten Sie dabei beachten:

1. Überdenken Sie Ihre Optionen für analoge Aktionen gut.
Wir werden später noch ausführlicher auf dieses Thema eingehen, aber hier eine kurze Zusammenfassung:
  • Sie sollten immer eine mausähnliche Aktion für präzise Cursor- ode Kamerasteuerung vorsehen. Bei Spielen, die mit einem Joystick oder Twin-Stick gesteuert werden, können mausartige Eingaben ggf. weggelassen werden.
  • Vermeiden Sie nach Möglichkeit die Verwendung der Systemmaus (Option „os_mouse“), sofern es keinen triftigen Grund für deren Verwendung gibt. Es ist ein wichtiger Bestandteil bewährter UX-Praktiken, dass man unterscheiden kann, ob eine Eingabe von einer echten Maus oder einem Controller stammt.
  • Sie sollten sich entweder darauf verlassen, dass der Konfigurator die Empfindlichkeit regelt (d. h. Sie filtern die eingehenden Steam-Eingabe-Daten nicht), oder Sie sollten eine separate Empfindlichkeitsoption für Steam-Eingabe verwenden, die getrennt von der Empfindlichkeit der Systemmaus eingestellt werden kann.

2. Seien Sie mit dem automatischen Zielen für Joysticks konsistent.
Wenn Sie eine automatische Zielhilfe für XInput-Analogsticks verwenden, sollten Sie diese auch auf Steam-Eingabegeräte anwenden, zumindest für traditionelle Controller-Modelle, die über Steam-Eingabe konfiguriert werden. Sie können GetInputTypeForHandle aufrufen, um einzelne Modelltypen von Controllern zu erkennen oder separate Kameraaktionen im Stil von Maus oder Joystick zu implementieren.

3. Verwenden Sie nach Möglichkeit SDL Version 2.0.8 oder neuer.
Wenn Sie SDL (Simple DirectMedia Layer) verwenden, eine der bekanntesten plattformübergreifenden Spielbibliotheken für die Verarbeitung von Eingaben, verwenden Sie bitte die neueste Version oder zumindest Version 2.0.8 oder neuer. Ab dieser Version kann Steam SDL anweisen, Eingaben für Controller, die über Steam-Eingabe konfiguriert wurden, zu ignorieren, wodurch Fehler durch doppelte Eingaben vermieden werden.

4. Planen Sie Xbox-Controller ein.
Wenn Sie die XInput-Unterstützung eines bereits veröffentlichten Titels beibehalten möchten, empfehlen wir, Xbox-Controller standardmäßig im XInput-Pfad zu belassen. Falls Ihr Spiel einen lokalen Mehrspielermodus hat, sollte es Eingaben von beiden Pfaden gleichzeitig annehmen können oder die Steam-Eingabe für alle Controller unterstützen.

Ich möchte, dass meine Spiele ohne Steam-Eingabe-API gut mit Steam-Eingabe funktionieren


Zunächst empfehlen wir Ihnen, Die fünf goldenen Regeln der Eingabe von Zach Burke zu lesen.

Dies ist ein Überblick:

  1. Bildschirmsymbole sollten mit dem Eingabegerät übereinstimmen.
  2. Der Mauszeiger sollte mit dem Eingabegerät übereinstimmen.
  3. Alle Geräte sollten jederzeit und immer funktionieren.
  4. Menüs können mit Steuerkreuz, analogen Sticks und Maus navigiert werden.
  5. Ein Controller ohne Verbindung sollte das Spiel pausieren.

Dies sind gute allgemeine Richtlinien, die Sie befolgen sollten, wann immer es möglich ist. Folgendes möchten wir gerne extra betonen:

Controller- und Mauseingaben sollten gleichzeitig möglich sein.

Bei den meisten Spielen ist die Eingabe per Maus oder Controller möglich, jedoch nicht gleichzeitig. Dies ist die häufigste Ursache für Kompatibilitätsprobleme mit dem Steam-Eingabesystem.

Darüber hinaus empfehlen wir Folgendes:

  1. Stellen Sie eine empfohlene Controllerkonfiguration für alle Controllertypen ein.
    Dadurch muss Steam den Nutzer beim Start nicht dazu auffordern, eine Konfiguration zu wählen. Sie brauchen übrigens nicht sowohl für Xbox 360 als auch für Xbox One Controller eine Konfiguration anzugeben; wenn Sie für einen der beiden Controller eine Konfiguration bereitstellen, funktioniert diese auch für das andere Modell.
  2. Aktivieren Sie Steam-Eingabe für Controllertypen ohne native Unterstützung.
    Wenn Sie für diese Controllertypen keine integrierte Unterstützung haben, sollten Sie die Partnerseite verwenden, um für sie die Steam-Eingabe zu aktivieren. Weitere Informationen finden Sie unten in diesem Abschnitt.
  3. Wenn Sie die gleichzeitige Verwendung von Controller und Maus nicht zulassen …
    … ermöglichen Sie zumindest die Konfigurierung der Totzone, der Beschleunigung und der Empfindlichkeit des analogen Sticks. Die Stick-Emulation für das Trackpad funktioniert durch schnelles Bewegen des virtuellen Sticks und reagiert daher sehr empfindlich auf diese Einstellungen. Für optimale Ergebnisse sollten Sie sehr hohe Empfindlichkeiten, Totzonen, die bis 0 gehen, und eine lineare Beschleunigungskurve zulassen. Die Controllereinstellungen von Schatten des Krieges sind ein gutes Beispiel dafür.
  4. Lassen Sie die Nutzer über das Menü zwischen Xbox- und PS4-Glyphen wählen oder erkennen Sie den Gerätetyp über unsere API.
    Wenn Steam Controllereingaben sendet, werden diese im Spiel als gewöhnliche Eingaben des Xbox-Controllers angezeigt, statt als Eingaben des eigentlichen Geräts. Dies ermöglicht es Spielern Geräte zu verwenden, die normalerweise nicht funktionieren würden, bedeutet jedoch auch, dass die herkömmliche Überprüfung auf USB-Geräte-IDs usw. nicht funktioniert und Sie eine Hilfsfunktion von Steam aufrufen müssen. Hierbei ist zu beachten, dass auch unterstützte Controller im Spiel über Steam-Eingabe angezeigt werden können, entweder weil das Spiel über Steam Remote Play gestreamt wird oder weil der Nutzer die Steam-Eingabe verwendet, um seine Geräte anzupassen.

Weitere Informationen hierzu finden Sie auf der Seite Gamepad-Emulation für die Steam-Eingabe – Bewährte Praktiken.

Texteingabe


Die Texteingabe auf dem Bildschirm gehört nicht direkt zu ISteamInput, sondern befindet sich in ISteamUtils.

Einige kurze Verweise:

Vielleicht helfen diese Ihnen, unabhängig davon, ob Sie Steam-Eingabe in irgendeiner Form verwenden.

Implementierung der Unterstützung für die Steam-Eingabe-API


Der Implementierungsprozess ist unkompliziert und sollte nicht mehr als ein paar Tage dauern. Es gibt vier Schritte:

  1. Erstellen Sie in einem Texteditor eine Spielaktionendatei, die Steam sagt, welche Spielaktionen Ihre Spieler dem Controller zuweisen können.
  2. Verwenden Sie in Steam die Benutzeroberfläche des Steam-Eingabe-Konfigurators, um eine Standardkonfiguration zu erstellen.
  3. Verwenden Sie im Spiel die Steam-Eingabe-API, um Aktionen des Controllers auszulesen und die entsprechenden Glyphen zur Anzeige abzurufen.
  4. Aktualisieren Sie Ihr Spieldepot mit den neuen Binärdateien und veröffentlichen Sie Ihre Konfiguration als die offizielle Konfiguration.

Schritt 1: Spielaktionendatei erstellen


Laden Sie zunächst die Spielaktionendatei herunter. Legen Sie die Datei im Verzeichnis „<Steam-Installationsverzeichnis>\controller_config“ ab (erstellen Sie den Ordner, falls er nicht existiert). Benennen Sie die Datei wie folgt um: „game_actions_X.vdf“, wobei X die Steam-App-ID Ihres Spiels ist. Falls Ihnen die Steam-App-ID Ihres Spiels nicht bekannt ist, können Sie diese auf Ihrer Steam-Partnerseite finden (Anmeldung erforderlich).

Öffnen Sie jetzt die Datei in dem von Ihnen bevorzugten Texteditor. Die Datei liegt in einem standardmäßigen Valve-Format namens KeyValues vor und ist einfach zu lesen. Es könnte auch hilfreich sein, eine unserer Vorlagen für Spielaktionendateien oder die Spielaktionendatei von Portal 2 als Referenz herunterzuladen.

Weitere Details finden Sie hier: Spielaktionendatei.

Dateiformat


Spielaktionendateien enthalten einen Abschnitt namens „actions“ (Aktionen), in dem alle Spielaktionssets in Ihrem Spiel aufgelistet sein sollten. Ein Spielaktionsset beschreibt alle Aktionen, die ein Spieler innerhalb eines bestimmten Spielkontexts ausführen kann (z. B. in einem Fahrzeug, zu Fuß oder beim Navigieren des Menüs). Für jedes Spielaktionsset gibt es in der Benutzeroberfläche der Steam-Eingabe-Konfiguration einen Tab, über den ein Spieler selbst anpassen kann, wie diese Aktionen dem Controller zugewiesen werden.

Ein Spielaktionsset-Eintrag in der Spielaktionendatei sollte einen „title“-Schlüssel und -Wert sowie die folgenden Unterabschnitte enthalten: „StickPadGyro“, „AnalogTrigger“ und „Buttons“. Die Abschnitte „StickPadGyro“ und „AnalogTrigger“ enthalten jeweils eine Liste von Spielaktionen, die der Spieler nur dem Stick, Pad oder Gyroskop bzw. den analogen Triggern zuweisen kann. Der Abschnitt „Buttons“ enthält Spielaktionen, die nur digitalen Eingaben zugewiesen werden können (z. B. den physischen Tasten A, B, X und Y, einem Trackpad im ABXY-Modus oder einem nicht für eine AnalogTrigger-Aktion verwendeten Trigger).

Entwurf Ihrer Spielaktionen

Nehmen Sie sich eine Minute Zeit, um über die Funktionalität Ihres Spiels nachzudenken. Wie viele verschiedene Modi enthält es? Erstellen Sie ein Aktionsset für jeden Ort, für den Sie eine unterschiedliche Steuerung wünschen. Die meisten Spiele verfügen mindestens über die Aktionssets „Menü“ und „Spiel“. Viele Spiele benötigen jedoch weitere Aktionssets. Gibt es in Ihrem Spiel besondere Fälle wie die Bedienung von Fahrzeugen oder spezialisierte Spielmenüs wie eine Karte oder ein Inventarbildschirm? Dann könnte es hilfreich sein, für diese ebenfalls ein Aktionsset anzulegen.

Es muss jedoch nicht alles ein eigenes Aktionsset sein. Für ähnliche Modi können Sie auch Aktionssetebenen verwenden. Wenn Sie zum Beispiel in Ihrem Spiel sowohl ein Auto als auch ein Boot benutzen können, würde sich ein Aktionsset „Fahrzeug“ anbieten, das die beiden Aktionssetebenen „Boot“ und „Auto“ enthält. Aktionssetebenen behalten sämtliche Einstellungen des übergeordneten Aktionssets bei und machen es sowohl Ihrem Entwicklerteam als auch Ihren Nutzern leichter, Konfigurationen zu verstehen und zu bearbeiten.

Weitere Informationen zu Aktionssetebenen finden Sie hier: Aktionssetebenen

Begrenzung der Anzahl von Aktionen

Derzeit können maximal 16 analoge und 128 digitale Aktionen angelegt werden. Bitte beachten Sie, dass Aktionen zwischen Aktionssets geteilt werden können, sodass Sie in den meisten Fällen nur einen Bruchteil der maximalen Anzahl benötigen. Die Obergrenze ist nicht in Stein gemeißelt. Wenn Sie wirklich mehr benötigen, lassen Sie es uns wissen.

Button-Aktionen


„Button“-Aktionen haben das folgende Format:

"<Aktionsname>" "#<Lokalisierungsschlüssel>"

Der <Aktionsname> ist der interne Name, über den Sie in Ihrem Spielcode auf diese Aktion verweisen können, wenn Sie mit der Steam-Eingabe-API kommunizieren. Der <Lokalisierungsschlüssel> sollte der Name eines Eintrags im Abschnitt „localization“ sein (siehe „Hinzufügen von Lokalisierung“). Achten Sie darauf, am Anfang Ihres Lokalisierungsschlüssels das Zeichen „#“ zu verwenden.

Analog-Trigger-Aktionen


„AnalogTrigger“-Aktionen haben dasselbe Format wie „Button“-Aktionen. „AnalogTrigger“-Aktionen sollten Aktionen sein, die Ihr Spiel als vollständig analoge Eingaben interpretiert (z. B. die Beschleunigung eines Fahrzeugs). Falls Sie in Ihrem Spiel keine Eingaben dieser Art verwenden, lassen Sie diesen Abschnitt leer. Die Benutzeroberfläche des Steam-Eingabe-Konfigurators ermöglicht es Spielern, den physischen Triggern jede beliebige „Button“-Aktion zuzuweisen, wenn sie nicht für eine „AnalogTrigger“-Aktion verwendet werden.

StickPadGyro-Aktionen


„StickPadGyro“-Aktionen haben das folgende Format:

"<Aktionsname>" { "title" "#<Lokalisierungsschlüssel>" "input_mode" "<Analogmodus>" }

<Aktionsname> und <Lokalisierungsschlüssel> entsprechen den gleichnamigen Schlüsseln im „Button“-Format. <Analogmodus> gibt an, wie die von den physischen Steuerelementen kommenden Signale interpretiert werden sollen, bevor wir sie über die Steam-Eingabe-API an Ihr Spiel weitergeben.

Zulässige Werte für <Analogmodus>:

  • „absolute_mouse“: Wenn Sie erwarten, dass sich die Aktion wie eine Maus verhält. Sinnvoll für Kameras aus der der Ich- oder Beobachterperspektive sowie für Mauszeiger.
  • „joystick_move“: Wenn Sie die Aktion dazu verwenden, einen Charakter zu bewegen.

„absolute_mouse“ und „joystick_move“

Wir können nicht genug betonen, dass bei der Erstellung einer Kameraeingabe aus der Ich- oder Beobachterperspektive und für alles, was wie ein Mauszeiger gesteuert wird, immer der Typ „absolute_mouse“ verwendet werden sollte. Auch auf die Delta-Werte sollten Sie so reagieren, als handele es sich beim Eingabegerät um eine Maus, da die Daten 1:1 für die Implementierung von hochqualitativen Gyroskop- und Trackpad-Eingaben erforderlich sind. Steam-Eingabe kann Stick-Eingaben von Controllern in „absolute_mouse“-Eingaben umwandeln, aber wegen der im Spiel angewendeten Beschleunigungskurven und Totzonen ist eine Umwandlung in die andere Richtung nicht möglich.

Es ist in Ordnung, eine Aktion im Stil von „joystick_move“ einzubauen, damit sich die Steuerung Ihres Spiel exakt so anfühlt wie bei Ihren Konsolen-Builds, aber bitte testen Sie, dass Sie Eingaben von „absolute_mouse“ und „joystick_move“; gleichzeitig annehmen können, damit PlayStation- und Switch-Controller neben dem Stick auch mit dem Gyroskop zielen können. Wir empfehlen, darüber hinaus eine digitale Aktion zum Zurücksetzen der Kamera zu implementieren, um die vertikale Position der Kamera neu zu zentrieren. Wenn Sie automatisches Zielen für XInput-Controller aktiviert haben, wenden Sie dieselbe Logik auf die Stick-Eingabe über die Steam-Eingabe-API an und erwägen Sie, eine abgeschwächte Version des automatischen Zielens auf Trackpad/Gyroskop anzuwenden.

Es gibt eine optionale Einstellung für StickPadGyro-Aktionen, die „absolute_mouse“ als Aktionsmodus verwenden. Wenn Sie den Schlüssel „os_mouse“ auf den Wert „1“ setzen, wird die Eingabe vom Spieler sowohl an das Betriebssystem als auch an Ihr Spiel weitergegeben. Dies ist sinnvoll, wenn Sie einen sichtbaren Mauszeiger des Betriebssystems verwenden, der durch diese Aktion gesteuert werden soll.

Hier ein Beispiel:

"menu_mouse" { "title" "#Menu_Mouse_Title" "input_mode" "absolute_mouse" "os_mouse" "1" }

Warnung

  1. Wir raten dringend davon ab, die Option „os_mouse“ für Kamerasteuerung zu verwenden. Bedenken Sie, dass Sie immer separate analoge Aktionen verwenden können, die nur im Menü und nicht im Aktionsset des Spiels verwendet werden, wenn bestimmte Teile Ihres Spiels nur schwer zu patchen sind.
  2. Bei der Verwendung von „os_mouse“ wird die Mausempfindlichkeit des Spiels auf die Controllereingaben angewendet und funktioniert nur für lokale Einzelspieler.

Schritt 1.1: Lokalisierung hinzufügen


Der Abschnitt „localization“ in Ihrer Spielaktionendatei enthält eine Liste von Sprachen, von denen jede einen Abschnitt mit Lokalisierungsschlüsseln und -werten enthält. Beispiel:

"localization" { "english" { "Action_Jump" "Jump" "Action_Camera" "Camera" } "german" { "Action_Jump" "Springen" "Action_Camera" "Kameraansicht" } }

Die Aktionen in Ihrer Spielaktionendatei sollten dann als Aktionsnamen den gewünschten Lokalisierungsschlüssel angeben, dem das Zeichen „#“ vorangestellt wird. Hier sind Beispielaktionen, welche die oben genannten Lokalisierungsschlüssel verwenden:

"StickPadGyro" { "Camera" { "title" "#Action_Camera" "input_mode" "absolute_mouse" } } "Button" { "Jump" "#Action_Jump" }

Wenn die Sprache, unter der Ihr Spiel ausgeführt wird, im Abschnitt „localization“ nicht gefunden wird, wird auf Englisch zurückgegriffen. Wenn Englisch nicht gefunden wird, wird der String so angezeigt, wie er ist. Einzelheiten zu den unterstützten Sprachen finden Sie unter Vollständig unterstützte Sprachen.

Schritt 1.2: Titel und Beschreibungen


Konfigurationen benötigen auch einen lokalisierten Titel und eine lokalisierte Beschreibung. Wenn Sie nur eine einzige offizielle Konfiguration für Ihr Spiel erstellen, brauchen Sie sich darüber keine Gedanken zu machen. In dem Fall geben wir einen Standardtitel und eine Standardbeschreibung vor und Sie können diesen Schritt ganz überspringen. Wenn Sie aber mehrere offizielle Konfigurationen für Ihr Spiel haben möchten, müssen Sie auch lokalisierte Titel und Beschreibungen für diese bereitstellen.

Die Titel und Beschreibungen der Konfigurationen sollten zusammen mit den übrigen Lokalisierungsschlüsseln aufgeführt werden. Der Titelschlüssel muss mit „Title_” und der Beschreibungsschlüssel mit „Description_” beginnen. Hier ist ein Beispiel:

"localization" { "german" { "Title_Config1" "Offizielle Konfiguration" "Description_Config1" "Diese Konfiguration wurde von den Entwicklern von Spiel X erstellt." "Title_Config2" "Offizielle Southpaw-Konfiguration" "Description_Config2" "Diese Konfiguration wurde von den Entwicklern von Spiel X erstellt und ist für Benutzer von Southpaw." "Action_Jump" "Springen" "Action_Camera" "Kamera" } }

Wenn Sie eine Konfiguration veröffentlichen (siehe Schritt 4: Veröffentlichung), können Sie auswählen, welche dieser lokalisierten Titel und Beschreibungen Sie verwenden möchten.

Schritt 2: Standardkonfiguration erstellen


Wenn Sie Ihre Spielaktionendatei erstellt und mit dem korrekten Namen, der Ihrer App-ID entspricht, im richtigen Verzeichnis abgelegt haben, können Sie mit der Erstellung einer Konfiguration beginnen.

Führen Sie Steam im Big-Picture-Modus aus und rufen Sie die Detailseite Ihres Spiels auf.

Wählen Sie „Spiel verwalten“ und anschließend „Controller konfigurieren“ aus. Wenn Sie an dieser Stelle Fehlermeldungen sehen, deuten diese auf Probleme mit Ihrer Spielaktionendatei hin und müssen zuerst behoben werden. Die häufigsten Fehler sind fehlende schließende Anführungszeichen oder Klammern.

Wenn Sie keine Fehlermeldungen erhalten, liegt jetzt eine leere Controllerkonfiguration für Ihr Spiel vor, die Ihre Spielaktionen bereits kennen sollte. Verwenden Sie die Benutzeroberfläche, um eine Standardkonfiguration zu erstellen. Achten Sie darauf, dass Sie für alle Spielaktionssets im Spiel Standardzuweisungen festlegen, nicht nur für das erste.

Wenn Sie eine Konfiguration erstellt haben, speichern Sie diese an einem privaten Ort ab. Veröffentlichen Sie sie noch nicht, da Ihr Spiel noch nicht für den Erhalt von Spielaktionen bereit ist.

Schritt 3: Die Steam-Eingabe-API


Vergewissern Sie sich, dass Sie die neuste Version der Steamworks-API benutzen. Sie finden diese auf der Seite Erste Schritte mit Steamworks.

Die Steam-Eingabe unterstützt anwendungsspezifische Tastenbelegungen für Controller und erkennt das Vordergrundfenster, um zu entscheiden, welche Tastenbelegungen aktiv sein sollen. Dies kann das Debuggen des Controllers erschweren, da der Controller seine Konfiguration ändert, wenn Sie einen Haltepunkt in Ihrem Debugger erreichen. Für Debugging-Zwecke gibt es zwei Methoden, um Steam auf Ihr Fenster zu fixieren: Rufen Sie entweder die folgende Steam-URL auf:
steam://forceinputappid/<App-ID Ihres Spiels oder 0 zum Zurücksetzen auf Normalbetrieb>

oder fügen Sie Ihrer Steam-Verknüpfung den folgenden Befehlszeilenparameter hinzu:
-forcecontrollerappid <App-ID Ihres Spiels>

HINWEIS:

Mit „Steam-Verknüpfung“ ist eine Verknüpfung zum Steam-Client selbst gemeint. Der Befehlszeilenparameter muss an den Steam-Client und nicht an Ihr Spiel übergeben werden.

Sie können auch die offiziellen Controller-Glyphen als Grafik oder deren PSD-Quelle herunterladen. Dies ist nur notwendig, wenn Sie diese als Ausgangspunkt für Ihre eigenen Grafiken verwenden möchten. Andernfalls können Sie einfach die API verwenden, um einen direkten Dateipfad zu der entsprechenden Grafik für jede Controllereingabe zu erhalten (die Bilddateien werden mit dem Steam-Client selbst geliefert).

Schritt 3.1: API-Übersicht


Die Steam-Eingabe-API basiert auf den Spielaktionen und Spielaktionssets, die Sie in Schritt 1 in Ihrer Spielaktionendatei definiert haben.

Die vollständige Dokumentation dieser API finden Sie hier: ISteamInput-Schnittstelle.

Hier ein Überblick über die Funktionen:

Sichere Schnittstellen

Controllerdaten werden beim Aufruf von ISteamInput::RunFrame gesammelt. Dies wird normalerweise in jedem Frame von SteamAPI_RunCallbacks erledigt. Wenn Sie jedoch versionssichere Schnittstellen aktiviert haben und feststellen, dass Sie keine guten Abfragedaten erhalten, müssen Sie ggf. in jedem Frame ISteamInput::RunFrame aufrufen.

Um festzustellen, ob Sie versionssichere Schnittstellen aktiviert haben, prüfen Sie, ob Sie in Ihrem Code folgende Konstante per #define definiert haben:
VERSION_SAFE_STEAM_API_INTERFACES

Schritt 3.2: Eingabeverarbeitung


Bei digitalen Aktionen sind die von ISteamInput::GetDigitalActionData zurückgegebenen Daten recht einfach:

bState: ist „true“, wenn die Aktion gerade vom Controller gesendet wird (z. B. wenn eine Taste gedrückt wird).

Bei analogen Aktionen sind die von ISteamInput::GetAnalogActionData zurückgegebenen Daten ein wenig komplexer:

x,y: hängt vom Modus ab, den Sie der Spielaktion in Ihrer Spielaktionendatei zugewiesen haben. – „absolute_mouse“: x und y sind Delta-Werte im Vergleich zur vorherigen Mausposition. – „joystick_move“: x und y sind Werte zwischen –1 und 1 und geben die aktuelle Position des Sticks an.

Achten Sie in Ihrem Code darauf, dass Sie den Nutzer nicht daran hindern, verschiedene Arten von Eingaben gleichzeitig zu kombinieren. Ein häufiger Fehler, den wir beobachtet haben, ist, dass Spiele anfangen, Controllereingaben zu ignorieren, sobald sie Maus und Tastatur erkennen, oder andersherum.

Schritt 3.3: Bildschirmglyphen

Um eine Bildschirmeingabeaufforderung für den Controller anzuzeigen, müssen Sie die physische(n) Quelle(n) abrufen, die einer Spielaktion zugewiesen sind. Der Spieler hat möglicherweise der gleichen Aktion mehr als eine physische Quelle zugewiesen. Daher empfiehlt es sich, in Ihrer Benutzeroberfläche alle Quellen zu durchlaufen und anzuzeigen. ISteamInput::GetDigitalActionOrigins und ISteamInput::GetAnalogActionOrigins geben die Anzahl der Quellen für die angegebene Aktion zurück und füllen das übergebene Array originsOut mit den Quellen.

Für jede Aktionsquelle können Sie den Aufzählungstyp ISteamInput::EControllerActionOrigin verwenden, um die Aktionsquelle einer entsprechenden Grafik zuzuordnen. Wenn Sie diese Funktion unter Angabe einer Quelle aufrufen, wird ein lokaler Dateipfad zu einer PNG- oder SVG-Datei für die entsprechende Controllerglyphe aus Valves offiziellen Grafiken (im Installationsverzeichnis des Steam-Clients) zurückgegeben. Diese Methode unterstützt alle von der Steam-Eingabe erkannten Hardwaregeräte (ein PlayStation Controller zeigt also PlayStation-Tasten und ein Xbox-Controller Xbox-Tasten an usw.). Außerdem ist diese Methode zukunftssicher. Wenn Valve die Unterstützung einer neuen Hardware hinzufügt, werden mit dieser Funktion automatisch aktualisierte Glyphen abgerufen, ohne dass Sie Ihr Spiel mit neuen Glyphen neu kompilieren müssen.

Sie haben die Wahl, eigene Bilder für die Controllerglyphen mitzuliefern. Wir empfehlen jedoch nachdrücklich, dies zukunftssicher zu gestalten, da die Steam-Eingabe kontinuierlich Unterstützungen für neue Geräte hinzufügt. Sollten die Glyphenbilder für diese Geräte defekt oder leer sein, funktionieren sie nicht gut mit Ihrem Spiel. Sie können entweder:

Führen Sie kontinuierlich Abfragen durch!

Bitte beachten Sie, dass Nutzer ihre Konfigurationen jederzeit ändern können. Um dabei zu helfen, haben wir sichergestellt, dass die Funktionen ISteamInput::GetDigitalActionOrigins und ISteamInput::GetAnalogActionOrigins extrem ressourcenschonend aufgerufen werden können.

Wenn Sie eine Eingabeaufforderung anzeigen, dann vermeiden Sie es, die Aktionsquellen zwischenzuspeichern und die ersten Ergebnisse weiter anzuzeigen. Stattdessen empfehlen wir, die Aktionsquellen in jedem Frames neu zu erfassen und die entsprechenden Eingabeaufforderungen anzuzeigen. Wenn ein Nutzer seine Konfiguration ändert, nachdem er die Eingabeaufforderung gesehen hat, werden die Eingabeaufforderungen automatisch aktualisiert, wenn er aus dem Konfigurationsbildschirm zurückkehrt, damit sie den neuen Aktionsquellen entsprechen.

Schritt 4: Veröffentlichung


Sobald Ihr Spiel mit dem Controller funktioniert, können Sie es veröffentlichen. Dazu müssen Sie Ihr neues Spiel-Update veröffentlichen und Ihre Konfiguration zur offiziellen Konfiguration machen. Offizielle Konfigurationen werden automatisch geladen, wenn Spieler Ihr Spiel zum ersten Mal starten. So können Nutzer Ihr Spiel einfach starten und spielen, ohne den Konfigurationsbildschirm öffnen zu müssen.

Hier ist die empfohlene Vorgehensweise:

Schritt 4.1: Spiel aktualisieren

  • Aktualisieren Sie Ihr Steam-Depot mit der neuen Version Ihres Spiels.

Schritt 4.2: Konfiguration veröffentlichen

  • Führen Sie Steam im Big-Picture-Modus aus und navigieren Sie zur Standardkonfiguration, die Sie in der Controllerkonfiguration erstellt haben.
  • Drücken Sie die Y-Taste oder klicken Sie im unteren Bildschirmbereich auf die Schaltfläche „Speichern als“.
  • Wählen Sie im Pop-up den gewünschten lokalisierten Titel und die lokalisierte Beschreibung aus, ändern Sie das Profil zu einem ÖFFENTLICHEN Profil und klicken Sie auf die Schaltfläche VERÖFFENTLICHEN.
  • Sie erhalten eine Bestätigung und die Datei-ID der öffentlichen Konfiguration. Kopieren und speichern Sie die ID.

Schritt 4.3: Konfiguration offiziell machen

  • Öffnen Sie auf der Steamworks-Partnerwebsite die Seite Ihres Spiels.
  • Wählen Sie „Steam-Eingabe“ im Tab „Anwendungen“.

    steamworks_steam_input.png

  • Scrollen Sie zum Abschnitt „Vorlage für Steam-Eingabe“. Wählen Sie in der Auswahlliste die Option „Benutzerdefinierte Konfiguration“ aus. (Wenn Sie keine native Unterstützung hinzuzufügen und nur aus den üblichen Voreinstellungen für den klassischen Modus auswählen möchten, können Sie dies hier tun.)

    steamworks_steam_input_custom_config.png

    Wählen Sie in der Auswahl unten „Benutzerdefinierte Konfiguration hinzufügen“ aus.

    steamworks_steam_controller_custom2.png

  • Fügen Sie die Datei-ID Ihrer öffentlichen Konfiguration in das Feld ein und klicken Sie auf die Schaltfläche „OK“.

    steamworks_steam_controller_custom3.png

  • Veröffentlichen Sie wie gewohnt die Änderungen an Ihrer Anwendung auf der Partnerwebsite.

Wenn Sie möchten, können Sie auch mehrere offizielle Konfigurationen für Ihr Spiel angeben. Sie könnten beispielsweise einen offiziellen „Southpaw“-Modus (Linkshändermodus) erstellen.

Erstellen Sie dazu einfach mehrere Konfigurationen und veröffentlichen Sie diese wie in Schritt 4.2 beschrieben. Fügen Sie dann in Schritt 4.3 alle Datei-IDs für Ihre Konfigurationen durch ein Komma (,) getrennt in das Feld ein. Die erste Konfiguration in der Liste gilt als die Konfiguration mit der höchsten Priorität und wird für neue Spieler automatisch ausgewählt. Vergessen Sie nicht, allen Konfigurationen Titel und Beschreibungen zu geben.

Wenn Ihre offiziellen Konfigurationen veröffentlicht sind, erscheinen sie im Abschnitt „Benutzerdefinierte Konfiguration“:

steamworks_steam_input_branch_settings.png

Für jede Konfiguration erhalten Sie einen direkten Link, können den Controllertyp sehen, für den sie bestimmt ist, und die Beta-Branches wählen, für die sie verfügbar sein soll. Darüber hinaus können Sie die Konfiguration komplett entfernen. Wenn Sie eine neue offizielle Konfiguration erstellen, können Sie die Funktionen zum Entfernen/Hinzufügen in diesem Abschnitt verwenden, um eine bestehende Konfiguration zu ersetzen.

Controller für Steam-Eingabe aktivieren


Als Nächstes richten Sie ein, welche Arten von Controllern die Steam-Eingabe verwenden. Achten Sie bei Verwendung der Steam-Eingabe-API darauf, dass Sie die Option „Beliebiges zukünftiges Gerät“ auswählen. Dies gewährleistet, dass neu hinzugefügte Controller automatisch funktionieren und keine erneute Anpassung der Einstellungen erforderlich ist, wenn Unterstützung für diese Controller auf Steam hinzugefügt wird.

steamworks_steam_input_optin_settings.png

Wenn Sie diese Kästchen markieren, verwenden diese Controllertypen die Steam-Eingabe, statt ihrer jeweiligen Standard-Eingabeprotokolle.

Offizielle Konfigurationen aktualisieren

Es gibt zwei Möglichkeiten, Ihre Konfiguration zu aktualisieren:
  1. Wenn Sie eine grundlegende Änderung vornehmen möchten, z. B. Hinzufügen/Entfernen eines neuen Aktionssets oder Hinzufügen von Aktionen, die zugewiesen werden müssen, laden Sie eine neue Konfiguration für jeden unterstützten Controllertyp hoch und entfernen Sie die alte Konfiguration. Sie sollten außerdem mit dem Account, mit dem die Konfiguration erstellt wurde, in den Steam-Eingabe-Konfigurationsbrowser gehen und sie über die folgende Schaltfläche als gelöscht markieren:

    steamworks_remove_community_config.png
  2. Wenn Sie eine optionale Änderung vornehmen möchten, wie beispielsweise eine neue Sprache für die Lokalisierung Ihrer Aktionsnamen oder eine neue optionale Aktion hinzufügen, die nicht in jede Konfiguration eingebunden werden muss, laden Sie eine einzige neue Konfiguration hoch und nutzen Sie das Kontrollkästchen „Aktionsblock nutzen“, um sicherzustellen, dass der Aktionsblock dieser Konfiguration bevorzugt auf die ausgewählten Branches angewendet wird.

    steamworks_steam_input_use_action_block.png

Tipps

Menüaktionen

Wir empfehlen, ein separates Spielaktionsset für die Menüsteuerung zu erstellen, statt die Aktionen in Ihrem Hauptspielaktionsset dafür zu verwenden. Für die meisten Kunden ist eine Anpassung der Menüsteuerung nicht erforderlich, aber so können Sie diese Funktion auf einfache Weise für Spieler bereitstellen, die sie tatsächlich benötigen (dies könnte beispielsweise bei manchen Spielern mit Behinderung notwendig sein).

Benutzerdefinierte Symbole

Das Steam-Eingabesystem kann auch verschiedene Arten von Bildschirmmenüs erstellen. Wenn Sie Ihre eigenen .png-Symbole im <Grundverzeichnis Ihres Spiels>/TouchMenuIcons/*.png ablegen, werden sie in der Liste für die Radial- und Touch-Menüs Ihres Spiels zuerst angezeigt. Damit können Sie Ihre eigenen Bildschirm-Radialmenüs oder -Touch-Menüs mit Symbolen einrichten, die bestimmten Aktionen zugewiesen sind, ohne mit Spiel- oder Benutzeroberflächencode arbeiten zu müssen. Als Entwickler können Sie dies auch dann tun, wenn Ihre eigene Standardkonfiguration keine Radial- oder Touch-Menüs besitzt. Da alle vom Nutzer geänderten Konfigurationen ebenfalls Zugriff darauf haben, können Nutzer unter Verwendung Ihrer offiziellen Symbolgrafiken Menüs mit schönen Motiven erstellen.