Pular para o conteúdo principal

Posso misturar os serviços Multiplayer Activity (MPA) e Multiplayer Session Directory (MPSD) no meu título?

Não, não é possível misturar chamadas do MPA e do MPSD em um título. Os títulos precisam escolher qual serviço usar com base nos requisitos funcionais.

Como posso acessar a API do Multiplayer Session Directory (MPSD) a partir de um serviço?

Para obter mais informações, consulte Gerenciamento de sessões multiplayer de serviço para serviço.

Meu título pode assinar alterações de mais de uma sessão?

Sim, um título pode assinar para receber alterações de no máximo 10 sessões por conexão.

Um jogador será removido imediatamente se a conexão de rede for perdida ou se ele desligar o console?

A conexão web socket permite que o Multiplayer Session Directory (MPSD) detecte rapidamente a desconexão do cliente e defina o cliente como Inactive. Os membros da sessão são removidos assim que o tempo limite para a remoção de inativos expira. Para obter mais informações, consulte a seção Tempos limite da sessão no tópico “Tópicos avançados de sessões multiplayer”.

Como determino qual ID de configuração de serviço (SCID), modelo de sessão e área restrita usar?

Se você não participou do registro inicial do seu título, que é quando essas informações foram criadas, não terá acesso direto a elas. Entre em contato com seu gerente de contas de desenvolvedor (DAM), que pode obter esses dados para você.

Vocês têm um exemplo de corpo de requisição que eu possa comparar com o do meu título?

Consulte a estrutura da requisição em MultiplayerSessionRequest (JSON).

O que devo fazer se receber um código de status HTTP 403 ao chamar o MPSD?

Geralmente, isso é um problema de permissões ou de escopo. Colete rastreamentos do Fiddler para obter mais informações e, em seguida, verifique as mensagens retornadas no corpo da HttpResponse em busca de mensagens 403 comuns.
  • “The requested service configuration cannot be accessed.”
    • Confirme que você está usando uma conta que tem acesso à área restrita.
    • Confirme que você está na área restrita correta.
    • Se você estiver usando a autenticação por certificado e receber esse erro, entre em contato com seu DAM.
  • “The requested session cannot be accessed. The calling user must have multiplayer privilege, and private sessions can only be read by session members.”
    • Você não tem a capacidade de ver a sessão, possivelmente porque está tentando acessar uma sessão com visibilidade Private. Se a visibilidade estiver definida como Private, somente os membros dessa sessão poderão ler o documento da sessão.
    [!NOTE] Um jogador deve ter uma conta XBOX Live Gold para registrar uma nova sessão. Sem os privilégios da conta Gold, as requisições para registrar uma nova sessão retornam HTTP 403.
  • “The request body can’t contain existing member references unless the authentication principal includes a server.”
    • Você não pode adicionar outro jogador a uma sessão em nome desse jogador. Você só pode convidá-lo. Para convidar um jogador, defina o índice como reserve_<number>.

O que devo fazer se receber um código de status HTTP 404 ao chamar o MPSD?

Colete rastreamentos do Fiddler para obter mais informações e, em seguida, siga as etapas a seguir.
  1. Verifique a mensagem retornada no corpo da HttpResponse em busca de mensagens 404 comuns, como as seguintes.
    • “The requested service config is either invalid or not configured for sessions.” Verifique se você está usando o SCID correto.
    • “The requested session wasn’t found.” Verifique se a sessão foi criada e se o modelo de sessão está correto antes de recuperá-la. Você pode criar uma sessão com uma chamada PUT.
  2. Verifique o URI que você está usando.
  3. Reinicie o console ou entre como outro jogador.
  4. Verifique os fóruns de desenvolvedores de jogos em busca do código de erro ou de outras soluções.
  5. Confirme que a sessão não foi excluída por estar vazia. As sessões podem ficar vazias porque os jogadores atingem o tempo limite. Quando isso acontece, geralmente é porque todos os membros da sessão estão em um estado ao qual se aplica um tempo limite, como Ready ou Inactive. Para obter mais informações, consulte a seção Estados de usuário da sessão no tópico “Tópicos avançados de sessões multiplayer”.

Por que estou recebendo um código de status HTTP 404 ao chamar XblMultiplayerWriteSessionByHandleAsync ou XblMultiplayerGetSessionByHandleAsync?

Se o seu título usa um identificador para acessar uma sessão do MPSD em resposta a uma ativação de protocolo de entrada que contém um ID de identificador, o ID de identificador na ativação de protocolo pode estar desatualizado por um dos motivos a seguir.
  • A exibição da interface do usuário no shell do XBOX a partir da qual o título iniciou a entrada pode estar desatualizada. Algumas exibições da interface do usuário, como o cartão de perfil do jogador, não atualizam automaticamente os identificadores de entrada enquanto estão abertas. Para evitar receber o código de status HTTP 404, o título deve fechar e reabrir a exibição para atualizar os dados antes de ingressar.
  • O jogador no qual o título está ingressando pode ter trocado de sessão de atividade depois que o título selecionou a operação de entrada na interface do usuário do shell do XBOX. Esse motivo é raro.
Em qualquer um desses casos, o código do seu título deve mostrar ao jogador que está ingressando uma mensagem de erro indicando que a entrada falhou.

Por que estou recebendo um código de status HTTP 412 ao chamar o MPSD?

A requisição a seguir retorna HTTP 412 se a sessão já existir.
A requisição a seguir retorna HTTP 412 se o ETag da sessão não corresponder ao cabeçalho If-Match.
Para obter mais informações, consulte a seção Sincronização das atualizações de sessão no tópico “Visão geral do Multiplayer Session Directory”.

Por que estou recebendo um código de status 400, 405, 409, 503 ou semelhante ao chamar o MPSD?

Colete rastreamentos do Fiddler para obter mais informações e, em seguida, verifique as mensagens retornadas no corpo da HttpResponse. Com essas informações, você deve conseguir identificar e corrigir o erro. Caso contrário, pesquise soluções nos fóruns de desenvolvedores. Você também pode obter o corpo da resposta se estiver usando a XBOX Services API (XSAPI), conforme descrito em Solução de problemas da XBOX Services API. Como alternativa, seu código pode usar HCTraceSetClientCallback para enviar a saída para a interface do usuário do título.

O que posso ou devo alterar nos modelos de sessão do meu título?

Os modelos de sessão são padrões para suas sessões, e você não pode substituir as constantes já definidas nos modelos. No entanto, você pode adicionar novas propriedades aos modelos. Para obter mais informações, consulte Modelos de sessão multiplayer e Visão geral do Multiplayer Session Directory.

Por que estou recebendo um erro informando que minha sessão não foi inicializada?

Veja a seguir um exemplo da mensagem de erro que você pode receber. 400 - \[ResponseBody\]: This session is configured for managed initialization requiring at least 2 members to start. A sessão não pode ser criada porque a requisição não inclui reservas de membros da sessão suficientes com o campo initialize definido como true. Seu código pode definir esse campo para um membro usando o parâmetro initializeRequested de XblMultiplayerSessionAddMemberReservation ou XblMultiplayerSessionJoin. Quando a inicialização estiver especificada no seu modelo de sessão, verifique se "initialize": true está definido para reservas de membros suficientes para atender aos requisitos de qualidade de serviço (QoS) do matchmaking. Para obter mais informações, consulte Inicialização da sessão de destino e QoS.

Por que minha sessão não está sendo criada quando recebo um código de status HTTP 204?

Esse código de status indica que nenhum jogador foi adicionado à sessão quando você a criou. Se nenhum jogador estiver na sessão quando ela for criada e o tempo limite de sessão vazia for zero (padrão), a sessão não será criada. Inclua pelo menos um jogador ao criar uma sessão. Para cenários de servidor dedicado, obtenha um jogador que esteja tentando criar uma partida ou que precise criar uma partida e torne esse jogador o jogador inicial da partida. Como alternativa, você pode alterar ou remover o tempo limite de sessão vazia. Para obter mais informações, consulte a seção Tempos limite da sessão no tópico “Tópicos avançados de sessões multiplayer”.

Quando devo sondar o MPSD?

Seus títulos devem evitar sondar o MPSD. Se um título precisar descobrir alterações em sessões do MPSD, ele deverá assinar eventos de alteração de sessão. Para obter mais informações, consulte a seção Assinar notificações de alteração de sessão do MPSD no tópico “Tarefas de multiplayer”.

Posso usar XblMultiplayerQuerySessionsAsync para implementar a navegação de sessões ou o matchmaking?

O método XblMultiplayerQuerySessionsAsync destina-se a chamadas pouco frequentes para ajudar na depuração. Devido a limitações do serviço, os resultados de sessão dessa API não são em tempo real e podem estar incompletos quando ela é chamada com mais frequência. Para implementar a funcionalidade de navegação de sessões, consulte a seção “Identificadores de pesquisa” em Navegação de sessões multiplayer. Para implementar o matchmaking, consulte Usando o matchmaking SmartMatch.

O que acontece se um jogador que foi reservado ou convidado para uma sessão não ingressar nela?

Depende de o título estar em execução quando o jogador é notificado de que a sessão de jogo está pronta. Se o jogador estiver no título e não aceitar a notificação da sessão de jogo na interface do usuário do título, o título será responsável por remover o jogador da sessão de jogo usando o método XblMultiplayerSessionLeave. Se o título estiver restrito ou não estiver em execução, o shell fornecerá uma notificação informando ao jogador que há uma vaga disponível. Se o jogador recusar ou ignorar a notificação do sistema, o MPSD removerá esse jogador da sessão de jogo.

Por que uma sessão criada não seria encontrada pelo matchmaking?

No XBOX One, simplesmente criar uma sessão não é suficiente para que o matchmaking encontre a nova sessão. Você deve criar um tíquete de partida para começar a divulgar a sessão ao serviço de matchmaking. Para obter mais informações, consulte a visão geral do matchmaking.

Se uma sessão de jogo tem vagas abertas para jogadores e oferece suporte à entrada em andamento, por que os jogadores não conseguiriam encontrar a sessão depois que ela começou?

Quando uma sessão de jogo começa, ela não é mais divulgada no serviço de matchmaking. Se vagas para jogadores ficarem disponíveis na sessão e o árbitro (host) quiser atrair novos jogadores, o árbitro deverá criar um novo tíquete de partida para a sessão em andamento chamando o método XblMatchmakingCreateMatchTicketAsync. O tíquete divulga a sessão novamente e encontra mais jogadores. Para obter mais informações, consulte a visão geral do matchmaking.

Se uma sessão de jogo estiver aberta, um jogador que acabou de ingressar em um jogo pode simplesmente ingressar na sessão e começar a jogar sem esperar pela reserva?

Sim. Isso é especialmente útil quando o seu título usa várias sessões para acompanhar subgrupos de jogadores dentro de uma sessão de jogo. O jogador que está ingressando pode ingressar na sessão que representa o grupo dele e, em seguida, precisar ingressar na sessão de jogo maior.

Quando sessões de jogo grandes estão sendo jogadas no meu título, por que nem todos os membros da sessão estão vendo a notificação de convite de jogo?

Quando o seu título adiciona um jogador à sessão por meio da entrada, o título sempre define o membro InitializeRequested de XblMultiplayerSessionMember como true. Isso informa ao MPSD que aguarde os demais membros da sessão antes de tirar o jogo do estágio de inicialização. Caso contrário, os jogadores têm muito pouco tempo para ingressar e podem perder as notificações de alterações na sessão.
Última modificação em 8 de outubro de 2026