プラグイン
インストール可能なプラグインで NarraLeaf Studio とそれが構築するゲームを拡張します
プラグインは manifest.json と 1 つまたは 2 つの事前バンドル済みエントリーファイルを持つフォルダです。Studio にエディターパネル、アクション、キーバインド、ブループリントノード、ウィジェット、言語パックを追加できるほか、構築するゲームの内部で実行されるゲーム側コードを同梱できます。
プラグインには 2 つのエントリーターゲットがあり、プラグインはそのどちらか、または両方を宣言します。
| ターゲット | 実行環境 | API | 用途 |
|---|---|---|---|
studio | エディター(ワークスペースウィンドウ) | narraleaf-studio/plugin | パネル、アクション、キーバインド、ブループリントノードのエディターメタデータ、ウィジェット、言語パック |
runtime | ゲーム(Dev Mode(開発モード)、Preview(プレビュー)、Production(本番環境)) | narraleaf-studio/runtime | ブループリントノードの実行、ウィジェットのレンダリング、ゲーム側ロジック |
ブループリントノードは、公開されたゲームで動作するために両方のターゲットを必要とします。studio エントリーがそのエディターメタデータを登録し、runtime エントリーがゲームがそれを実行するときに動くコードを登録します。定義は共有モジュールに 1 度だけ書き、各エントリーからそれぞれ登録します。詳しくはプラグインを作るを参照してください。
プラグインを作る
空のフォルダから、インストール済みのプラグインまで。マニフェスト、エントリー、ブループリントノード、パネル、ローカライゼーション、パッケージング
マニフェスト
すべてのフィールド、contributes の全体像、そしてほとんどの権限が手書きではなく派生である理由
API リファレンス
studio と runtime 両方のサーフェス上のすべてのメソッドを、例と注意点つきで解説
Studio API
プラグインがエディターで触れるすべて。サービス、ui kit、そして特権的な機能
Runtime API
能力によってゲートされたゲーム側サーフェス。宣言した各能力が app.game 上で何をもたらすか
ビルド依存関係
Studio がビルド時にダウンロード、検証、キャッシュする外部バイナリ
プラグインをインストールする
ストアまたはフォルダからインストールし、権限を承認し、プラグインを最新に保つ
プロジェクトの依存関係
プロジェクトが使用するプラグインについて何を記録するか、そしてどれがビルドしたゲームに同梱されるか
能力は宣言されるものであり、発見されるものではない
プラグインのゲーム側コードが、ノードやウィジェットの登録を超えて到達できるもの――ストレージ、ストーリー変数、セーブデータ、オーバーレイ、ネイティブの子プロセス――は、すべて contributes で宣言しなければなりません。Studio はこの宣言からインストール時の権限プロンプトを導出します。宣言されていない能力は、失敗する呼び出しになるのではなく、API オブジェクトそのものに存在しません。runtime エントリーを書く前に能力モデルを読んでください。これがほかのすべてを形づくる、たった一つの要点です。
API は型のみです
narraleaf-studio は型のみのパッケージです。narraleaf-studio/plugin と narraleaf-studio/runtime の宣言を提供しますが、実装は読み込み時に Studio 側から供給されます。開発依存として追加し、バンドラーで両方の指定子を external としてマークしてください(テンプレートがこれを代わりに行います)。
yarn add -D narraleaf-studioプラグインはサンドボックス化されていません。インストールされたプラグインは Studio 自身と同じアクセス権で実行され、そのゲーム側コードはプレイヤーのマシン上で実行されます。信頼できるプラグインのみをインストールしてください。プラグインがデフォルトのサーフェスを超えて宣言する内容については、Studio がインストール時に権限プロンプトを表示します。