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
- Baixe o Visual Studio. A versão Community é gratuita.
- Cargas de trabalho necessárias: Desenvolvimento para desktop com .NET e Desenvolvimento para desktop com C++
- Baixe o código-fonte do Unreal Engine. Para obter instruções, consulte Baixando o código-fonte do Unreal Engine (externo).
- Projeto do Unreal concluído com o PlayFab Unreal GSDK instalado e configurado
- Configuração “Development Server” do seu projeto, criada a partir do Visual Studio
- [Opcional] Baixe o LocalMultiplayerAgent
- [Opcional] Como alternativa, baixe o código-fonte do LocalMultiplayerAgent.
- Configuração “Debug” ou “Release” do LocalMultiplayerAgent, criada a partir deste repositório com o Visual Studio
- Usando o Visual Studio, abra o MpsAgent.sln, selecione a configuração Debug ou Release e crie o LocalMultiplayerAgent.
- [Opcional] Instale o Docker para Windows
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]
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 \\]:
... 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
- 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
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.
