Documentação do Steamworks
Interface ISteamParties
Esta API pode ser usada para divulgar seletivamente a sua sessão de partida multijogadora em uma sala de conversa no Steam. Informe ao Steam quantas vagas estão disponíveis na sessão juntamente com uma string descritiva para entrar na partida e uma notificação será exibida na sala, permitindo que a quantidade de usuários informada "siga" a notificação e entre na sessão. Ajuste a quantidade de vagas abertas caso outros jogadores entrem na sessão por outros meios.

Por exemplo, é possível usar a interface ISteamParties em conjunto com uma sala privada. Crie uma sala privada e use a função ISteamParties::CreateBeacon para criar um "convite aberto" para o grupo com a quantidade de jogadores desejada. A string de conexão do jogo deve indicar o ID da sala privada.

O convite aberto será exibido na localização especificada do Steam (como uma sala de conversa) e também pela API ISteamParties no jogo, como descrito mais abaixo. O Steam "reserva" vagas para a quantidade desejada de jogadores. Quando um usuário clica no convite aberto, o Steam reserva uma vaga para ele e inicia o jogo usando a string de conexão informada.

A sessão de partida que criou o convite aberto será notificada da reserva, assim o jogo pode exibir uma notificação do tipo "Usuário <nome do usuário> está entrando no grupo". Quando o usuário entrar no grupo, a sessão de partida deve chamar a função ISteamParties::OnReservationCompleted para avisar ao Steam que o usuário entrou com sucesso (caso contrário, eventualmente a reserva perderá a validade e o Steam reabrirá a vaga).

Quando todas as vagas do convite aberto forem ocupadas — seja por reservas de usuários que ainda estão abrindo o jogo ou por vagas preenchidas por usuários que já estão no grupo —, este será ocultado e desativado pelo Steam.

Para cancelar o convite aberto — por exemplo, quando o grupo estiver lotado e a partida começar — chame a função ISteamParties::DestroyBeacon.

O lado do cliente desta operação — ver e seguir convites abertos — também pode ser tratado pelo jogo. O jogo pode usar as funções ISteamParties::GetNumActiveBeacons e ISteamParties::GetBeaconDetails para obter uma lista de convites abertos de outros usuários ativos em locais relevantes ao usuário atual. Caso o usuário deseje, chame a função ISteamParties::JoinParty para "seguir" um desses convites abertos.

Funções de membro

Funções de membro de ISteamParties são chamadas por meio da função de acesso global ISteamParties(), que é oferecida pelo arquivo de cabeçalho steam/ISteamMatchmaking.h.

GetNumAvailableBeaconLocations

bool GetNumAvailableBeaconLocations( uint32 *puNumLocations );
NomeTipoDescrição
puNumLocationsuint32*O endereço da variável que receberá o número da resposta.

Recupera a quantidade de locais em que você pode publicar um convite aberto de grupo.

Use este valor para definir o tamanho da lista de resultados na chamada à função ISteamParties::GetAvailableBeaconLocations.

Retorna: bool

GetAvailableBeaconLocations

bool GetAvailableBeaconLocations( SteamPartyBeaconLocation_t *pLocationList, uint32 uMaxNumLocations );
NomeTipoDescrição
pLocationListSteamPartyBeaconLocation_t*A lista que receberá os locais disponíveis para publicar um convite aberto.
uMaxNumLocationsuint32A quantidade máxima de entradas para inserir na lista acima. Deve ser >= ao resultado da função GetNumAvailableBeaconLocations.

Recupera a lista de locais em que você pode publicar um convite aberto de grupo.

Consulte também: ISteamParties::GetNumAvailableBeaconLocations

Retorna: bool

CreateBeacon

SteamAPICall_t CreateBeacon( uint32 unOpenSlots, SteamPartyBeaconLocation_t *pBeaconLocation, const char *pchConnectString, const char *pchMetadata );
NomeTipoDescrição
unOpenSlotsuint32A quantidade de vagas reservadas para criar para o convite. Normalmente este valor é igual ao tamanho desejado do grupo, menos 1 (o usuário atual).
pBeaconLocationSteamPartyBeaconLocation_t*O local do convite aberto. Deve ser igual a um dos locais retornados pela função ISteamParties::GetAvailableBeaconLocations.
pchConnectStringchar *A string de conexão que será passada ao jogo por um usuário que seguir o convite aberto.
pchMetadatachar *Metadados adicionais do jogo que podem ser definidos no convite aberto. Tais metadados podem ser recuperados por meio da função ISteamParties::GetBeaconDetails.

Cria um convite aberto. Só é possível ter um convite aberto de cada vez. O Steam exibirá o convite aberto no local especificado e permitirá que até unOpenSlots usuários "sigam" o convite aberto para entrar no grupo.

Caso usuários entrem no grupo por outros meios, ajuste a quantidade de vagas abertas por meio da função ISteamParties::ChangeNumOpenSlots.

Retorna: SteamAPICall_t, a ser usado com o resultado de chamada CreateBeaconCallback_t.
Retorna k_uAPICallInvalid se o processo já tiver um convite aberto ativo ou se o local informado for inválido.

OnReservationCompleted

void OnReservationCompleted( PartyBeaconID_t ulBeacon, CSteamID steamIDUser );
NomeTipoDescrição
ulBeaconPartyBeaconID_tO ID do convite aberto criado pelo processo.
steamIDUserCSteamIDO ID Steam do usuário que está entrando no grupo.

Quando um usuário segue o convite aberto, o Steam reservará uma das vagas abertas no grupo para ele e disparará um retorno de chamada ReservationNotificationCallback_t no jogo. Quando o usuário entrar no grupo, chame a função OnReservationCompleted para notificar o Steam de que o usuário entrou no grupo com sucesso.

ChangeNumOpenSlots

SteamAPICall_t ChangeNumOpenSlots( PartyBeaconID_t ulBeacon, uint32 unOpenSlots );
NomeTipoDescrição
ulBeaconPartyBeaconID_tO ID do convite aberto criado pelo processo.
unOpenSlotsuint32A nova quantidade de vagas abertas no grupo.

Se um usuário entrar no grupo por outros meios (como por meio de um convite direto de um amigo no Steam ou pelo sistema de criação de partidas do jogo), o jogo precisa reduzir a quantidade de vagas abertas que o Steam está gerenciando pelo convite aberto. Por exemplo, se um convite aberto foi criado com cinco vagas, o Steam disparou dois retornos de chamada ReservationNotificationCallback_t e depois um terceiro usuário entrou diretamente, chame a função ChangeNumOpenSlots passando o valor 2 no parâmetro unOpenSlots. O valor representa a quantidade total de novos usuários que deseja que o Steam mande para o grupo.

Retorna: SteamAPICall_t, a ser usado com o resultado de chamada ChangeNumOpenSlotsCallback_t.
Retorna k_uAPICallInvalid se o ID do convite aberto for inválido.

DestroyBeacon

bool DestroyBeacon( PartyBeaconID_t ulBeacon );
NomeTipoDescrição
ulBeaconPartyBeaconID_tO ID do convite aberto a destruir.

Chame esta função para destruir o convite aberto do Steam. Isso fará com que o Steam interrompa imediatamente a exibição do convite aberto no local escolhido. Observe que usuários que já tenham seguido o convite aberto ainda esperarão conseguir entrar no grupo.

O jogo deve chamar esta função quando o grupo estiver lotado e e partida estiver começando, ou quando o usuário decidir abandonar a criação do grupo. O convite aberto será destruído automaticamente quando o jogo for fechado, mas aconselhamos chamar a função DestroyBeacon no momento certo.

Retorna: bool

GetNumActiveBeacons

uint32 GetNumActiveBeacons();

Esta função não possui parâmetros.

Recupera a quantidade de convites abertos do jogo ativos criados por outros usuários e que estejam visíveis pelo usuário atual.

Retorna: uint32

GetBeaconByIndex

PartyBeaconID_t GetBeaconByIndex( uint32 unIndex );
NomeTipoDescrição
unIndex uint32O índice do convite aberto.

Use em conjunto com a função ISteamParties::GetNumActiveBeacons para iterar pelos convites abertos ativos e visíveis ao usuário atual. unIndex é um índice que começa em zero, então itere sobre o intervalo [0, GetNumActiveBeacons() - 1]. O valor de retorno é do tipo PartyBeaconID_t, que pode ser usado com a função ISteamParties::GetBeaconDetails para recuperar dados sobre os convites abertos para posterior exibição ao usuário.

Retorna: PartyBeaconID_t

GetBeaconDetails

bool GetBeaconDetails( PartyBeaconID_t ulBeaconID, CSteamID *pSteamIDBeaconOwner,SteamPartyBeaconLocation_t *pLocation, char *pchMetadata, int cchMetadata );
NomeTipoDescrição
ulBeaconIDPartyBeaconID_tO ID do convite aberto a consultar.
pSteamIDBeaconOwnerCSteamID*O criador do convite aberto.
pLocationSteamPartyBeaconLocation_t*O local em que o convite aberto foi publicado.
pchMetadatachar*Buffer que receberá os metadados adicionais definidos no convite aberto pelo jogo (como o modo de jogo, por exemplo). Se a chamada for bem-sucedida, o último caractere da cadeira será o terminador nulo.
cchMetadata uint32O tamanho do buffer alocado para pchMetadata.

Recupera detalhes sobre o convite aberto especificado. Use a API ISteamFriends para recuperar detalhes sobre pSteamIDBeaconOwner, e a função ISteamParties::GetBeaconLocationData para recuperar detalhes sobre pLocation. O conteúdo de pchMetadata é definido pelo jogo e conterá o que foi definido (se houver algo definido) pelo processo do jogo que criou o convite aberto.

Retorna: bool

JoinParty

SteamAPICall_t JoinParty( PartyBeaconID_t ulBeaconID );
NomeTipoDescrição
ulBeaconPartyBeaconID_tO ID do convite aberto que deseja seguir.

Quando o usuário indicar que deseja entrar em um grupo anunciado por um convite aberto, chame esta função. Em caso de sucesso, o Steam reservará uma vaga para o usuário no grupo e retornará a string de "entrada em partida" necessária para concluir a conexão.

Retorna: SteamAPICall_t, a ser usado com o resultado de chamada JoinParty_t.
Retorna k_uAPICallInvalid se o ID do convite aberto for inválido.

GetBeaconLocationData

bool GetBeaconLocationData( SteamPartyBeaconLocation_t BeaconLocation, ESteamPartyBeaconLocationData eData, char *pchDataStringOut, int cchDataStringOut );
NomeTipoDescrição
BeaconLocationSteamPartyBeaconLocation_tO local a consultar.
eDataESteamPartyBeaconLocationData O tipo de dado do local que deseja recuperar.
pchDataStringOutchar *O buffer de saída da string de dados do local. Se a chamada for bem-sucedida, o último caractere da cadeira será o terminador nulo.
cchDataStringOut intO tamanho do buffer alocado para pchDataStringOut.

Consulta metadados gerais para um dado local de convite aberto, como o nome ou URL de um ícone, se o tipo do local admite ícones (por exemplo, o ícone para uma sala de conversa no Steam).

Retorna: bool

Retornos de chamada

Estes são os retornos de chamada (callbacks) que podem ser disparados ao chamar SteamAPI_RunCallbacks. Muitos podem ser disparados diretamente em resposta às funções de membro de ISteamParties.

JoinPartyCallback_t

Usado como resposta a uma chamada à função ISteamParties::JoinParty. Se a chamada for bem-sucedida, uma vaga terá sido reservada para o usuário no grupo do dono do convite aberto, e o valor de m_rgchConnectString deve ser usado para conectar-se à partida e concluir o processo.

NomeTipoDescrição
m_eResultEResultO resultado da tentativa de entrar no grupo.
m_ulBeaconIDPartyBeaconID_tO ID do convite aberto usado na tentativa.
m_SteamIDBeaconOwnerCSteamIDO criador do convite aberto usado na tentativa.
m_rgchConnectStringchar[256]Se a chamada for bem-sucedida, conterá uma string de "entrada em partida" para o seu jogo concluir o processo de entrada no grupo desejado.

CreateBeaconCallback_t

Usado como resposta a uma chamada à função ISteamParties::CreateBeacon. Se a chamada for bem-sucedida, isso significa que o convite aberto foi publicado no local desejado e o jogo poderá começar a receber disparos de retornos de chamada do tipo ISteamParties::ReservationNotificationCallback_t para usuários que seguirem o convite aberto.

NomeTipoDescrição
m_eResultEResultO resultado da tentativa de criar um convite aberto.
m_ulBeaconIDPartyBeaconID_tO ID do convite aberto recém-criado.

ReservationNotificationCallback_t

Depois de criar um convite aberto, quando um usuário "seguir" o convite, o Steam disparará este retorno de chamada para avisar que você deve se preparar para o usuário entrar na partida. Quando o usuário de fato entrar, chame a função ISteamParties::OnReservationCompleted para avisar o Steam de que a entrada foi bem-sucedida.

NomeTipoDescrição
m_ulBeaconIDPartyBeaconID_tO ID do convite aberto.
m_steamIDJoinerCSteamIDID Steam do usuário que está seguindo o convite aberto.

ChangeNumOpenSlotsCallback_t

Call result for ISteamParties::ChangeNumOpenSlots.

NomeTipoDescrição
m_eResultEResultO resultado da tentativa de alterar a quantidade de vagas abertas.

AvailableBeaconLocationsUpdated_t

Notificação de que a lista de locais disponíveis para publicação de convites abertos foi atualizada.

Este retorno de chamada não possui campos.

ActiveBeaconsUpdated_t

Notificação de que a lista de convites abertos ativos visíveis ao usuário atual foi alterada.

Este retorno de chamada não possui campos.

Structs

Estas são as structs com as quais funções da interface ISteamParties podem retornar e/ou interagir.

SteamPartyBeaconLocation_t



NomeTipoDescrição
m_eTypeESteamPartyBeaconLocationTypeO tipo do local.
m_ulLocationIDuint64Identificador opaco do local.

Enumerações

Estas são as enumerações definidas para uso com ISteamParties.

ESteamPartyBeaconLocationType

Tipos de locais onde convites abertos podem ser publicados.

NomeValorDescrição
k_ESteamPartyBeaconLocationType_Invalid0Tipo de local inválido.
k_ESteamPartyBeaconLocationType_ChatGroup1Uma sala de conversa no Steam.
k_ESteamPartyBeaconLocationType_MaxO valor deste campo será sempre o maior valor válido, mais um.

ESteamPartyBeaconLocationData

Tipos de metadados estendidos para locais de convites abertos.

NomeValorDescrição
k_ESteamPartyBeaconLocationDataInvalid0Tipo de dado de local inválido.
k_ESteamPartyBeaconLocationDataName1O nome do local, se houver.
k_ESteamPartyBeaconLocationDataIconURLSmallSe o local possuir um ícone associado, este é o URL para a imagem do ícone em formato pequeno.
k_ESteamPartyBeaconLocationDataIconURLMediumSe o local possuir um ícone associado, este é o URL para a imagem do ícone em formato médio.
k_ESteamPartyBeaconLocationDataIconURLLargeSe o local possuir um ícone associado, este é o URL para a imagem do ícone em formato grande.

Tipos definidos

Estes são os tipos definidos por typedefs para uso com ISteamParties.

NomeTipo baseDescrição
PartyBeaconID_tuint64Um handle para um convite aberto para grupo no Steam.