Documentación de Steamworks
Presencia enriquecida mejorada

Descripción general

Con el reciente lanzamiento del nuevo cliente de Amigos de Steam y Chat, hemos mejorado las capacidades de nuestro sistema de presencia mejorada para mostrar más sobre los juegos que se están jugando. Vemos la presencia mejorada de un jugador como una forma de involucrar a los amigos del jugador en su actividad. Por ejemplo, los amigos que poseen el juego se involucran al saber el momento adecuado para unirse al juego o al hablar con el jugador y los que no son dueños del juego pueden despertar su interés al encontrar una variedad de cadenas de presencia. Eso les dice más acerca de un juego del que no saben mucho.

La presencia enriquecida se muestra en múltiples contextos

En esta documentación, vamos a cubrir dos configuraciones que puedes definir para controlar cómo aparece tu juego en la lista de amigos de los jugadores:
  • Cadena de presencia enriquecida: se usa para mostrar información sobre el estado del jugador en tu juego que sus amigos pueden querer saber.
  • Agrupación de amigos: se utiliza para agrupar amigos que juegan juntos en el juego.

Juego controlado por una cadena de presencia enriquecida


Los amigos pueden ver más información sobre los juegos de un vistazo
El sistema implementado es personalizable para que tu equipo pueda determinar qué información es la más interesante para los amigos de un jugador.
Su juego tendrá sus propios datos específicos que serán la información correcta para mostrar con una presencia enriquecida mejorada. Para comenzar, sin embargo, aquí hay algunas ideas a considerar:

Juegos multijugador

Dependiendo del tipo de juego multijugador, la información que ayuda a los amigos de un jugador a saber cuándo saltar puede variar. Algunos juegos se juegan en rondas que están determinadas por el tiempo o por los jugadores restantes, por lo que la información es más útil para mostrar. Otros juegos multijugador se terminan una vez que se cumple un objetivo y puede ser útil mostrar la progresión hacia ese objetivo. Saber en qué modo de juego o mapa está activado tu jugador también puede ser útil para ayudar a los amigos del jugador a tomar una decisión sobre cómo involucrarse con el jugador.

Juegos de un solo jugador

Si bien los amigos de un jugador no se unen a los juegos de un solo jugador, el compromiso de un amigo puede ocurrir si la información que se muestra hace que el amigo vea al jugador jugar, hablarle sobre estrategias o hablar sobre los aspectos más destacados del juego. La información que muestra la zona, el capítulo o el nivel en el que se encuentra el jugador, o lo que el jugador está haciendo actualmente en el juego puede ayudar a lograr estos objetivos.

* Para definir la cadena que se mostrará en la lista de amigos de Steam y en el chat, configura steam_display llave/valor en SetRichPresence. Más información y ejemplos sobre las llamadas a la API al final de este documento.

Ejemplos de datos para mostrar si corresponde
  • Tiempo restante
  • Tiempo jugando
  • Jugadores todavía con vida
  • Mapa o nombre de la zona
  • Nivel del jugador
  • Clase de jugador
  • Puntuación en el juego
  • Dificultad
  • Tipo de modo de juego
  • Espacios abiertos en el servidor
  • Acción que se está tomando (construcción de barajas, cambio de lista, en el menú principal, etc.)
NOTA: Ten en cuenta que esta cadena de presencia enriquecida deberá encajar en una línea y se muestra debajo del nombre de un jugador en la lista de amigos. Si es demasiado larga, el final de la línea se truncará o se colocará en elipsis.

Agrupación de amigos


Junto con la línea de información adicional, la nueva lista de amigos puede mostrar grupos de amigos que juegan juntos. Aquellos amigos que estén en un grupo, servidor o partida se agruparán en la categoría del juego con una línea que los conectará. La forma en que se determina la agrupación dependerá de su juego y de lo que tenga más sentido mostrar. Por ejemplo, en Dota 2 hay grupos de hasta 5 personas, por lo que mostraremos el grupo con el que se está jugando, no el equipo completo de 5 que el juego crea. Sin embargo, en Counter-Strike, 2 amigos pueden estar jugando en un servidor juntos, pero en lugar de mostrar todo el servidor como parte del grupo, solo los amigos comunes que juegan juntos se ubican en el mismo Grupo de jugadores de Steam.

Cuando los amigos que juegan juntos se agrupan, otros saben si hay espacio para unirse a la partida

* Para definir la cadena que se mostrará en la lista de amigos de Steam y en el chat, configura steam_player_group y steam_player_group_size key/valor en SetRichPresence.

API de Steam y localización



A continuación se muestra un ejemplo de código para mostrar lo sencillo que es configurarlo.

Fragmento de código
/*--------------------------- EJEMPLO -------------------*/ 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" ); // Muestra de agrupación de amigos cuando juegan juntos if ( nPartyMemberCount > 1 && strPartyID ) { // Si estamos en un grupo de más de un usuario, y tenemos un PartyID válido entonces // informar al sistema de Presencia enriquecida de Steam. steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", strPartyID ); steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", CNumStr( nPartyMemberCount ) ); } else { // De lo contrario, borra la información que teníamos allí antes; No estamos en un grupo. steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", nullptr ); steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", nullptr ); }

El código anterior utiliza la localización que incluye tokens en inglés como los siguientes:

"lang" { "Language" "english" "Tokens" { "#StatusWithoutScore" "{#Status_%gamestatus%}" "#StatusWithScore" "{#Status_%gamestatus%}: %SCORE%" "#Status_AtMainMenu" "At the main menu" "#Status_WaitingForMatch" "Waiting for match" "#Status_Winning" "Winning" "#Status_Losing" "Losing" "#Status_Tied" "Tied" } }