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

Cet article de la documentation vous présente deux paramètres que vous pouvez définir pour contrôler l’apparence de votre jeu dans les listes de contacts :
  • 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 ;
  • le regroupement de contacts, qui permet de réunir en un même bloc des contacts qui jouent ensemble à votre jeu.

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


Plus d'informations pour les contacts en un coup d’œil
Le système en place est personnalisable : votre équipe peut déterminer quelles informations sont les plus pertinentes pour les contacts d'une personne.
Votre jeu disposera de ses propres données spécifiques, qui seront exactement les informations à afficher avec la présence enrichie améliorée. To start you off, though, here are some thoughts to consider:

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. Leur mode de regroupement dépend du jeu et de ce qui est le plus pertinent pour l'affichage. For example, in Dota 2 there are parties of up to 5 people, so we will show the party that is being played with, not the full team of 5 that is match-made by the game. 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



L'exemple de code suivant vous montrera à quel point la configuration est facile.

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é" } }