次の方法で共有


PowerShell/API を使用したビルドの配置

このトピックでは、Windows 10 の開発デバイス上の PowerShellを 使用して Windows OS を使用する VM のデプロイ/ビルドを作成する方法の概要を説明します。

PowerShell/API を使用してビルドをデプロイする場合は、ゲーム マネージャーと API を組み合わせて使用することがあります。 そのため以下に、PowerShell/API コマンドを機能別に示します。

ビルドを初めて展開する場合は、Wrapper サンプルを使用してビルドを展開することをお勧めします。これは、実際にサーバーを展開するために必要なすべての資産が付属しているためです。

注意

PlayFab マルチプレイヤー サーバーを使用して表示するには、機能を有効にする必要があります。 新しいユーザーの場合は、ゲーム マネージャーメソッドを使用してこの機能を有効にすることをお勧めします。 手順については、「PlayFab サーバー 機能を有効にする」を参照してください。

タイトル ID と開発者の秘密鍵を取得する

  • PlayFab タイトル ID を取得する

    • 開発者アカウントで PlayFab.com にログインします。
    • ゲーム マネージャーで、[My Studios and Titles (自分のスタジオとタイトル)] ページに移動します。 ゲーム タイトルを探して、PlayFab ゲーム タイトル ID を取得する
  • タイトルの開発者秘密鍵を取得する

    • ゲーム マネージャーで、[タイトル] > [設定] (歯車アイコン) を選択
    • [Title settings (タイトル設定)] を選択して、開発者の秘密鍵を取得するために [Secret Keys (秘密鍵)] タブを選択

秘密鍵については、「秘密鍵の管理」を参照してください。

PlayFab マルチプレイヤー API の PowerShell モジュールをインストールする

  1. 管理者として Windows PowerShell を実行する

  2. 以前に PlayFab Multiplayer Powershell モジュールをインストールしていた場合は、以下のコマンドでアンインストールしてください。 このモジュールは現在、非推奨です。

Uninstall-Package PlayFabMultiplayer

新しいモジュールに切り替えるには、「マッピング コマンド」を参照して、同等の新しいコマンドを見つけてください。 コマンドと引数の両方が異なる場合があることに注意してください。

  1. 新しい PlayFabMultiplayer API モジュールをインストールする

各コマンドの詳細については、「Cmdlet documentation (コマンドレットのドキュメント)」参照してください。

Install-Module -Name PlayFabMultiplayerApi

ヒント

モジュールをインストールする前に、まず PowerShell で Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser を実行して実行ポリシーを設定する必要があるかもしれません。 詳細については、「PowerShell execution policie (powerShell 実行ポリシー)」を参照してください。

  1. 次のコマンドを実行すると、PlayFab マルチプレイヤー PowerShell モジュールのコマンドレットの詳細が表示されます。 または、「PlayFabMultiplayerApi cmdlet reference documentation (PlayFabMultiplayerApi コマンドレットのリファレンス ドキュメント)」を参照してください。
Get-Command -Module PlayFabMultiplayerApi | Get-Help

タイトルの EntityToken を取得する

タイトル ID とそれに関連付けられているデベロッパー キーを使用して、次のコマンドを実行します。 PlayFabMultiplayerApi PowerShell モジュールを使用するときは、セッションの開始時にこのコマンドを実行する必要があります。

GetEntityToken API を呼び出して EntityToken を取得し、今後のコマンドレットで使用できるように環境変数に格納します。

Set-PfTitle -TitleID "mytitleID" -SecretKey "mysecretkey"

タイトルのマルチプレイヤー サーバーを有効にする

以下のコマンドレットを実行して、マルチプレイヤー サーバー機能を有効にします。 これは、enable multiplayer servers API を呼び出します。

Enable-PfMultiplayerServer

Title must have a valid payment instrument associated with it in order to enable Multiplayer Servers のエラーが表示される場合は、「Enable PlayFab Multiplayer Servers (PlayFab Multiplayer Serversを有効にする)」を参照して、ゲーム マネージャーで支払い情報を追加してください。

資産をアップロードする

Windows サーバー用のビルドをデプロイする場合は、資産のアップロードが必須です。 これは、資産によりマネージド Windows コンテナー イメージがカスタマイズされるためです。

ただし、Linux サーバー向けにビルドをデプロイする場合は、Linux コンテナイメージをカスタマイズできるため、オプションとなります。 「Linux コンテナー イメージの作成」を参照してください。

このコマンドを実行すると資産をアップロードします。

New-PfAsset -FilePath C:\MyAsset.zip -AssetName MyAsset.zip

各値は以下を表します。

  • Filepath: アップロードするローカル ファイルへのパス
  • AssetName: アップロードする資産の名前

詳細については「New-PfAsset reference documentation (New-PfAsset リファレンス ドキュメント)」を参照してください。

ビルドを作成する

  • Windows サーバー用のビルドを作成するときは、資産をアップロードしておく必要があります。 そうでない場合は、「Upload an asset (資産をアップロードする)」を参照してください。
  • Linux サーバー用のビルドを作成するときは、カスタム Linux コンテナー イメージを PlayFab コンテナー レジストリにアップロードしておく必要があります。 詳細については、「Deploying Linux servers (Linux サーバーの展開)」を参照してください。

Important

無償評価で提供されるリソースを利用する場合は、$vmSize$regions に正しい値を使用してください。

Windows ゲーム サーバーのビルドの展開に役立つサンプル コードを以下に示します。

$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

Linux ゲーム サーバーのビルドの展開に役立つサンプル コードを以下に示します。

$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

ヒント

開発中に、VM コア時間の使用を回避するために、未使用または異常なリージョンをシャット オフします。 コア時間の使用は、VM の起動時に開始され、VM がシャット オフされるまで続行されます。 リージョンのターゲット スタンバイ サーバーが 0 に達するか、リージョンが削除されない限り、リージョン内の VM は自動的にシャット オフされません。

VM をシャットダウンしています

VM をシャットダウンするには 3 つの方法があります

  1. リージョンのターゲット スタンバイを 0 に設定すると、このリージョンの VM のみがシャットダウンされます。
  2. ビルドから特定のリージョンを削除します。
  3. ビルド全体を削除すると、このビルドのすべてのリージョンにわたって VM がシャットダウンされます。

展開されたビルドを一覧表示する

タイトルのビルドの一覧を表示するには、次のコマンドを実行します。

Get-PfBuild | ConvertTo-Json -depth 5

マルチプレイヤー サーバーを要求する

ビルドを作成すると、.exe ファイルの実行後に 1 つ以上のサーバーが作成されます。 これらのサーバーは現在「待機中」です。

このコマンドを使用してビルドを実行しているすべてのサーバーを一覧表示し、それらを確認できます。

Get-PFMultiplayerServer -BuildId $buildResponse.data.BuildId -Region "EastUS"

スタンバイ サーバーを確認したら、いずれかのゲームプレイを要求します。

$sessionId = New-Guid
$serverResponse = Request-PfMultiplayerServer -BuildId $buildResponse.data.BuildId -PreferredRegions @('EastUS') -SessionId $sessionId

その呼び出しへの応答には、クライアントが接続できる IPv4 アドレスとポート番号が含まれます。 WindowsRunnerCSharp.exe では、単純な Web サーバーがホストされるため、IPv4 アドレスとポート番号を参照して応答を取得できます。

curl "http://$($serverResponse.data.Ipv4Address):$($serverResponse.data.Ports[0].Num)"

マッチメイキング サービスで RequestMultiplayerServer を呼び出してから 3 秒以内に、PlayFab が新しいサーバーを割り当てます。これが PlayFab マルチプレイヤー サーバーのコア部分です。

これらのサーバーは、リージョン、ビルドごとに構成しているスタンバイ サーバー プールから継続的に補充されます。

マッピング コマンド

次の表は、以前のコマンドと同等の新しいコマンドを示しています。 これは、旧バージョンの PowerShell モジュールを使用していて、既存のコマンドを変換する必要がある人のためのクイック マッピングです。

引数も一部変更されているため、変更の詳細を取得するには、各コマンドの定義を必ず読んでください。

MultiplayerPowershell コマンド (旧) MpsPowershell API モジュール (新規)
Add-PFMultiplayerAsset New-PfAsset
Add-PFMultiplayerCertificate Invoke-PfUploadCertificate
Enable-PFMultiplayerServer Enable-PfMultiplayerServer
Get-PFMultiplayerAsset Get-PfAssetSummary
Get-PFMultiplayerBuild Get-PfBuild
Get-PFMultiplayerCertificate Get-PfCertificateSummary
Get-PFMultiplayerContainerImages Get-PfContainerImage
Get-PFMultiplayerImageTags Get-PfContainerImageTag
Get-PFMultiplayerQosServer Get-PfQosServer
Get-PFMultiplayerServer Get-PfMultiplayerServer
Get-PFTitleEntityToken 非推奨です
New-PFMultiplayerBuild New-PfBuild
New-PFMultiplayerServer Request-PfMultiplayerServer
Remove-PFMultiplayerAsset Remove-PfAsset
Remove-PFMultiplayerBuild Remove-PfBuild
Remove-PFMultiplayerCertificate Remove-PfCertificate
Remove-PFMultiplayerContainerImageTag Invoke-PfImageUntagContainer
Set-PFTitle Set-PfTitle

関連項目