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 | スキンファイル |
ヘルプを表示します。
バージョンを表示します。
出力先ディレクトリを指定します。存在しない時、ディレクトリを作成します。
出力ファイルのファイル名に次の接頭辞を加えます。
ファイル形式 | 接頭辞 |
---|---|
asapj | pj_ |
asabn | bn_ |
asaan | an_ |
asask | sk_ |
asaef | ef_ |
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プロパティはロングネーム化されたファイル名と同じものになります。開発者はロングネームでアニメーションを指定してください。
すべてのアセットデータをまとめて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
オプションで出力ファイル名に加わる接頭辞を指定します。asapj,asabn,asask,asaan形式それぞれについて、この並びでカンマ区切りで指定します。デフォルトはpj_,bn_,sk_,an_
です。
実行時の出力に詳細情報を含めます。
ユーザデータを出力します。
ラベルをユーザデータ形式で出力します。-u
オプションが有効である必要があります。ユーザデータキーフレームはルートボーンのアニメーションとして追加されます。プロパティ名はlabel
です。
ボーン、スキン、アニメーションの有効な組み合わせの情報を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"
]
}
]
}
}
}
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"
]
}
}
}
}
アニメーションのレイアウト情報を出力します。contents.userData.layoutSizes
プロパティからアクセスできます。
ポーターを指定します。ポーターは各種データをシリアライズする前に加工・変換するものです。
現在は aop
(Array Oriented Porter) を指定できます。aop
を指定すると、ファイルサイズが削減されます。
aop を適用したファイルを読み込むことができる Akashic Animation は 4.2.0 以降になります。
Akashic Animation で利用できない属性を無視します。
ポーターを検証するデバッグ機能です。通常使用することはありません。
Node.js のモジュールとして呼び出すこともできます。
var ss2asa = require("@akashic-extension/ss2asa");
ss2asa.convert({
projFileName: "stickman.sspj",
outDir: "./out",
addPrefix: true
});
※ TypeScript で利用する場合、 @akashic/akashic-engine
の型定義ファイルを tsconfig.json
で指定する必要があります。
{
"compilerOptions": {
...
},
+ "files": [
+ "node_modules/@akashic/akashic-engine/lib/main.d.ts"
+ ]
...
}
projFileName: string
(required)- SpriteStudioのプロジェクトファイル
outDir: string
(required)- 出力先ディレクトリ
addPrefix?: boolean
(default:false
)- 出力ファイル名に接頭辞を追加するかどうか
verbose?: boolean
(default:false
)- 実行時に詳細情報を出力するかどうか
bundleAll?: boolean
(default:false
)- すべてのアセットデータをまとめてasapjファイルに出力するかどうか
prefixes?: string[]
(default:[]
)- 出力ファイル名に追加する接頭辞の文字列配列 ([.asapj, .asabn, .asaan, .asask] の順)
asaanLongName?: boolean
(default:false
)- asaanファイル名(アニメーション名が用いられる)の前にssaeファイル名を加えるかどうか
deleteHidden?: boolean
(default:false
)- SpriteStudio上で目玉アイコンを用いて非表示にしたパーツとそのアニメーションを削除するかどうか
labelAsUserData?: boolean
(default:false
)- ラベルをユーザデータ形式で出力するかどうか (
outputUserData
がtrue
の場合)
- ラベルをユーザデータ形式で出力するかどうか (
outputUserData?: boolean
(default:false
)- ユーザデータを出力するかどうか
outputComboInfo?: boolean
(default:false
)- ボーン、スキン、アニメーションの有効な組み合わせの情報をasapjファイルのユーザデータとして出力するかどうか
outputRelatedFileInfo?: boolean
(default:false
)- asapjファイルと関連するファイルの一覧をasapjファイルのユーザデータとして出力するかどうか
outputLayoutSize?: boolean
(default:false
)- アニメーションのレイアウト情報を出力するかどうか
以下のアトリビュートのアニメーションをサポートします。
- 参照セル
- 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
を使用している限りそのような不整合は起こりません)。
ss2asaはNULLパーツの持つ属性値の内、以下のもののみを出力します。
- X, Y座標
- Z回転
- X, Yスケール
- 不透明度
- 当たり半径
- ユーザデータ
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 の元で公開されています。