UE4 の Third Person Template を Dedicated Server としてビルドして Windows Server で動かすまで
環境
- Windows 10 Pro
- Unreal Editor バージョン: 4.24.2-0+++UE4+Release-4.24
- 2/29 時点のものです
- Visual Studio 2019
やりたいこと
- 単純な 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 が無いことでビルドが停まったので、入れておくといいかもしれません。
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.bat
、GenerateProjectFiles.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」の内容を使います。
私が初心者だったのでいくつか注意点がありました。
- Wiki では
test
という名前でプロジェクト名を指定しているが、これは最終的にパッケージするときに失敗してしまう - 「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」を選んだ以外はデフォルトです。
ファイヤーウォールの設定等していなければ、自動で付与されるエフェメラルの外部 IP で接続できるようになるはずです。
GCP の Firewall の設定をする
以下のように tcp:3389
(RDP 用) と udp:7777
(UE4 用) の ingress を許可するファイヤーウォールルールを作成します。
ネットワークタグに unreal-win
を指定したので、そのタグを先程作成した VM のネットワークタグにも設定しておきます。
RDP で接続する
Chrome の RDP アプリではなく Windows の Remote Desktop app を使って接続しました。事前に接続前にはパスワード設定をしておきます。
参考:
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 の設定
VM の Firewall としては UDP 7777 を許可しましたが、Windows としてはまだ許可できていません。
以下のように Server Manager の Tools から「Windows Defender Firewall with Advanced Security」を起動します。
そこで Inboud Rules の新規ルールを作成し、UDP 7777 を追加します。(以下の画像は作成後のものですが参考までに)
Windows Server でゲームを起動し、接続する
起動はローカルで実行したのと同様ですが、ローカル接続時に作成したショートカットはパスが変わってしまっているので、新たに -log
付きのショートカットを作成し起動します。
起動できたら、続いてクライアント側ですが、entryMap のレベルブループリントを開き、 Open Level の 127.0.0.1
を GCP の Windows Server のグローバル IPに port 7777 を付けて指定します。
再度ビルドしてもいいですが、ここは簡易に Unreal Editor から起動し、接続できるか確認しましょう。