Introduzione
Con il recente rilascio del nuovo client di Steam per amici e chat, abbiamo potenziato il nostro sistema di rich presence per mostrare più dettagli sui titoli giocati. Vediamo la rich presence come un modo per coinvolgere gli amici dei giocatori nelle loro attività. Ad esempio, gli amici che hanno lo stesso gioco possono unirsi al momento giusto e parlarne tra di loro, mentre quelli che non lo hanno potrebbero divenire interessati al gioco in questione vedendo le varie stringhe della rich presence che ne descrivono diversi momenti.
In questa documentazione parleremo di due impostazioni che puoi definire per controllare come il tuo gioco appare nella lista degli amici dei giocatori:
- Stringa della rich presence: usata per mostrare informazioni sullo stato del giocatore all'interno del gioco che i suoi amici potrebbero trovare interessanti
- Raggruppamento degli amici: usata per raggruppare gli amici che stanno giocando insieme
Stringa rich presence controllata dal gioco
Questo sistema è personalizzabile e il tuo team può scegliere quali siano le informazioni più interessanti da mostrare agli amici dei giocatori.
Il tuo gioco avrà i suoi dati specifici che costituiranno le giuste informazioni da mostrare con la rich presence potenziata. Di seguito troverai alcune considerazioni da tenere a mente prima di iniziare.
Giochi multigiocatore
A seconda del tipo di partita multigiocatore, le informazioni utili agli amici dei giocatori per unirsi possono variare. Alcuni titoli sono giocati in round la cui durata dipende dal tempo trascorso o dai giocatori rimasti, quindi quelle sono le informazioni più importanti da mostrare. Altre partite multigiocatore finiscono al raggiungimento di un obiettivo, quindi potrebbe essere utile mostrare i progressi nella missione. Sapere anche in quale modalità o mappa di gioco si trova un giocatore può essere anche utile per fare capire ai suoi amici come unirsi alla sua attività.
Giochi a giocatore singolo
Anche se gli amici non possono unirsi nei giochi a giocatore singolo, possono essere ugualmente coinvolti se le informazioni mostrate spingono gli amici a guardarsi giocare, a parlare delle loro strategie o dei momenti migliori del gioco. Informazioni che mostrano l'area, il capitolo, il livello o l'attività in cui è coinvolto il giocatore possono aiutare a raggiungere questi obiettivi.
*
Per definire la stringa da mostrare nella lista degli amici di Steam e nella chat, imposta la coppia chiave/valore
steam_display
in
SetRichPresence. Ulteriori informazioni ed esempi sulle chiamate API sono disponibili alla fine di questo documento.
Esempi di informazioni da mostrare:- Tempo rimanente
- Tempo trascorso
- Giocatori ancora in vita
- Nome della mappa o dell'area
- Livello del giocatore
- Classe del giocatore
- Punteggio
- Difficoltà
- Modalità di gioco
- Posti disponibili sul server
- Azione effettuata (costruzione del deck, cambiamenti nel roster, nel menu principale, ecc.)
NOTE: tieni a mente che la stringa della rich presence ha una lunghezza massima di un rigo ed è mostrata sotto il nome dei giocatori nella lista degli amici. Se è troppo lunga, sarà troncata o elisa.
Raggruppamento degli amici
Insieme a queste informazioni aggiuntive, la nuova lista degli amici è in grado di mostrare gruppi di amici che stanno giocando insieme. Gli amici che sono insieme in un gruppo, un server o una partita verranno raggruppati sotto la categoria di gioco e uniti da una linea. Il raggruppamento viene determinato in base al tuo gioco e a cosa ha più senso mostrare. Ad esempio per Dota 2, in cui i giocatori possono unirsi in gruppi di 5, mostreremo il gruppo con cui si sta giocando, non il gruppo intero di 5 assegnato dal gioco. In Counter-Strike, invece, 2 amici potrebbero stare giocando insieme sullo stesso server e, invece che mostrare l'intero server come parte del gruppo, saranno mostrati nel raggruppamento solo gli amici in comune che stanno giocando insieme.
*
Per definire il raggruppamento dei giocatori nella lista degli amici di Steam e nella chat, imposta la coppia chiave/valore
steam_player_group
and
steam_player_group_size
SetRichPresence.
API di Steam e localizzazione
Ecco un esempio di codice che dimostra quanto sia semplice impostare la funzionalità.
Parte del codice/*--------------------------- 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" );
// Esempio di raggruppamento degli amici quando giocano insieme
if ( nPartyMemberCount > 1 && strPartyID )
{
// Se siamo in un gruppo di più di un utente e abbiamo un PartyID valido, allora
// informa il sistema della rich presence di Steam.
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", strPartyID );
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", CNumStr( nPartyMemberCount ) );
}
else
{
// Altrimenti, elimina tutte le informazioni raccolte in precedenza, poiché non siamo in un gruppo.
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", nullptr );
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", nullptr );
}
Il codice mostrato sopra utilizza una localizzazione che include token in lingua inglese come i seguenti:
"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"
}
}