Amazon Web Services ブログ

“Game Studio in the Cloud” ~テレワークでのゲーム開発環境の実現~

AWS Game Techでは、各イベントなどを通じてゲーム開発環境のクラウド化についてご紹介してきました。これまでゲーム開発に利用されるバージョン管理やビルドの実行のためのハードウェアはプロジェクトの初期に購入し、オフィスやデータセンターに設置されることが一般的でしたが、ゲーム開発の高度化・複雑化にともない、事前にサーバやストレージなどの容量を予測することが難しくなり、追加の調達にも時間がかかるなどの課題が顕在化しています。このようは背景から、いつでも必要なときに必要なだけ従量課金で利用できるクラウドをゲーム開発に活用する動きが高まっています。

実際にUnreal Engine4やUnity、自社製ゲームエンジンのビルドパイプラインを中心に多くのお客様からお問い合わせをいただいていますが、今回はそのビルドパイプラインを中心に、AWS上でどのようにゲーム開発環境を構築するか、それぞれユースケース別にご紹介します。全体像はこちらです。

 

AWSではVPC(Virtual Private Cloud)を利用してさまざまな要件に応じてネットワーク環境を構成できます。今回はそのVPCを利用して、

  1. VPCを作成し、そのVPCにはインターネットから直接アクセスできるパブリックサブネット、VPC内やオフィス/データセンターからのネットワーク接続のみしか受け付けないプライベートサブネットも作成します。
  2. インターネットから直接接続できるサブネット上にUnreal Engine4クライアントを構築し、NICE DCVと言われるリモート接続ソフトウェアを利用してご自宅などから利用できる開発環境を構成します。
  3. アセットやプログラムのバージョン管理のためにPerforce社のHelix Coreを利用し、AWSのVPC上にマスター/コミットのサーバを構成します。
  4. ご自身のデータセンターやオフィスとAWSのVPCとのネットワーク接続のためにVPNで接続します。

また、その他にデザイナーやプロデューサーの方々向けにAmazon WorksSpacesによる仮想デスクトップ環境の構築についても簡単にご紹介します。

事前準備

環境構築にあたり、以下を事前に準備してください。

拠点側のVPN用固定IPアドレス
オフィス/データセンターなどの拠点とのVPN接続を行う場合は、拠点側のVPNルータのパブリック固定IPをネットワーク担当者の方にご確認ください。

AWS側で利用するネットワークアドレス
AWSとのネットワーク接続を実施するにあたり、AWS側で利用できるネットワークアドレスもご準備ください。実際にこのネットワークアドレスを利用するVPCでは/28ネットマスク(16個のIPアドレス)が最小ですが、リソース拡張に備えて/24以上の大きめのネットマスクをご利用いただくことをお勧めします。拠点と接続するときは拠点ですでに利用しているアドレスと被らないネットワークアドレスをご利用ください。


VPCでAWS上にネットワーク環境を作成

まず事前準備として、AWS上で利用できるネットワーク環境を作成するために、VPCおよびVPCの中で利用できるネットワークであるサブネットを構成します。このサブネットの中にサーバやクライアントが起動する形となります。サブネットにはインターネットとの接続性によってパブリック/プライベートの2種類を作成することができますが、インターネット側から直接接続を受け付けないものでない限りはプライベートサブネットの中でサーバなどを起動することを強くお勧めします。今回ご紹介する開発ワークステーションは外部から直接ネットワーク接続するケースを想定しているため、パブリックサブネットも作成します。

AWSのマネージメントコンソールで画面右上の東京リージョンを選択し、AWSのサービス検索でVPCを選択します。

VPCダッシュボードの画面から、[VPCウィザードの起動]をクリックします。ステップ1の画面で上から3番目のメニュー“パブリックとプライベートサブネットおよびハードウェアVPNアクセスを持つVPC”を選択します。(拠点とのVPN接続が不要であれば“パブリックとプライベートサブネットを持つVPC”を選択してください。)

次のステップ2では、事前準備で用意したAWS側で利用するネットワークアドレスを入力します。AWSで利用する全体のネットワークを“IPv4 CIDRブロック”に入力、パブリックサブネット/プライベートサブネットの2つをそれぞれ全体のネットワークから切り出します。今回は10.0.0.0/16をAWS全体で利用できるネットワークアドレスとし、その中からパブリックサブネットを10.0.0.0/24、プライベートサブネットを10.0.1.0/24として設定しています。また、VPC名には任意の名前を入力します。

最後のステップ3で拠点とのVPN設定を行います。

カスタマーゲートウェイIP: 事前準備で用意した拠点側ルータのパブリックIPアドレスを入力
カスタマーゲートウェイ名: 任意の名前を入力
VPN接続名: 任意の名前を入力
ルーティングの種類: 静的 (BGPも選択できますが、今回は設定が簡単な静的ルーティング設定を行います。)

入力が完了したら[VPCの作成]をクリックします。

数分後、以下の画面が表示されればVPCの作成が完了です。

 


ゲーム開発環境の構築とリモート接続

普段はオフィスにあるご自分のPC上でゲームエンジン(Unreal Engine4)でゲームを開発しているケースを想定し、この環境をAWS上でどのように実現するかについてご紹介します。まずGPUマシンについては、AWSが提供するGPUインスタンスを利用することができます。2020年3月時点で最も新しいものはNVIDIA T4 Tensor Core CPUを搭載したG4インスタンスで、東京リージョンでもご利用になれます。

また、今回利用するNICE DCV(Desktop Cloud Visualization) はネットワーク経由で2D/3Dのインタラクティブアプリケーションへのリモートアクセスを提供します。AWS上であれば追加コストなしでEC2インスタンス上で使用できます。

リモート接続はNICE DCV以外に以下のようなソリューションがありますが、機能別の比較は以下のようになります。NICE DCVを利用する機能面での利点はUSBサポートで、ゲーム開発に必要な液晶タブレットなどのUSBデバイスも
AWS上のインスタンス上で利用することができます。

VDI solutions Windows Client Mac Client Web Browser 4K support Multi Monitor Multi Clients USB support On-premises
Amazon WorkSpaces
Amazon AppStream2.0
NICE DCV △※2
Windows Remote Desktop △※1

※1 *.RDPファイルを直接テキストエディタで編集する必要あり。
※2 EC2インスタンスだけでなく、オフィスで利用しているPCもサーバにできるがライセンス料が別途必要

では手順を解説します。前の手順で作成したVPC上にG4インスタンスを作成します。AWSのマネージメントコンソールのトップページに戻り、EC2を検索、選択します。

[インスタンスを起動]ボタンをクリックします。まずステップ1ではEC2インスタンスで利用するOSイメージを選択します。今回はNICE DCVを利用するため、“AWS Marketplace”から“NICE DCV for Windows (g4 graphics instances)”を選択します。

インスタンスタイプはG4インスタンスファミリで最小の“g4dn.xlarge”を選択します。より多くのvCPU、メモリが必要な場合は適宜g4dn.2xlarge, g4dn.4xlargeなど上位のインスタンスタイプを選んでください。選択後、[次のステップ: インスタンスの詳細の設定]をクリックしてください。

ステップ3では、インスタンスを起動するVPCとサブネットを指定します。“ネットワーク”では先ほど作成したVPCを選択、“サブネット”ではインターネットから直接接続ができる“パブリックサブネット”を選択してください。

ステップ4のストレージでは適宜必要なディスクサイズを指定します。ステップ5のタグの追加設定は何も設定せずに先に進みます。

ステップ6ではインスタンスのセキュリティグループと言われる、通信許可の設定を行います。NICE DCVではリモートクライアントとの通信のために8443/tcpを利用します。また、ソースについてはセキュリティ向上のために現在ご利用中のネットワークのパブリックIPからのみ接続を許可するために、“マイIP”を選択します。

[確認と作成]で設定内容を確認し、[起動]をクリックします。以下のキーペアの画面でキーペア名を入力、キーペアのダウンロードで.pemファイルをダウンロードし、[インスタンスの作成]をクリックします。こちらのキーペアはWindowsログインの時のAdministratorパスワードを取得するために利用します。

EC2のトップ画面に戻り、インスタンスが起動するのを待ちます。起動が完了したら“インスタンスの状態”が“running”となります。起動が完了したら、先ほどの.pemファイルを使ってWindowsのパスワードを取得します。[アクション]-[Windowsパスワードの取得]をクリックし、ダウンロードした.pemファイルをアップロードし、その後表示されるAdministratorのパスワードをコピーします。

インスタンスに固定のパブリックIPを付与します。画面左メニューのElasticIPをクリック、[新しいアドレスの割り当て]をクリックします。IPv4アドレスプールは“Amazonプール”を選択し、[割り当て]をクリックします。

割り当てられたIPアドレスをインスタンスに関連付けます。IPアドレスを選択し、[アクション]-[アドレスの関連付け]をクリックします。

以上でセットアップは完了です。ウェブブラウザから、“https://<先ほど設定したElastic IP>:8443/ にアクセスします。先ほどコピーしたWindowsパスワードを使ってログインします。

ネイティブクライアントもこちらからダウンロードできます。以上でインスタンスの起動は完了です。続いて、Unreal Engine4のインストールなど個別の設定を行なってください。

注意:Unreal Engine4をにあたり、NVIDIA Grid Driverで検証を行いました。GPU関連のエラーが発生する場合はこちらのドライバーをご利用ください。


バージョン管理ツール“Perforce Helix Core”をAWS上に構築

プログラムやアセットのバージョン管理ツールとして広く利用されているPerforce Helix Coreですが、こちらもAWS上でご利用いただくことが可能です。AWS上でHelix Coreをご利用いただくことのメリットとしては、

  • サーバのCPUやメモリ、ディスクなどのリソースを必要に応じて柔軟に変更することができる(構築時の厳密なキャパシティプランニングが不要)
  • 世界中にあるAWSリージョンはもちろん、既存のオフィス、データセンターなどとも自由にセキュアなネットワークを構成しアセットの配置を柔軟に行うことができる
  • Helix Coreと密接なビルドなどの作業もAWSのEC2インスタンスなどを需要に応じて利用することができる

Helix CoreをAWS上で構築するための詳細につきましては、こちらの記事で詳しく紹介しておりますのでぜひ合わせてご覧ください。

Perforce Helix CoreをAWS上に構築する (Part1)

ネットワーク構成ですが、Perforceマスターサーバはインターネットから直接アクセスされる必要がない(VPC内のリソースからのみ)ため、プライベートサブネットに配置します。インスタンスの起動方法は前述のワークステーションと同じなので、ポイントだけ解説します。インスタンス起動時の以下の画面で“プライベートサブネット”を選択してください。

 

また、セキュリティグループについてはp4broker(1666/tcp)、p4d(1999/tcp)の通信をVPC内のワークステーションなどのリソース(今回は10.0.0.0/16)に対して許可します。また、メンテナンス用にsshも設定します。

インスタンスが起動したらHelix Coreをセットアップしましょう。PerfoceとAWSで共同で提供しているAWS Studio Packもご利用可能です。こちらはHelix Core上の最大5ユーザーと最大20ワークスペースの無料提供、AWSクラウドの12ヶ月の無料枠提供、そして無料の技術ガイド(英語)を提供というPerforceをAWS上ではじめてみたい方に最適なプランとなっています。ぜひ合わせてご利用ください。


ビルドサーバをAWS上に構築

Unreal Engine4とPerforce Helix CoreがAWS上で構築できましたが、各種ビルド作業についてもEC2インスタンス上で実行することができます。AWS上でビルドサーバを構築いただくことのメリットとしては以下が挙げられます。

  • 開発パイプラインを組み合わせて柔軟にスケール・並列化できる
  • 多コア、大容量メモリのハイスペックインスタンスで高速ビルドが実行できる

g4などのGPUインスタンスによってシェーダーコンパイルやライトマップのベイクなど比較的作業時間が長い処理についても高性能なインスタンスタイプを利用することで高速に実行することができます。このようにビルド作業をAWS上で最適化することで作業時間の短縮や開発イテレーションの高速化を実現し、ゲームの品質向上に大きく寄与します。

今回もEC2インスタンスの起動手順については割愛しますが、Helix Coreと同様にインターネットからの直接アクセスが必要無いためプライベートサブネット上に起動することをおすすめします。

ビルドパイプラインをJenkinsで構築されているケースも多いため、こちらの「AWS上でのJenkins活用方法」の資料もご覧ください。


オフィスまたはデータセンターとAWSの間をプライベートネットワーク接続

オフィスまたはデータセンターに既存の開発環境が存在している存在している場合、Perforceのデータ同期やActive Directoryなどと連携のためにそれらの拠点とのネットワーク接続が必要になります。AWSでは拠点間のVPN接続、またはAWS DirectConnectによる専用線接続の2つを提供しています。今回は比較的すぐにご利用いただけるVPN接続について解説します。(専用線接続を行いたい方はこちらをご参照ください。)VPN接続にあたり、拠点側にVPNルータが必要となります。Amazonでテスト済みのVPNルータのリストはこちらです。こちらに掲載されていないデバイスであっても接続のための要件を満たしていればご利用いただくことが可能です。

今回作成したVPCは拠点間VPN接続を想定しているため、すでにVPN接続に必要なVPN接続が存在します。VPCトップ画面の左メニューの“サイト間のVPN接続”をクリックし、VPN接続が存在することを確認してください。

該当のVPN接続にチェックをいれ、画面上の[設定のダウンロード]をクリックすると、拠点側のVPN設定がダウンロードできます。拠点側のルータのベンダー、プラットフォームなどを入力し、ダウンロードボタンを押すことでサンプルのコンフィグをダウンロードすることができます。そちらをお持ちのルータに設定してください。(実際の設定にあたってはネットワーク管理者の方にご相談ください。)

 

接続にあたっては、VPN接続のドキュメントも合わせてご覧ください。


プロデューサー/ディレクター/デザイナー向けのVDIソリューション

これまではゲーム開発者向けにUnreal Engine4やPerforceのソリューションをご紹介してきましたが、プロデューサー/ディレクターの方々のリモートオフィス環境、デザイナーの制作環境にはAmazon WorkSpacesによるVDI(仮想デスクトップ)ソリューションがご利用になれます。前章でご紹介したようなインスタンスではなく、WindowsやLinuxのデスクトップを数分で起動し、専用のクライアントアプリケーションまたはWebブラウザでアクセスします。

VPC上にデスクトップを起動できるため、Perforceのマスターサーバやビルドサーバにもアクセスできます。Microsoft Office製品がすでにインストールされたバンドルや、デザイナー向けにはGPUが搭載されたグラフィック/グラフィックプロのバンドル上に普段ご利用のグラフィックアプリケーションをご自身でインストールしてご利用いただけます。

セットアップ方法はこちらをご覧ください。


注意事項

AWS上で開発環境をご利用になるにあたり、以下の点についてご注意ください。

  • 今回ご紹介したワークステーションやHelix Core、ビルドサーバーで利用しているEC2インスタンスは時間従量課金となっています。コストを下げるために利用しない時間帯は停止するように心がけましょう。
  • EC2インスタンスのバックアップも定期的に行いましょう。EBS Snapshot機能でボリュームのスナップショットを取得できますし、 AWS Backupで自動的にバックアップタスクを管理することができますので、合わせてご確認ください。
  • セキュリティについても十分に考慮する必要があります。本記事では最小限のセットアップのみをご紹介しているため、例えばネットワーク接続については規定のVPN利用が必須であるケースや、Windowsサーバ、クライアントの利用においても社内のActive Directory環境への接続が必要であるケースがほとんどです。情報システム管理担当の方と相談の上、社内のポリシーに沿ってご利用ください。
  • 今回の手順ではプライベートサブネットからインターネット接続を想定しておりません。インターネット接続が必要な場合、パブリックサブネットにNATゲートウェイを立てるか、ルーティング設定によってVPN接続経由で既存の拠点側にあるネットワーク接続をご利用ください。
  • AWS上で利用するサードパーティのソフトウェアライセンスにつきましては利用前に提供元のポリシーをご確認ください。

最後に

今回ご紹介したAWS上でのゲーム開発環境構築はもちろん、ゲーム全般でご不明な点がございましたらこちらにご連絡ください。また、個別相談会も受け付けております。お気軽にお問い合わせください。

 

ソリューションアーキテクト 吉田