Documentazione di Steamworks
Rich presence potenziata

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.

La rich presence viene mostrata in diversi contesti

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


Gli amici possono vedere facilmente più informazioni sul 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.

Quando gli amici in gioco insieme vengono raggruppati, gli altri sapranno se c'è spazio per loro

* 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" } }