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. Grâce à la présence enrichie, les personnes peuvent partager leur activité et ainsi susciter des interactions avec leurs contacts. Par exemple, les contacts qui possèdent le jeu peuvent identifier le moment propice pour rejoindre la partie ou en discuter avec la personne qui joue. Les informations offertes par la présence enrichie piquent la curiosité des personnes qui ne possèdent pas le jeu et les invitent à vouloir en savoir plus.

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. Pour bien débuter, vous trouverez toutefois quelques conseils à garder en tête ci-dessous.

Jeux multijoueurs

Suivant le type de jeu multijoueur, les informations qui aident les contacts d'une personne à savoir quand rejoindre la partie peuvent varier. Pour certains titres joués par manches, les parties sont limitées par le temps ou le nombre de personnes encore en lice : ces deux informations seront alors considérées comme les plus utiles à afficher. 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

Même si les contacts d'une personne ne participent pas à un jeu en solo, ils peuvent tout de même être intéressés si les informations montrées les incitent à regarder la personne jouer, discuter avec elle de stratégies ou lui parler des moments forts de la partie. 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. Les contacts au sein d'un groupe, d'un serveur ou d'une partie seront regroupés sous la catégorie du jeu par une ligne qui les relie. Leur mode de regroupement dépend du jeu et de ce qui est le plus pertinent pour l'affichage. Par exemple, dans Dota 2, les groupes sont limités à cinq personnes maximum. Nous afficherons le groupe de contacts avec lesquels la personne joue, 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



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