45.3K Views
December 14, 22
スライド概要
2022年12月に開催されたXR Kaigi 2022の登壇資料です。講演動画はこちらです。
https://www.youtube.com/watch?v=58f8Hzi24zI&t=195s
スライド最後の「Godotメモ」「Godot VR開発メモ」のページはこちらです。
https://tech.framesynthesis.co.jp/godot/
https://tech.framesynthesis.co.jp/godot/vr/
ゲームエンジンGodot 4の概要と そのVR開発について こりん(@korinVR) XR Kaigi 2022 2022/12/14
自己紹介 本名 ハンドル 職業 古林 克臣(こばやし かつおみ) こりん(@korinVR) 株式会社フレームシンセシス 代表取締役CEO 兼VRエンジニア
略歴(VR関連) 2013年~ Oculus Rift DK1を購入 個人でVR作品を制作・展示していたら いつのまにか本業に 2015年~ 施設・イベント向けVRアトラクション制作 2019年~ Questアプリや簡易メタバースシステム開発 2022年12月 VR開発会社「フレームシンセシス」設立
本セッションの構成 前半: ゲームエンジンGodotの概要とバックグラウンドを紹介 後半: Godot 4のXR機能の紹介 下のようなVRウォークスルーを実際に作って現在の状況を確認する "Tanabata evening - Kyoto inspired city scene" (https://skfb.ly/6TsvL) by Mathias Tossens is licensed under Creative Commons Attribution (http://creativecommons.org/licenses/by/4.0/).
Godotとは
Godot(ゴドー)とは • オープンソースの2D/3Dゲームエンジン • Juan Linietsky氏らが2007年頃から開発 • 2014年にMITライセンスでオープンソース化 • Patreonや企業スポンサーから支援を受けつつ アクティブに開発が進められている • 2022年11月にGodot Foundationの設立が発表
Godotの現在の普及状況 3Dゲームエンジンとしては Unity・UEに次ぐポジション GitHubのスターが現在約62,000
Godotの現在の普及状況 2Dも強いためインディーゲームやゲームジャムでの使用が盛ん 昨年はメジャーIPでの使用事例が
Godotを使用したゲームの例 Showcaseページの2022年のデモリール
Godotを使用したVRゲームの例 Nothing to Declare - Godot Reel (Short Gameplay Showcase)
W4 Games社 Juan Linietsky氏らがGodotのエコシステムの強化を目的として設立 Linuxに対するRed Hatのような位置づけと説明されている (エンタープライズサポートやNDAのあるゲームコンソールへの対応等) シードで850万ドル(約12億円)を調達 Red Hatの創業者らが出資
大型アップデートのGodot 4 2023年に安定版がリリース予定 Godot 3系からの新機能が多数 (18ページくらいのベータ版リリースノート) 破壊的変更も多数 ノード名が全面的に変更 例: ARVROrigin→XROrigin3D まだベータ版で不安定なんですが… このセッションではGodot 4に行ってしまいます!
Godotに注目する理由 Unity Unreal Engine 5 Godot Cocos Creator 3系 JavaScript製3Dライブラリ Three.js / A-Frame Babylon.js Rust製のBevy Engine 等々… ライセンス料金が必要ない (デリケートな話題だが…) UnityやUEと系統が似ている オープンソース ネイティブとウェブどちらにも対応 純粋に技術的に面白いポイントがある OpenXRとWebXRにネイティブ対応
“Godot”の由来と読み方 公式のプレスキットより サミュエル・ベケットのフランス語の戯曲「ゴドーを待ちながら」 「戯曲と同じように発音すること」
“Godot”の由来と読み方(裏話) 「逆転裁判3」のゴドー検事 もともとGodotはただのコードネームだったのが アルゼンチン文化にちなんだ名前をつけようと言っていたら 英語版「逆転裁判3」のゴドー(Godot)の本名が ディエゴ・アルマンド(アルゼンチン出身のマラドーナの名前に由来)だったため 正式名称に
Godotはどんなエンジン?
エンジンの概要 • UnityやUEのようなエディタつきゲームエンジン • C++製(Unity、Unreal Engineと同じ) • Godotのエディタ自体がGodotで動いている • スクリプトは独自言語のGDScript • C#も使用可能(.NET 6) • 軽量なエンジンで起動や実行ファイルの出力が非常に高速 • XRに標準で対応(エンジン本体にOpenXR・WebXRモジュール)
デモ:Godotの基本 (約6分)
グラフィックス • 座標系はY-upの右手座標系 • 3DモデルはglTF 2.0(.glb/.gltf)がインポートできる • シェーダーはGLSLベースの独自言語(.gdshader)
リアルタイム大域照明SDFGI Linietsky氏のUE5のLumenとの比較ツイート
物理エンジン • Godot Physics(Godot 3でのBulletから独自エンジンに) • ソフトボディがある
ネットワーク周り • Godot 4で大きくリファクタリングされた(未調査です、すみません……) • ENet / WebRTC / WebSocketでノードの同期とRPC • サーバー・クライアントもフルメッシュも可能 • Nakamaというオープンソースのマルチプレイヤーサーバー(とBaaS)がある
GodotのXR対応について
XR対応について Bastiaan Olij氏がキーパーソン Meta (Facebook) Reality Labsから開発費の支援を2度受けている Meta Quest対応やVulkan対応等 Godot 4ではOpenXRモジュールとWebXRモジュールがビルトイン WebXRモジュールはDavid Snopek氏が開発
GodotのXR対応の基本 カメラリグのノードを作成 XROrigin3D XRCamera3D XRController3D OpenXR / WebXRのインターフェースを取得してXRモードを有効化 Godot XR Tools(UnityのXR Interaction Toolkitに相当)
デモ:GodotのVRのセットアップ (約3分)
Meta Quest対応 ※Godot 4 beta 6時点の手順です ※現時点では描画周りに不具合があります - Project > Install Android Build Template…を実行 - Godot OpenXR Loadersのプラグインをandroid/pluginsフォルダに格納 - (AssetLibでインストールできるようになりそう) - Project > Export…のAndroidの設定で - Use Custom Buildをオン - Godot Open XR Metaをオン - XR FeaturesのXR ModeをOpenXRに
WebXR対応 ※Godot 4 beta 6時点ではまだヘッドセット内で表示できていません (2022-11-20に動作させるプルリクが出ました) WebXRモジュールのインターフェースを取得して WebXR Device APIのセッション開始・終了等のシグナルを処理する VRボタンを配置して押すとWebXRのセッションを開始するようにする 込み入っているので具体的な手順はサイトでフォローアップします!
Godot XR Tools UnityのXR Interaction ToolkitやUE5のVirtual Realityテンプレートに相当 • 移動・ターン • 壁を登る • ボタンやレバー等を操作する • UIを操作する • 物を持つ • テレポート移動 等のコンポーネント一式
デモ:Godot XR Toolsで VRウォークスルーを作ってみる (約12分)
気づいたこと(現時点の課題)
レンダリング ※あくまで現在ベータ版であること(バグフィックスがされていく)に注意 (Godot 4 beta 6時点) MSAA、リアルタイムシャドウ、Mobileレンダリング等で著しいパフォーマンスロス Quest(Android)で色がおかしい(RGBのRとBが逆になる) WebXRでまだヘッドセット内で画面が出ていない(beta 5の後でプルリクが出た) V-SYNCを無効にすると空が表示されなくなる VRモードで起動するときにロゴがちらつく(何らかの描画周りの不具合?) SDFGI、現時点では移動やカメラの向きで激しいアーティファクトが発生 実装の解説スライドに“Can Work in VR”とあるので期待……!
デスクトップ・VRモード両対応は? OpenXRのスイッチをオンにするとアプリ起動時に OpenXRが初期化されてヘッドセットが自動的にVRモードに Windowsでデスクトップモードで起動して あとからVRモードにするアプリはできない (両方のバージョンをビルドしておくしかなさそう)
3Dアセットについて UnityのAsset StoreやUnreal EngineのMarketplaceのような 大きな有料アセットストアがない(AssetLibはあるが) Unity Asset StoreやUnreal Engine Marketplaceのアセットは 一部を除き他のゲームエンジン(たとえばGodot)でも使用可 ライセンスについては各自確認のこと
最新デバイス対応はやはりUnity 新しいVR/AR関連デバイスがリリースされたとき 現状ではまずUnityやUEからSDKがリリースされる Godotがそのポジションになるにはまだ時間がかかりそう AppleがOpenXRに参加していない Godotは現在OpenXRとWebXRに対応 世間的にはこの2つがデファクトスタンダードになったが…
それでもGodotを試す理由
ビルド(エクスポート)が圧倒的に速い 辛いビルド待ちがない Meta QuestだろうがWebGLだろうがほぼ一瞬 トライ&エラーやイテレーションが爆速 現状GDScriptがJITコンパイルもAOTコンパイルも行っていないのはあるが (速度が必要な場合はC#やC++が使用できます) これで十分というケースは多いのでは
無料で使える デリケートな表現(最近は特に)ですが… 気に入ったらPatreonでスポンサーになりましょう! 月10ドルでクレジットに名前が載ります
オープンソース エンジンコードもGitHubのコミットもPRも全部見れる (アカデミックな用途にも良いのでは) OpenXRモジュールもWebXRモジュールも中身が見えてる David Snopek氏がWebXRモジュールの開発実況とかやっている MITライセンスだからこそ “The cube! The cube is here! We did it!”
いつかはゴドーがやってくる……かも?
情報源
Godotに興味が湧いたなら 公式サイト・公式ブログ Juan Linietsky氏のツイートは熱いのでおすすめ GitHubのIssueやPRはチェック!(godot-proposalsも) Godotの公式Discord 日本語Discordサーバー(Godot Engine Japan Community)
フォローアップ Godotのメモと GodotのVR開発のメモ 「Godotメモ」で検索を! 今回紹介しきれなかった諸々 不具合情報やアップデート等 気づいたら更新していきます
Let’s wait for Godot! こりん(@korinVR)