Přehled
Seznam přátel ve službě Steam nabízí pokročilou podporu informačních statusů, které poskytují doplňující údaje o hraných titulech. Informační statusy obecně vnímáme jako způsob, jak do aktivity zapojit také přátele Vašich zákazníků, protože když už hru vlastní, mohou se na základě změny statusu připojit do hry nebo s kamarádem probrat právě dohranou sekci, zatímco když hru ještě nevlastní, statusy je mohou zaujmout a pobídnout k obhlédnutí samotné hry.

Na této stránce si probereme dvě nastavení, prostřednictvím kterých můžete určit, jak se Vaše informační statusy (potažmo hra samotná) zobrazí v seznamu přátel:
- Řetězec informačního statusu – používá se pro zobrazení údajů o stavu hry.
- Seskupování přátel – používá se pro seskupení uživatelů, kteří hrají spolu (v jedné skupině / na jednom serveru).
Řetězec informačního statusu

Systém informačních statusů je přizpůsobitelný, takže můžete sami určit, které údaje z Vaší hry budou pro přátele hráčů nejzajímavější.
Konkrétní data tedy necháme na Vás (protože svoji hru znáte ze všech nejlépe), nicméně nabízíme pár rad a tipů k zamyšlení:
Hry pro více hráčů
Informace, které pomohou přátelům hráče určit, zdali se k němu mohou přidat, nebo už to nemá cenu, se liší podle typu hry pro více hráčů – někdy se jedná o zbývající čas nebo počet přeživších, zatímco jindy se hodí prezentovat údaje o postupu k určitému cíli, po jehož dosažení skončí zápas. Dalšími užitečnými údaji, na základě nichž mohou přátelé hráče zvolit odpovídající interakci, jsou pak třeba aktuální herní mód nebo mapa.
Hry pro jednoho hráče
Ačkoli hry pro jednoho hráče už z principu neumožňují připojení přátel, interakce vyloučena rozhodně není, jelikož informační status může vyústit v žádost o sledování při hraní, navrhnutí strategie nebo konverzaci o dohrané části. Z toho důvodu je doporučeno zahrnout údaje o zóně, kapitole či úrovni hráče, nebo přesněji popsat, co právě ve hře provádí.
*
Pro definování řetězce, který se má zobrazit v seznamu přátel a v konverzacích, nastavte klíč/hodnotu
steam_display
ve funkci
SetRichPresence. Více informací a ukázky volání API najdete níže na této stránce.
Obecné příklady údajů pro zahrnutí v informačních statusech:- Zbývající čas
- Uplynulý čas
- Počet hráčů stále naživu
- Název mapy nebo zóny
- Úroveň hráče
- Třída/postava hráče
- Skóre
- Obtížnost
- Herní mód/režim
- Počet volných míst na serveru
- Probíhající akce/činnost (sestavování balíčku, upravování postavy, procházení hlavní nabídky apod.)
POZNÁMKA: Myslete na to, že řetězec informačního statusu se musí vejít na jednu řádku a je zobrazen pod jménem hráče v seznamu přátel. Pokud bude řetězec příliš dlouhý, bude useknut nebo skončí třemi tečkami.
Seskupování přátel
Seznam přátel je kromě informačních statusů schopen zobrazit také skupiny přátel hrajících spolu. Nachází-li se tedy přátelé ve skupině, na stejném serveru nebo ve stejném zápasu, jsou v seznamu přátel seskupeni pod danou hrou a vizuálně spojeni čarou. Určení „skupiny“ závisí na Vaší hře a na tom, co podle Vás dává největší smysl zobrazit. Například pro hru Dota 2 nejsou použity týmy složené při vyhledávání zápasů, ale přímo herní skupiny o maximálně 5 hráčích, které jsou utvářeny ještě před vyhledáváním. Ve hře Counter-Strike 2 je situace trochu jiná, jelikož dva přátelé mohou hrát na stejném serveru, ale všechny ostatní hráče by nedávalo smysl zahrnovat, a tak skupinu v seznamu přátel tvoří právě jenom tito dva přátelé.

*
Pro definování skupiny v seznamu přátel a v konverzacích nastavte klíče/hodnoty
steam_player_group
a
steam_player_group_size
ve funkci
SetRichPresence.
API a lokalizace
Níže se nachází ukázkový výňatek kódu pro integraci informačních statusů.
Výňatek kódu/*--------------------------- UKÁZKA -------------------*/
const char *pchStatus;
if ( bWinning && cWinners > 1 )
{
pchStatus = "Remíza";
}
else if ( bWinning )
{
pchStatus = "Vyhrává";
}
else
{
pchStatus = "Prohrává";
}
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" );
// Ukázka seskupení přátel
if ( nPartyMemberCount > 1 && strPartyID )
{
// Pokud se uživatel nachází ve skupině tvořené více než jedním členem a existuje platné ID skupiny (PartyID),
// dojde k informování systému informačních statusů.
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", strPartyID );
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", CNumStr( nPartyMemberCount ) );
}
else
{
// V opačném případě dojde ke smazání předchozích údajů, jelikož se uživatel nenachází ve skupině.
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", nullptr );
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", nullptr );
}
Kód výše pak používal tokeny lokalizované do češtiny, čehož bylo docíleno následovně:
"lang"
{
"Language" "czech"
"Tokens"
{
"#StatusWithoutScore" "{#Status_%gamestatus%}"
"#StatusWithScore" "{#Status_%gamestatus%}: %SCORE%"
"#Status_AtMainMenu" "V hlavní nabídce"
"#Status_WaitingForMatch" "Čeká na zápas"
"#Status_Winning" "Vyhrává"
"#Status_Losing" "Prohrává"
"#Status_Tied" "Remíza"
}
}