Wukuro
Wukuro は、WaaS を基盤とする Unity 向けのイベントスクリプトのフレームワークです。会話、演出、分岐などのゲーム内のイベントを Rust で記述し、WebAssembly のコンポーネントとして Unity 上で実行します。
Wukuro は非常に実験的な段階にあり、破壊的な変更が行われる可能性があります。
特徴
- Rust でイベントを記述できる: 条件分岐、繰り返し、関数による共通化など、言語の機能をそのまま使ってイベントを記述できます。
- 1 つのファイルに複数のエントリポイント: 関数に
#[entry]を付けるとエントリポイントになります。同じファイル内の定数や関数を、複数のイベントで共有できます。 - インスペクタで引数を設定できる: エントリポイントの引数は、Unity のインスペクタからシーン内のオブジェクトやアセットを指定して渡せます。オブジェクトの型を制約することもできます。
- ゲームに合わせて拡張する前提の設計: Wukuro 自体が提供する機能は、待機、変数、ログ、ダイアログなどの基本的なものに限られます。カメラ、サウンド、アイテムなどのゲーム固有の機能は、ゲーム側で C# のインターフェースとして定義して追加します。
構成
Wukuro は、Unity パッケージと Rust のクレートから構成されます。
| 名前 | 種類 | 内容 |
|---|---|---|
com.ruccho.wukuro | Unity パッケージ | スクリプトの実行、エントリポイントの参照、インスペクタ、wukuro:core と wukuro:dialog のホスト側の実装 |
wukuro | Rust クレート | wukuro:core のバインディング、#[entry]、テキストとオブジェクトの型の補助 |
wukuro-macro | Rust クレート | wukuro が用いる手続きマクロ |
wukuro-dialog | Rust クレート | wukuro:dialog のバインディングと、メッセージの表示の補助 |
ホストとスクリプトの間の関数と型は、Component Model の WIT のパッケージとして定義されています。
wukuro:core: コンテキスト、引数、変数、待機、テキストなどの基本的な機能wukuro:dialog: ダイアログの表示(メッセージ、選択肢、フェード)
ゲーム固有の機能は、同じ方法で独自の WIT のパッケージとして追加します(機能の追加)。
導入
必要なもの
チュートリアル
このチュートリアルでは、ログを出力するだけの簡単なスクリプトを作成し、シーン上のコンポーネントから実行します。事前に 導入 を済ませてください。
スクリプトの記述
エントリポイント
スクリプトの実行
エントリポイントの参照
機能の追加
Wukuro 自体が提供する機能は、待機、変数、ログ、ダイアログなどの基本的なものに限られます。サウンドの再生、カメラの操作、アイテムの付与などのゲーム固有の機能は、ゲーム側で追加して使うことを前提としています。
オブジェクトの型
エントリポイントの引数 &Object には、任意の UnityEngine.Object を渡せます。引数の型を &ObjectOf にすると、インスペクタは型 T のオブジェクトだけを受け付けるようになります。型の定義の起点は C# です。
WIT リファレンス
Wukuro のホストとスクリプトの間の関数と型は、次の WIT のパッケージとして定義されています。WIT は Unity パッケージの Definitions/ にある C# の定義から生成されたもので、各クレートの wit/ に同梱されています。