9.5K Views
March 27, 24
スライド概要
2023年12月に開催されたXR Kaigi 2023の登壇資料です。
講演動画はこちら:https://www.youtube.com/watch?v=EukYL6K5WqY&t=193s
近年注目を集めているオープンソースのゲームエンジンGodotについて解説します。VRサポートの現況と標準XRツールキット、実案件への導入可能性、今後の展望等、個人的見解も交え触れていきます。
ゲームエンジンGodotの概要と Godot XR Toolsの紹介 こりん @korinVR/株式会社フレームシンセシス XR Kaigi 2023
自己紹介:VR関連 VR大好きなソフトウェアエンジニアです。普段はUnityを使います 古林 克臣(こばやし かつおみ) a.k.a. こりん 株式会社フレームシンセシス 代表取締役CEO 東京大学先端科学技術研究センター 稲見・門内研究室 学術専門職員 X: @korinVR VRChat: korinVR(Trusted User) 2013年より VR作品の自主制作を開始、2015年より商業案件の受託 2016年より 株式会社ハシラス 2019年より 株式会社エクシヴィ 2022年12月 株式会社フレームシンセシスを設立
自己紹介:Godot関連 Godotに強い関心を持っている一ユーザー 昨年のXR Kaigi 2022でGodotのフルセッション 「ゲームエンジンGodot 4の概要とそのVR開発について」(YouTubeにアーカイブあり) Godot勉強会 #1 2023年10月開催 (主催:Godot Japan User Community/共同主催:バンダイナムコスタジオ様) 言い出しっぺ・運営スタッフ
本セッションの構成 XR Kaigi 2022のセッションではGodotの実演中心→今年は解説中心に 1. ゲームエンジンGodotの概要と背景 2. Godot XR Toolsの紹介 3. Godotよもやま話(個人的見解など) 4. 情報源など
Godot(ゴドー)とは
Godot(ゴドー)とは オープンソースのC++製ゲームエンジン アルゼンチン出身(現在スペインに移住)の Juan Linietsky氏とAriel Manzur氏が 2007年頃から開発を開始 2014年にMITライセンスでオープンソース化 Windows、macOS、Linux、Webブラウザ iPhone、Android等にビルド(エクスポート)可能 OpenXR・WebXR対応
Godotの機能 レンダリング、アニメーション、物理エンジン、マルチプレイヤー等 2D/3Dゲームエンジンとしての基本機能が一通り備わっている スクリプト制御は独自言語のGDScript(C#等も使用可能) 他のゲームエンジンに習熟している方はList of featuresに目を通すと手っ取り早いです
Godotの人気度・普及状況 3DゲームエンジンとしてはUnityやUnreal Engineに次ぐポジション(主に英語圏) (※Cocos Creator、Bevy Engine、Stride等他にもゲームエンジンはたくさんあります) GitHubのスター数が約8万 ゲームジャムやインディーゲーム方面で勢い 直近ではUnityのランタイム料金の一件で… 10月以降 itch.ioのゲームエンジンの週間シェア1位に
Godotで作られているゲームの例 Road to Vostok (公式サイト – Xのポスト)
Godotで作られているゲームの例 The Mirror (公式サイト – GodotCon2023のセッション動画)
Godotで作られているゲームの例
Godotは誰が作っているの? OSSなのでコミュニティが作っている リード開発者のJuan Linietsky氏(@reduzio)が中心 Godot Development Fundその他からの個人・企業スポンサーの開発費の支援により (2023年9月時点)10名のフルタイム・パートタイムの開発者がいる 2023年内にGodot Foundationに移行 ほか多数のコントリビューターがGitHub上で開発および議論に参加=みんなで作ってる 日本人のGodotコア開発メンバー・Tokageさんの資料をぜひ参照!
W4 Games社 Juan Linietsky氏らがGodotのエコシステム拡大のために設立 Red Hat創業者やOSS Capital等からシードで850万ドルを調達 W4 Consoles Godotから家庭用ゲーム機にエクスポート可能にする (2023年2月の記事によれば) 商用ゲームエンジンのようなライセンス形態を検討中 W4 Cloud オンラインゲーム開発のための各種クラウドサービス アカウント認証、データベース、マッチメイキング、専用サーバーのホスト 2023年11月 クローズドベータが提供開始
Godot(ゴドー)の名前と読みの由来 公式のプレスキットより 「Godotは戯曲『ゴドーを待ちながら』にちなんで 命名され、通常戯曲のように発音される。 言語によってGodotの発音は異なるが、 私達はそのことを美しいと感じている」 直近のGodotCon2023の動画を見るとだいたい「ゴドー」 元々コードネームだったのが「逆転裁判3」のゴドー検事がきっかけで 正式名称になったという裏話もあり、日本語読みも「ゴドー」で確定だと思います ※ただしアルゼンチン出身のJuan Linietsky氏はスペイン語読みで「ゴードット」と読んでたり…
Godot XR Toolsの紹介
GodotのVRサポートの概要 エンジン本体がXR機能をサポート OpenXRとWebXRのモジュール付属 Godot XR Tools モバイルのOpenXR対応のためのベンダープラグイン 一番上位のレイヤーにツールキットとして Godot Engine XRCamera3D / XRController3D Godot XR Toolsがある OpenXRモジュール Bastiaan Olij氏(GodotのリードXR開発者) David Snopek氏(WebXRモジュールの開発者) Godot OpenXR Vendors Plugin WebXRモジュール
XRの基本設定 XROrigin3D、XRCamera3D、XRController3Dでリグを組んでVRの設定をいくつか有効にする スクリプトでモジュールを探して初期化、ビューポートのXRフラグをオン Godot XR Toolsから始める場合は設定済みなのでここではスキップします 詳細はXR Kaigi 2022のセッションを参照
Godot OpenXR Vendors Plugin Meta Quest、PICO等へのエクスポートに必要 Meta Questのプラグインでは Oculus OpenXR Mobile SDKのOpenXRローダー(libopenxr_loader.so)が含まれていて 2023/11現在Meta OpenXR mobile SDK 57ベース コミッターにMetaのFredia Huya-Kouadio (@m4gr3d)氏
Godot XR Tools XRアプリの基本処理のツールキット UnityのXR Interaction Toolkitに相当 • プレイヤー移動・ターン・ジャンプ・しゃがむ • 物をつかむ • テレポート移動 等々…… 12個以上のサンプルシーンが含まれていて プロジェクト名は「Godot XR Tools Demo」 主にBastiaan Olij氏とMalcolm Nixon氏がコミット
Godot XR Toolsの試し方 方法1:Asset LibraryからGodot XR Tools Demoをダウンロードして開く 方法2:GitHubのreleaseページからダウンロードまたはclone (こちらのほうがバージョンが新しい) OpenXRセットアップ済みのプロジェクトなので WindowsでQuest LinkまたはSteam VRが動く状態なら F5キーを押せばすぐVRモードで動作
Godot XR Tools – Meta Quest Godot XR Tools Demoではそのままエクスポートできる状態になっている ※GodotでAndroidエクスポートができるように準備する必要がある (他のゲームエンジン同様、環境のトラブルが起きがち) 概略手順 • Androidの指定バージョンのSDK等をインストールしてGodotのエディタ設定からパス指定 • 署名ファイル(debug.keystore)の作成 • 環境変数JAVA_HOMEでSDKを参照 詳細は公式ドキュメントの解説を参照してください
Godot XR Tools – Meta Quest プロジェクトのセットアップも必要 GitHubのリポジトリではセットアップ済み(Asset Libraryではセットアップされていない) プロジェクトにAndroid Build Templateをインストール さらにGodot OpenXR Vendors Pluginを追加 ※ Godot 4.2からAndroidプラグインの形式が変わり アドオンになったためProject Settingsで有効化する必要あり
実演:Meta Questビルドと実行 初回ビルドは20秒ちょっと+実機への転送時間 2回めは1~2秒+実機への転送時間 (Ryzen 9 7950X機)
Godot XR Tools - WebXR Godot XR Tools Demoではエクスポート設定済み ゼロからの場合、エクスポート設定でWebXRのPolyfillを設定したりする必要がある David Snopek氏のページを参照 Webブラウザでは現在Compatibility(互換性)レンダラーを使用 名前の通り他のレンダラーと比べて機能が制限されているので注意(WebGPU待ち)
実演:WebXRビルドと実行 めちゃくちゃ速い
Webエクスポート時の注意点 WebAssemblyのShared Array Bufferを使用するため 現状ブラウザのセキュリティでウェブサーバーのCross Origin Isolation設定をしないと動かない (CORS設定をしないと他のオリジンのリソースにアクセスできなくなるので結構大変です) ウェブサーバーの設定でヘッダを返すか Cross Origin Isolation Service Workerでも回避できる? Godot XR Toolsではコントローラー入力の割り当てをしないと移動できない (demo_scene_base.gdを参照)
Godot XR Toolsの基本的な使い方 XRCamera3D、XRController3Dのリグがあることが前提 ここにGodot XR Toolsのコンポーネントを挿してパラメーターを調整するだけ 起動シーンに設定されているdemo_staging.tscnで StartXRに追加されているstart_xr.gdでOpenXR/WebXRモジュールの初期化が行われている
Godot XR Toolsのデモ(移動系)
実演 – Basic Movement Demo Basic Movement Demo
実演 – Sphere World Demo 小惑星上を歩ける 壁を歩くためのXRToolsMovementWallWalkというコンポーネント Sphere World Demo
実演 – Origin Gravity 同じく壁を歩き回る激酔いシーン こんなこともできるという感じで Origin Gravity Demo
実演 – Sprinting Demo 競技場みたいなシーン 左手スティックを押し込むと走る 壁登り Jog-in-place Movement Sprinting Demo
実演 – Teleport Movement Demo Teleport Movement Demo
実演 – Grappling Demo Grappling Demo Grappling Demo
実演 – Climing & Gliding Demo Climbing & Gliding Demo
Godot XR Toolsのデモ(操作系)
実演 – Pickable Demo ティーカップ・ハンマー 両手で銃を構える(2023-11にマージ) Pickable Demo
実演 – Interactable Demo レバー操作・ホイール操作 Interactable Demo
実演 – Audio Demo バスケットボールマシン Audio Demo
実演 – Pointer Demo UI・ソフトウェアキーボードをレーザーポインターで操作 XRController3Dにポインタを追加 Viewport2Din3DノードでUIを3D空間に表示するだけでもう使える! Pointer Demo
「あれ? もう一通り機能入ってない?」 実際充実している… ほぼノーコードでそれなりのものが作れてしまいそう その他の機能 • Vignetteコンポーネント – VR酔い防止 • プレイヤーがその場でジャンプするとVRでもジャンプ • 足音(MovementFootstep) 等々
デフォルトで用意されている手のモデル • 高ポリゴン版と低ポリゴン版 • さまざまなマテリアル • 多数のポーズ オブジェクトを持つときの手のポーズを 設定可能
注意:Questでの動作 現状まだまだこれから! (2023年11月現在) Meta Quest 3でシーン切替時にフリーズ Godot XR Toolsで行っているシーンのバックグラウンド読み込みに問題があるかも? Meta Quest 2だと大丈夫/シーン切り替えしなければ大丈夫 QuestでMSAAが効かない アプリを終了するときにすぐ終了しない(5秒くらい止まる) まだパフォーマンスは出ていなさそう (Meta Quest 2だとメニュー画面を見ただけで簡単にフレーム落ちする)
Godotよもやま話(個人的見解)
ぶっちゃけ実案件に投入できそうですか? VRでは基本的には時期尚早(2023年11月現在) • パフォーマンス・安定性 • キャラクターアニメーションや3Dサウンド、360度動画等々 • 各種XRデバイスやSDKが真っ先に対応するのはUnity(最近ならたとえばApple Vision Pro) 通常の3Dアプリケーションなら全然ありになってきた 国内でも実案件の話を聞くこともゼロではなくなってきた (個人的予想:どこかのスマホゲーム会社が大々的に採用するシナリオは結構ありそう) 弊社まだ何年かUnityだと思います 機会があればGodot使いたい(のでGodotが使えるかもしれない案件あればください)
GDScriptとC#どっちがいいですか? 独自言語に身構える気持ちはとても分かる が、一度素直にGDScriptを触ってみてほしい 2023年のユーザー調査によればGDScriptのユーザーが81%、C#が14.5% エンジン本体にエディタもデバッガも統合されている、イテレーションが爆速等 往年のUnityScriptとは立ち位置がだいぶ違う 一方でC#はCoreCLRで.NET 8に対応(最新のC#が使える!) もしかしたらUnityからの移行組はC#を使っていく流れができていくかも…? (RiderにもGodotサポートのJetBrains公式プラグインがある)
Asset Storeは? Godot Foundationで現在準備中 「マージンは意図的にとても薄くしたい。非営利プロジェクトであることを妥協したくない」 Unity Asset StoreやUE Marketplaceのアセットは 一部を除いて他のゲームエンジンでも使用可能(ライセンスはよく確認のこと)
VRMとか使えますか? V-Sekaiという開発者グループの方々がVRMのインポーター・エクスポーターを開発中 Asset LibraryにGodot 4.1以降版がある Unityのアセットインポーターその他も開発されていて気になります
OSSとしてのGodotの持続性は? オープンソースソフトウェアにつきまとう開発費の問題 GodotはOSSとしてはだいぶ上手くいっているように(外からは)見える 特に10月以降個人・企業のスポンサーが急増 直近の公式ブログのXRのエントリではXR向けの支援金が尽きてペースダウンしているとのこと Godot Development Fundで支援しましょう! 自らコントリビュートする道も(したい…)。直近Quest関連のコード寄贈の例を見かけました
なぜGodot?(個人の感想です)
前向きな理由 基本的に待ち時間が少なくストレスフリー (プロジェクトが大きくなったときのスループットは 分からないが)謎の待ち時間が基本的にない Webエクスポートが一瞬(理由はあるが…) エンジンがシンプル ドキュメントを読んでいて「分かってるな」と感じる ルームスケールVRの課題について解説しているページも→ リード開発者のJuan Linietsky氏のツイートが面白い(人を選ぶかもですが) オープンソースなのでゲームループから各種モジュールから見放題・触り放題
後ろ向きな理由 円安基調で商用ゲームエンジンの使用が厳しくなっていくことへのリスクヘッジ Unity→Unity Industryの新設、Unity Proも近々の価格改定が予告 (何らかの根本的な情勢変化がない限りこの流れは変わらなさそう) UE5→ノンゲーム用途は来年以降シート制のライセンスモデルを示唆 (「高すぎも安すぎもしない」とTim Sweeneyは言っているが、 通貨が弱くなっていく日本の立場だと…) 商用ソフトウェアが発展したあと オープンソースソフトウェアがゆっくりとフォローしていくのはよくある流れ GodotはMaya・3ds Maxに対するBlenderのような存在になるポテンシャルがある そんなにすぐ入れ替わったりしないので、ゆっくり「ゴドーを待ち」ましょう!
情報源など
Godotの情報を得るには 公式ドキュメント・公式ブログ VR関連のチュートリアル Bastiaan Olij氏のYouTubeチャンネル 公式Discordサーバー 公式リポジトリのIssues Godot Proposals Godot Contributers Chat 主要開発者(Juan Linietsky氏等)のXアカウント
Godot日本ユーザーコミュニティ Godot Japan User Community(運営:Saitosさん) Discordサーバーに1000人以上が参加 技術情報の交流等がとても活発です Godot勉強会 #1主催 次回のGodot勉強会の開催も (1~3月頃でしょうか…?)
VR開発メモ スライドで詳細を網羅しきれませんでしたので 「Godot 4 VR開発メモ」のページで フォローアップします!
GDC2024のGodotブース GDC2019:GitHubのHQでGodotのイベントが開催 (この間コロナ禍) GDC2023:W4 Games社が初のGodotブースを展開 GDC2024:前年の1.5倍の広さとのこと
XR Kaigi 2023オフライン会場 12月21日(木)・22日(金) 3階の弊社フレームシンセシスのブースに Meta QuestにインストールしたGodot XR Toolsを持っていきます 気になる方、Godotの話がしたい方は遊びに来てください! Unityの弊社VRシステムのデモもあります(本当はこっちが主役)
Let’s wait for Godot! こりん @korinVR XR Kaigi 2023