> ## 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 builds usando PowerShell/API

> Implante builds de VM do PlayFab Multiplayer Servers pelo PowerShell e pela API do Multiplayer Servers, incluindo o carregamento de ativos e a criação de builds para o sistema operacional Windows.

Este artigo fornece uma visão geral de como implantar/criar builds para VMs usando o sistema operacional Windows no PowerShell em um dispositivo de desenvolvimento com Windows 10.

Ao implantar um build usando PowerShell/API, você provavelmente usará uma combinação do Game Manager e das APIs. Por isso, os comandos de PowerShell/API estão listados por funcionalidade abaixo.

Se esta for a primeira vez que você implanta um build, recomendamos implantar um build usando o [exemplo Wrapper](/pt-BR/services/playfab/multiplayer/servers/wrapper-sample), pois ele vem com todos os ativos necessários para realmente implantar servidores.

<Note>
  Para usar e ver o PlayFab Multiplayer Servers, você precisa habilitar o recurso. Se você for um novo usuário, recomendamos usar o método do Game Manager para habilitar esse recurso. Para obter instruções, consulte [Habilitar o recurso PlayFab Server](/pt-BR/services/playfab/multiplayer/servers/enable-playfab-multiplayer-servers).
</Note>

## Obter a ID do título e a chave secreta de desenvolvedor

* Obtenha a ID do título do PlayFab
  * Faça logon na sua conta de desenvolvedor em [PlayFab.com](https://developer.playfab.com)
  * No Game Manager, vá para a página **My Studios and Titles**. Procure o título do seu jogo e obtenha a ID do título do jogo no PlayFab

* Obtenha a chave secreta de desenvolvedor do título
  * No Game Manager, selecione seu título > configurações (ícone de engrenagem)
  * Selecione **Title settings** e, em seguida, a guia **Secret Keys** para obter a chave secreta de desenvolvedor

Para obter mais informações sobre chaves secretas, consulte [Gerenciamento de chaves secretas](/pt-BR/services/playfab/live-service-management/gamemanager/secret-key-management).

## Instalar o módulo do PowerShell PlayFab MultiplayerAPI

1. Abra o Windows PowerShell como Administrador

2. Se você instalou anteriormente o módulo [PlayFab Multiplayer PowerShell](https://github.com/PlayFab/MultiplayerPowershell), desinstale-o com o comando a seguir. Esse módulo foi preterido.

```powershell theme={null}
Uninstall-Package PlayFabMultiplayer
```

Para ajudar na transição para o novo módulo, consulte [Mapeamento de comandos](#mapping-commands) para encontrar os novos comandos equivalentes. Saiba que tanto os comandos quanto os argumentos podem ser diferentes.

3. Instale o novo [módulo PlayFabMultiplayer API](https://github.com/PlayFab/MpsPowershell)

Para obter a documentação detalhada sobre cada comando, consulte a [documentação dos cmdlets](https://github.com/PlayFab/MpsPowershell/tree/main/MpsPowershell/docs).

```powershell theme={null}
Install-Module -Name PlayFabMultiplayerApi
```

<Tip>
  Antes de instalar o módulo, talvez seja necessário definir sua política de execução executando primeiro `Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser` no PowerShell. Para saber mais, consulte [Políticas de execução do PowerShell](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies).
</Tip>

4. Saiba mais sobre os cmdlets do módulo PlayFab Multiplayer PowerShell executando o comando a seguir. Ou consulte a [documentação de referência dos cmdlets do PlayFabMultiplayerApi](https://github.com/PlayFab/MpsPowershell/tree/main/MpsPowershell/docs).

```powershell theme={null}
Get-Command -Module PlayFabMultiplayerApi | Get-Help
```

## Obter um EntityToken para o seu título

Execute o comando a seguir usando a ID do título e a chave de desenvolvedor associada. Você deve executar esse comando no início de qualquer sessão ao usar o módulo do PowerShell PlayFabMultiplayerApi.

Ele chama a API [GetEntityToken](xref:titleid.playfabapi.com.authentication.authentication.getentitytoken) para obter um EntityToken e o armazena em uma variável de ambiente para uso em cmdlets futuros.

```powershell theme={null}
Set-PfTitle -TitleID "mytitleID" -SecretKey "mysecretkey"
```

## Habilitar o recurso de servidores multijogador para o seu título

Execute o cmdlet abaixo para habilitar os recursos do Multiplayer Servers. Ele chama a API [enable multiplayer servers](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.enablemultiplayerserversfortitle).

```powershell theme={null}
Enable-PfMultiplayerServer
```

Se você receber um erro que diz `Title must have a valid payment instrument associated with it in order to enable Multiplayer Servers`, consulte [Habilitar o PlayFab Multiplayer Servers](/pt-BR/services/playfab/multiplayer/servers/enable-playfab-multiplayer-servers) usando o Game Manager para adicionar suas informações de pagamento.

<a id="upload-an-asset" />

## Carregar um ativo

Carregar um ativo é obrigatório ao implantar um build para servidores Windows. Isso ocorre porque seus ativos personalizam a imagem de contêiner Windows gerenciada.

No entanto, é opcional ao implantar um build para servidores Linux, pois você pode personalizar a imagem de contêiner Linux. Para saber mais, consulte [Criar e implantar builds Linux](/pt-BR/services/playfab/multiplayer/servers/deploying-linux-based-builds).

Execute este comando para carregar um ativo.

```powershell theme={null}
New-PfAsset -FilePath C:\MyAsset.zip -AssetName MyAsset.zip
```

em que:

* **Filepath**: caminho para o arquivo local que você deseja carregar
* **AssetName**: nome do ativo a ser carregado

Para obter mais detalhes, consulte a [documentação de referência de New-PfAsset](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/New-PfAsset.md).

## Criar um build

* Ao criar um build para servidores Windows, você precisa ter carregado um ativo. Caso contrário, consulte [Carregar um ativo](#upload-an-asset).
* Ao criar um build para servidores Linux, você precisa ter carregado sua imagem de contêiner Linux personalizada no registro de contêiner do PlayFab. Para saber mais, consulte [Criar e implantar builds Linux](/pt-BR/services/playfab/multiplayer/servers/deploying-linux-based-builds).

<Info>
  Use os valores corretos para **$vmSize__ e __$regions** se você planeja aproveitar os recursos oferecidos para [avaliação gratuita](/pt-BR/services/playfab/multiplayer/servers/billing-for-thunderhead).
</Info>

Veja abaixo um código de exemplo para ajudar a implantar builds para servidores de jogo Windows.

```powershell theme={null}
$vmSize = "Standard_D2as_v4"
$regions = @( @{ StandbyServers = 1; MaxServers = 1; Region = 'EastUS'; ScheduledStandbySettings = $NULL } )
$ports = @( @{ Name = 'tcp_port'; Num = 8080; Protocol = 'TCP' }, @{ Name = 'udp_port'; Num = 8081; Protocol = 'UDP' } )
$gameAssets = @( @{ FileName = 'MyAsset.zip'; MountPath = 'C:\Assets' } )

$buildResponse = New-PfBuild -BuildName ExampleBuild -ContainerFlavor ManagedWindowsServerCore -StartMultiplayerServerCommand 'C:\Assets\MyCustomServer.exe' -GameAssetReferences $gameAssets -VMSize $vmSize -MultiplayerServerCountPerVM 1 -Ports $ports -RegionConfigurations $regions

# All PlayFabMultiplayerApi cmdlets return objects, so we can pass the returned object to ConvertTo-Json for human readability.
$buildResponse | ConvertTo-Json -depth 5
```

Veja abaixo um código de exemplo para ajudar a implantar builds para servidores de jogo Linux.

```powershell theme={null}
$vmSize = "Standard_D2as_v4"
$ports = @( @{ Name = 'tcp_port'; Num = 8080; Protocol = 'TCP' }, @{ Name = 'udp_port'; Num = 8081; Protocol = 'UDP' } )
$regions = @( @{ 'MaxServers' = 1; 'Region' = 'AustraliaEast'; StandbyServers = 1; 'ScheduledStandbySettings' = $NULL } )
$containerImageReference = @{ ImageName = "MyLinuxContainerImage"; Tag = "0.2" }

$buildResponse = New-PfBuild -BuildName ExampleBuild -ContainerFlavor CustomLinux -ContainerImageReference $containerImageReference -VMSize $vmSize -MultiplayerServerCountPerVM 1 -Ports $ports -RegionConfigurations $regions

# All PlayFabMultiplayerApi cmdlets return objects, so we can pass the returned object to ConvertTo-Json for human readability.
$buildResponse | ConvertTo-Json -depth 5
```

<Tip>
  Durante o desenvolvimento, desative todas as regiões não utilizadas ou não íntegras para evitar o uso de horas de núcleo de VM. O uso de horas de núcleo começa durante a inicialização da VM e continua até que a VM seja desligada. As VMs de uma região não serão desligadas automaticamente, a menos que a meta de servidores em espera da região chegue a 0 ou que a região seja excluída.
</Tip>

### Desligando VMs

Há três maneiras de desligar VMs

1. Definir a **meta de servidores em espera** de uma região como 0; isso desligará as VMs somente dessa região.
2. Excluir uma região específica de um build.
3. Excluir o build inteiro; isso desligará as VMs em **todas as regiões** desse build.

## Listar os builds implantados

Para ver uma lista de builds do seu título, execute os comandos abaixo.

```powershell theme={null}
Get-PfBuild | ConvertTo-Json -depth 5
```

### Solicitar um servidor multijogador

Depois que você criar um build, um ou mais servidores serão criados após a execução do seu arquivo .exe. Esses servidores agora estão "em espera".

Você pode vê-los ao listar todos os servidores que executam o nosso build usando este comando.

```powershell theme={null}
Get-PFMultiplayerServer -BuildId $buildResponse.data.BuildId -Region "EastUS"
```

Quando virmos alguns servidores em espera, vamos solicitar um para o jogo...

```powershell theme={null}
$sessionId = New-Guid
$serverResponse = Request-PfMultiplayerServer -BuildId $buildResponse.data.BuildId -PreferredRegions @('EastUS') -SessionId $sessionId
```

A resposta a essa chamada inclui um endereço IPv4 e um número de porta aos quais os clientes podem se conectar. O WindowsRunnerCSharp.exe hospeda um servidor Web simples, portanto, você pode navegar até o endereço IPv4 e o número da porta para obter uma resposta:

```powershell theme={null}
curl "http://$($serverResponse.data.Ipv4Address):$($serverResponse.data.Ports[0].Num)"
```

Esta é a essência dos servidores multijogador do PlayFab: em até 3 segundos após o seu serviço de matchmaking chamar [RequestMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.requestmultiplayerserver), o PlayFab alocará um novo servidor.

Esses servidores vêm de pools de servidores em espera reabastecidos continuamente, que você configura por região e por build.

<a id="mapping-commands" />

## Mapeamento de comandos

A tabela abaixo mostra o novo equivalente dos comandos antigos. Este é um mapeamento rápido para ajudar quem usou a versão anterior do módulo do PowerShell e precisa converter seus comandos existentes.

Leia a definição de cada comando para obter os detalhes completos da alteração, pois alguns dos argumentos também foram alterados.

| Comando do MultiplayerPowershell (antigo) | Módulo de API do MpsPowershell (novo) |
| - | - |
| Add-PFMultiplayerAsset | New-PfAsset |
| Add-PFMultiplayerCertificate | Invoke-PfUploadCertificate |
| Enable-PFMultiplayerServer | [Enable-PfMultiplayerServer](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Enable-PfMultiplayerServer.md) |
| Get-PFMultiplayerAsset | [Get-PfAssetSummary](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Get-PfAssetSummary.md) |
| Get-PFMultiplayerBuild | [Get-PfBuild](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Get-PfBuild.md) |
| Get-PFMultiplayerCertificate | [Get-PfCertificateSummary](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Get-PfCertificateSummary.md) |
| Get-PFMultiplayerContainerImages | [Get-PfContainerImage](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Get-PfContainerImage.md) |
| Get-PFMultiplayerImageTags | [Get-PfContainerImageTag](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Get-PfContainerImageTag.md) |
| Get-PFMultiplayerQosServer | [Get-PfQosServer](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Get-PfPartyQosServer.md) |
| Get-PFMultiplayerServer | [Get-PfMultiplayerServer](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Get-PfMultiplayerServer.md) |
| Get-PFTitleEntityToken | preterido |
| New-PFMultiplayerBuild | [New-PfBuild](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/New-PfBuild.md) |
| New-PFMultiplayerServer | [Request-PfMultiplayerServer](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Request-PfMultiplayerServer.md) |
| Remove-PFMultiplayerAsset | [Remove-PfAsset](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Remove-PfAsset.md) |
| Remove-PFMultiplayerBuild | [Remove-PfBuild](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Remove-PfBuild.md) |
| Remove-PFMultiplayerCertificate | [Remove-PfCertificate](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Remove-PfCertificate.md) |
| Remove-PFMultiplayerContainerImageTag | [Invoke-PfImageUntagContainer](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Invoke-PfImageUntagContainer.md) |
| Set-PFTitle | [Set-PfTitle](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Set-PfTitle.md) |

## Confira também

* [Passo a passo: implantar builds usando PowerShell/API](/pt-BR/services/playfab/multiplayer/servers/quickstart-for-multiplayer-servers-api-powershell)
* [Implantar um build usando o Game Manager](/pt-BR/services/playfab/multiplayer/servers/deploy-using-game-manager)
* [Criar seu primeiro servidor](/pt-BR/services/playfab/multiplayer/servers/create-your-first-server)
* [Exemplo Wrapper](/pt-BR/services/playfab/multiplayer/servers/wrapper-sample)
* [Exemplos e recursos](/pt-BR/services/playfab/multiplayer/servers/server-samples-resources)


## Related topics

- [Passo a passo: implantar builds usando PowerShell/API](/pt-BR/services/playfab/multiplayer/servers/quickstart-for-multiplayer-servers-api-powershell.md)
- [Gerenciar segredos (versão prévia)](/pt-BR/services/playfab/multiplayer/servers/manage-secrets.md)
- [Anexando um criador de perfil](/pt-BR/services/playfab/multiplayer/servers/attaching-a-profiler.md)
- [Implantar builds usando o Game Manager](/pt-BR/services/playfab/multiplayer/servers/deploy-using-game-manager.md)
- [Passo a passo: implantar builds usando o Game Manager](/pt-BR/services/playfab/multiplayer/servers/quickstart-for-multiplayer-servers-game-manager.md)
