Vista geral
Com o lançamento das novas funcionalidades de amigos e chat do Steam, melhorámos as capacidades do nosso sistema de presença detalhada para que sejam mostrados mais detalhes sobre jogos enquanto um utilizador estiver a jogar. Vemos a presença detalhada como uma forma de utilizadores poderem participar em atividades de amigos. Por exemplo, amigos que tiverem o mesmo jogo podem saber a altura certa para entrar na partida ou falar sobre o jogo com o jogador; utilizadores que não tiverem o jogo poderão ficar interessados ao ver textos de presença detalhada que revelam mais sobre um jogo que desconhecem.
Neste documento, iremos abordar duas definições que pode configurar para controlar como o seu jogo aparece na lista de amigos dos jogadores:
- String de presença detalhada – Usada para exibir informações sobre o estado do jogador no jogo, que podem ser do interesse dos respetivos amigos.
- Agrupamento de amigos – Usado para agrupar amigos que estejam a jogar o jogo juntos.
String de presença detalhada controlada pelo jogo
O sistema implementado é personalizável, logo a sua equipa pode decidir apresentar as informações que achar mais interessantes para os amigos dos jogadores.
O seu jogo terá um conjunto próprio de dados específicos com as informações certas para serem usadas no sistema de presença rica detalhada. No entanto, recomendamos que comece com os seguintes pontos em mente:
Jogos multijogador
Dependendo do tipo do jogo multijogador, as informações que ajudam amigos a saber quando é a melhor altura para entrar no jogo podem variar. Alguns jogos são jogados em partidas ou rondas determinadas pelo tempo ou pelo número de jogadores restantes. Logo, apresentar esse tipo de informações é o mais útil. Outros jogos multijogador têm partidas que acabam quando um objetivo é cumprido e mostrar o progresso para esse objetivo pode ser útil. Saber o modo de jogo ou o mapa que o utilizador está a jogar também pode ser útil para ajudar os amigos a decidir como interagir.
Jogos para um só jogador
Embora amigos não se possam juntar a um utilizador que esteja a jogar um jogo para um só jogador, a interação ainda é possível se as informações mostradas levarem amigos a assistir ao utilizador a jogar, a falar com ele sobre estratégias ou a perguntar-lhe o que está a achar do jogo, por exemplo. Informações como a zona, capítulo ou nível em que o jogador se encontra (ou o que ele está a fazer no jogo) podem ajudar a alcançar estes objetivos.
*
Para definir a string apresentada na lista de amigos e no chat do Steam, defina o par de chave/valor
steam_display
através de
SetRichPresence. Mais informações sobre as chamadas à API e exemplos estão disponíveis no fim deste documento.
Exemplos de dados para exibir (caso aplicáveis)- Tempo restante
- Tempo decorrido
- Jogadores vivos
- Nome do mapa ou da zona
- Nível do jogador
- Classe do jogador
- Pontuação na partida
- Dificuldade
- Tipo ou modo de jogo
- Vagas livres
- A ação a ser realizada (a criar um baralho, a mudar de personagem, no menu principal, etc.)
Atenção: Tenha em mente que esta string de presença detalhada terá de ser curta e de caber numa só linha, pois aparece por baixo do nome do jogador na lista de amigos. Se for demasiado longa, o fim do texto será truncado ou substituído por reticências.
Agrupamento de amigos
Além da linha de informação adicional, a nova lista de amigos pode mostrar grupos de amigos que estejam a jogar juntos. Amigos no mesmo lobby, servidor ou partida serão agrupados numa secção do jogo na lista de amigos, ligados por uma linha. A forma como o agrupamento é realizado irá depender do seu jogo e do que faz mais sentido mostrar. Por exemplo, no Dota 2, é possível criar grupos de até 5 pessoas, logo iremos mostrar os jogadores do grupo que formaram, não a equipa inteira de 5 jogadores que é formada pelo matchmaking. Porém, no Counter-Strike, 2 amigos podem estar a jogar juntos no mesmo servidor e, em vez de mostrar todos os jogadores no servidor como parte do grupo, só os amigos mútuos que estão a jogar juntos serão agrupados na lista de amigos.
*
Para configurar o agrupamento de jogadores na lista de amigos e no chat do Steam, defina os pares de chave/valor
steam_player_group
e
steam_player_group_size
através de
SetRichPresence.
API do Steam e tradução
Segue-se um excerto de código de exemplo que demonstra como esta funcionalidade é simples de configurar.
Excerto de código/*--------------------------- EXEMPLO -------------------*/
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" );
// Exemplo de agrupamento de amigos que estão a jogar juntos
if ( nPartyMemberCount > 1 && strPartyID )
{
// Se estamos num grupo com mais de um utilizador e temos um ID de grupo válido, então
// informamos o sistema de presença detalhada do Steam.
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", strPartyID );
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", CNumStr( nPartyMemberCount ) );
}
else
{
// Caso contrário, removemos as informações anteriores; não estamos num grupo.
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", nullptr );
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", nullptr );
}
O código acima usa tokens de tradução da versão inglesa como os seguintes:
"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"
}
}