@akashic-extension/ss2asa

Convert SpriteStudio files to akashic-animation files.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@akashic-extension/ss2asa
192.7.12 years ago5 years agoMinified + gzip package size for @akashic-extension/ss2asa in KB

Readme

ss2asa
SpriteStudio形式のファイルををakashic-animation形式にコンバートするコマンドラインツール。
インストール
ss2asaNode.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)
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)
ラベルをユーザデータ形式で出力するかどうか (outputUserDatatrue の場合)
  • outputUserData?: boolean (default: false)
ユーザデータを出力するかどうか
  • outputComboInfo?: boolean (default: false)
ボーン、スキン、アニメーションの有効な組み合わせの情報をasapjファイルのユーザデータとして出力するかどうか
  • outputRelatedFileInfo?: boolean (default: false)
asapjファイルと関連するファイルの一覧をasapjファイルのユーザデータとして出力するかどうか
  • 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 で確認しました。
  1. 環境設定 -> 一般設定 -> 新規プロジェクトのデフォルト設定 -> 一般 -> 互換性 を開き 再生対象のプラットフォームをカスタムにする
  2. 属性のチェックボックスを下の表にしたがって設定する

注意: この設定は新規プロジェクトに対して適用されます。既存のプロジェクトについてはこの設定が完了後、改めてプロジェクト設定を編集してください。
|   | 属性名 | |:-- |:----------------- | | ✔ | 参照セル | | ✔ | 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 の元で公開されています。