Steamworks-Dokumentation
Enhanced Rich Presence

Übersicht

With the recent release of the new Steam Friends and Chat client we've enhanced the capabilities of our rich presence system to show more about the games being played. We see a player's rich presence as a way to engage the player's friends in their activity. For example, friends who own the game engage by knowing the right time to join the game or by talking about it with the player, and those who don't own the game may have their interest piqued by coming across a variety of rich presence strings that tell them more about a game that they don't know much about.

Rich Presence is shown in multiple contexts

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 – used for displaying information about player state in your game that their friends may want to know
  • Gruppierung von Freunden: zur Bildung von Gruppen, die das Spiel gemeinsam spielen

Game controlled 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.
Your game will have its own specific data that will be the right information to show with enhanced rich presence. 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.)
NOTE: Keep in mind that this rich presence string will need to fit on one line, and is shown under a players name in the friends list. 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" "english" "Tokens" { "#StatusWithoutScore" "{#Status_%gamestatus%}" "#StatusWithScore" "{#Status_%gamestatus%}: %SCORE%" "#Status_AtMainMenu" "Im Hauptmenü" "#Status_WaitingForMatch" "Wartet auf Partie" "#Status_Winning" "Gewinnt" "#Status_Losing" "Verliert" "#Status_Tied" "Unentschieden" } }