Open 3D Engine 動かしてみた
技術統括部エンジニアの鈴木です。この記事ではOpen 3D Engineを動かせるようにする手順を説明しようと思います。
Open 3D Engineとは
Open 3D Engine (以下「O3DE」) は、2021年7月に発表されたオープンソース3Dエンジンです。Apache 2.0ライセンスで提供されており無料で利用できます。AAAゲームや映画品質の3DCG、忠実度の高いシミュレーションなどを作ることができるとのことです。
CGinterestの記事によればAmazon Lumberyardの後継であるとのことなので、ゲームエンジンとしての機能も十分に備えていると思われます。
https://cginterest.com/2021/07/07/マルチプラットフォームのオープンソース3dエンジ/#toc3
なお、本記事執筆時点 (2021年9月) では、O3DEはまだ開発者プレビューとのことです。
この記事の目標
何はともあれ、触ってみないとわからない事が多いので、O3DEのエディタをビルドして触ってみました。この記事では、エディタを動かせるようになるまでの手順を記すことにします。エディタの使い方や、O3DEの設計コンセプトなどについては触れません。
準備
ここではO3DEのプロジェクトを作る前の準備として、ダウンロードとエンジンビルドまでの手順を記します。
必要な環境
O3DEを動かすために必要なハードウェアとソフトウェアの環境について述べます。
必要最低限のハードウェア環境
O3DEを動かすためのシステム要件は以下に記載されています。
https://o3de.org/docs/welcome-guide/requirements/
おおまかには大体以下の通りです。
- 4コア以上のintelかAMDのCPU (2.5GHz以上)
- メモリ8GB
- DirectX12 もしくは Vulkanが動作するビデオカード
- 40〜100GB空きのあるストレージ
- 画面解像度 1366×768
動作確認したハードウェア環境
この記事では私物のWindowsノートで確認しました。スペックは以下のようなところです。(あらら、CPUの動作周波数が要件を満たしていませんでした。記事の執筆後に気付きました… orz)
- Intel Core i7 8550U 1.8GHz
- メモリ16GB
- GPU GeForce GTX 1050 (mobile) / Intel UHD Graphics 620
ソフトウェア環境
OSはWindows 10 64-bit バージョン1809以降もしくは Ubuntu 18.04 LTS以降が必要です。この記事ではWindows 10 64-bit バージョン1809を用いました。
O3DEのビルドのためにはVisual StudioとGitとCMakeが必要です。
Visual Studioについては、今回は私物のノートPCへのインストールだったので、Community EditionのVisual Studio 2019を用いました。執筆時点でのバージョンは 16.11.2です。
Visual Studio Installerを開いて「ワークロード」では、「C++によるデスクトップ開発」と「C++によるゲーム開発」が選択されていることを確認して下さい。
また、「個別のコンポーネント」では、「コンパイラ、ビルドツール、およびランタイム」の項目内の「MSVC v142 VS 2019 C++ x64/x86 ビルドツール (最新)」も選択し、インストールして下さい。
以下のリンクからダウンロードできる「Visual Studio 2019 の Microsoft Visual C++ 再頒布可能パッケージ」もインストールしておいて下さい。
https://visualstudio.microsoft.com/ja/downloads/
また、この記事では、Gitについては「Git for Windows Version 2.32.0」を、CMakeについては「CMake Version 3.21.1」を利用しました。
ダウンロード
O3DEのリポジトリは以下にあります。ダウンロード方法はここに書いてありますので、内容としては重複しますが、より具体的な手順を以下に記載します。
以下では「D:\work\o3de
」ディレクトリにダウンロードすると想定して話を進めます。また標準的と思われるGit for Windowsでの操作方法を記します。(普段の作業ではCygwinやGit Extensionなどを利用していますが…)
ちょっと注意したいのがGit LFSの利用です。Git LFS (Large File Storage)はGitの拡張機能として提供されています。Git単体ではあまり得意ではない大きいファイルを扱うための機能です。O3DEのリポジトリはGit LFSを利用しています。
Git LFSがインストールしているかどうかはGit Bashのコンソールにて「git lfs --version
」を実行して、以下のようバージョンが表示されることで確認できます。
sakira MINGW64 ~
$ git lfs --version
git-lfs/2.13.3 (GitHub; windows amd64; go 1.16.2; git a5e65851)
もしインストールされていなければ「git lfs install」を実行することでインストールできます。
あとは「git clone https://github.com/o3de/o3de.git
」の実行でダウンロードを行えます。この時点ではダウンロードしたサイズは6.5GB程度なので、それほど待たなくていいと思います。
sakira MINGW64 ~ $ cd /d/work/ sakira MINGW64 /d/work $ git clone https://github.com/o3de/o3de.git Cloning into 'o3de'… remote: Enumerating objects: 217689, done. remote: Counting objects: 100% (10899/10899), done. remote: Compressing objects: 100% (5261/5261), done. remote: Total 217689 (delta 6174), reused 9437 (delta 5372), pack-reused 206790 Receiving objects: 100% (217689/217689), 123.45 MiB | 25.47 MiB/s, done. Resolving deltas: 100% (153593/153593), done. Updating files: 100% (27375/27375), done. Filtering content: 100% (4191/4191), 2.98 GiB | 18.85 MiB/s, done.
CMakeによるビルド設定
CMakeでビルドの設定をします。CMakeをデフォルト設定でインストールしたらコマンドラインがなくてGUIだけだったので、cmake-guiの方で行ってみます。
cmake-guiを起動して、「Where is the source code」に「D:/work/o3de
」を、「Where to build the binaries」に「D:/work/o3de/build_dir
」を入力します。また、3rdパーティディレクトリの指定が必要です。「Add Entry」ボタンを押して「LY_3RDPARTY_PATH
」に対してSTRING
で「D:/work/o3de_3rdparty
」を設定して「OK」ボタンでダイアログを閉じます。ここで指定したディレクトリにはこれから大量のファイルがダウンロードされますので、O3DEリポジトリの外側のディレクトリを指定して下さい。
ここまで設定できたら「Configure」ボタンを押します。もしビルドディレクトリが存在しない場合には、それを作るかどうか聞かれると思いますが、Yesと返答すれば良いです。
Configureにて以下のダイアログが表示されますが、何も設定せずに「Finish」を押して大丈夫です。(Visual Studio 16 2019が選ばれていることは確認して下さい。)
ここから様々なライブラリが3rdパーティディレクトリにダウンロードされますので、ちょっと待って下さい。私が試したときには13.2GBのファイルがダウンロードされました。Configureが終われば「Generate」ボタンをクリックしましょう。
エンジンのビルド
コマンドプロンプトでO3DEリポジトリに移動して、「scripts\o3de.bat register --this-engine
」を実行してエンジンを登録します。
D:\work\o3de>scripts\o3de.bat register --this-engine
この記事を執筆時点、O3DのREADME.mdには、ビルドの手順としてCMakeをCUIから用いる方法のみが説明されています。ここではVisual Studioからのビルドを試みることにします。
エンジンのVisual Studioソリューションは、CMakeで「Where to build the binaries」に指定したディレクトリに作成されています。
ここにある「O3DE.sln」をVisual Studioで開きましょう。ソリューション構成を「profile」に設定した上で、「ビルド」メニュー→「ビルド」→「ALL_BUILD」を選択します。(スタートアッププロジェクトにALL_BUILDが設定されていれば通常のソリューションのビルドで問題ないと思います。)
最初のビルドは時間かかります。今回の環境では4時間ほどかかりました。
動かしてみる
ここまででO3DEのエンジンまではできたので、次にプロジェクトを一つ作ってレベルエディタを開くところまでを目指します。
プロジェクト生成
プロジェクトの生成については以下にも記載されていますので、これを参考に作業します。
https://o3de.org/docs/welcome-guide/create/creating-projects-using-project-manager/
この時点で「D:\work\o3de\build_dir\bin\profile
」に「o3de.exe
」が生成されていることを確認して下さい。
この「o3de.exe
」をダブルクリックするとProject Managerが起動します。
右上の「New Project…」ボタンから「Create New Project」を選択します。
なお、リポジトリを取得したタイミングの違いなのか、右上に「New Project…」のボタンがなくて、プロジェクト一覧の左横に「Create a Project」のボタンがある場合もあるそうですが、どちらでもこの先の手順に大差はなさそうです。
右側の「Configure with more Gems」がちょっと気になりますが、ドキュメントの通りに「Create Project」をクリックすることにします。
「HelloO3DE project likely needs to be rebuild.」とのダイアログが出ますので、そのままOKボタンを押して閉じると元の画面に戻ります。「HelloO3DE」のプロジェクトが追加されましたね。
HelloO3DEのプロジェクトに「Build Project」のボタンが現れましたので、これをクリックしたらビルドできるのかなと思うのですが、実際にはクリックしたら失敗したとのダイアログが表示されてしまいました。うーん。開発者プレビューですからこういうこともあるかも知れません。
HelloO3DEのディレクトリを見るとCMakeLists.txt
があるので、CMakeでビルドすることを想定しているのでしょう。
CMakeにてsource codeに「D:/work/HelloO3DE
」を、build the binaries に「D:/work/HelloO3DE/build
」を選択します。
また、エンジンのビルドの時と同様に、Add Entryボタンから「LY_3RDPARTY_PATH
」に先程と同じ「D:/work/o3de_3rdparty
」を指定します。
(これを設定しないと意図せぬ場所に3rdパーティライブラリをダウンロードしてしまいます。実は私も最初は設定せずにConfigureをしたところ、大きいファイルを再度ダウンロードしはじめたので慌ててキャンセルしてやりなおしました。)
続いて「Configure」ボタンを押します。その次のダイアログは先程と同じように何も変更せずに「Finish」を押します。
無事に終わったら「Generate」ボタンを押しましょう。
これも終わると「Open Project」ボタンを押せるようになりますので、押してみましょう。Visual Studioが起動しますので、先程と同じようにソリューション構成をprofileにした上で、「ビルド」メニューから「ビルド」→「ALL_BUILD」を選択します。(該当ソリューションファイルは「D:/work/HelloO3DE/build/HelloO3DE.sln」にあるので、それをダブルクリックしてVisual Studioを開いても良いです。)
これもまた数時間かかってビルドが終わりました。
Project ManagerからHelloO3DEの「Open Editor」をクリックしてみましょう。
O3DEのスプラッシュスクリーンが表示されて、「おぉっ!」とちょっとテンション上がったりしちゃいます。
しばらく待っていると「Asset Processor working… ○○ jobs remaining」とカウントダウンが始まるので、コーヒーでも飲んで待つことにしましょう。
…が、こんなエラーダイアログが出てそれを閉じても、そのままエディタが起動せずにプロセスが終わってしまいました。うーん。開発者プレビューって感じですね。
ふむふむ、「SimpleTextured」とかいうシェーダが見つからないとかって感じなんでしょうか。よくわからないですが。
ただ、環境の違い (リポジトリ取得のタイミング?) によって、ここでエラーダイアログが出ても、それを閉じたらエディタが起動する場合もあるそうです。それはそれで良い事なので下の「エディタの起動」までスキップして下さい。
なお、このHelloO3DEのエディタは、HelloO3DE.sln
をVisual Studioで開いたときにある「Editor」プロジェクトであるように見えます。このプロジェクトをデバッグ実行することで、どこでクラッシュしている、か何が足りないか、などのヒントを得ることができました。
プロジェクト設定
さっきの「Configure with more Gems」のところが気になるので設定してみます。Project ManagerのHelloO3DEプロジェクトの文字の右側にドロップダウンメニューがありますので、そこから「Edit Project Settings…」を選びます。
Edit Project Settingsのウィンドウの右上に「Configure Gems」のボタンがありますので、これをクリックします。
GemというのははO3DEの機を提供する部品ようです。以下はLumberyardのドキュメントですが、O3DEでも同じような概念であると思われます。
https://docs.aws.amazon.com/ja_jp/lumberyard/latest/userguide/gems-system-gems.html
正直なところ、どれが最低限必要な部品かよくわかりませんが、今回は以下を追加で有効にしてみました。
- Atom API
- Atom Bootstrap
- Atom Bridge
- Atom Content
- Atom DebugCamera Component
- Atom Feature Component
- Atom Font
- Atom ImGui
- Atom Material Editor
- Atom O3DE Integration
- Atom RHI
- Atom RHI DX12
- Atom Shader Builder
- Atom Tools Framework
- Atom Viewport Display Icons
- Atom Viewport Display Info
- Camera
- Common Features Atom
- Crash Reporting
- Custom Asset Example
- Dev Textures
- Imgui Atom
- O3DE Core (LumbrCentral)
- PBS Reference Materials
- ReferenceMaterials
- Test Asset Builder
- UI Basics
Atomというのはレンダラーとのことなので、必須だろうと考えてほとんど選択しました。
https://o3de.org/docs/atom-guide/what-is-atom/
あとは先程「SimpleTextured」というシェーダが見つからない旨のエラーが出ていましたが、このようなエラーもどのGemを選ぶかのヒントになります。
例えば「SimpleTextured」というファイがどこにあるかを調べてみましょう。
(Windows標準の検索は遅いので、私はVisual Studio CodeやEverythingをファイル検索によく使います。) 調べると例えばこのファイルはAtomBridge
というディレクトリの下にあることがわかります。
ビルドして実行してエラーを見てGemsの設定を見直すということを何度か繰り返してこの一覧を得たのですが、最低限必要なGemsであるとは思っていません。もっと削れるでしょうけど、とりあえずは動かすことを目標にしていたのでこのままにします。
以上を選んで「Save」ボタンを押すと「Project Should be rebuild.」のダイアログが出ますので、このダイアログを閉じた上でおとなしくVisual Studioで再びビルドしましょう。
今度のビルドはそれほど時間がかからずに終わると思います。
エディタの起動
さて、改めてProject Managerから「Open Editor」ボタンを押してみます。
先程と同じように「O3DE Initialization Failed」のダイアログが表示されましたが、そのダイアログを閉じるとO3DE Editorが起動しました!! (上記の一連のビルドの後に一度PCを再起動する必要があるかも知れません。)
レベルの作成が促されていますので、「Create new…」にてレベルを作ると次に進みました!
物体を追加したり、金属マテリアルを貼ってみたり、光源を追加してみたりとかしてみました! 結構サクサク動きます。今回はエディタの起動までを説明する予定だったので、操作方法とかは省略します。
私もまだほとんど触れていないので、使い方もあまりよくわかっていないのですが、Lumberyardの後継とのことなので、きっとゲームを作ったりとかもできるのではないかなと期待しています。
新しいものってワクワクしますね!