ss2asa
SpriteStudio形式のファイルををakashic-animation形式にコンバートするコマンドラインツール。
インストール
ss2asa は Node.js で動作します。以下のコマンドでインストールできます。
$ npm install -g @akashic-extension/ss2asa
使い方
SpriteStudioのプロジェクトファイルを渡してください。関連ファイル(ssae,ssce)を含めすべてコンバートします。
$ ss2asa project-file.sspj
出力されるファイルは次のように対応します。
| sspj | asapj | プロジェクトファイル |
| ssae | asabn, asaan | ボーンファイルとアニメーションファイル |
| ssce | asask | スキンファイル |
オプション
-h, --help
ヘルプを表示します。
-V, --version
バージョンを表示します。
-o, --out-dir
出力先ディレクトリを指定します。存在しない時、ディレクトリを作成します。
-p, --add-prefix
出力ファイルのファイル名に次の接頭辞を加えます。
| asapj | pj_ |
| asabn | bn_ |
| asaan | an_ |
| asask | sk_ |
-l, --long-name
asaanファイル名(アニメーション名が用いられる)の前にssaeファイル名が加わります。2つの間は_で区切られます。
例: ss2asa -l jobs.sspj
input:
jobs.sspj
├── fighter.ssae
│ ├── attack
│ └── walk
└── healer.ssae
├── attack
└── walk
output:
fighter_attack.asaan
fighter_walk.asaan
healer_attack.asaan
healer_walk.asaan
これは同一プロジェクト内の異なるssae間でアニメーション名の重複があった時、出力されるファイルが上書きされることを避けるための機能です。
この時各アニメーションデータの持つnameプロパティはロングネーム化されたファイル名と同じものになります。開発者はロングネームでアニメーションを指定してください。
-d, --delete-hidden
SpriteStudio上で目玉アイコンを用いて非表示にしたパーツとそのアニメーションを削除します。
-P --set-prefix
-p オプションで出力ファイル名に加わる接頭辞を指定します。asapj,asabn,asask,asaan形式それぞれについて、この並びでカンマ区切りで指定します。デフォルトはpj_,bn_,sk_,an_です。
-v, --verbose
実行時の出力に詳細情報を含めます。
-u, --user-data
ユーザデータを出力します。
-L, --label-as-user-data
ラベルをユーザデータ形式で出力します。-uオプションが有効である必要があります。ユーザデータキーフレームはルートボーンのアニメーションとして追加されます。プロパティ名はlabelです。
-c, --combination-info
ボーン、スキン、アニメーションの有効な組み合わせの情報をasapjファイルのユーザデータとして出力します。contents.userData.combinationInfoプロパティからアクセスできます。
例(contentsプロパティ内の関係のないものは省略):
{
"version": "2.0.0",
"contents": {
"userData": {
"combinationInfo": [
{
"boneName": "stickman",
"animationNames": [
"anime_1",
"anime_1_bezier",
"anime_1_liner"
],
"skinNames": [
"stickman"
]
}
]
}
}
}
-r, --related-file-info
asapjファイルと関連するファイルの一覧をasapjファイルのユーザデータとして出力します。contents.userData.relatedFileInfoプロパティからアクセスできます。
例(contentsプロパティ内の関係のないものは省略):
{
"version": "2.0.0",
"contents": {
"userData": {
"relatedFileInfo": {
"boneSetFileNames": [
"stickgirl.asabn",
"stickman.asabn"
],
"skinFileNames": [
"stickgirl.asask",
"stickman.asask"
],
"animationFileNames": [
"stickgirl_anime_1.asaan",
"stickman_anime_1.asaan",
"stickman_anime_1_bezier.asaan",
"stickman_anime_1_liner.asaan"
],
"imageFileNames": [
"stickgirl.png",
"stickman.png"
]
}
}
}
}
akashic-animationのサポートするアトリビュート
以下のアトリビュートのアニメーションをサポートします。
- 参照セル
- X座標
- Y座標
- Z軸回転
- Xスケール
- Yスケール
- 不透明度
- 優先度
- 左右反転
- 上下反転
- 非表示
- 原点Xオフセット
- 原点Yオフセット
- UV X移動
- UV Y移動
- 当たり半径
- ユーザーデータ
補足
キーフレームの外挿
akashic-animationは再生するアニメーションの0フレーム目がキーフレームでない時、0フレーム目に初期値を与えます。初期値は属性により異なります(次の表参照)。
| X,Y座標 | 0, 0 |
| Z回転 | 0 |
| X,Yスケール | 1, 1 |
| アルファ | 1 |
| セル | 無し |
| セル中心座標 | 0, 0 |
| セルUV | 0, 0 |
| 優先順位 | 0 |
| 可視・不可視 | 可視 |
| 円アタリ判定半径 | 0 |
| 水平フリップ | 無し |
| 垂直フリップ | 無し |
| ユーザデータ | 無し |
最終フレームがキーフレームでない時も同様に値を与えます。この値は最後のキーフレームと同じ値になります。
akashic-animationで再生したアニメーションがSpriteStudioと異なるとき、第0フレーム、最終フレームのいずれかまたは両方をキーフレームにすることで解決することがあります。
セルマップ参照イメージのアセット名に関する制限
ss2asaはセルマップの参照するイメージのアセット名として、もとのイメージファイル名から拡張子を除いたものをasaskファイルに保存します。たとえば"stickman.png"のアセット名は"stickman"となります。もしgame.jsonで指定されるイメージアセット名がファイル名から拡張子を除いたものでない時、実行時エラーとなります(game.jsonの更新にakashic-cliを使用している限りそのような不整合は起こりません)。
NULLパーツから出力される属性値に関する制限
ss2asaはNULLパーツの持つ属性値の内、以下のもののみを出力します。
- X, Y座標
- Z回転
- X, Xスケール
- 当たり半径
- ユーザデータ
SpriteStudioの推奨環境設定
akashic-animationはSpriteStudioの全機能をサポートしていません。サポートされない機能を誤って用いることを防ぐため、初期設定から編集可能な属性を選択することをお勧めします。
設定方法
以下の手順はバージョン 5.5.1.5759 で確認しました。
- 環境設定 -> 一般設定 -> 新規プロジェクトのデフォルト設定 -> 一般 -> 互換性 を開き 再生対象のプラットフォームをカスタムにする
- 属性のチェックボックスを下の表にしたがって設定する
注意: この設定は新規プロジェクトに対して適用されます。既存のプロジェクトについてはこの設定が完了後、改めてプロジェクト設定を編集してください。
| ✔ | 参照セル |
| ✔ | X座標 |
| ✔ | Y座標 |
| | Z座標 |
| | X軸回転 |
| | Y軸回転 |
| ✔ | Z軸回転 |
| ✔ | Xスケール |
| ✔ | Yスケール |
| ✔ | 不透明度 |
| ✔ | 優先度 |
| ✔ | 左右反転 |
| ✔ | 上下反転 |
| ✔ | 非表示 |
| | カラーブレンド |
| | 頂点変形 |
| ✔ | 原点Xオフセット |
| ✔ | 原点Yオフセット |
| | Xアンカー |
| | Yアンカー |
| | Xサイズ |
| | Yサイズ |
| | イメージ左右反転 |
| | イメージ上下反転 |
| ✔ | UV X移動 |
| ✔ | UV Y移動 |
| | UV 回転 |
| | UV Xスケール |
| | UV Yスケール |
| ✔ | 当たり半径 |
| ✔ | ユーザーデータ |
| | インスタンス |
ライセンス
本リポジトリは MIT License の元で公開されています。
詳しくは LICENSE をご覧ください。
ただし、画像ファイルおよび音声ファイルは
CC BY 2.1 JP の元で公開されています。