Pular para o conteúdo principal

Implantação local e depuração do projeto de exemplo ThirdPersonMP

O objetivo deste guia é demonstrar a execução do seu servidor de jogo no seu computador local, de forma compatível com o MPS, para que você possa testar e depurar seu servidor antes de carregá-lo no PlayFab.

Objetivos

  • Testar as opções de implantação local do projeto ThirdPersonMP+GSDK.
  • Verificar se o seu servidor é executado corretamente quando executado com o LocalMultiplayerAgent
  • Verificar se você consegue anexar um depurador à instância do seu servidor

Requisitos

Notação

{depot} se referirá ao caminho completo do Windows do local em que você baixa seus projetos Git. Eles podem estar em qualquer lugar, como: C:\depot, S:\depot, Z:\gitrepos ou qualquer unidade e caminho que sejam convenientes para você. Normalmente, é recomendável (especialmente para o Unreal) que o caminho {depot} seja o mais curto possível. Para o autor, {depot} é resolvido como: M:\depot\GSDK. Por exemplo, com a lista de requisitos acima, você provavelmente terá alguns ou todos os seguintes:
  • {depot}/ThirdPersonMP
  • {depot}/MpsAgent
  • [Opcional] {depot}/gsdk [contém o plug-in PlayFab Unreal GSDK instalado anteriormente no ThirdPersonMP]
  • [Opcional] {depot}/UnrealMarketplacePlugin [contém o plug-in PlayFab Unreal Marketplace, que não é necessário para este guia, mas é necessário para a maioria dos recursos do PlayFab]
Não é obrigatório ter todos eles no mesmo local, mas provavelmente é útil fazer isso, e, para fins de organização, este guia incentiva que você o faça.

Instruções

Execução local, sem contêineres

Primeiro, você precisará configurar o LocalMultiplayerAgent para executar seu projeto de servidor. A primeira iteração executa o processo diretamente no seu PC local, sem nenhum isolamento. No Explorador, encontre e abra o arquivo: {depot}\MpsAgent\LocalMultiplayerAgent\MultiplayerSettings.json. Uma versão abreviada desse arquivo, com as partes importantes para este guia, é a seguinte [OBSERVE os \‘s escapados nos caminhos do json: este é um arquivo json e, portanto, é obrigatório escapar todos os \‘s como \\]:
Para os fins deste guia, as partes do arquivo json ocultadas por ... acima simplesmente usam os padrões do projeto. A finalidade e os valores dos campos importantes são os seguintes:
  • RunContainer: neste guia, sempre será false. Definir como true exige o Docker.
    • Quando true, ProcessStartParameters/StartGameCommand é ignorado, e ContainerStartParameters/StartGameCommand é usado em seu lugar
    • Quando true, tudo é criado e executado em um contêiner do docker, em vez de no contexto do computador local
    • Este guia aborda o cenário em que RunContainer é false, para que possamos depurar o processo do servidor com mais facilidade
    • Definir como true exige um build de Shipping Server e o Docker para Windows adicional
  • OutputFolder: "<Local absolute path that will be used to store the required output artifacts>"
    • Esse local deve estar totalmente definido, e um diretório válido deve existir nesse local.
  • AssetDetails/LocalFilePath: {PATH-TO-ZIP}
    • Esse local deve estar totalmente definido, e um arquivo zip válido deve existir nesse local
    • Esse arquivo zip deve conter um build “Shipping Server” totalmente construído
  • PortMappingsList:
    • É o equivalente no LocalMultiplayerAgent à definição da porta no Game Manager
    • O plug-in GSDK está codificado para procurar uma porta com o nome: gameport
    • O método SetDefaultServerHostPort do plug-in GSDK substituirá internamente a porta interna de hospedagem do servidor Unreal para corresponder a essa porta
    • O plug-in GSDK só usará a porta chamada gameport, configurada em PortMappingsList ao usar o LocalMultiplayerAgent.
    • Este json permite testar localmente o fornecimento desse número de porta pelo MPS e garante que o plug-in GSDK o receberá corretamente
  • ContainerStartParameters/StartGameCommand: enquanto RunContainer for false, não é usado.
    • Quando RunContainer==true, ele substitui ProcessStartParameters/StartGameCommand
    • Esse caminho é o caminho interno dentro do contêiner do docker e será a soma de AssetDetails/MountPath com o caminho interno até o exe no arquivo zip definido por AssetDetails/LocalFilePath
    • Neste exemplo, poderia ser: C:\\Assets\\ThirdPersonMPServer.exe -log
  • ProcessStartParameters/StartGameCommand: esse comando será, na prática, o caminho para o seu exe e quaisquer parâmetros de linha de comando usados para iniciar o servidor de jogo
    • -log é um comando do Unreal que instrui o servidor de jogo a salvar um log de execução
    • {PATH-TO-EXE} pode ser uma de duas opções:
      • Qualquer caminho absoluto para um exe do seu servidor de jogo (até mesmo um servidor de jogo de desenvolvimento), mais quaisquer parâmetros de linha de comando do servidor
        • Essa opção ignora o conteúdo do arquivo zip e, em vez disso, executa qualquer exe arbitrário em qualquer local
        • Esta é uma opção de depuração local que só funciona no seu computador local para depurar builds de desenvolvimento: ela não ajuda a verificar se o seu arquivo zip está pronto para ser carregado no MPS
        • Essa opção deve ser usada ao testar um servidor de desenvolvimento, adequado para anexar um depurador do VS
        • Neste exemplo, poderia ser: {depot}\\ThirdPersonMP\\Binaries\\Win64\\ThirdPersonMPServer.exe -log
        • Para o autor, é: M:\\depot\\GSDK\\ThirdPersonMPGSDK\\Binaries\\Win64\\ThirdPersonMPServer.exe -log
      • Um caminho relativo, que deve indicar o caminho relativo dentro do seu arquivo zip para executar o servidor
        • Este é o fluxo de trabalho padrão, que espelha como funciona em uma instância de nuvem do MPS
        • Essa opção deve ser usada ao testar um shipping server e ajuda a verificar se o seu zip está pronto para ser carregado no MPS
        • Neste exemplo, poderia ser: ThirdPersonMPServer.exe -log
Depois de criar seu arquivo zip e definir todas essas linhas com os valores apropriados, você poderá recriar o LocalMultiplayerAgent e se preparar para depurar seu servidor.

Depurar seu servidor

Você pode executar o LocalMultiplayerAgent a partir do Visual Studio com o comando “Start New Instance”, às vezes associado à tecla F5, ou pode navegar até {depot}\LocalMultiplayerAgent\bin\{configuration}\netcoreapp3.1 e clicar duas vezes em “LocalMultiplayerAgent.exe”. Você também pode executá-lo em uma janela cmd para observar ou capturar informações do log de depuração. Executar o LocalMultiplayerAgent.exe deverá iniciar seu servidor de jogo. Normalmente, você vai querer ter o Gerenciador de Tarefas aberto para isso. Você pode encontrar a ID do processo do servidor de jogo na guia Detalhes do Gerenciador de Tarefas. Quando vir o processo ThirdPersonMPServer em execução no Gerenciador de Tarefas, você poderá retornar ao Visual Studio e selecionar o menu suspenso Debug -> Attach to Process. Na janela pop-up, você pode pesquisar o nome do processo, ThirdPersonMPServer, e selecionar a ID de processo correta, identificada no Gerenciador de Tarefas. Neste ponto, você deverá conseguir realizar a depuração típica no seu servidor de jogo. OBSERVAÇÃO: o Unreal oferece várias configurações de build e várias maneiras de criar o build do servidor. Para obter os melhores resultados, use a configuração “Development Server” e a saída criada diretamente a partir do Visual Studio. Builds de Shipping ou builds do Development Editor podem funcionar melhor em outras situações, mas a configuração “Development Server” criada diretamente a partir do Visual Studio será mais fácil de anexar e depurar no Visual Studio.

Solução de problemas

Muitas instâncias de ThirdPersonMPServer no Gerenciador de Tarefas

Se houver várias instâncias listadas (geralmente 3 ou mais), talvez seja necessário usar o Gerenciador de Tarefas para forçar o fechamento das instâncias remanescentes de tentativas anteriores.

O LocalMultiplayerAgent inicia duas instâncias de ThirdPersonMPServer

Se o seu LocalMultiplayerAgent iniciar várias instâncias, procure a ID de processo com um uso de memória comparativamente alto. Algumas configurações do servidor de jogo geram dois executáveis, que são executados em par. Você vai querer anexar ao que tem o maior uso de memória.

Próximas etapas

Agora você está pronto para implantar seu servidor na nuvem. Como alternativa, você pode retornar ao guia principal do plug-in Unreal GSDK.
Última modificação em 8 de outubro de 2026