Godotでwebエクスポートする方法
GodotというOSSでは一番有名なゲームエンジンがある。
そのGodotで作ったアプリをwebブラウザから使用できる形式でエクスポートする方法を調べたので、以下に記載する。
方法
基本的に参考 に記載してあるドキュメントを参考にするのが一番正しい。
Godot でWebエクスポートするには、以下の手順を踏むと良い。
- Godot エディタの左上のメニューから
Project > Export
を選択 - 画面上部の
Add
を選択し、HTML5
やWeb
となっているテンプレートを選択 - 画面下部の
Export Project
を選択し、適当なファイル名や保存場所を入力し保存
以上の手順でhtml形式で保存できる
Javascriptの呼び出し
これについても、基本的に参考 に記載してあるドキュメントを参考にするのが一番正しい。
JavaScriptBridge
というシングルトンオブジェクトを利用することで、GDScript側からJavascriptの関数を呼び出せる。
呼び出すJavascriptの関数は、方法の2 で選択したテンプレートのHead Include
に含めることで、エクスポートされるhtmlファイルのheadタグ内にスクリプトとして含ませることができる。
そうして設定したスクリプトをGDSctiptから呼び出すという形になる。
Head Include
内には、ライブラリを含ませることもできるため、それによりライブラリ関数も使用できるようである。
逆にJavascriptからGDScriptの関数の呼び出し方法は分からなかった。
GDScriptからJavascriptの関数を呼び出す方法の例
まず、Head Include
に呼び出したい関数myFunc
を定義する。
<script>
function myFunc() {
alert("My func!");
}
</script>
そして、GDScript内で以下のように呼び出す。
func _ready():
# Get the `window` object, where globally defined functions are.
var window = JavaScriptBridge.get_interface("window")
# Call the JavaScript `myFunc` function defined in the custom HTML head.
window.myFunc()
注意事項
Javascript関数の引数はJavascriptオブジェクトである必要がある。
Stringやintは自動的に変換してくれるが、Array等のオブジェクトは変換してくれない。
そのため、Array等のオブジェクトを引数にするには、以下のようにJavascriptオブジェクトを生成して呼び出す必要がある。
var arr = JavaScriptBridge.create_object("Array", 10)
window.foo(arr)
デバッグについて
開発中にブラウザ上で実行するには、 方法の2 まで完了していれば、設定したテンプレートを基にリモートデバッグが実行できるようになる。
このとき、Godotエディタで指定したブレークポイントには反応しないため注意が必要である。
ブレークポイントを設定するには、ブラウザの開発者モードを使用する必要がある。
ただし、開発者モードではGDScriptで書かれたコードはWebAssenbly化されている可能性がある。
そのため、このデバッグ機能を使う目的は主にJavascriptの呼び出しで定義したJavascript関数の動作についてデバッグする場合に用いるのが良さそう。