ss2asa
SpriteStudio形式のファイルををakashic-animation形式にコンバートするコマンドラインツール。インストール
ss2asa
は Node.js
で動作します。以下のコマンドでインストールできます。
$ npm install -g @akashic-extension/ss2asa
npx が利用できる環境では
ss2asa
を直接呼び出すこともできます。$ npx -p @akashic-extension/ss2asa ss2asa project-file.sspj
Akashic Engineの詳細な利用方法については、 公式ページ を参照してください。
使い方
SpriteStudioのプロジェクトファイルを渡してください。関連ファイル(ssae,ssce)を含めすべてコンバートします。$ ss2asa project-file.sspj
出力されるファイルは次のように対応します。
| SpriteStudio | akashic | 備考 | |:------------- |:------------- | :------------------------------------- | | 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プロパティはロングネーム化されたファイル名と同じものになります。開発者はロングネームでアニメーションを指定してください。
-b, --bundle-all
すべてのアセットデータをまとめてasapjファイルに出力します。例(contentsプロパティ内の関係のないものは省略):
{
"version": "3.0.0",
"type": "bundle",
"contents": [
{
"type": "project",
"name": "stickman",
"data": {
"userData": {}
}
},
{
"type": "bone",
"name": "stickman",
"data": {}
},
{
"type": "skin",
"name": "stickman",
"data": {}
},
{
"type": "animation",
"name": "anime_1",
"data": {}
}
]
}
-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"
]
}
}
}
}
-s, --layout-size
アニメーションのレイアウト情報を出力します。contents.userData.layoutSizes
プロパティからアクセスできます。使い方 (Node.js API)
Node.js のモジュールとして呼び出すこともできます。var ss2asa = require("@akashic-extension/ss2asa");
ss2asa.convert({
projFileName: "stickman.sspj",
outDir: "./out",
addPrefix: true
});
オプション
projFileName: string
(required)
outDir: string
(required)
addPrefix?: boolean
(default:false
)
verbose?: boolean
(default:false
)
bundleAll?: boolean
(default:false
)
prefixes?: string[]
(default:[]
)
asaanLongName?: boolean
(default:false
)
deleteHidden?: boolean
(default:false
)
labelAsUserData?: boolean
(default:false
)
outputUserData
が true
の場合)outputUserData?: boolean
(default:false
)
outputComboInfo?: boolean
(default:false
)
outputRelatedFileInfo?: boolean
(default:false
)
outputLayoutSize?: boolean
(default:false
)
akashic-animationのサポートするアトリビュート
以下のアトリビュートのアニメーションをサポートします。- 参照セル
- X座標
- Y座標
- Z軸回転
- Xスケール
- Yスケール
- ローカルXスケール
- ローカルYスケール
- 不透明度
- ローカル不透明度
- 優先度
- 左右反転
- 上下反転
- イメージ左右反転
- イメージ上下反転
- 非表示
- 原点Xオフセット
- 原点Yオフセット
- UV X移動
- UV Y移動
- 当たり半径
- ユーザーデータ
補足
キーフレームの外挿
akashic-animationは再生するアニメーションの0フレーム目がキーフレームでない時、0フレーム目に初期値を与えます。初期値は属性により異なります(次の表参照)。| 属性 | 値 | |:------------------- |:---------- | | X,Y座標 | 0, 0 | | Z回転 | 0 | | X,Yスケール | 1, 1 | | ローカル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, Yスケール
- 不透明度
- 当たり半径
- ユーザデータ
SpriteStudioの推奨環境設定
akashic-animationはSpriteStudioの全機能をサポートしていません。サポートされない機能を誤って用いることを防ぐため、初期設定から編集可能な属性を選択することをお勧めします。設定方法
以下の手順はバージョン 5.5.1.5759 で確認しました。- 環境設定 -> 一般設定 -> 新規プロジェクトのデフォルト設定 -> 一般 -> 互換性 を開き 再生対象のプラットフォームをカスタムにする
- 属性のチェックボックスを下の表にしたがって設定する
注意: この設定は新規プロジェクトに対して適用されます。既存のプロジェクトについてはこの設定が完了後、改めてプロジェクト設定を編集してください。
| | 属性名 | |:-- |:----------------- | | ✔ | 参照セル | | ✔ | X座標 | | ✔ | Y座標 | | | Z座標 | | | X軸回転 | | | Y軸回転 | | ✔ | Z軸回転 | | ✔ | Xスケール | | ✔ | Yスケール | | ✔ | ローカル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 の元で公開されています。