ゲームエンジンGodotのWebXR対応を試す

1K Views

March 23, 21

スライド概要

2021年3月23日に開催されたWebXR Tech Tokyo #5の登壇資料です。
https://vrtokyo.connpass.com/event/204853/

profile-image

株式会社フレームシンセシス代表取締役兼テクニカルディレクター。VRとGodotが好き。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

ゲームエンジンGodotの WebXR 対応を試す こりん(@korinVR) WebXR Tech Tokyo #5 @ cluster 2021/03/23

2.

自己紹介 本名 ハンドル 古林 克臣(こばやしかつおみ) こりん(@korinVR) 職業 所属 Unityエンジニア 株式会社エクシヴィ

3.

今日のお題 オープンソースのゲームエンジンGodotが WebXRに対応したので概要を紹介します。 - Godot(Godot Engine)の紹介 GodotでWebXRビルドする方法 VRのツールキットの紹介 Godotの所感

4.

Godot(Godot Engine)とは

5.

Godot(Godot Engine)とは C++製2D/3Dゲームエンジン 元々はアルゼンチンのJuan Linietsky氏とAriel Manzur氏の 両名により2007年頃から開発されたインハウスゲームエンジン

7.

Godot Engineの特徴 - マルチプラットフォーム - Windows、macOS、Linux、iOS、Android、HTML5等 - スクリプトは独自言語GDScript - C#やC++も公式サポート - ノードベースのスクリプティングやシェーダーもサポート - UnityやUE4と比較が可能なくらいの機能は揃ってきている - ビルド(エクスポート)が爆速 - エディタ自体がGodot Engineで動いている - HTML5ビルドされたWeb Editorもある

8.

増えるGodot Engineのユーザー 世界最大のゲームジャムGGJにて ここ数年で使用する参加者が顕著に増加 (依然Unityが圧倒的ですが……) 現在ユーザー数はDAUで推計約15000人 2021年 2017~2020年(青線)

9.

余談:「Godot」の由来と読み方 名前の由来はサミュエル・ベケットの戯曲 「ゴドーを待ちながら(Waiting for Godot)」 いくら待っても永遠にゴドーはやって来ない 完全なエンジンにはならないというような含意か Godot Engineの読まれ方はわりとバラバラだが つい2日前に公開された公式のプレスキットによれば 「英語話者は(フランス語の戯曲同様)”GOD-oh” を推奨」 しかし、創始者のJuan Linietsky氏はスペイン語読みで 「ゴードット(Go-Dot)」と発音している

10.

余談:「Godot」の由来と読み方 裏話として、Godotは開発名だったが 逆転裁判にゴドーというキャラクターが 登場して正式名称に決まったそう アルゼンチン文化にちなんだ名前をつけようと言っていたら 「逆転裁判3」のゴドー(Godot)の 英語版の本名がディエゴ・アルマンド (アルゼンチン出身のマラドーナの名前に由来と思われる) さらに余談だが Diego Armando →ゴドー 個人的には逆転裁判が好きなので 「ゴドーエンジン」と読んでる

11.

GodotのWebXRサポートについて

12.

GodotのWebXR対応について GodotはHTML5で動作するアプリを出力できる Godotはエンジン本体に VR/ARサポートのためのインターフェースが整備されている (すでにRift、Quest、Steam VR、OpenXR等に対応) David Snopek氏がWebXRモジュールを開発 今年の1月にメインブランチにマージされた 現在RC版がリリースされているGodot 3.3から利用できる

13.

GodotのWebXRモジュール Godot Engineのリポジトリの /modules/webxr フォルダに WebXRモジュールが入っている /modules/webxr/doc_classes/WebXRInterface.xml に (まだビルドされていない)APIドキュメントがある David Snopek氏のサイトに詳細な解説があり 基本的な手順としてはこれを読めばいいのですが 以下、2021/3/23時点で動かす方法を簡単に紹介します。

14.

GodotでWebXRアプリをビルドする

15.

Godot Engine本体のダウンロード 2021/3/23現在、Godot 3.3 RC6で WebXRにエクスポートできることを確認 ページの下の方にあるStandard buildをダウンロード (Mono buildはRC6ではHTML5出力が動かない→RC7で直った)

16.

シーンとカメラリグを作成する 新規プロジェクトをOpenGL ES 2.0で作成 左の画像のようにVRのカメラリグを作る - ルートにARVROriginを追加 - その子にARVRCameraと2つのARVRControllerを追加 - ARVRControllerをそれぞれ 「LeftController」「RightController」とリネーム (次に追加するスクリプトから名前で参照するため) - 「RightController」のController Idを2に設定 - コントローラー表示用のメッシュを適当に追加

17.

スクリプトでWebXRモジュールを初期化 ルートにSnopek氏のページの中程にあるスクリプトを追加 長いが基本は簡単で、 ARVRServer.find_interface(“WebXR”) でWebXRモジュールをロードし、 WebXRのセッション開始のシグナルで get_viewport().arvr = true でVR描画を有効にしている 一通り目を通しておくといいかも

18.

VRモードに入るボタンを作成 ルートにButtonノードを適当なサイズで作成し Textに「Enter VR」等を設定

19.

プロジェクトのエクスポート(ビルド) シーンを保存、右クリックでMain Sceneに設定し Project > Export... でHTML5を追加しエクスポート 初回はテンプレートファイルを要ダウンロード(約500MB) (全プラットフォームのビルド済みGodotエンジンランタイム)

20.

エクスポートされたファイルの内容 - .pckファイル(Godot独自形式) - プロジェクトのアセット一式 - 約18MBのWebAssembly - 事前ビルド済みのエンジン本体 (gzip圧縮後約4.5MB) - HTMLとJavaScriptのローダー等 圧縮配信して約5MBが出力サイズのベースライン(十分に小さい) (注:C#を使うとMonoと.NETのライブラリでgzip圧縮後5MBほど増える) Godotのエクスポートは、ほぼアセットを.pckにアーカイブして ビルド済みのエンジン本体に添付するだけに近いので爆速

21.

HTTPSサーバーでホストして実行する WebXR Device APIはHTTPSサーバーでなければ動作しない .wasmと.pckが大きいのでウェブ配信時はgzip/Brotli圧縮を ローカルでとりあえずホストするにはBrowsersyncを使うのが簡単 $ browser-sync start --server --https --no-open --port=1000 Questのブラウザでアドレスバーに httpsから入力すると開ける 「Enter VR」ボタンで VRモードに入る

22.

Godotで使用できるVRのツールキット

23.

Godot Oculus Quest Toolkit Oculus Quest Toolkitという名前だが WebXRでも動く(Godotの共通化されたVR基盤のおかげ) ShowcasesにQuestアプリでの使用例

24.

Godot Oculus Quest Toolkit - Touchコントローラーの表示 空間UI 基本的な移動やテレポート 物をつかむ処理 - 上記のサンプル - Beat Saberのようなゲーム

25.

Godot Oculus Quest Toolkit Godot 3.3 RC6でエクスポートして動作を確認 (カスタムテンプレートは空にする) 大きめのプロジェクトなのにエクスポートは1秒 AutoLoadに登録されている OQ_Toolkit/vr_autoload.gd で VRのモジュールをロードしている OQ_Toolkitフォルダの .scn や demo_scenesフォルダを要チェック

26.

Godotの所感(個人の感想です)

27.

Pros - オープンソース(MITライセンス) - エンジンがコンパクト - 必要な機能のみを筋よく押さえている印象。起動も速い - エクスポートが爆速 - VRの基盤がすでに整備されている - OculusネイティブでもWebXRでも共通の方法で開発できる - 将来性 - 個人的な肌感覚では、このエンジン本気のゲームが作れるのでは? と 気がついた人々が集まってきて取り組みはじめている気配を感じる

28.

Cons - 最新XRデバイスが対応するのはやはりUnityやUE4から - 最近ならVIVEフェイシャルトラッカーとか - 3Dアセットは自力でどうにかする必要がある - UnityのAsset StoreやUE4のMarketplaceに相当するものがない GodotにはAssetLibがあるが、 配布可能なものはオープンソースのもののみで主にスクリプト系 - 自作するか、SketchFabやTurboSquid等でなんとかしましょう - 独自言語のGDScriptを覚える必要がある - GDScriptのファンは多いよ! - C#も普通に使えるよ!(静的型でGDScriptよりずっと高速)

29.

所感:GodotのWebXRはすでに実用域の印象 特にパフォーマンスに余裕のあるPCブラウザにおいては オープンソース大好きとか 爆速エクスポートが気になったらぜひぜひ!

30.

逆転裁判の「ゴドー検事」のように熱い 「Godot Engine」いかがでしょう? ご静聴ありがとうございました! こりん(@korinVR)