UE4 の Third Person Template を Dedicated Server としてビルドして Windows Server で動かすまで

環境

やりたいこと

  • 単純な Third Person Template を Dedicated Server としてビルドする
  • Windows Server にデプロイしてアクセスできるようにする

手順

https://wiki.unrealengine.com/Dedicated_Server_Guide(Windows%26_Linux)

上記の記事にほとんどのことは書いてあります。

Visual Studio の設定

Unreal Engine 用に Visual Studio をセットアップする | Unreal Engine ドキュメント

細かく推奨設定なども書かれていますが、今回はビルドさえできればいいので「Unreal Engine から Visual Studio へのワークフローを設定する前に」の部分だけで十分です。

Visual Studio がたいていすでにインストールされていると思うので Visual Studio Installer を起動し、必要なコンポーネントを追加していきます。

私は日常的には Visual Studio .NET 開発用に使っているため、ゲーム用コンポーネントは新たに追加したのですが、以下の Windows 10 SDK が無いことでビルドが停まったので、入れておくといいかもしれません。

f:id:dany1468:20200303070930p:plain

Unreal Engine のコードのダウンロード

Unreal Engine のソースコードをダウンロードする | Unreal Engine ドキュメント

以下の release page から取得すれば問題ないでしょう。
https://github.com/EpicGames/UnrealEngine/releases

参考: UE4 VisualStudioを使ってエンジンをデバッグする - Let's Enjoy Unreal Engine

ディスクの容量を確認する

私の PC がディスクが 40G ぐらいしかなくて途中で容量不足になりました。。

50G 以上は空きがあるといいかなと思います。

Unreal Editor のビルド

Section 1 Building a dedicated server in Unreal Engine 4
https://wiki.unrealengine.com/Dedicated_Server_Guide(Windows%26_Linux)#Section_1_Building_a_dedicated_server_in_Unreal_Engine_4

上記手順通りです。Setup.batGenerateProjectFiles.bat と順に実行していき、Editor をビルドします。かなり時間はかかります。
VS 2017 での注意書きがありますが、2019 (というか現在?)では特に注意するようなものはありませんでした。

Third Person プロジェクトの作成・パッケージ

Wiki の「Section 2 setting up a dedicated server on windows」通りです。作成する ServerTarget ファイルは「5. Target file instructions for engine version 4.18」の内容を使います。

私が初心者だったのでいくつか注意点がありました。

  1. Wiki では test という名前でプロジェクト名を指定しているが、これは最終的にパッケージするときに失敗してしまう
  2. 「4. Switch Unreal engine versions & generate project files」で、手順通り Engine を switch をしないといけないが、ビルドした Unreal Editor でプロジェクトを作ったからとスキップした結果、必要なファイルが生成されなかった。

Third Person プロジェクトを localhost で起動する

「Section 3 launching and joining the dedicated server」通りですね。

Windows Server の用意

今回は GCP に用意しました。イメージとして「Windows Server 2019 Datacenter」を選んだ以外はデフォルトです。

f:id:dany1468:20200303074017p:plain

ファイヤーウォールの設定等していなければ、自動で付与されるエフェメラルの外部 IP で接続できるようになるはずです。

GCPFirewall の設定をする

以下のように tcp:3389 (RDP 用) と udp:7777 (UE4 用) の ingress を許可するファイヤーウォールルールを作成します。
f:id:dany1468:20200303074403p:plain

ネットワークタグに unreal-win を指定したので、そのタグを先程作成した VM のネットワークタグにも設定しておきます。

RDP で接続する

Chrome の RDP アプリではなく Windows の Remote Desktop app を使って接続しました。事前に接続前にはパスワード設定をしておきます。

f:id:dany1468:20200303074249p:plain

参考:

Windows Server にデプロイ

ビルドした UE4 のプロジェクトは WindowsNoEditor というフォルダがルートになっていると思いますが、それごと Windows Server にもっていきます。

次に以下のサポートサイトから Visual C++ 再頒布可能パッケージ をダウンロードします。VC_redist.x64.exe というファイル名です。
https://support.microsoft.com/ja-jp/help/2977003/the-latest-supported-visual-c-downloads

ダウンロードしたら Windows Server 上で実行します。

次に、コピーしてきたビルド成果物の WindowsNoEditor\Engine\Extras\Redist\en-us\UE4PrereqSetup_x64.exe を実行します。最後に .NET Framework に関するメッセージが出ましたが、私は問題ありませんでした。

試していませんが、もしかすると、UE4PrereqSetup_x64 だけやっておけば、その前の Visual C++ 再頒布可能パッケージ のインストールは不要かもしれません。

Windows Server の Firewall の設定

VMFirewall としては UDP 7777 を許可しましたが、Windows としてはまだ許可できていません。

以下のように Server Manager の Tools から「Windows Defender Firewall with Advanced Security」を起動します。

f:id:dany1468:20200303075614p:plain

そこで Inboud Rules の新規ルールを作成し、UDP 7777 を追加します。(以下の画像は作成後のものですが参考までに)

f:id:dany1468:20200303080048p:plain

Windows Server でゲームを起動し、接続する

起動はローカルで実行したのと同様ですが、ローカル接続時に作成したショートカットはパスが変わってしまっているので、新たに -log 付きのショートカットを作成し起動します。

起動できたら、続いてクライアント側ですが、entryMap のレベルブループリントを開き、 Open Level の 127.0.0.1GCPWindows Server のグローバル IPに port 7777 を付けて指定します。

f:id:dany1468:20200303080438p:plain

再度ビルドしてもいいですが、ここは簡易に Unreal Editor から起動し、接続できるか確認しましょう。