> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Implantar um servidor Unreal Linux na nuvem do MPS

> Crie e implante um servidor dedicado Linux do Unreal Engine 5 no PlayFab Multiplayer Servers (MPS), com observações sobre a compilação cruzada a partir do Windows e o UE 4.26 ou 4.27.

# Configurar um servidor dedicado Linux no PlayFab

O objetivo deste guia é descrever todas as etapas necessárias para criar e verificar um servidor dedicado Linux. As etapas a seguir são específicas do Unreal Engine 5 (tanto o acesso antecipado quanto a versão oficial). O mesmo conjunto de etapas foi testado e também se aplica ao UE 4.26 e ao UE 4.27, com algumas pequenas diferenças relacionadas ao local da opção de empacotamento na interface do usuário do Unreal Engine, que é diferente no UE 4.27 e no acesso antecipado do UE5.

Mais informações sobre a implantação no Linux podem ser encontradas [aqui](https://github.com/PlayFab/MpsAgent/blob/main/LocalMultiplayerAgent/MultiplayerSettingsLinuxContainersOnWindowsSample.json)

## Requisitos

* Instale os [pré-requisitos do Unreal para Linux](https://docs.unrealengine.com/SharingAndReleasing/Linux/GettingStarted/)
* Instale o [Docker para Windows](https://docs.docker.com/desktop/windows/install/)

## Instruções

* Em **pré-requisitos do Unreal para Linux**, baixe a cadeia de ferramentas para o Unreal Engine instalado e execute o executável. Observe que, como em muitas partes destes guias, essas etapas só funcionarão se o seu Unreal Engine tiver sido criado a partir do código-fonte.
  * Após a conclusão da instalação, examine as variáveis de ambiente do Windows e confirme se a seguinte variável do sistema existe: **LINUX\_MULTIARCH\_ROOT**.
* No diretório de código-fonte do Unreal Engine:
  * Execute novamente: `Setup.bat`
  * Execute novamente: `GenerateProjectFiles.bat`
* Volte ao seu próprio projeto:
  * Clique com o botão direito do mouse no arquivo `{ProjectName}.uproject` e selecione **Generate Visual Studio project files**
  * Abra o arquivo \{ProjectName}.sln no Visual Studio
  * Defina a configuração como **Development Editor**
  * Crie e execute o Unreal Editor
* Neste ponto, você deverá conseguir empacotar seu projeto para servidor Linux em um diretório de sua escolha.
  * No Unreal Engine 5, no Editor, selecione o empacotamento no canto superior direito da tela; a opção Linux agora deverá estar disponível para seleção. No UE 4.26 e no UE 4.27, a opção de empacotamento fica na guia File.
  * Confirme suas configurações para Server e Shipping, selecione **Linux** para criar o build e, em seguida, selecione o diretório de saída.

## Criar uma imagem do Docker do servidor Linux

Nesta seção, configuraremos uma imagem do Docker que contém seu servidor Linux

* Agora que você criou um servidor Linux, navegue até esse diretório (Explorador do Windows ou terminal de sua escolha)
* Crie um novo arquivo chamado: `Dockerfile`
* Edite o arquivo com o editor de sua escolha (notepad, vim, emacs etc.)
* Copie e cole o conteúdo apresentado abaixo. Substitua \[YourProjectNameServer].sh pelo nome do executável do seu próprio servidor Linux (no mesmo diretório)

```Docker theme={null}
FROM ubuntu:18.04

# Unreal refuses to run as root user, so we must create a user to run as
# Docker uses root by default
RUN useradd --system ue
USER ue

EXPOSE 7777/udp

WORKDIR /server

COPY --chown=ue:ue . /server
USER root
CMD chown -R ue.ue $PF_SERVER_LOG_DIRECTORY && su ue -c ./YourGameNameServer.sh
```

OBSERVAÇÃO: o comando **chown** ajusta \$PF\_SERVER\_LOG\_DIRECTORY para que fique acessível ao processo do seu servidor e, em seguida, && encadeia o comando para executar o servidor

* Usando um terminal de sua escolha, navegue até o diretório do servidor Linux
  * Os usuários do Windows normalmente usam cmd ou powershell, embora o bash por meio de ferramentas de terceiros ou do WSL também esteja disponível
  * Os usuários de Mac e Linux normalmente usam bash
* Execute: `docker build -t "[imageName]:[tag]" .`, em que imageName e tag são opções de sua escolha.
  * Lembre-se desses nomes; você os usará novamente
  * Exemplos poderiam ser: **YourProjectNameServer** e **01**, respectivamente
  * O elemento **tag** normalmente é usado para controlar a versão da instância do seu servidor
  * Essas marcas serão usadas em uma etapa posterior
  * Você pode digitar **docker images** no terminal para recuperar imageName e tag se esquecer
* Digite **docker images** no terminal para verificar se a imagem do docker foi criada com êxito.
* Mantenha esta janela do terminal aberta e deixe-a de lado, pois teremos mais comandos para ela mais adiante
  * (Indicada como \[Docker terminal] nas etapas posteriores)

## Carregar a imagem de contêiner no registro do Azure do PlayFab

Neste ponto, você está pronto para enviar por push sua imagem do docker ao Registro de Contêiner do Azure do PlayFab, para que ela possa ser usada para iniciar seu build no PlayFab.

* Navegue até o [portal do desenvolvedor do PlayFab](https://developer.playfab.com/)
* Selecione seu título
* Selecione a guia **Multiplayer** à esquerda
* Selecione **New Build** no lado direito da tela.
* Escolha um nome
* Selecione um tipo de VM; para projetos ThirdPersonMP, **Dasv4 (2 núcleos)** será suficiente
* Em Server Details, defina Server Type como **Container** e Operating System como **Linux**.
* Selecione **Upload to container registry**.
* Na janela que aparecer:
  * Lembre-se do seu \[AzureUsername] desta janela, usado várias vezes nas próximas etapas
  * Selecione **Copy Docker Login Command**
* Volte à janela \{Docker terminal}
  * Cole o comando Docker Login no \[Docker terminal]. Esse comando conectará você ao Registro do Azure usado pelo PlayFab.
  * Digite: `docker tag [imageName]:[tag] [AzureUsername].azurecr.io/[imageName]:[tag]`
  * Digite: `docker push [AzureUsername].azurecr.io/[imageName]:[tag]`
  * Lembre-se de que AzureUsername foi exibido no portal do desenvolvedor do PlayFab, e imageName e tag foram escolhidos por você anteriormente.
* De volta ao site do PlayFab, em Server Details na página New Build, selecione Refresh ao lado de Container image.
* Clique no botão de seta e você deverá conseguir ver e selecionar a imagem do docker que carregou e a respectiva marca.
* No bloco Regions, selecione uma região próxima a você e defina Standby e Max como 1 (apenas para teste)
* No bloco Network, defina o campo Port Name como `gameport`
  * É obrigatório definir a porta que será usada para se conectar ao seu servidor de jogo
  * O Unreal GSDK contém código para ler essa porta automaticamente e substituir internamente a porta do host do servidor Unreal de acordo com esse valor
  * O nome dessa porta deve ser `gameport`
* Selecione **Add Build** e aguarde até que o status do build se torne **Deployed**

## Próximas etapas

Muitos usuários vão querer testar seu servidor [conectando um cliente de jogo](/pt-BR/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/connect-to-mps-hosted-build).

Caso contrário, você pode retornar ao guia principal do [plug-in Unreal GSDK](/pt-BR/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk).


## Related topics

- [Implantação do projeto GSDK na nuvem](/pt-BR/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-project-cloud-deployment.md)
- [Conectar-se a um servidor Unreal hospedado na nuvem](/pt-BR/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/connect-to-mps-hosted-build.md)
- [Visão geral do plug-in PlayFab Unreal GSDK](/pt-BR/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/index.md)
- [Criar e implantar builds Linux](/pt-BR/services/playfab/multiplayer/servers/deploying-linux-based-builds.md)
- [Teste e depuração do projeto GSDK](/pt-BR/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-project-local-deployment-and-debugging.md)
