Skip to content

akashic scan

sh
akashic scan <target>

game.json に記述されているゲームのアセットや各種ライブラリ情報を更新します。 <target> に指定できる文字列は以下のとおりです:

  • asset <subtarget>
    • game.json に記述されたアセット情報を更新します。(<subtarget> の内容は後述)
  • globalScripts
    • カレントディレクトリの node_modules/ 以下のファイル一覧を game.json に加えます。
    • 通常使用する必要はありません。akashic install や uninstall を利用してください。

game.json のアセット情報を更新する scan asset コマンドは、もう一つの引数 <subtarget> によって更新する情報を制御することができます。

sh
akashic scan asset <subtarget>

<subtarget> に指定できる文字列とそれぞれの動作は次のとおりです:

  • image
    • image/ ディレクトリ以下の画像素材を列挙し、アセット情報を更新します。
  • text
    • text/ ディレクトリ以下のテキスト素材を列挙し、アセット情報を更新します。
  • audio
    • audio/ ディレクトリ以下の音素材を列挙し、アセット情報を更新します。
  • script
    • script/ ディレクトリ以下のスクリプト素材を列挙し、アセット情報を更新します。
  • (なし)
    • 上記すべてを行います。
    • さらに assets/ ディレクトリ以下の全種類の素材を列挙してアセット情報を更新します。

game.json の管理しているアセット情報には、ファイルパスだけでなく以下のような情報も含まれます。 したがって素材の増減時だけでなく、これらの変更時にも scan asset コマンドを実行してください。

  • 画像素材の幅・高さ
  • (将来のバージョンにおいて) 音素材の再生時間

akashic-cli@2.11.0 以降であれば .png, .jpg に加えて .svg を画像素材として扱いスキャンします。 詳細は逆引きリファレンス » SVG ファイルを画像アセットとして利用するを参照してください。

scan asset コマンドは、新たに追加するアセット定義に対し、type に応じて以下の初期値を与えます。 (値の詳細はリファレンス » game.json の仕様を参照してください)

  • "type": "script"
    • "global": true
  • "type": "audio"
    • "systemId": "sound"

scan asset コマンドによる素材の列挙は、ディレクトリを再帰的に検索します。つまり、image/ のサブディレクトリに置かれた画像素材なども、列挙されアセット情報に登録されます。

アセット ID

Akashic コンテンツから各アセットにアクセスするには、アセットを識別する ID (アセット ID) またはファイルパス (Akashic Engine v3 以降) を利用します。

scan asset コマンドは、アセット ID として通常「ファイル名から拡張子を取り除いたもの」を登録します。

このため audio/title.ogg と script/title.js は、同じ "title" という ID となって衝突し、エラーになることに注意してください。 この制限を回避するため、 Akashic Engine v3 以降では assets/ ディレクトリ (後述) を利用できます。

またアセットのファイル名は以下の条件を全て満たす必要があります。

  • 半角英数字、アンダースコア "_"、ドル記号 "$" のみで構成されている
  • 英字で始まっている

ユーザは game.json を直接編集して、アセット ID を任意に変更することができます。 akashic コマンドはファイルパスを基準に操作を行うため、たとえば画像素材の ID を変更した後にその画像のサイズを変更しても、適切に game.json の幅・高さ情報が更新されます。

assets/ ディレクトリとアセットパス

assets/ ディレクトリは、上述のとおり全ての種類の素材を置くことができるディレクトリです。

また scan asset コマンドは、assets/ ディレクトリに限り、アセット ID を「ファイル名から拡張子を取り除いたもの」ではなく、ユニークな自動生成の値にします。 そのため title.ogg と title.png など、名前が重複するアセットもそのまま置くことができます。

これによって他のディレクトリよりも柔軟なフォルダ構造で素材を管理できます。

ただし ID が自動生成で不定な値になるので、ゲーム内からアセット ID でアクセスすることはできなくなります。 Akashic Engine v3 以降で利用できる Akashic Engine 入門 » ファイルパスによるアセットアクセス を利用してください。