UnrealEngineを利用したコンテンツ制作におけるAWSの利用例

# はじめに
　こちらは[AWS for Games Advent Calendar 2022](https://qiita.com/advent-calendar/2022/aws-for-games) 23日目の記事です。AWS の情報が溢れるカレンダーの中で Unreal Engine を主に取り上げることには恐縮ですが、AWS が Unreal Engineというゲームエンジンでどのように利用されているか、どのような使われ方をされているかといったことをご紹介できればと思います。

　Unreal Engine はゲーム制作だけでなく、昨今は映像、建築、医療など、幅広い分野でのコンテンツ制作に活用されており、その規模も近年は大きくなっています。今回は AWS のアドベントカレンダーということで AWS と Unreal Engine という括りで考えると、実は AWS のサービスを利用することで Unreal Engine で実現できる事の規模を大きくできたり、Unreal Engineでの開発を促進させることができます。本記事ではそうしたUnreal Engine を利用されているユーザー方々の活用事例や、各イベントなどで公開された技術情報をまとめたものとなります。

# AWS上でUnrealEngineを動かす
　Unreal Engine を動作するには、PCにある程度の[マシンスペック](https://docs.unrealengine.com/5.0/ja/hardware-and-software-specifications-for-unreal-engine/)を必要とします。手元にあるPCではUEを動かしたいけどマシンパワーが足りないといった時などには、AWS上で動かすといったことも可能です。

### [公式ドキュメント] AWSにUnreal Engineをデプロイする
AWS EC2インスタンス上にEpic Games Launcherをインストールし、Unreal Engineを動作させる手順が記載されています。

https://docs.unrealengine.com/4.27/ja/ProductionPipelines/CloudDeployments/AWS/

https://docs.unrealengine.com/5.0/ja/deploying-unreal-engine-5-on-aws/

### Running Unreal Engine 4(UE4) on AWS Virtual Machine
こちらの記事では AWS上で UE4 を動作させる時に直面した問題とその解決方法について記載されています。Unreal Engine を動作させるためにはGPUのスペックにも気を付ける必要があり、その問題を解決するまでの過程について記載されています。

https://aws.plainenglish.io/running-unreal-engine-4-ue4-on-aws-virtual-machine-e6fdbd177fb1

# 専用サーバー で利用する
　Unreal Engine を利用してマルチプレイのゲームを作成するような場合、Dedicated Server と呼ばれる GUIを持たない専用サーバーで処理を行わせたり、Pixel Streaming の機能を実現する上での Signaling Server と呼ばれる配信用の専用サーバーを立てることがあります。それらの専用サーバーを AWS で実現するにあたっての具体的な方法などが紹介されています。

## Dedicated Server
### Unreal Engine5の専用サーバーモードでTPSのテンプレートを動かす
UE5 で Dedicated Serverをビルドする方法が紹介されています。AWS上のセットアップは省略されていますが、この記事に記載されているようにEpic Games Launcherからダウンロードしたコードでは専用サーバーとしてのビルドは作成できないため注意が必要です。

https://qiita.com/yoshi157/items/39766a2a1129b1f9135c

### UE5 Dedicated ServerをAWS EC2インスタンスに立てる
こちらも UE5 で Dedicated Server を構築する手順が紹介されています。この記事では AWS Graviton でEC2インスタンスを立てるケースで、AWSコンソールでの設定も詳細に説明されています。コンテンツの内容に併せてサーバーのスペックを検討することはとても重要です。

https://tacoworks.jp/posts/20221219-ue5-aws-ec2

### Unreal Engine Dedicated Game Server on Amazon EC2
こちらは UE4 で Dedicated Server を動作させるためのセットアップ手順が記載されています。この記事では特にセキュリティの設定やエラーに対する対処法が詳細に記載されており、トラブルシューティングが必要な時に参考になります。

https://thegabmeister.com/blog/unreal-server-amazon-ec2/

### Compiling Unreal Engine 4 Dedicated Servers for AWS Graviton EC2 Instances
UE4でDedicated Server としてAWS上でThirdPersonTemplateを動作させるための手順が記載されています。こちらも Graviton を利用してサーバーを構築しています。UE4.26と少し前のバージョンが利用されていますが、Unreal Engineでサーバー構成を作成する手順などが非常に詳細に書かれています。

https://aws.amazon.com/jp/blogs/gametech/compiling-unreal-engine-4-dedicated-servers-for-aws-graviton-ec2-instances/

## Pixel Streaming

### Unreal Engine Pixel Streaming in AWS with Ubuntu OS
Ubuntu OSでPixel Streamingを動作させるためのセットアップ例が紹介されています。AWSの公式ブログで書かれた記事なのでAWS側のセットアップについて特に詳しく記載されています。Linux Editorでパッケージを行うという少し珍しい例ですが、バージョンはUE4.27が使用されています。

https://aws.amazon.com/jp/blogs/gametech/unreal-engine-pixel-streaming-in-aws-with-ubuntu-os/

### UE5 Pixel StreamingでリアルタイムCGストリーミング配信 on AWS
UE5を利用してPixel Straming用サーバーインスタンスを立ててリアルタイム配信を行う手順が紹介されています。システム概要や細かなセットアップ方法が記載されており、Web Browserやモバイル端末で動作することが確認されております。

https://tech.isid.co.jp/entry/unreal-engine-pixel-streaming

### [UE5]PixelStreamingDemoをAWSに実装する
こちらもUE5でPixel Streamingを動作させるためのセットアップ方法が紹介されています。こちらの記事に記載されているように、サーバーを建てっぱなしにしておくとコストが発生するので、コストマネージメントにはご注意ください。

https://zenn.dev/pate_techmemo/articles/07721136756dcc

### PixelStreamingをAWS上で動かす（自動構築編）
こちらの記事はUE4を利用してPixel Streamingを動作させるための手順が紹介されています。専用サーバーのホスティングの設定の面倒な部分をCloud Foundationを利用することで簡素化し、非常にシンプルな手順で纏められています。AWSを利用する場合は後片付けも大事ですね。

https://www.hakobuneworks.com/posts/2021/12/11/

## VR
### OpenXR対応Unreal Engine VRサーバーをAWSで構築
UE5でVRプロジェクトを構成し、サーバービルドを作成してサーバーをAmazon Elastic Compute Cloud (EC2)にデプロイし、Meta Quest 2または別のOpenXRプラットフォームに接続する手順が紹介されています。

https://aws.amazon.com/jp/blogs/spatial/building-an-openxr-enabled-unreal-engine-vr-server-on-aws/

# Source Control で利用する
 AWS を利用して Unreal Engine のソースコントロールを行うための情報について紹介します。ここで実現することはクラウド上にリソース管理用のサーバーを立てることです。物理的なリソース管理が不要になるという点で自由にスケーラブルできるという事や、バックアップを容易に作成できることもメリットとしてあります。

### Perforce Helix CoreをAWS上に構築する
Cloud Foundationテンプレートを使用して、クラウド上にPerforceサーバーを構築しソース管理を行うための手順が紹介されています。Unreal Engineのソース管理に必要なtypemapの設定なども記載されています。

https://aws.amazon.com/jp/blogs/news/perforce-helix-core-on-aws-part1/

https://aws.amazon.com/jp/blogs/news/perforce-helix-core-on-aws-part2/

https://aws.amazon.com/jp/blogs/news/perforce-helix-core-on-aws-part3/

### AWSを使ってPerforce HelixCoreサーバを構築してみた
こちらも上記と同様にPerforce HelixCoreサーバーを構築する方法が紹介されています。AWS側の設定は簡略して記載されていますが、P4クライアントからの操作やUE5エディタからのソースコントロールアクセスの方法などが分かりやすく記載されています。

https://dev.classmethod.jp/articles/parforce_helixcore_server_with_aws/

# CI で利用する
　Unreal Engine のビルドやパッケージングなどの作業をクラウド上で実現するために AWS を利用することができます。これによってビルドの並列化や、ソース管理との連携が容易にできるなどのメリットがあります。

### Accelerating Unreal Engine pipelines on the cloud
IncredibuildとAWSを利用してUE5の分散ビルドを実施するケースのプレゼンテーションです。150分かかっていたエンジンビルドが20分に短縮されており効果的なことが分かります。こちらを閲覧するには登録が必要となります。

https://www.incredibuild.com/resources/incredibuild-featuring-aws

### Optimize Unreal Engine builds with BuildGraph and CircleCI
UE5のBuildGraphを使用して独自のAmazon Machine Image(AMI)を作成し、CircleCIを介してAWSで並列ビルドを実行するといった内容が記載されています。この記事を理解する上でBuildGraphやCircleCIのワークフローを理解する必要がありますが、ビルド時間の短縮(記事では最大85%!)や、パッケージプロセスの自動化などの効果が得られます。この記事の内容はGithubでも公開されているので、自身のプロジェクトに併せてカスタマイズすることもできそうです。

https://circleci.com/blog/optimize-unreal-engine-builds/

# DDC で利用する
　Unreal Engineではシェーダーやアセットを適切に扱うために派生データ・キャッシュファイル(DDC)を生成しますが、それらを適切に共有することでワークフローを効率的に回すことができます（逆にそれらが正しく共有できていない環境においてはシェーダーコンパイルが頻繁に走ったり、アセットを開くのに時間が掛かるといった非効率な事が発生します）。それらに対してAWSを利用することで利用できる機能について紹介します。

## S3DDC
S3DDC は、[AWS S3](https://aws.amazon.com/s3/) を使用してDDCを共有する方法を提供します。S3DDCは物理的なスペースを必要とせずクラウド上で派生データのキャッシュを保存/共有するため、ストレージサイズをそれほど意識せずに利用することができます。

https://docs.unrealengine.com/5.1/ja/derived-data-cache/

https://forums.unrealengine.com/t/work-from-home-cloud-ddc-experimental/142103

## Unreal Cloud DDC
Unreal Cloud DDC はクラウド上にDDCを作成/保存して共有するための、UE5 で現在開発中の新しいDDC機能になります。まだ使い方などは殆ど公開されておらず、機能自体も開発中のため容易にかつ自由に使えるようになるのは時間が掛かると思われますが、これにより 複数の拠点における大規模開発を行うようなケースでのDDC共有が推進されます。

### Unreal Engine in the Cloud | Unreal Fest 2022
Unreal Cloud DDC の利用について説明しているテックトークのセッションです。Unreal Cloud DDCを構築するストラクチャやアーキテクチャを説明しており、この機能を理解するのに役立ちます。

https://www.youtube.com/watch?v=KGNIO8rpQZU

## その他 DDC
これらは特に AWS を利用していませんが、 DDCを活用するための情報として参考までに掲載しておきます。

### Use Azure Files for network derived data cache with Unreal Engine
Azure Files を利用したDDC共有の例です。S3DDCと同じように、クラウド上で管理するための方法が提示されています。

https://learn.microsoft.com/en-us/gaming/azure/game-dev-virtual-machine/use-azure-files-for-global-ddc

### Fill DDC For PIE Plugin
UE4.25 と少し古いバージョンでサポートされていますが、PIE時にDDCを埋めるためのテストを実行するプラグインです。

https://www.studiogobo.com/our-news/working-from-home-with-unreal-engine/

# Amazon GameLift
 [Amazon GameLift](https://aws.amazon.com/gamelift/) は、クラウド上でホストされている専用ゲームサーバーのデプロイおよび管理を行い、プレーヤーの需要の変動に合わせて自動的にスケーリングしたり、低レイテンシーでのマッチメイキングサービスを提供します。Unreal Engine 用にもSDKをラップするためのプラグインが提供されています。

### Amazon GameLiftをアンリアルエンジンのゲームサーバープロジェクトへ追加
GameLiftプラグインをUnreal Engineに統合するための手順が記載されています。UE4.25をベースとして記載されているので、UE5など別のバージョンで確認したい場合は、同梱されたGameLiftServerSDKが対応したバージョンであるかどうかをご確認ください。

https://docs.aws.amazon.com/ja_jp/gamelift/latest/developerguide/integration-engines-setup-unreal.html

### Amazon GameLift-UE4
Unreal Engine 向けの Amazon GameLiftプラグインをUnreal Engineに統合し、GameLiftの機能を利用するための手順がビデオで紹介されています。Unreal Engineのソースコードを利用してどのように統合するかが順番に説明されていますが、各セットアップの工程に焦点を当てて説明されているもので、この内容を全て実施することで機能を利用できるという事ではありません。全体の概要を各ステップで説明されているため、実現する機能についてはドキュメントなどを見ながら設定を行う事になります。

https://www.youtube.com/watch?v=3_iBuko39JA&list=PLuGWzrvNze7LEn4db8h3Jl325-asqqgP2&index=2

### How To Make A Multiplayer Game With Unreal Engine and Amazon GameLift
UE4 向けにAmazon GameLift を利用してマッチメイキング及びマッチングを行う手順がビデオで紹介されています。UE4で少し古いバージョンを利用していますが、AWS 側の詳細な設定まで解説されています。全てを理解して実施するには数日掛かると思われますが、ユーザー認証、ログイン、DB管理、マッチメイキングチケット管理などを理解することができます。

https://www.youtube.com/watch?v=tOy0xYaP3wA&list=PLa1dM5bPQv0u2IWZRIxtRqwWVJNOUtlbF

# AWS Gamekit
　[AWS Gamekit](https://aws.amazon.com/gamekit/) はゲームのバックエンド機能をデプロイし、カスタマイズすることを可能にするソリューションです。ログインやアチーブメントといった、ゲームの中で必要な認証サービスなどをSDKで提供されており、Unreal Engine用にもプラグインとして提供されています。

### AWS GameKit Unreal Engine のプラグインを調べる
AWS の公式ドキュメントで、UE4 で AWS Gamekit のプラグインを使うための、Unreal Engineへの統合方法について記載されています。

https://docs.aws.amazon.com/ja_jp/gamekit/latest/DevGuide/plugin-unreal-overview.html

Unreal Engine のマーケットプレイスからもAWS Gamekit のページにアクセスが可能です。

https://www.unrealengine.com/marketplace/ja/product/aws-gamekit

### AWS の知識ゼロから始める AWS GameKit
UE4 で AWS Gamekit の機能を使うためのセットアップ手順や、細かい設定方法などが紹介されています。細かい操作手順に加えて、サンプルの使い方まで詳細に説明されています。

https://aws.amazon.com/jp/builders-flash/202206/gamekit-fo-beginners/?awsf.filter-name=*all

### AWS GameKit plugin for Unreal Engineを使ってみた
こちらも UE4 で AWS Gamekit のサンプルを動かすための手順や方法が紹介されています。上の記事と合わせて見て頂くと、よりセットアップの方法について理解することができ、トラブルシューティングにも対応できるかと思います。

https://dev.classmethod.jp/articles/220414_aws_game_kit_and_unreal_engine/

### AWS On Air ft. AWS GameKit | AWS Events
こちらも UE4 でAWS Gamekit のサンプルを動かすまでの方法をビデオで紹介されています。上記の記事でも詳しく説明されていますが、実際にどのように手順が必要か、ビデオでの内容も確認して頂く事でより深く理解できるかと思います。

https://www.youtube.com/watch?v=MAvUTTqyxVk

# AWS SimSpace Weaver
　[AWS SimSpace Weaver](https://aws.amazon.com/simspaceweaver/) は複雑でスケールの大きなシミュレーションの世界を作成できるサービスで、複数のEC2インスタンスに分散することによって大規模なシミュレーションが可能です。AWS SimSpace Weaver は Unreal Engineに対応したプラグインがあり、UE5でそれらを利用することができます。

### AWS SimSpace Weaverをローカル環境で開発できるようにしてみた #reinvent
AWS SimSpace WeaverのSDKサンプルをUE5.0で動かすための手順などが書かれています。AWS SimSpace Weaver に関してはまだリリースされた直後で日本語での記事が殆どないため、これから触ってみようと思う方の取り掛かりになるかと思います。

https://dev.classmethod.jp/articles/221217_reinvent22_simspaceweaver_devlocal/

# その他 の利用例
 この章では上記以外の多方面での機能や活用事例について紹介します。

### AWS Ambit Scenario Designer for Unreal Engine 4
AWS Ambit Scenario Designer for Unreal Engine 4は、自動運転車およびロボット工学シミュレーション アプリケーション向けの大規模な3Dコンテンツ作成を効率化するためのツールです。UE4.27 のみがサポートされていますが、Twin Motionと同じようにエンタープライズ向けに活用できそうです。

https://aws-samples.github.io/aws-ambit-scenario-designer-ue4/

### AWS re:Invent 2020: Epic Games supports creators during COVID with Unreal and AWS
Epic Games が COVID 期間中に AWS を活用してどのようにコンテンツ制作を継続してきたかをビデオで解説しています。AWS を活用してリモートワークステーションを提供したり、レンダリングの負荷をスケーリングさせる方法などが紹介されています。

https://www.youtube.com/watch?v=rFh1MIxY-jY

### UnrealEngineでaws-sdk-cppを利用する
AWS C++ SDK を Unreal Engine で利用する際の嵌った点などを共有頂いています。

https://qiita.com/mechamogera/items/d4f392a2167f4a9a0703

### UE4でaws sdk cppを使ってS3アップロードをするプラグインを作ってみた
AWS S3 に.pngファイルをアップロードするプラグインの作例とプラグイン作成時の注意点などを共有頂いています。S3 はファイル共有などにも利用でき、テストなど利用できそうなケースは豊富そうです。

https://qiita.com/mechamogera/items/e0c519e4788ad71ac092

## バーチャルプロダクション
### Epic Games の Unreal Engine を使ったバーチャルプロダクションのリファレンスアーキテクチャ
Epic Games が Unreal Engine を使用したバーチャルプロダクションにおける AWS のアーキテクチャを示しています。Unreal Engineが提供する機能が具体的にどのようなサービスと連携して動作するかを把握したり、プロダクションにおいて必要なAWSのサービスを把握することができます。

https://aws.amazon.com/jp/blogs/news/jpmne-virtual-production-reference-architecture-with-epic-games-unreal-engine/

### AWS でのゲームエンジン積極活用手法のご紹介(AWS-30)
上記で Epic Games が利用しているアーキテクチャ、及びどのように改善されたかといった内容、およびゲームエンジンを活用する手法について解説されています。その他、XRやGravition プロセッサを活用した事例について詳しく紹介して頂いています。

https://www.youtube.com/watch?v=WO-f0171WAE

## プラグイン・コンテンツ
### Unreal Engine Mmarketplace
"AWS" のキーワードでマーケットプレイスを検索すると、マルチプレイヤープロジェクトや、AWS の一部サービスをBlueprintから利用することが可能となるプラグインなどが販売されています。これらを利用することで、アンリアルエンジンと AWS の親和性を高めて、より効率的な開発も可能となるかもしれません。

https://www.unrealengine.com/marketplace/ja/assets?count=20&keywords=AWS&sortBy=relevancy&sortDir=DESC&start=0

![2022-12-22_19h10_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/364110/5b27afe9-b21a-8504-7209-3c6e823c2040.png)

# まとめ
　ここまで Unreal Engine での AWS の様々な利用事例と、AWS と連携する機能の利用例について紹介してきました。たくさんの利用事例があるので 利用されている実績もありますし、AWS を利用することによって Unreal Engine でのコンテンツ制作をより充実したり、開発に生かすことが出来ることはまだほかにもたくさんあります。ぜひ Unreal Engine も AWS もどちらも利用して頂き、より良いコンテンツ制作の手助けになればと思います。