マニフェストと権限

plugin.manifest.jsonは、あなたが何者か、体験がどこにあるか、何を要求できるかをZenClubに伝えます。バージョン、エントリー、権限の組み合わせを特定して承認します。いずれかを変更すると、新しいリリースには再承認が必要です。

例

plugin.manifest.json
{
  "schema": "zenclub.plugin/v1",
  "id": "my-garden",
  "name": "My garden",
  "description": "Tend a small garden at your own pace.",
  "coverLabel": "A small garden",
  "version": "1.0.0",
  "sdkProtocol": "zenclub.rpc/1",
  "hostApi": {"major": 1, "minMinor": 2},
  "entry": "https://my-garden.example/v1.0.0/",
  "permissions": ["lifecycle.report", "storage.read", "storage.write", "session.report"],
  "optionalPermissions": ["moments.create", "header.setActions"],
  "modes": ["watch", "manual"],
  "tags": ["garden", "slow"]
}

フィールド

フィールドルール
schema常にzenclub.plugin/v1です。
id1~80文字の英字、数字、ドット、アンダースコア、ハイフンを使えます。先頭は英字か数字にし、後から変更できません。
name, description, coverLabel各項目は2048文字以内のプレーンテキストです。coverLabelはカバーに表示する短い説明です。
version1.4.0や1.5.0-beta.1のようなセマンティックバージョンを指定します。connect()に渡すversionと一致させます。
sdkProtocol常にzenclub.rpc/1です。
hostApi必要な最小のホストAPIを{major, minMinor}形式で指定します。動作する範囲で最も低いマイナーバージョンを要求してください。
entryページの絶対HTTPS URLを指定します。ユーザー名、パスワード、ハッシュは含めません。通常のHTTPはlocalhostでのみ使用できます。プラットフォームと同じオリジンは使えません。
permissions体験の動作に必須の機能を指定します。重複はできません。
optionalPermissions許可された場合に使う機能を最大32個まで指定できます。必須の機能を重ねて指定しないでください。
milestones任意項目です。固定キー、ルールのバージョン、最大段階を1組だけ指定し、報告機能とともに運営者の個別承認を受けます。
modeswatch、manual、listenから1つ以上を指定します。宣言したモードだけを報告できます。
tagsタグは最大10個で、各タグは32文字以内です。

機能

SDKの各メソッドは機能として扱われます。許可されていない機能を呼び出すと、フレームの外に出る前にFORBIDDENで失敗します。任意の機能は先にsdk.supports(name)で確認してください。

機能ホストAPI用途
lifecycle.report1.0読み込み中、準備完了、失敗を報告します。
storage.read1.0保存スロットを読み込みます。
storage.write1.0リビジョンを確認して保存スロットに書き込みます。
session.report1.0時間計測のため、実行中、一時停止、終了を報告します。
runs.finish1.0完了または再開したプレイを、最大20個の数値指標とともに記録します。
moments.create1.0訪問者に保存用の画像を提示します。プラットフォームが事前に確認する場合があります。
achievements.request1.0バッジの確認と付与をプラットフォームに依頼します。
counters.add1.2運営者があなた向けに定義した共有カウンターに加算します。
events.report1.2章の完了など、短い名前付きイベントを報告します。
shares.request1.2バッジまたは体験を共有するため、プラットフォームの共有シートを開きます。
navigation.exit1.2体験の詳細ページへ静かに移動します。
display.immersive1.3周囲のフレームを隠すようプラットフォームに依頼します。
header.setActions1.4アクションをプラットフォームのヘッダーに配置します。
milestones.report1.6プレイヤーが記録を有効にしているとき、確認済みのセーブデータから承認済みの街の飾りを1件報告します。

申請前に検証する

コマンドラインツールはプラットフォームと同じ検査を行い、要求したホストAPIが利用できることを確認します。検証で権限が付与されることはありません。付与するのは承認だけです。

shell
npx zenclub-plugin validate plugin.manifest.json --host=https://zenclub.app

ホストAPIのバージョン

現在のホスト仕様は1.6で、1.0から1.6を求めるプラグインに対応しています。必要な中で最も低いマイナーバージョンを指定し、任意のメソッドはsdk.supports()で確認してください。音の設定を受け取るには、マニフェストとconnect()の両方で1.5以上を求めてください。節目の宣言がない既存プラグインには、これまでと同じ権限とコンテキストが渡ります。

街の節目(任意)

milestones.reportを任意として宣言し、milestonesの項目をちょうど1つ追加します。最初のリリースで使う固定キーは8つです。homestead、pond、clouds、bamboo、tea、stream、bell、lotusです。各ルールのバージョンはキーの末尾に.1を付け、maxTier: 2とします。承認では、その組み合わせ、バージョン、項目、機能が固定されます。独自に書いた宣言だけではアクセス権は得られません。

plugin.manifest.json
{
  "hostApi": {"major": 1, "minMinor": 6},
  "optionalPermissions": ["milestones.report"],
  "milestones": [{"key": "tea", "ruleVersion": "tea.1", "maxTier": 2}]
}

開発キット0.9で作成したプラグインは、報告機能が任意なら古い最低対応バージョンを維持できます。ホストが1.0〜1.5の場合、承認がない場合、または端末内だけに保存する場合は、通常どおりゲームを動かし、報告を省略してください。旧ホスト向けの承認には新しい権限を含めないでください。節目の報告を必須にするには1.6が必要です。記録をプレイやログインの前提条件にしてはいけません。