UE5 の VR テンプレートを Oculus Quest 2 で実行する 🥽
Oculus Quest 2 を買ったのでさっそく動かしてみた。 UE 5.0EA 環境で行った。
公式のドキュメントなど
- デバイスのセットアップ | Oculus開発者
- Oculus Quest: Unrealエンジンのクイックスタート | Oculus開発者
- VR テンプレート | Unreal Engine ドキュメント
デバイスのセットアップ
企業・組織の参加・作成
とりあえず個人名で新規に組織アカウントを作った。
特に問題なく作成完了。
開発者モードの有効化
iPhone でペアリングしている。上記の組織アカウントを作成、または組織アカウントに参加すれば以下のように Developer Mode が現れる。
それをオンにするだけ。
ケーブルで接続し PC からのアクセスを許可
今回は Oculus Quest 2 と一緒に買った上記のケーブルで接続した。特に問題は無し。
Oculus ADBドライバー(Windowsのみ)のインストール
こちらに関してはダウンロードしてインストールしただけ。ドキュメント通り .inf
拡張子のファイルでインストール実行。
Android Studio のインストール
ここに関しては、選択肢はいくつかあるが、特に設定無しでまずは実行したければ 3.5.3 をインストールすると良い。 ( https://developer.android.com/studio/archive?hl=ja )
上記の UE のドキュメントで、Android Studio のインストール後に 「Android NDK r21b を使用するように Unreal を設定する」のセクションがあり、そこで利用するエンジンの\Engine\Extras\Android\SetupAndroid.bat
を実行するが、今回対象とした UE_5.0EA
には以下の記述があるため。
IF EXIST "%STUDIO_PATH%" ( echo. ) ELSE ( echo Android Studio not installed, please download Android Studio 3.5.3 from https://developer.android.com/studio %PAUSE% exit /b 1 ) echo Android Studio Path: %STUDIO_PATH%
新しいバージョンを利用する場合は、上記の UE のドキュメント以外にも以下がとても参考になった 👏👏👏
SetupAndroid.bat でエラーがでる
Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager
全体は省略するが、上記のようなメッセージが出た。
ここに関しては詳細は自分にはわからないが、以下の記事によると 31.0.0 より下のバージョンを(現状では)使えばよいらしい 👏
[UE4] Android Build-tool 31.0.0 でパッケージが出来ない件 - Qiita
VR テンプレートの実行
とりあえず動かしたかっただけなのでスターターコンテンツは省き、プロジェクト作成。ただ、初回のシェーダーコンパイルにやったらと時間がかかった。
Oculus Quest 2 が接続できていれば上記のメニューが出てくるので、それを実行すると(初回はまあまあ時間かかるが)実機で操作ができる。
VR 内で武器を持って玉を発射したりするのは初めてでとてもワクワクした。部屋が狭いので静止モードでプレイしたが、ある程度移動できれば、いろいろできるんだろうかなぁ。
Steamworks API を JavaScript で操作する 🕹️
動機
Steamworks API を触ってみたいのだけど、ゲームエンジン経由で触るのも、SDK 直で触るのも自分の技量では難しかったので、とりあえず触る環境が欲しいところで以下の記事を見つけた。
HTML5製のゲームにSteamSDKを導入する手順(NW.js + Greenworks) - Qiita
Ruby でも無いか軽く探してみたが、良さそうなのがパッと見つからなかったので上記を試してみた。
この記事は上記の内容を自分でやってみた程度の内容でしかない。
環境
Windows 11 Pro 21H2
- Node はローカルにも入っていたが、今回は NW.js を SDK ごと利用した
大事なところは最初に
今回、上記の記事を辿って再現する中で困ったのは、バージョンミスマッチで最初は全く動作しなかったことだった。
今回使った各バージョン
SteamworksSDK | v1.52 | https://partner.steamgames.com/downloads/steamworks_sdk.zip |
NW.js | v0.55.0 | https://dl.nwjs.io/v0.55.0/ |
Greenworks | Win64 NW.js 055.0 |
https://greenworks-prebuilds.armaldio.xyz/ |
Greenworks Prebuilds
Greenworks の Github repo の releases には最新のバイナリは入っておらず、代わりに Prebuilds サイトが提供されている。今回は以下のビルドを使っている。
参考にしたサイトでは以下のサイトが紹介されており、おそらく同じような感じだと思うのだが、私が触った時点では微妙に異なっていて最初はそこで行き詰まってしまった。
(上記の Prebuilds サイトにはその時点で ABI Version v92 の Win64 は無かったのに、以下のサイトにはそれがあったり)
https://github.com/ElectronForConstruct/greenworks-prebuilds
上記のテーブルに貼ってある Prebuilds サイトは、URL こそ怪しい感じではあるが、公式の Github repo にもリンクされている。
つまり、今回重要だったのは、NW.js と Greenworks のバージョンをあわせるという点だった。
ちなみに、SteamworksSDK は公式だと v1.42 が対象のようになっているが、特に最新でも問題なかった。
Steamworks SDK から取得するバイナリ
https://github.com/greenheartgames/greenworks/blob/master/docs/quick-start-nwjs.md
上記のクイックスタートに書いてある。環境によって取得するファイルも異なる。
参考までに tree
├── index.html ├── package.json ├── steam_appid.txt ├── js/ │ └── index.js ├── lib/ │ ├── greenworks-win64.node │ ├── sdkencryptedappticket64.dll │ ├── sdkencryptedappticket64.lib │ ├── steam_api64.dll │ └── steam_api64.lib ├── chromedriver.exe -- ここから下は NW.js の展開ファイル ├── credits.html ├── d3dcompiler_47.dll ├── ffmpeg.dll ├── greenworks.js ├── icudtl.dat ├── libEGL.dll ├── libGLESv2.dll ├── locales/ ├── nacl_irt_x86_64.nexe ├── node.dll ├── notification_helper.exe ├── nw.dll ├── nw.exe ├── nw_100_percent.pak ├── nw_200_percent.pak ├── nw_elf.dll ├── nwjc.exe ├── payload.exe ├── pnacl/ ├── resources.pak ├── swiftshader/ └── v8_context_snapshot.bin
実行
nw.exe
を実行すると以下のウィンドウが立ち上がる。Chromium なので開発者ツールも出すことができる。
UE5 で Source Control Git を使う
環境: Windows 10 Pro
Git を入れておく
どう入れるかは自由ですが、さくっと scoop で入れます。
scoop のインストール
PS > Set-ExecutionPolicy RemoteSigned -scope CurrentUser PS > Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
Git
PS > scoop install git
ログにも出ていますが、これで %userprofile%\scoop\apps\git\current\bin\git.exe
に Git が入っています。
UE5 で設定
Edito の右下に以下のような表示が出ているのでクリック。「Connect to Source Control」が出てくるのでさらにクリック。
以下のようなフォームが出てきます。リポジトリの初期化のための情報や .gitignore
, .gitattribute
, README.md
の追加を聞かれています。
どうなっているか
PS> git show commit 4f05bf38dab4d06e366a1cef98da2ed73dd72eff (HEAD -> master) Author: xxxx Date: Sun Jul 18 09:09:14 2021 +0900 Initial commit diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..3e8f1d6
initial commit をさせたので、プロジェクトがその時点でコミットに加えられています。
gitignore
Binaries DerivedDataCache Intermediate Saved .vscode .vs *.VC.db *.opensdf *.opendb *.sdf *.sln *.suo *.xcodeproj *.xcworkspace
上記が ignore に加えられていますね。
新しいレベルを追加してみる
新規レベルだと、特に何か表記はでませんね。
コンテクストメニューに、Source Control がでてきます。Checkin をすると コミットメッセージを入力できるようになります。どうやら Git の stage はすっ飛ばす感じ。 一度コミットすると、今度はコンテクストメニューに History が入ってきます。 履歴を見れます。
レベルにCubeでも追加してみる
何かを示すアイコンが付きました。
以下のページからの引用ですが、どうやらチェックアウトしたアイコンになるようです。なるほど、この辺は Git っぽくなっている訳ではなさそう。 Source Control | Unreal Engine Documentation
ただ、一度コミットしたファイルは変更して保存するたびに Source Control もなにかしているようなので、割とリモートリポジトリに都度競合状態等を問い合わせたりするのかもしれない。 **差分を見る 一度コミットすると、Diff Against Depot というメニューも出てくる。 これを実行するとかなりいい感じに差分を出してくれる。どれぐらいの粒度(例えばノードの変更とかも)で出してくれるのかはまだよく見ていない。
以下の記事を拝見すると、いろいろと差分を見ることはできそう。 [UE4]Level BlueprintをDiffする(差分を見る)方法について - Qiita
UE5 で Chaos Destruction Demo を動かす
マーケットプレイスで提供されるものは現状では 4.26 までのサポートなんですが、「完全なプロジェクト形式」でも作成してしまってから UE5 で起動すればたいていは動いたりします。
ラーニングで提供されている Chaos Destruction Demo も同様かと思ってみたものの、このプロジェクトは普通の 4.26 でも動作しないので一筋縄ではいかず。
上記のフォーラム記事の方法でうまくいったのでメモ。
- In the launcher, switch to the Learn-Tab and download the Chaos Destruction Demo
- A new project with the same name should be created. Right click and click on “Go to Folder”
- In the explorer, right-click on the .uproject file and open with notepad (or similar) and delete the “MeshEditor”-plugin entry.
- Then, right-click on the .uproject file and click on “Switch engine version”
- Chose UE5EA. This will end up with an error, which you simply dismiss.
- Right-click the .uproject file again and click on “Create visual studio files”. This will also end up with an error which you also dismiss.
- Then go into the Source folder and open both .cs files.
- Here you need to delete or comment out the PhysX, APEX, Cloth, QueryStructure and BuildEnviroment variables. It should look like this:
記事内では上記の順に書かれているが、私の手元では、 Create visual studio files
(エクスプローラーでは Generate Visual Studio project files
)をしても、 sln
が作成されず、もう一度実行することで生成された。
ただ、先に Source/*.cs
のコメントアウトを実施してから Generate Visual Studio project files
を実行することでスムーズに進められる気もする。
Visual Studio のビルドは、手元の環境では Development Editor
, Win64
でビルドした。
機嫌よく動いてくれていてありがたい。
Chat log 2021/03/28
建築の面白そうなアプリ
- 建物を設計、建設するためのリアルタイム BIM アプリ - Unreal Engine
- Zuru Tech - Crafting Real Buildings
- UE4 を使っているとういこと以上に製造までのプロセスが面白そう。
アニメとゲームエンジンなど
- シン・エヴァンゲリオン劇場版でAdobe Premiereは庵野総監督の要望にどう応えたか - ITmedia NEWS
- 『シン・エヴァ』のリモート制作を支えたシステム&ツール - カラーが考える「アニメのデジタル化」 | マイナビニュース
- Unity と Blender みたいなキーワードも出てくる。
ゲーム周辺
- ゲームをオンライン試遊展示できるサービス「NORA」ベータ参加レポート。webブラウザで展示会感覚のテストプレイが実現可能 – IndieGamesJp.dev
- Microsoft Mesh で Mixed Reality (複合現実) における共有体験を提供: 同じ場所にいるような感覚を実現 - News Center Japan
- Steam、「ローカルマルチプレイゲーム」を友人とオンライン上で遊ぶ機能に進化。ゲームを購入しておらずアカウント登録もしてない他人ともURL経由でお手軽セッション可能に
- ローカルマルチプレイの進化は少し気になる。
- 3D都市モデル(Project PLATEAU)ポータルサイト
- twinmotion に読み込んだりみたいな例もちらほら見る
気になるゲーム
- Steam:Valheim
- ありがちなゲームシステムのようだが、売れている要因はなにか?
- モンスターハンターライズ | CAPCOM
- PSP の頃の体験は戻ってくるか
Unreal Engine のビルドが Visual Studio 2019 の 16.5 系で失敗する
今回失敗したのは Unreal Engine 4.24.3 です。
https://github.com/EpicGames/UnrealEngine/releases/tag/4.24.3-release
失敗の内容
4.24.2 でも失敗していた
実はこの 4.23 を入れる前には 4.24.2 を入れていて、その Editor を再ビルドした時にこけたのが発端でした。
その時は PBDCollisionConstraint
のビルドで落ちていました。
errors with building UE 4.24 in VS 2017 - Unreal Engine Forums
上記のフォーラムでの報告があり、事象としては一致しているのですが、解決したケースである「VS2019にした」という点ではすでに自分はなっており、仕方ないので 4.24.3 が出ていたので、そちらを改めてビルドしようとしたのでした。
4.24.3 での失敗
Error compiling UE 4.24.1 after updating visual studio 2019 - Unreal Engine Forums
内容としては、上記フォーラムの内容と一致しています。なので、4.24.2 で落ちていた原因は、おそらくまた別の要因だと思います。
ここで言及されているのは、Visual Studio の version と Unreal Engine の version の関係でした。
ちょうど自分は 4.24.2 のビルドが成功していた時から、失敗するまでに Visual Studio 2019 の version を 16.4 系から 16.5 系(実施時は 16.5.3) にあげており、そこが大きく関係していそうです。
フォーラムにも記載がありますが、以下の commit で解消されているらしいです。
https://github.com/EpicGames/UnrealEngine/commit/25cefc81fe24c767eb995b0bb66b5611e0596973
よって、今回は、Visual Studio の version はそのままに、Unreal Engine を 4.25 系(今回は preview6 ) で再ビルドし、無事成功しました。
UE4 の Third Person Template を Dedicated Server としてビルドして Windows Server で動かすまで
環境
- Windows 10 Pro
- Unreal Editor バージョン: 4.24.2-0+++UE4+Release-4.24
- 2/29 時点のものです
- Visual Studio 2019
やりたいこと
- 単純な Third Person Template を Dedicated Server としてビルドする
- Windows Server にデプロイしてアクセスできるようにする
手順
https://wiki.unrealengine.com/Dedicated_Server_Guide(Windows%26_Linux)
上記の記事にほとんどのことは書いてあります。
Visual Studio の設定
Unreal Engine 用に Visual Studio をセットアップする | Unreal Engine ドキュメント
細かく推奨設定なども書かれていますが、今回はビルドさえできればいいので「Unreal Engine から Visual Studio へのワークフローを設定する前に」の部分だけで十分です。
Visual Studio がたいていすでにインストールされていると思うので Visual Studio Installer を起動し、必要なコンポーネントを追加していきます。
私は日常的には Visual Studio は .NET 開発用に使っているため、ゲーム用コンポーネントは新たに追加したのですが、以下の Windows 10 SDK が無いことでビルドが停まったので、入れておくといいかもしれません。
Unreal Engine のコードのダウンロード
Unreal Engine のソースコードをダウンロードする | Unreal Engine ドキュメント
以下の release page から取得すれば問題ないでしょう。
https://github.com/EpicGames/UnrealEngine/releases
参考: UE4 VisualStudioを使ってエンジンをデバッグする - Let's Enjoy Unreal Engine
ディスクの容量を確認する
私の PC がディスクが 40G ぐらいしかなくて途中で容量不足になりました。。
50G 以上は空きがあるといいかなと思います。
Unreal Editor のビルド
Section 1 Building a dedicated server in Unreal Engine 4
https://wiki.unrealengine.com/Dedicated_Server_Guide(Windows%26_Linux)#Section_1_Building_a_dedicated_server_in_Unreal_Engine_4
上記手順通りです。Setup.bat
、GenerateProjectFiles.bat
と順に実行していき、Editor をビルドします。かなり時間はかかります。
VS 2017 での注意書きがありますが、2019 (というか現在?)では特に注意するようなものはありませんでした。
Third Person プロジェクトの作成・パッケージ
Wiki の「Section 2 setting up a dedicated server on windows」通りです。作成する ServerTarget ファイルは「5. Target file instructions for engine version 4.18」の内容を使います。
私が初心者だったのでいくつか注意点がありました。
- Wiki では
test
という名前でプロジェクト名を指定しているが、これは最終的にパッケージするときに失敗してしまう - 「4. Switch Unreal engine versions & generate project files」で、手順通り Engine を switch をしないといけないが、ビルドした Unreal Editor でプロジェクトを作ったからとスキップした結果、必要なファイルが生成されなかった。
Third Person プロジェクトを localhost で起動する
「Section 3 launching and joining the dedicated server」通りですね。
Windows Server の用意
今回は GCP に用意しました。イメージとして「Windows Server 2019 Datacenter」を選んだ以外はデフォルトです。
ファイヤーウォールの設定等していなければ、自動で付与されるエフェメラルの外部 IP で接続できるようになるはずです。
GCP の Firewall の設定をする
以下のように tcp:3389
(RDP 用) と udp:7777
(UE4 用) の ingress を許可するファイヤーウォールルールを作成します。
ネットワークタグに unreal-win
を指定したので、そのタグを先程作成した VM のネットワークタグにも設定しておきます。
RDP で接続する
Chrome の RDP アプリではなく Windows の Remote Desktop app を使って接続しました。事前に接続前にはパスワード設定をしておきます。
参考:
Windows Server にデプロイ
ビルドした UE4 のプロジェクトは WindowsNoEditor
というフォルダがルートになっていると思いますが、それごと Windows Server にもっていきます。
次に以下のサポートサイトから Visual C++ 再頒布可能パッケージ をダウンロードします。VC_redist.x64.exe
というファイル名です。
https://support.microsoft.com/ja-jp/help/2977003/the-latest-supported-visual-c-downloads
ダウンロードしたら Windows Server 上で実行します。
次に、コピーしてきたビルド成果物の WindowsNoEditor\Engine\Extras\Redist\en-us\UE4PrereqSetup_x64.exe
を実行します。最後に .NET Framework に関するメッセージが出ましたが、私は問題ありませんでした。
試していませんが、もしかすると、UE4PrereqSetup_x64 だけやっておけば、その前の Visual C++ 再頒布可能パッケージ のインストールは不要かもしれません。
Windows Server の Firewall の設定
VM の Firewall としては UDP 7777 を許可しましたが、Windows としてはまだ許可できていません。
以下のように Server Manager の Tools から「Windows Defender Firewall with Advanced Security」を起動します。
そこで Inboud Rules の新規ルールを作成し、UDP 7777 を追加します。(以下の画像は作成後のものですが参考までに)
Windows Server でゲームを起動し、接続する
起動はローカルで実行したのと同様ですが、ローカル接続時に作成したショートカットはパスが変わってしまっているので、新たに -log
付きのショートカットを作成し起動します。
起動できたら、続いてクライアント側ですが、entryMap のレベルブループリントを開き、 Open Level の 127.0.0.1
を GCP の Windows Server のグローバル IPに port 7777 を付けて指定します。
再度ビルドしてもいいですが、ここは簡易に Unreal Editor から起動し、接続できるか確認しましょう。