Pular para o conteúdo principal

Como executar um servidor de jogo usando o LocalMultiplayerAgent no modo de processo

Este tutorial descreve como:
  • Criar um build usando o exemplo Wrapper
  • Configurar o MultiplayerSettings.json
  • Executar o LocalMultiplayerAgent
  • Testar a conexão do seu jogo

Criar um build do jogo

Para testar seus servidores de jogo usando o LocalMultiplayerAgent (LMA), você precisa criar um build do jogo e salvá-lo em formato de arquivo compactado. Para facilitar, fornecemos o exemplo Wrapper com instruções e um script do PowerShell. Em seguida, siga a etapa “Encapsulando um servidor de jogo existente usando o aplicativo wrapper” para preparar seu servidor de jogo para este tutorial.

Configurar o MultiplayerSettings.json

Navegue até a pasta em que você extraiu o conjunto de ferramentas do LMA e abra o arquivo MultiplayerSettings.json. Esse arquivo é um arquivo simulado de configuração de build que simula o build no MPS. Você pode preencher o json usando o Gerador de MultiplayerSettings.json do LMA. O Gerador é uma página da Web simples que cria o json com base nas suas opções. Você pode encontrar o Gerador na pasta extraída do LMA. Veja a seguir um exemplo de MultiplayerSettings.json para o exemplo Wrapper executar o LMA no modo de processo.
Certifique-se de atualizar corretamente os seguintes campos no MultiplayerSettings.json para executar o LMA no modo de processo.
  • LocalFilePath: caminho local completo (na sua estação de trabalho) para o arquivo zip de ativos do servidor de jogo criado anteriormente, por exemplo: D:\MyAmazingGame\asset.zip (observe que as barras invertidas precisam ser escapadas para a formatação JSON).
  • StartGameCommand: o caminho de StartGameCommand para um processo é um caminho relativo. O diretório de trabalho será o local em que o ativo do jogo for extraído.
  • PortMappingsList: são as portas disponíveis para o seu jogo durante a execução.
    • NodePort é a porta aberta na sua estação de trabalho
    • GamePort.Number não é necessário no modo de processo. O número da porta será associado à NodePort por meio do GSDK quando o servidor de jogo estiver em execução. No cenário real, o MPS associará a porta dinamicamente para cada sessão de jogo baseada em processo.
    • Defina GamePort.Name com o mesmo valor definido no seu servidor de jogo. Você pode verificar o valor na configuração do GSDK em runtime, com a chave GamePort.Name. Se você estiver usando o exemplo Wrapper, o nome da porta já está definido como “game_port”, portanto, defina o mesmo valor aqui.
    • GamePort.Protocol: especifique o tipo de protocolo: TCP ou UDP
  • OutputFolder: caminho para uma unidade ou pasta em que as saídas e os arquivos de configuração são gerados. Verifique se há espaço suficiente disponível, pois o servidor de jogo será extraído nesse caminho. Se não for especificado, a pasta do agente será usada.
  • AgentListeningPort: é a porta para o LMA se comunicar com o servidor de jogo. Qualquer porta aberta funcionará; 56001 é o valor padrão. Se houver outro processo associado à porta 56001, você deverá alterar esse valor ou encerrar o outro processo na porta 56001.
  • ResourceLimits: não é necessário no modo de processo.
  • MountPath: não é necessário no modo de processo.
  • SessionCookie (opcional): qualquer cookie de sessão que é passado ao seu servidor de jogo como parte da chamada à API RequestMultiplayerServer. No cenário real no MPS, depois que a conexão é estabelecida, o servidor notifica o cliente para carregar os recursos correspondentes a partir do SessionCookie.

Executar o LocalMultiplayerAgent

Agora você está pronto para executar o LocalMultiplayerAgent.
  • Em uma janela do PowerShell:
    Navegue até o diretório do LMA que contém o LocalMultiplayerAgent.exe.
  • Execute LocalMultiplayerAgent.exe. Neste ponto, o LMA configura o ouvinte http, descompacta o ativo do jogo e inicia o servidor de jogo em um processo separado.
    Se você estiver executando o servidor de jogo como um processo, o Firewall do Windows poderá aparecer e perguntar se você deseja permitir o tráfego para a NodePort especificada. Para evitar isso, você pode executar o LocalMultiplayerAgent no modo de administrador ou habilitar a porta no firewall.
O LMA aguardará as pulsações do GSDK integrado ao seu servidor de jogo. Se o GSDK estiver integrado corretamente, o LMA imprimirá as saídas na seguinte ordem:
  1. CurrentGameState - Initializing
    (Isso pode não aparecer se o seu servidor de jogo chamar GSDK::ReadyForPlayers diretamente e não chamar GSDK::Start)
  2. CurrentGameState - StandingBy
  3. CurrentGameState - Active
  4. CurrentGameState - Terminating
Para saber mais sobre os estados de um servidor de jogo, consulte O que é o ciclo de vida do servidor de jogo do PlayFab Multiplayer Server. Se os retornos de chamada de desligamento estiverem configurados corretamente, o servidor de jogo será encerrado logo depois que o estado for definido como Terminating. É importante verificar se o servidor de jogo é encerrado, para evitar desligamentos abruptos na plataforma PlayFab. O LMA também deve ser encerrado junto com o jogo.

Testar a conexão com o seu jogo

Depois que o LMA imprimir CurrentGameState - Active, você poderá se conectar ao seu servidor de jogo usando o endereço IP 127.0.0.1 e a porta NodePort na qual o servidor de jogo está escutando. Se você estiver usando o exemplo Wrapper, poderá testar uma solicitação GET inserindo o endereço http://127.0.0.1:56100/Hello no navegador. Para obter mais detalhes, confira o exemplo Wrapper. Você também pode atualizar os valores de NumHeartBeatsForActivateResponse e NumHeartBeatsForTerminateResponse no MultiplayerSettings.json para ajustar a duração dos estados standing-by/active.
Última modificação em 8 de outubro de 2026