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.-
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.Numbernã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.Namecom 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.
CurrentGameState - Initializing
(Isso pode não aparecer se o seu servidor de jogo chamar GSDK::ReadyForPlayers diretamente e não chamar GSDK::Start)CurrentGameState - StandingByCurrentGameState - ActiveCurrentGameState - Terminating
