Documentation Steamworks
Présence enrichie améliorée

Présentation

Avec la sortie récente de la nouvelle version du chat et de la liste de contacts Steam au sein du client, nous avons amélioré les fonctionnalités de notre système de présence enrichie pour montrer plus d’informations sur les jeux en cours de partie. 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.

Présence enrichie dans de multiples contextes

In this documentation, we’re going to cover two settings you can define to control how your game appears in players’ friends list:
  • le texte de présence enrichie, qui permet d'afficher des informations sur l'état de la personne dans votre jeu. Ces informations peuvent intéresser ses contacts ;
  • Friend Grouping – used for grouping friends together that are playing together in the game

Texte de présence enrichie contrôlé par le jeu


Friends can see more information about games at a glance
The system in place is customizable so that your team can determine which information is the most interesting to a player's friends.
Votre jeu disposera de ses propres données spécifiques, qui seront exactement les informations à afficher avec la présence enrichie améliorée. Pour bien débuter, voici toutefois quelques conseils à garder en tête :

Jeux multijoueurs

Suivant le type de jeu multijoueur, les informations qui aident les contacts d'une personne à savoir quand rejoindre la partie peuvent varier. Some games are played in rounds that are determined by time, or by players remaining, and so that information is most useful to display. Pour d'autres jeux multijoueurs, la partie est terminée une fois l'objectif atteint. Dans ce cas, il est utile de montrer la progression vers ce but. Connaitre le mode ou la carte de la partie peut aussi aider les contacts de la personne à décider comment interagir avec elle.

Jeux solo

While single-player games are not joined by a player's friends, friend engagement can still occur if the information shown causes the friend to watch the player play, talk to them about strategies, or talk about highlights of playing. Plusieurs informations contribuent à ces objectifs : le chapitre ou le niveau dans laquelle la personne se trouve, ou ce qu'elle fait actuellement dans le jeu.

* Pour configurer le texte à afficher dans la liste de contacts et le chat Steam, définissez la paire clé/valeur steam_display dans SetRichPresence. Vous trouverez d'autres informations et exemples sur les appels de l'API à la fin de ce document.

Exemples de données à afficher suivant les cas
  • le temps restant ;
  • le temps écoulé ;
  • le nombre de personnes encore en lice ;
  • le nom de la carte ou de la zone ;
  • le niveau du contact ;
  • la classe du contact ;
  • le score du contact ;
  • la difficulté ;
  • le type de mode de jeu ;
  • le nombre de places libres sur le serveur ;
  • les actions en cours (construction de deck, changement d'équipe, sur le menu principal, etc.).
REMARQUE : gardez en tête que ce texte de présence enrichie devra tenir sur une seule ligne et s'affichera sous le nom de la personne dans la liste de contacts. Si elle est trop longue, la fin de la ligne sera tronquée ou remplacée par des points de suspension.

Regroupement de contacts


Outre la ligne supplémentaire d'informations, la nouvelle liste de contacts est capable d'afficher les groupes de contacts qui jouent ensemble. Those friends who are in a party, server, or match together will be grouped under the game category with a line connecting them together. The way the grouping is determined will depend on your game and what makes the most sense to show. Par exemple, dans Dota 2 il y a des groupes de cinq personnes maximum. Nous afficherons le groupe dans lequel on peut entrer, pas l'équipe de cinq complète qui résulte du matchmaking réalisé par le jeu. Dans Counter-Strike en revanche, si deux contacts jouent ensemble sur un serveur, plutôt que d'afficher tout le serveur comme une partie du groupe, seuls les contacts qui jouent ensemble seront placés dans le même groupe de personnes Steam.

Quand des contacts qui jouent ensemble sont regroupés, les autres savent s'il y a de la place pour eux

* Pour définir le regroupement de personnes dans la liste de contacts et le chat Steam, configurez les paires clé/valeur steam_player_group et steam_player_group_size dans SetRichPresence.

API Steam et traduction



Below is a code sample to show how simple it is to set this up.

Extrait de code
/*--------------------------- EXEMPLE -------------------*/ const char *pchStatus; if ( bWinning && cWinners > 1 ) { pchStatus = "Égalité"; } else if ( bWinning ) { pchStatus = "Gagne"; } else { pchStatus = "Perd"; } 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" ); // Exemple de regroupement de contacts quand ils jouent ensemble if ( nPartyMemberCount > 1 && strPartyID ) { // Si on a un groupe de plus d'une personne et un identifiant de groupe PartyID correct, alors // informer le système de présence enrichie de Steam. steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", strPartyID ); steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", CNumStr( nPartyMemberCount ) ); } else { // Sinon, supprimer toutes les informations qu'on avait là avant. On n'est pas dans un groupe. steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", nullptr ); steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", nullptr ); }

Le code ci-dessus permet de traduire les textes de présence enrichie. Il comprend des chaines de caractères en français similaires aux chaines suivantes :

"lang" { "Language" "french" "Tokens" { "#StatusWithoutScore" "{#Status_%gamestatus%}" "#StatusWithScore" "{#Status_%gamestatus%}: %SCORE%" "#Status_AtMainMenu" "Dans le menu principal" "#Status_WaitingForMatch" "En attente de match" "#Status_Winning" "Gagne" "#Status_Losing" "Perd" "#Status_Tied" "Égalité" } }