
こんにちは、髙橋一樹です。
先日のMicrosoftBuildで面白いセッションがあったので、それを見ながら自分で試したことを紹介させていただければと思います。
ゲームだけじゃないゲームエンジン
今回私が見たMicrosoftのセッションは「あなどりがたきゲーム技術。メタバースはもちろん様々なビジネスシーンでのゲーム技術の活用テクニック」になります。このセッションではゲームエンジンの現代にいたるまでの成長、さらにゲーム開発以外におけるゲームエンジンの使用例を紹介されていました。Microsoft Flight Simulatorってここ数年ぐらいのものしか知らなかったんですけど、1980年ぐらいから出てたという事実にまず驚いていたりもしていたのですが、こう一つのテーマで作られたものを年代ごとに追っていくと、技術の進化が見て取れて面白いですね。
さて本題ですがゲームエンジンとはゲームを開発するにあたって、描画とか処理を行ってくれるツール群に当たるのですが、これらを使うことによって映像を伴ったゲームの作成が非常に容易になります。有名なものだとUnityとUnrealEngineがありますね。もちろんゲーム開発において心強いツールであるのはもちろんですが、3D描画が簡単にできるということでゲーム以外の分野でも用いられいています。単純にCGを用いた映像制作はもちろんのこと、3Dのビジュアライゼーション、シミュレーションを活かして建築、自動車業界で活躍しています。そして最大限生かせる場としては、VR、XR、MRなどのいわゆる仮想現実空間の作成ですね。これらは3Dゲームエンジンを用いることで容易に行うことができます。このようにゲームエンジンはゲーム開発以外の現場でも様々な活用がされています。
ゲームエンジンは重い・・・
ゲームエンジンの活用例についてお話ししたところですが、ゲームエンジンってそんなに簡単に手を出せるものでもないのですよね。なぜかといえば処理が重い、これに尽きると思います。別に強いGPUを積んだPCであれば何も問題はないのでしょうが、こういったゲームエンジンは3D描画をバンバンやるものですから重いですし、内容が大きくなればなるほど指数関数的に重くなっていきます。ちょっと触る程度ならいいのですが、これをつかってしっかり開発しようとすると、それなりの性能のPCを用意する必要があります。気づいたらGPUの値段が高騰したりしなかったりしてる昨今、それなりの性能のPCですら用意するのはちょっと大変です。というところで仮想マシンを使ってどうにかしましょう。
Azure Game Development Virtual Machineの紹介
[Azure Game Development Virtual Machineドキュメント]
さて仮想マシン上でUnrealEngineを動かすとなると、仮想マシンを建ててリモート接続を行って諸々のソフトを入れて、と正直な話をするなら面倒くさいです。素直にセットアップすると下手すれば数時間に及ぶ作業になってしまいます。そんな作業を数十分程度で終わらせてくれるのが Azure Game Development Virtual Machine になります。これはゲームエンジンやフレームワーク、リモートプロトコル等々をまとめてセットアップしてくれるおかげでユーザーは少しの設定を行うだけで仮想マシン上でのゲーム開発を始めることができます。そしてコストはAzure Virtual Machineのみのもので、追加のコストがかかることはありません。
Azure Game Development Virtual Machine セットアップ手順
Azure Game Development Virtual Machine アクセス


Azure Portalにログインし、Azure Game Development Virtual Machineを検索します。gameとかで検索すればMarketplaceにあるはずです。 アクセスできましたらそのまま作成を押しますと、以下のような構成設定画面が出てくると思います。ここからは最低限必要な設定だけ解説していきます。Azureに詳しかったり開発環境に必要なものが既に判別できている方は各自頑張ってください(丸投げ)。
プロジェクト詳細設定

まずはサブスクリプションとリソースグループを設定していきます。どちらも好きなものを選んでいただいて構いませんが、初めての作成であればとりあえずリソースグループは新規作成するのをおすすめします。
インスタンス詳細設定

構成するVirtual Machineの諸々の設定を行っていきます。まずはリージョン及びVM sizeの選択ですが、ここでは必ず「NVv4」のいずれかのVMを選択してください。vCPU数は何を選んでも動くといえば動くのですが、快適な開発環境を目指すのであれば最低でも12は必要かと思います。リージョンのvCPUクォータが足りない場合は「リージョンの vCPU クォータの増加」を参考に引き上げ要求を行ってください。
Virtual machine nameはデフォルトではいいているものでも構いませんし、変更しても構いません。自分でこの仮想マシンが何用なのかわかる名前なら何でもよいです。Admin username及びPasswordはこの後リモートアクセスする際に用いるので、ある程度覚えていられるものにしておいてください。後で確認しようと思えば確認できるのでそこまで気張る必要はないのですけれども。Operating SystemはそのままWindows10で問題ないです。そのあとのLicensingにはチェックを入れておいてください。
Game Developer Tools設定

導入するゲーム開発ツールの設定を行っていきます。とはいっても基本的にはデフォルトで最新のものが設定されているのでUnreal Engineのバージョン設定をするのみで問題ありません。バージョンは5.0と4.27.2のどちらかから選択する形になりますが、特にこだわりがないのであれば5.0で問題ないかと思います。その下はUnreal Pixel Streamingへの外部アクセスを有効化するか否かですが有効化しておいたほうが後々楽かと思います。今回は解説しませんがアプリケーションを別のPCやサーバーで動かせるもので便利であるため、有効化しておいたほうがいいと思います。後々再設定しなおすことも可能ですがちょっと手間がかかってしましますので。
[Unreal Pixel Streamingドキュメント]
Remote Access Configuration設定

リモートアクセスの設定を行っていきます。RDP、Teradici、Parsecの中から選べますが、これもこだわりがないのであればRDPでよいと思います。というか他二つは解説できるほどの知識がないのでよくわかりません。
Virtual Machineの作成及び接続
ここまで手順通りに進めてきたのであれば、他の項目はデフォルトで大丈夫です。クォータが足りていないと警告が出て作成できませんので、 クォータの引き上げ要求をするか、VM sizeを下げてください。問題がなければ作成を押すと、デプロイが開始されますので数分待ちます。

デプロイが完了しましたら作成したVirtual Machineにアクセスします。作成したリソースグループからアクセスするか、Virtual Machinesを検索するのが早いと思います。アクセスしましたら上部の接続を押しますと、接続方法を問われますので選択します。ここではRDPで話を進めます。接続方法をRDPにした場合はここでRDPファイルをダウンロードできますので、ダウンロードして起動します。



接続するかを聞かれますので接続を選択すると、資格情報の入力を求められますのでここでインスタンス詳細で設定したAdmin username及びPasswordを入力します 。その後再度接続するかを聞かれますのではいを選択するとVirtual Machineにアクセスできます。

しばらく待ってVMへのログインが完了するとEPIC Gamesへのログインを求められます。EPIC Gamesのアカウントを持っていない場合は作成しましょう。ちなみにアクセス制限の関係上リモートVM上からGoogleアカウントでのアクセスは出来ませんので、大人しくEPIC Games のアカウントを作ってログインした方が楽です。

ログインしましたらMicrosoftGDK(Game Development Kit)のインストールが始まります。インストールが完了次第ターミナルは消えますのでそれまで待ちます。完了したらVMを再起動します。再起動をすると接続が切れると思うので再接続しましょう。
AMD GPU Driver Extensionのインストール


一回Azureに戻ってきまして、再度Virtual Machineにアクセスします。設定>拡張機能とアプリケーションを選び、上部から追加を押します。その後、AMD GPU Driver Extensionを検索し、選んで「次へ」を押して作成を行うとデプロイが始まります。デプロイが完了したら また再起動をかけます。再度接続を行い、Unreal Engineが起動出来たら、環境構築完了です。
まとめ
仮想マシン上でUnrealEngineは起動できましたでしょうか。滞りなく進めば一時間もせずに作業が完了したはずです。このようにAzure Game Development Virtual Machineを用いることで楽に仮想マシン上でのゲーム開発環境を整えることが出来ました。追加コストもないので気軽に利用できますが、NVv4のVM自体のコストがそれなりに高いのでそこだけ予算と要相談ですかね。(数百ドル/月 程度)
よい3D開発ライフを、それでは。