akashic-lib.json の仕様

この文書はライブラリ製作者向けの内容になっています

akashic-lib.json は Akashic 拡張ライブラリの設定を記述するファイルです。

このファイルに記述された情報は対象のモジュールを akashic install または akashic uninstall した際に自動的に読み込まれます。

# 仕様

以下の仕様を満たす必要があります。

  • 妥当な JSON 形式である。
  • package.json と同一のディレクトリに存在する。

また publish 時にこのファイルを含めるため package.json の files に akashic-lib.json を追加する必要があります。

{
  ...

  "files": [
    ...
+   "akashic-lib.json"
  ]
}

# 形式

以下は妥当な akashic-lib.json の例です。

{
  "gameCofigurationData": {
    "environment": {
      "external": {
        "contentStorage": "1"
      }
    }
  },
  "assetList": [
    {
      "type": "image",
      "path": "assets/images/player.png",
      "width": 128,
      "height": 128
    },
    {
      "type": "audio",
      "path": "assets/audios/se_start",
      "duration": 560,
      "systemId": "sound"
    },
    {
      "type": "audio",
      "path": "assets/audios/bgm_opening",
      "duration": 51889,
      "systemId": "music"
    }
  ]
}

すべての値は省略が可能です。 したがって {} も妥当な akashic-lib.json の一例です。

# gameConfigurationData

インストールしたディレクトリの game.json に転写されるオブジェクト値です。 執筆時点の akashic の最新バージョンである 2.2.0 においては environment.external のみサポートしています。

以下の akashic-lib.json を例とします。

{
  "gameConfigurationData": {
    "environment": {
      "external": {
        "contentStorage": "1"
      }
    }
  }
}

この akashic-lib.json を含むモジュールを akashic install すると、インストール元の game.json が以下のように書き換えられます。

{
    ...

    {
        "environment": {
            "sandbox-runtime": "3",
+           "external": {
+               "contentStorage": "1"
+           }
        }
    }
}

akashic uninstall すると environment.external が削除され、以前の状態に戻ります。

注意点

この操作は必ずしも可逆性を保証しないことをご留意ください。

例えばゲーム開発者が手動で environment.external.contentStorage を追記した場合でも、上記の akashic uninstall の実行によって対象のフィールドが削除されてしまいます。 (ただし、ゲーム開発者が game.json の environment.external を手動で編集する必要は通常ありません。)

# assetList

game.json の assets フィールドに転写される配列値です。 アセット ID はそのアセットが存在するパスに変換されます。

以下の akashic-lib.json を例とします。

{
  "assetList": [
    {
      "type": "image",
      "path": "assets/images/player.png",
      "width": 128,
      "height": 128
    },
    {
      "type": "audio",
      "path": "assets/audios/se_start",
      "duration": 560,
      "systemId": "sound"
    },
    {
      "type": "audio",
      "path": "assets/audios/bgm_opening",
      "duration": 51889,
      "systemId": "music"
    }
  ]
}

これを akashic install すると、インストール元の game.json が以下のように書き換えられます。 (ここではインストール対象のモジュール名を some-library としています。)

{
    ...

    "assets": {
        ...

+       "node_modules/some-library/assets/images/player.png": {
+           "type": "image",
+           "path": "node_modules/some-library/assets/images/player.png",
+           "width": 128,
+           "height": 128,
+       },
+       "node_modules/some-library/assets/audios/se_start": {
+           "type": "audio",
+           "path": "node_modules/some-library/assets/audios/se_start",
+           "duration": 560,
+           "systemId": "sound"
+       },
+       "node_modules/some-library/assets/audios/bgm_opening": {
+           "type": "audio",
+           "path": "node_modules/some-library/assets/audios/bgm_opening",
+           "duration": 51889,
+           "systemId": "music"
+       }
    }
}

akashic uninstall コマンドを実行することで、 game.json の assets フィールドから上記のアセット情報が削除されます。