Oversigt
I den seneste udgivelse af den nye Steam-venner og -chat-klient har vi forbedret vores brugeroversigtssystem, så der vises mere om de spil, der spilles. Vi betragter brugeroversigten som en mulighed for spillerens venner at tage del i spillerens aktivitet. For eksempel kan venner, som ejer spillet, blive engageret ved at vide, hvornår det er det rigtige tidspunkt at tilslutte sig spillet eller snakke om det med spilleren, og dem, der ikke ejer det, bliver måske nysgerrige, fordi de ser strenge i brugeroversigten, som fortæller dem mere om et spil, som de ikke ved så meget om.

I denne dokumentation vil vi gennemgå to indstillinger, som du kan definere for at styre, hvordan dit spil ser ud på spilleres vennelister:
- Brugeroversigtsstreng – bruges til at vise information om spillertilstanden i dit spil, som spillerens venner måske vil være interesserede i
- Vennegruppering – bruges til at gruppere venner sammen, som spiller sammen i spillet
Spilstyret brugeroversigtsstreng

Systemet kan tilpasses, så dit hold kan bestemme, hvilke informationer der er mest interessante for en spillers venner.
Dit spil vil have sine egne specifikke data, som vil være det rigtige at vise med den forbedrede brugeroversigt. Men her er nogle ting, du kan overveje for at komme i gang:
Multiplayer-spil
Hvilken information der hjælper en spillers venner til at vide, hvornår de kan springe til, afhænger af, hvad det er for en slags multiplayer-spil. Nogle spil spilles i runder, som er tidsbestemte, eller efter hvor mange spillere der er tilbage, og så er det nyttigt at vise denne type information. Andre multiplayer-spil er færdige, så snart et mål er nået, og så kan det være nyttigt at vise fremskridtet mod målet. Det kan også være nyttigt at vide, hvilken spiltilstand eller bane spilleren er i, så spillerens venner bedre kan vurdere, hvordan de kan komme i kontakt med spilleren.
Singleplayer-spil
Spillerens venner tilslutter sig ikke spillerens singleplayer-spil, men der kan stadig opstå venneengagement, hvis information, som vises, får vennen til at se spilleren spille, snakke med spilleren om strategier eller snakke om højdepunkter fra spillet. Information om den zone, det kapitel eller det level, spilleren er i gang med, eller hvad spilleren foretager sig i spillet i øjeblikket, kan hjælpe til at nå disse mål.
*
For at definere den streng, der skal vises på Steam-vennelisten og i chatten, skal du indstille
steam_display
-nøglen/værdien i
SetRichPresence. Du finder flere oplysninger og eksempler om API-kaldene til sidst i dette dokument.
Eksempler på data, der kan vises, hvis det er relevant- Resterende tid
- Tid, der er gået
- Spillere, der stadig er i live
- Bane- eller zonenavn
- Spiller-level
- Spillerklasse
- Spilscore
- Sværhedsgrad
- Spiltilstandstype
- Åbne pladser på serveren
- Igangværende handling (sammensætte kortbunke, ændre holdliste, i hovedmenuen osv.)
BEMÆRK: Husk på, at strengen i brugeroversigten skal kunne være på én linje. Den vises under spillernavnet på vennelisten. Hvis den er for lang, vil den sidste del af linjen blive afkortet, evt. med ellipse.
Vennegruppering
Udover den ekstra linjes information kan den nye venneliste også viser grupper af venner, som spiller sammen. Venner, som er i en gruppe, på en server eller i en kamp sammen, vil blive grupperet under spilkategorien med en linje, som forbinder dem. Hvordan grupperingen bestemmes, afhænger af dit spil, og hvad der giver mest mening at vise. I Dota 2 er der for eksempel grupper på op til 5 personer, så vi viser den gruppe, der spilles med, ikke hele holdet 5, som matchmakes af spillet. I Counter-Strike kan 2 venner spille på en server sammen, men i stedet for at vise hele serveren som en del af gruppen, placeres kun de fælles venner, som spiller sammen, i Steam-spillergruppen.

*
For at definere spillergrupperingen på Steam-vennelisten og i chatten skal du indstille
steam_player_group
- og
steam_player_group_size
-nøglerne/værdierne i
SetRichPresence.
Steam-API og lokalisering
- Information om Steam-API-kald til at indstille dine nye brugeroversigtsstrenge kan findes her: https://partner.steamgames.com/doc/api/ISteamFriends#SetRichPresence
- Da den forbedrede brugeroversigt nu kan vise strenge for hvert spil, er lokalisering nødvendig, så spillere, der kører spillene på alle de understøttede sprog, kan se oplysningerne. Mere information om, hvordan dette konfigureres, kan findes her:
https://partner.steamgames.com/doc/api/ISteamFriends#richpresencelocalization
- Når du har hooket dataene korrekt, skal du køre spillet og sikre, at du er logget på Steam på nettet. Derefter kan du teste, om det fungerer, og hvad der vises, her:
https://steamcommunity.com/dev/testrichpresence
Nedenfor er et kodeeksempel for at vise, hvor nemt det er at konfigurere.
Kodestykke/*--------------------------- SAMPLE -------------------*/
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" );
// Eksempel på at gruppere venner sammen, når de spiller sammen
if ( nPartyMemberCount > 1 && strPartyID )
{
// Hvis vi er i en gruppe med mere end én bruger, og vi har et gyldigt gruppe-ID, så
// informer Steams brugeroversigstsystem.
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", strPartyID );
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", CNumStr( nPartyMemberCount ) );
}
else
{
// Ellers ryd de oplysninger, vi havde udfyldt før – vi er ikke i en gruppe.
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", nullptr );
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", nullptr );
}
Ovenstående kode anvender lokalisering, der inkluderer engelske tokens såsom:
"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"
}
}