Documentazione di Steamworks
Interfaccia ISteamParties
Questa API può essere utilizzata per pubblicizzare in maniera selettiva la tua sessione di gioco multigiocatore in una chat di gruppo di Steam. Informa Steam del numero di posti disponibili per i giocatori nel tuo gruppo, fornendo loro una stringa di accesso che segnalerà la possibilità per quel numero di utenti di accedere al gruppo seguendo il "segnale". Regola il numero di posti aperti se altri giocatori accedono attraverso altri metodi di matchmaking.

Ad esempio, puoi usare ISteamParties insieme a una lobby privata. Crea una lobby privata e poi usa ISteamParties::CreateBeacon per creare un "segnale" per il gruppo per il numero di giocatori desiderato. La stringa di connessione al gioco dovrebbe indicare l'ID della lobby privata.

Il segnale apparirà nella sezione specificata di Steam (ad esempio nella chat di gruppo) e attraverso l'API in gioco ISteamParties, come descritto in basso. Steam "prenota" degli slot per il numero di giocatori desiderati. Quando un utente segue il segnale, Steam conserverà uno slot prenotato e lancerà il gioco usando la stringa di connessione fornita.

La sessione di gioco che ha creato il segnale verrà informata di questa prenotazione, così che il gioco possa mostrare la corretta stringa "L'utente <username> si sta unendo al tuo gruppo", o altri indicatori. Una volta che l'utente si sarà unito con successo, la sessione di gioco dovrebbe chiamare ISteamParties::OnReservationCompleted per dire a Steam che l'utente si è unito con successo, altrimenti la prenotazione scadrà e lo slot verrà riaperto.

Quando tutti gli slot del segnale saranno occupati (attraverso prenotazioni per utenti che stanno lanciando il gioco o utenti che fanno già parte del gruppo), Steam lo nasconderà e lo disattiverà.

Per annullare il segnale, ad esempio quando il gruppo è pieno e il gioco sta iniziando, chiama ISteamParties::DestroyBeacon.

Il lato client di questa operazione (vedere e seguire segnali) può essere gestito anche dal tuo gioco. Usando ISteamParties::GetNumActiveBeacons e ISteamParties::GetBeaconDetails, il tuo gioco può ottenere una lista di segnali da altri utenti al momento attivi in sezioni rilevanti per l'utente corrente. Se l'utente lo desidera, chiama ISteamParties::JoinParty per "seguire" uno di quei segnali.

Funzioni membro

Le funzioni membro per ISteamParties vengono chiamate tramite la funzione globale di accesso SteamParties(), che viene fornita dal file di intestazione steam/ISteamMatchmaking.h.

GetNumAvailableBeaconLocations

bool GetNumAvailableBeaconLocations( uint32 *puNumLocations );
NomeTipoDescrizione
puNumLocationsuint32*Indirizzo della variabile per cui ricevere il numero di risposta.

Ottiene il numero di sezioni in cui sei in grado di pubblicare un segnale di gruppo.

Usa questa funzione per dare una dimensione alla lista dei risultati di una chiamata a ISteamParties::GetAvailableBeaconLocations.

Restituisce: bool

GetAvailableBeaconLocations

bool GetAvailableBeaconLocations( SteamPartyBeaconLocation_t *pLocationList, uint32 uMaxNumLocations );
NomeTipoDescrizione
pLocationListSteamPartyBeaconLocation_t*Lista risultante di sezioni disponibili per il segnale.
uMaxNumLocationsuint32Il numero massimo di voci da includere nella lista di cui sopra. Dovrebbe essere >= il risultato di GetNumAvailableBeaconLocations.

Ottiene la lista di sezioni in cui puoi pubblicare un segnale di gruppo.

Vedi anche: ISteamParties::GetNumAvailableBeaconLocations

Restituisce: bool

CreateBeacon

SteamAPICall_t CreateBeacon( uint32 unOpenSlots, SteamPartyBeaconLocation_t *pBeaconLocation, const char *pchConnectString, const char *pchMetadata );
NomeTipoDescrizione
unOpenSlotsuint32Numero di slot di prenotazione da creare per il segnale. Di solito, è la dimensione desiderata per il tuo gruppo meno uno (l'utente corrente).
pBeaconLocationSteamPartyBeaconLocation_t*Informazioni sulla sezione per il segnale. Dovrebbe essere una delle sezioni restituite da ISteamParties::GetAvailableBeaconLocations.
pchConnectStringchar *Stringa di connessione che sarà data al gioco al momento del lancio per un utente che segue il segnale.
pchMetadatachar *Metadati di gioco addizionali che possono essere imposti sul segnale e che vengono esposti tramite ISteamParties::GetBeaconDetails.

Crea un segnale. Puoi crearne solo una alla volta. Steam mostrerà il segnale nella sezione specificata e consentirà al numero massimo di utenti indicato da unOpenSlots di "seguire" il segnale del tuo gruppo.

Se gli utenti si uniscono al tuo gruppo attraverso un altro tipo di matchmaking, regola il numero di slot disponibili usando ISteamParties::ChangeNumOpenSlots.

Restituisce: SteamAPICall_t da utilizzare con un risultato della chiamata a CreateBeaconCallback_t.
Restituisce k_uAPICallInvalid se il processo ha già un segnale attivo o se le informazioni sulla sezione non sono valide.

OnReservationCompleted

void OnReservationCompleted( PartyBeaconID_t ulBeacon, CSteamID steamIDUser );
NomeTipoDescrizione
ulBeaconPartyBeaconID_tL'ID del segnale creato dal tuo processo.
steamIDUserCSteamIDL'ID di Steam dell'utente che si sta unendo al tuo gruppo.

Quando un utente segue il tuo segnale, Steam prenoterà per lui uno degli slot del gruppo aperti e invierà al tuo gioco una callback ReservationNotificationCallback_t. Quando quell'utente si unisce al tuo gruppo, chiama OnReservationCompleted per notificare Steam che l'utente si è unito con successo.

ChangeNumOpenSlots

SteamAPICall_t ChangeNumOpenSlots( PartyBeaconID_t ulBeacon, uint32 unOpenSlots );
NomeTipoDescrizione
ulBeaconPartyBeaconID_tL'ID del segnale creato dal tuo processo.
unOpenSlotsuint32Il nuovo numero di slot aperti nel tuo gruppo.

Se un utente si unisce al tuo gruppo attraverso un'altro metodo di matchmaking (ad esempio un invito diretto da un amico di Steam o dal tuo stesso sistema di matchmaking), il tuo gioco dovrebbe ridurre il numero di slot aperti che Steam sta gestendo attraverso il segnale di gruppo. Ad esempio, se hai creato il segnale con cinque slot e Steam ti ha inviato due callback ReservationNotificationCallback_t, se un terzo utente si è unito direttamente dovrai chiamare ChangeNumOpenSlots con un valore di 2 per unOpenSlots. Quel valore rappresenta il numero totale di nuovi utenti che desideri siano inviati da Steam al tuo gruppo.

Restituisce: SteamAPICall_t da usare con un risultato della chiamata a ChangeNumOpenSlotsCallback_t.
Restituisce k_uAPICallInvalid se l'ID del segnale non è valido.

DestroyBeacon

bool DestroyBeacon( PartyBeaconID_t ulBeacon );
NomeTipoDescrizione
ulBeaconPartyBeaconID_tL'ID del segnale da eliminare.

Chiama questo metodo per eliminare il segnale del gruppo di Steam. Farà immediatamente sì che Steam smetta di mostrare il segnale nella sezione specificata. Nota: utenti che sono già nella fase di unione potrebbero arrivare nel tuo gruppo aspettandosi di unirsi.

Il tuo gioco dovrebbe chiamare questo metodo quando il gruppo è pieno e il gioco sta iniziando, oppure quando l'utente ha deciso di abbandonare il processo di creazione di una lobby. Il segnale verrà eliminato automaticamente quando il tuo gioco si arresta, ma il comportamento consigliato è che il gioco chiami DestroyBeacon al momento giusto.

Restituisce: bool

GetNumActiveBeacons

uint32 GetNumActiveBeacons();

Questo metodo non ha parametri.

Ottiene il numero di segnali di gruppo attivi creati da altri utenti per il tuo gioco che sono visibili dall'utente corrente.

Restituisce: uint32

GetBeaconByIndex

PartyBeaconID_t GetBeaconByIndex( uint32 unIndex );
NomeTipoDescrizione
unIndex uint32Indice del segnale.

Da usare con ISteamParties::GetNumActiveBeacons per l'iterazione dei segnali attivi visibili dall'utente corrente. unIndex è un indice basato su zero, quindi esegui l'iterazione nell'intervallo [0, GetNumActiveBeacons() - 1]. Viene restituito PartyBeaconID_t, che può essere usato con ISteamParties::GetBeaconDetails per ottenere informazioni sui segnali adatti a essere mostrati all'utente.

Restituisce: PartyBeaconID_t

GetBeaconDetails

bool GetBeaconDetails( PartyBeaconID_t ulBeaconID, CSteamID *pSteamIDBeaconOwner,SteamPartyBeaconLocation_t *pLocation, char *pchMetadata, int cchMetadata );
NomeTipoDescrizione
ulBeaconIDPartyBeaconID_tID del segnale da interrogare.
pSteamIDBeaconOwnerCSteamID*Il creatore del segnale.
pLocationSteamPartyBeaconLocation_t*La sezione in cui è stato pubblicato il segnale.
pchMetadatachar*Il buffer per ricevere eventuali metadati addizionali che il gioco ha impostato su questo segnale (ad esempio la modalità di gioco). Sarà NULL quando arrestato con successo.
cchMetadata uint32Le dimensioni del buffer di cui sopra.

Ottiene dettagli sul segnale specificato. Puoi usare l'API ISteamFriends per ottenere dettagli aggiuntivi su pSteamIDBeaconOwner e ISteamParties::GetBeaconLocationData per ottenere dettagli aggiuntivi su pLocation. I contenuti di pchMetadata sono specifici per il tuo gioco e, se presenti, saranno quelli impostati dal processo di gioco che ha creato il segnale.

Restituisce: bool

JoinParty

SteamAPICall_t JoinParty( PartyBeaconID_t ulBeaconID );
NomeTipoDescrizione
ulBeaconPartyBeaconID_tL'ID del segnale del gruppo a cui vuoi unirti.

Quando l'utente indica che vuole unirsi al gruppo pubblicizzato dal segnale, chiama questo metodo. In caso di esito positivo, Steam prenoterà uno slot per questo utente nel gruppo e restituirà la stringa "unisciti al gioco" necessaria per il completamento della connessione.

Restituisce: SteamAPICall_t da usare con un risultato della chiamata a JoinParty_t.
Restituisce k_uAPICallInvalid se l'ID del segnale non è valido.

GetBeaconLocationData

bool GetBeaconLocationData( SteamPartyBeaconLocation_t BeaconLocation, ESteamPartyBeaconLocationData eData, char *pchDataStringOut, int cchDataStringOut );
NomeTipoDescrizione
BeaconLocationSteamPartyBeaconLocation_t La sezione da interrogare.
eDataESteamPartyBeaconLocationData Il tipo di dati della sezione che vuoi ottenere.
pchDataStringOutchar *Buffer di output per la stringa di dati sulla sezione. Sarà NULL quando arrestato con successo.
cchDataStringOut intDimensioni del buffer indicato da pchDataStringOut.

Interroga i metadati generici per la sezione del segnale fornita. Ad esempio il nome, o l'URL per un'icona se il tipo di sezione le supporta (come l'icona per una chat di gruppo di Steam).

Restituisce: bool

Callback

Queste sono callback che possono essere attivate chiamando SteamAPI_RunCallbacks. Molte di esse saranno attivate direttamente in risposta alle funzioni membro di ISteamParties.

JoinPartyCallback_t

Questa callback è usata come una chiamata di risposta per ISteamParties::JoinParty. In caso di esito positivo, avrai uno slot riservato nel gruppo del proprietario del segnale e dovresti usare m_rgchConnectString per connetterti al suo gioco e completare il processo.

NomeTipoDescrizione
m_eResultEResultIl risultato del tentativo di unirsi al gruppo.
m_ulBeaconIDPartyBeaconID_tL'ID del segnale usato per il tentativo.
m_SteamIDBeaconOwnerCSteamIDIl creatore del segnale usato per il tentativo.
m_rgchConnectStringchar[256]In caso di esito positivo, una stringa "unisciti al gioco" che il tuo gioco può usare per completare il processo di unione al gruppo desiderato.

CreateBeaconCallback_t

Questa callback è usata come una chiamata di risposta per ISteamParties::CreateBeacon. In caso di esito positivo, il tuo segnale è stato pubblicato nella sezione desiderata e puoi iniziare a ricevere callback ISteamParties::ReservationNotificationCallback_t per gli utenti che lo seguono.

NomeTipoDescrizione
m_eResultEResultIl risultato del tentativo di creare un segnale.
m_ulBeaconIDPartyBeaconID_tL'ID del segnale appena creato.

ReservationNotificationCallback_t

Dopo aver creato un segnale, quando un utente lo "segue" Steam ti invierà questa callback per informarti che devi essere pronto per l'unione alla partita da parte dell'utente. Quando l'utente si è unito, assicurati di chiamare ISteamParties::OnReservationCompleted per farlo sapere a Steam.

NomeTipoDescrizione
m_ulBeaconIDPartyBeaconID_tL'ID del tuo segnale.
m_steamIDJoinerCSteamIDL'ID di Steam dell'utente che sta seguendo il tuo segnale.

ChangeNumOpenSlotsCallback_t

Il risultato di chiamata per ISteamParties::ChangeNumOpenSlots.

NomeTipoDescrizione
m_eResultEResultIl risultato del tentativo di cambiare il numero di slot aperti.

AvailableBeaconLocationsUpdated_t

Notifica che la lista di sezioni disponibili per la pubblicazione di un segnale è stata aggiornata.

Questa callback non ha membri.

ActiveBeaconsUpdated_t

Notifica che la lista di segnali attivi visibili dall'utente corrente è cambiata.

Questa callback non ha membri.

Strutture

Queste sono strutture che le funzioni all'interno di ISteamParties possono restituire o con cui possono interagire.

SteamPartyBeaconLocation_t



NomeTipoDescrizione
m_eTypeESteamPartyBeaconLocationTypeIl tipo di sezione.
m_ulLocationIDuint64Identificatore opaco di questa sezione.

Enumerazioni

Queste sono le enumerazioni definite per l'utilizzo con ISteamParties.

ESteamPartyBeaconLocationType

I tipi di sezione in cui possono venire pubblicati i segnali.

NomeValoreDescrizione
k_ESteamPartyBeaconLocationType_Invalid0Tipo di sezione non valido.
k_ESteamPartyBeaconLocationType_ChatGroup1Una chat di gruppo di Steam.
k_ESteamPartyBeaconLocationType_MaxIl valore è sempre maggiore di uno rispetto al valore del tipo di sezione valido più grande.

ESteamPartyBeaconLocationData

I tipi di metadati estesi per le sezioni del segnale.

NomeValoreDescrizione
k_ESteamPartyBeaconLocationDataInvalid0Tipo di dati di sezione non valido.
k_ESteamPartyBeaconLocationDataName1Il nome, se presente, della sezione.
k_ESteamPartyBeaconLocationDataIconURLSmallSe la sezione ha un'icona associata, questo è l'URL per l'immagine dell'icona in formato piccolo.
k_ESteamPartyBeaconLocationDataIconURLMediumSe la sezione ha un'icona associata, questo è l'URL per l'immagine dell'icona in formato medio.
k_ESteamPartyBeaconLocationDataIconURLLargeSe la sezione ha un'icona associata, questo è l'URL per l'immagine dell'icona in formato grande.

Typedef

Queste sono typedef definite per l'utilizzo con ISteamUserStats.

NomeTipo baseDescrizione
PartyBeaconID_tuint64Un handle a un segnale di un gruppo di Steam.