Unreal Engineは公式でコンテナイメージを提供しています。
Dockerを利用することでコンテナイメージからコンテナを構築でき、独立した環境でUnreal Engineの環境を構築できます。
本記事ではUnreal Engineのコンテナイメージを利用する利点と、プロジェクトやプラグインをビルドする方法について説明します。
目次
Unreal Engine公式で提供されるコンテナイメージ
Unreal Engineのコンテナイメージは、Epic GamesのGitHub Organizationページで提供しています。
GitHub Organizationページから [Packages] > [unreal-engine] へ移動することで、提供されているコンテナイメージ一覧を参照できます。
なおコンテナイメージを取得するためには、Unreal Engineのソースコードにアクセスする権限が必要です。
ドキュメント を参照し、アクセス権限を事前に得ておきましょう。
提供されているコンテナイメージは、執筆時点でUnreal Engineのバージョンが「4.27」と「5.0」の2つです。
タグ名に「slim」と付いているものは、最適化によりコンテナイメージを削減したものです。
最適化前のコンテナイメージはイメージサイズが非常に大きいため、最適化されたコンテナイメージを利用することをおすすめします。
コンテナを利用するメリット
コンテナを利用するメリットは、ホスト側の環境と分離してUnreal Engineの環境を構築できることです。
またコンテナ同士は独立した環境でかつコンテナをイメージとして保存できるため、独自に変更した環境をほかのシステムに容易に移行できます。
例えば、Unreal Engineに独自のサードパーティ製のライブラリを導入する場合、環境を移行するときにサードパーティ製のライブラリも一緒に移行する必要があります。
コンテナ内で作業して作業が完了した段階でコンテナイメージ化しておけば、コンテナイメージを別の環境に持っていくだけで移行できます。
このようなコンテナの特徴を踏まると、例えば次のような目的でコンテナを利用できます。
- ホスト側の環境と分離された環境でUnreal Engine利用し、環境依存による問題を解消
- 複数ユーザ間での開発環境共有
- 継続的なテストやビルド(CI/CD)の実現
本記事では、コンテナ内でUnreal Engineのプロジェクトやプラグインをビルドする方法について説明します。
そのほかの用途に関しては、別の記事で紹介しようと思います。
コンテナの起動方法
コンテナの構築に必要なコンテナイメージを取得する方法を説明します。
コンテナイメージを取得する方法はいろいろありますが、本記事では Docker と呼ばれるソフトウェアを利用します。
Docker
WindowsでDockerを利用するためには、Dockerの公式ページ からインストーラをダウンロードしてインストールします。
インストール後にDocker Desktopを起動すれば、Windows上でDockerが利用可能になります。
WindowsでのDockerのインストールについては、公式のドキュメント を参考にしてください。
コンテナイメージの取得コマンドを得る
Epic GamesのGitHub Organizationページから [Packages] > [unreal-engine] を選択します。
今回はタグが dev-slim-5.0.0
のコンテナイメージを取得するため、[dev-slim-5.0.0] をクリックします。
コンテナイメージを取得するためのコマンドが表示されるため、コピーします。
コンテナイメージを取得する
Windowsでコンテナイメージを取得するには、コマンドプロンプトを開いて先ほど取得したコマンドを実行します。
ただしコンテナイメージの取得は、Unreal Engineのソースコードへアクセスする権限が必要なため、docker login
コマンドを使ってログインする必要があります。
このときにユーザとパスワードを聞かれるので、GitHubアカウントのユーザ名とパスワード(または read:package
権限を持つトークン)を入力します。
docker login ghcr.io
ログインに成功したら、Unreal Engineのコンテナイメージを取得できるようになります。
タグが dev-slim-5.0.0
のコンテナイメージを取得する場合は、次のコマンドを実行します。
docker pull ghcr.io/epicgames/unreal-engine:dev-slim-5.0.0
コンテナイメージが取得できたことを確認するためには、コマンド docker images
を実行します。
正しくコンテナイメージが取得できていれば、コマンドの実行結果に取得したイメージが表示されるはずです。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ghcr.io/epicgames/unreal-engine dev-slim-5.0.0 a9edd4a7beb3 2 weeks ago 35.7GB
コンテナを起動する
コンテナイメージを使ってコンテナを起動します。
コンテナを起動するためには、次のコマンドを実行します。
docker run -it ghcr.io/epicgames/unreal-engine:dev-slim-5.0.0 /bin/bash
コマンドを実行するとコンテナ環境に入ることができます。
コンテナ環境はLinuxであるため、Linuxの基本的なコマンドが実行できます。
試しに ls
コマンドを実行すると、コンテナ環境に入った状態のディレクトリに配置されているファイルやディレクトリの一覧が表示されます。
初期状態では、Unreal Engineが配置されたディレクトリ Engine
のみが表示されています。
$ ls
Engine
コンテナ内でのプロジェクトビルド
コンテナ内でUnreal Engineのプロジェクトをビルドする方法を説明します。
コンテナ環境でUnreal Engineのプロジェクトをビルドするために、AutomationTool を利用します。
プロジェクトをビルドするためには、コマンド RunUAT.sh
のサブコマンド BuildCookRun
を実行します。
ここで .uproject
ファイルは /path/to/SampleProject.uproject
に配置され、ビルド生成物は /tmp/Packaged
に配置することとします。
/home/ue4/UnrealEngine/Engine/Build/BatchFiles/RunUAT.sh BuildCookRun \
-utf8output \
-platform=Linux \
-clientconfig=Shipping \
-serverconfig=Shipping \
-project=/path/to/SampleProject.uproject \
-noP4 \
-nodebuginfo \
-allmaps \
-cook \
-build \
-stage \
-prereqs \
-pak \
-archive \
-archivedirectory=/tmp/Packaged
コマンドを実行しエラーが発生しなければ、次のようなログが出力されます。
...
BUILD SUCCESSFUL
AutomationTool executed for 0h 6m 4s
AutomationTool exiting with ExitCode=0 (Success)
コンテナ内でのプラグインビルド
続いて、コンテナ内でUnreal Engineのプラグインをビルドする方法を説明します。
Unreal Engineのプラグインのビルドも同様に、Automation Toolを利用します。
プラグインをビルドするためには、コマンド RunUAT.sh
のサブコマンド BuildPlugin
を使用します。
.uplugin
ファイルは /path/to/SamplePlugin.uplugin
に配置され、ビルド生成物は /tmp/Packaged
に配置することとします。
/home/ue4/UnrealEngine/Engine/Build/BatchFiles/RunUAT.sh BuildPlugin \
-Plugin=/path/to/SamplePlugin.uplugin \
-Package=/tmp \
-Rocket
コマンドを実行しエラーが発生しなければ、次のようなログが出力されます。
...
BUILD SUCCESSFUL
AutomationTool executed for 0h 0m 22s
AutomationTool exiting with ExitCode=0 (Success)