Documentation Steamworks
Présence enrichie améliorée

Présentation

Avec la sortie récente du nouveau client Steam de la liste d'amis et de chat, 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 parties. Nous envisageons la présence enrichie d'un joueur comme un moyen de faire participer ses amis à son activité. Par exemple, les amis qui possèdent le jeu participent en sachant quel est le bon moment pour rejoindre la partie ou en en discutant avec le joueur. Pour ceux qui ne possèdent pas le jeu, l'exposition à diverses informations de présence enrichie qui leur en apprennent plus sur un jeu qu'ils connaissent mal peut piquer leur curiosité.

Présence enrichie dans de multiples contextes

Dans cette documentation, nous présentons deux paramètres que vous pouvez définir pour contrôler l’apparence de votre jeu dans les listes d’amis des joueurs :
  • Le texte de présence enrichie, qui permet d'afficher des informations sur l'état du joueur dans votre jeu, qui peut intéresser ses amis.
  • Le regroupement d'amis, qui permet de regrouper des amis qui jouent ensemble à votre jeu.

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


Plus d'informations pour les amis en un coup d’oeil
Le système en place est personnalisable : votre équipe peut déterminer quelles informations sont les plus intéressantes pour les amis d'un joueur.
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 amis d'un joueur à savoir quand entrer dans la partie peuvent varier. Certains jeux se jouent par manches déterminées par le temps ou les joueurs qui restent. Dans ce cas, ces informations sont 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. Savoir dans quel mode ou quelle carte votre joueur se trouve peut aussi aider les amis du joueur à décider comment s'engager avec le joueur.

Parties solo

Même si les amis du joueur ne rejoignent pas une partie solo, leur engagement peut tout de même exister si les informations montrées les incitent à regarder le joueur en action, discuter avec lui de stratégies ou lui parler des moments forts de la partie. Les informations qui indiquent dans quelle zone, quel chapitre ou niveau le joueur se trouve, ou ce que le joueur fait actuellement dans le jeu contribuent à ces objectifs.

* Pour configurer la chaîne à afficher dans la liste d'amis 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
  • Temps restant
  • Temps écoulé
  • Joueurs encore en vie
  • Nom de la carte ou de la zone
  • Niveau du joueur
  • Classe du joueur
  • Score de la partie
  • Difficulté
  • Type de mode de jeu
  • Places ouvertes sur le serveur
  • Actions en cours (construction de deck, changement d'équipe, sur le menu principal, etc.)
REMARQUE : gardez en tête que cette chaîne de présence enrichie devra tenir sur une seule ligne et s'affichera sous le nom du joueur dans la liste d'amis. Si elle est trop longue, la fin de la ligne sera tronquée ou remplacée par des points de suspension.

Regroupement d'amis


Outre la ligne supplémentaire d'informations, la nouvelle liste d'amis est capable d'afficher les groupes d'amis qui jouent ensemble. Ces amis qui sont ensemble dans un groupe, sur un serveur ou dans une partie seront regroupés sous la catégorie du jeu par une ligne qui les relie. La façon dont ils seront regroupés dépend du jeu et de ce qui est le plus pertinent pour l'affichage. 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 amis jouent ensemble sur un serveur, plutôt que d'afficher tout le serveur comme une partie du groupe, seuls les amis qui jouent ensemble seront placés dans le même groupe de joueurs Steam.

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

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

API Steam et localisation



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

Extrait de code
/*--------------------------- ÉCHANTILLON-------------------*/ const char *pchStatus; if ( bWinning && cWinners > 1 ) { pchStatus = "Tied"; } else if ( bWinning ) { pchStatus = "Winning"; } else { pchStatus = "Losing"; } 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 d'amis quand ils jouent ensemble if ( nPartyMemberCount > 1 && strPartyID ) { // Si on a un groupe de plus d'un utilisateur 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 utilise une localisation qui comprend des chaînes de caractères en français similaires aux chaînes suivantes :

"lang" { "language" "french" "tokens" { "#StatusWithoutScore" "{#Status_%gamestatus%}" "#StatusWithScore" "{#Status_%gamestatus%}: %SCORE%" "#Status_AtMainMenu" "Dans le menu principal" "#Status_WaitingForMatch" "En attente de partie" "#Status_Winning" "En train de gagner" "#Status_Losing" "En train de perdre" "#Status_Tied" "Égalité" } }