Steamworks-Dokumentation
Verbesserte Rich Presence

Übersicht

Mit der Veröffentlichung des neuen Clients für Steam-Freunde und dem Chat haben wir unsere Rich Presence verbessert und können Informationen zu Spielen anzeigen, die gerade gespielt werden. Die Rich Presence ermöglicht Spielern, ihre Freunde an ihren Aktivitäten teilhaben zu lassen. So können Freunde, die das Spiel besitzen, diesem zu einem guten Zeitpunkt beitreten oder sich mit dem Spieler darüber unterhalten. Freunde, die das Spiel nicht besitzen, können über die Rich-Presence-Strings mehr über ein unbekanntes Spiel erfahren und möchten es daraufhin vielleicht selbst spielen.

Rich Presence in verschiedenen Kontexten

Wir erläutern in dieser Dokumentation zwei Einstellungen, mit denen Sie steuern können, wie Ihr Spiel in der Freundesliste von Spielern erscheint:
  • Rich-Presence-String: zeigt Informationen zum Spielstatus, die Freunde interessieren könnten
  • Gruppierung von Freunden: zur Bildung von Gruppen, die das Spiel gemeinsam spielen

Vom Spiel kontrollierter Rich-Presence-String


Freunde können auf einem Blick weitere Information zu Spielen erhalten
Das System kann so angepasst werden, dass Ihr Team bestimmt, welches die interessantesten Informationen für Freunde eines Spielers sind.
Ihr Spiel verfügt dazu über spezifische Daten, die genau die richtigen Informationen zur Anzeige mit Rich Presence enthalten. Zu Beginn sollten Sie jedoch folgendes berücksichtigen:

Mehrspielerspiele

Je nach Art des Mehspielerspiels können unterschiedliche Informationen für Freunde nützlich sein. Bei rundenbasierten Spielen sind Informationen zur Spielzeit oder verbleibenden Spielern am nützlichsten. Andere Mehrspielerspiele werden erst dann beendet, wenn ein Ziel erfüllt ist. Bei diesen kann die Angabe des Zielfortschritts nützlich sein. Informationen zum Spielmodus oder zur Karte können Freunden des Spielers ebenfalls bei der Entscheidung helfen, wie sie mit diesem interagieren möchten.

Einzelspielerspiele

Auch wenn Freunde einem Einzelspielerspiel nicht beitreten können, kann dennoch ein gemeinsames Erlebnis stattfinden. Die angezeigten Informationen können Freunde zum Beispiel dazu anregen, dem Spieler beim Spielen zuzuschauen oder sich mit ihm über Strategien oder Höhepunkte des Spiels zu unterhalten. Informationen, die die Zone, das Kapitel oder Level des Spielers oder die aktuellen Spieleraktionen im Spiel anzeigen, können bei dem Erreichen dieser Ziele helfen.

* Legen Sie zur Definition eines Strings für die Anzeige in der Steam-Freundesliste und dem Chat den Wert/Schlüssel steam_display in SetRichPresence fest. Weitere Informationen und Beispiele zu API-Aufrufen finden Sie am Ende dieses Dokuments.

Beispiele von Anzeigedaten (falls anwendbar)
  • Verbleibende Zeit
  • Verstrichene Zeit
  • Verbleibende Spieler
  • Karten- oder Zonenname
  • Spielerlevel
  • Spielerklasse
  • Spielstand
  • Schwierigkeitsgrad
  • Spielmodus
  • Anzahl offener Plätze auf dem Server
  • Aktuelle Spieleraktion (Deckbau, Kaderwechsel, im Hauptmenü, usw.)
HINWEIS: Bedenken Sie, dass dieser Rich-Presence-String in eine Zeile passen muss und unter dem Spielernamen in der Freundesliste angezeigt wird. Wenn er zu lang ist, kann das Ende der Zeile abgeschnitten oder mit Auslassungszeichen versehen werden.

Gruppierung von Freunden


Gleichzeitig zur zusätzlichen Informationszeile kann die Freundesliste nun Gruppen von gemeinsam spielenden Freunden anzeigen. Freunde in einer Gruppe, auf einem Server oder in einer gemeinsamen Partie werden mit einer Linie verbunden unter der Spielkategorie gruppiert. Es hängt von Ihrem Spiel und der sinnvollsten Anzeige ab, wie die Gruppierung festgelegt wird. Zum Beispiel gibt es in Dota 2 Gruppen von bis zu 5 Spielern. Deshalb wird die aktuelle Gruppe und nicht alle 5 Gruppen angezeigt, die durch die Spielsuche (Spielsuche) zugewiesen wurden. In Counter-Strike hingegen können 2 Freunde gemeinsam auf einem Server spielen. Nur die gemeinsam spielenden, befreundeten Spieler werden in dieselbe Steam-Spielergruppe gesetzt, nicht der gesamte auf derselben Seite spielende Server.

Wenn gemeinsam spielende Freunde als eine Gruppe dargestellt werden, wissen andere, ob es noch Platz für sie gibt.

* Legen Sie zur Definition der Gruppierung von Spielern in der Steam-Freundesliste und im Chat die Werte/Schlüssel steam_player_group und steam_player_group_size in SetRichPresence fest.

Steam API & Lokalisierung



Der folgende Beispielcode zeigt, wie einfach die Einrichtung ist.

Codeausschnitt
/*--------------------------- SAMPLE -------------------*/ const char *pchStatus; if ( bWinning && cWinners > 1 ) { pchStatus = "Unentschieden"; } else if ( bWinning ) { pchStatus = "Gewinnt"; } else { pchStatus = "Verliert"; } SteamFriends()->SetRichPresence( "gamestatus", pchStatus ); bool bDisplayScoreInRichPresence = true; if ( bDisplayScoreInRichPresence ) { char rgchBuffer[32]; sprintf_safe( rgchBuffer, "%2u", uMyScore ); SteamFriends()->SetRichPresence( "score", rgchBuffer ); } SteamFriends()->SetRichPresence( "steam_display", bDisplayScoreInRichPresence ? "#StatusWithScore" : "#StatusWithoutScore" ); // Beispiel für gemeinsame Gruppierung von Freunden, die miteinander spielen if ( nPartyMemberCount > 1 && strPartyID ) { // Wenn wir in einer Gruppe von mehr als einem Spieler sind und eine gültige PartyID haben, dann // informier das erweiterte Anwesenheitssystem von Steam. steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", strPartyID ); steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", CNumStr( nPartyMemberCount ) ); } else { // Sonst leere sämtliche Informationen, die wir hierin hatten; wir sind nicht in einer Gruppe. steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", nullptr ); steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", nullptr ); }

Der oben stehende Code verwendet Lokalisierung, die deutsche Token wie die folgenden enthält:

"lang" { "language" "german" "tokens" { "#StatusWithoutScore" "{#Status_%gamestatus%}" "#StatusWithScore" "{#Status_%gamestatus%}: %SCORE%" "#Status_AtMainMenu" "Im Hauptmenü" "#Status_WaitingForMatch" "Wartet auf eine Partie" "#Status_Winning" "Gewinnt" "#Status_Losing" "Verliert" "#Status_Tied" "Unentschieden" } }