こんにちは。
OPTPiX SpriteStudio 開発マネージャの遠藤です。
この記事では多くのアップデートが加えられた SpriteStudio 6 SDK の改善点と、今春リリースしたばかりのWebプレイヤーについて簡単にご紹介します。
SpriteStudio 6 SDK のアップデート内容
本SDK は、OPTPiX SpriteStudio 6 で製作されたデータをユーザーの皆様の再生環境に応じて柔軟にご利用いただくためのライブラリ、およびツール群で構成されます。
今回のアップデート v1.6.1 に含まれる主な改善要素を1つずつ見ていきましょう。
バイナリファイルの刷新
これまで SDK が提供してきたバイナリファイルは ssbp という独自形式でしたが、今回新たに FlatBuffers という形式を採用しました。
FlatBuffers を採用した背景
1. ssbp はメンテナンスコストが高い。
ssbp はネイティブのメモリ情報を1:1でそのままファイルにしたものなので、サイズがとても小さい反面、情報の追加・変更による修正コストが大きい問題がありました。
2. C++ でしか利用できない。
データのパーサーが C++ のみであるため利用できる言語が C++ に限られていました。
3. ssbp をベースとした json ファイルでは処理負荷が高い。
json ファイルはパース時に時間とメモリを大きく消費するため、json に変わるデータフォーマットが必要になりました。
これらの問題を解消するため、ssbp 並みにファイルサイズを圧縮できること、また各種言語・プラットフォームに対応できる汎用フォーマットは無いものかと、下記の条件を満たすシリアライザーを探していたところ、該当したのが FlatBuffers でした。
- スキーマがあること
- C++, C#, Javascript(Typescript) に対応していること
- 本家が全てのコードを管理していること。(3rd party 製のライブラリを含んでいない)
- ライブラリのフットプリントが小さいこと
以上が FlatBuffers を採用した背景です。
ファイルサイズの比較
ssbp の優位点はファイルサイズが小さい点だと説明しましたが、ssfb (FlatBuffers形式) は多くのケースで ssbp より小さくなります。
その理由は、FlatBuffers の仕組みによります。
sspj/ssae などのソースデータをコンバータで変換する際に、キーフレームから各フレームの値を補間計算した結果、どうしても重複するデータ(値)が多くなってしまうのですが、FlatBuffers ではデータをオフセットで指定する仕様になっているため、重複データを再利用するのに適していたからです。
具体的なサイズの違いを見ていきましょう。
■キャラクタのアニメーション
SSAE数:1
SSCE数:2
総パーツ数:18
総アニメーション数:7
フレーム数:5~76
データの取得元 (ファイル名:AnimeMaking.sspj)
json | ssbp | ssfb |
271KB | 198KB | 80KB |
■キャラクタの基本的なアニメーションテンプレート
SSAE数:2
SSCE数:2
総パーツ数:29
総アニメーション数:46
フレーム数:1~60
データの取得元 (ファイル名:character_sample1.sspj)
json | ssbp | ssfb |
1.2MB | 434KB | 297KB |
■メッシュ&ボーンを利用したアニメーション
SSAE数:3
SSCE数:2
総パーツ数:136
総アニメーション数:5
フレーム数:20~64
データの取得元 (ファイル名:MeshBone/Knight.sspj)
json | ssbp | ssfb |
2.8MB | 929KB | 685KB |
■エフェクトの全パラメータ使用データ
テスト用データのため動画は割愛します。ご了承ください。
SSAE数:25
SSCE数:1
SSEE数:75
各エミッタ数:1
総パーツ数:140
総アニメーション数:82
フレーム数:60~120
データの取得元 (ファイル名:effect_allcheck.sspj)
json | ssbp | ssfb |
984KB | 600KB | 85KB |
■プロモーション動画 「炎の戦士」
SSAE数:4
SSCE数:8
SSEE数:11
各エミッタ数:1
総パーツ数:400
総アニメーション数:8
最大フレーム数:700
json | ssbp | ssfb |
11MB | 6.6MB | 2.7MB |
以上のように、どのケースでも ssfb は、json に比べて約25%、エフェクトメインのデータにおいては約 10% 程まで小さくなります。
ssbp と比べた場合、大体 40~70% に、エフェクトメインのデータでは 約14%程度になります。
アニメーションの尺が長くなるほど圧縮率が上がる傾向にあります。
今後は、.ssbp に変わるフォーマットとして、.ssfb (FlatBuffers形式) に移行していく計画で、直近では、ssbpLib 相当の ssfbLib の開発を予定しています。
※アニメーション数に Setup データは計上していません。
ビューアのGUIを刷新
次に、新しくなったビューアをご紹介します。
主な変更点は下記の通りです。
- GUI のバックエンドを GLFW から JUCE に変更し、操作性が改善され、日本語のファイル名も正しく表示されるようになりました。
- 常に最新のSDK ソースコードを反映した Mac 版のビルドを安定して提供できるようになりました。
- 特定のファイルが読み込めない問題や、潜在的なメモリーリークの修正が行われ、安定性が向上しています。
SpriteStudio 6 のエディタがインストールされていない環境や、SDK ベースの独自ランタイムを作成し、使用している場合にご活用いただけると思います。
旧バージョン
新バージョン
ビルドが簡単に
これまではビルド環境を整えるための手順が煩雑で、利用バージョンについても留意しなくてはいけませんでした。
これがバッチファイルを実行することでほぼ自動的に環境が構築されるようになり、手順が非常にシンプルになりました。
詳しくは GitHub ページをご覧ください。
また、コンバータ及びビューアはプルリクエストをトリガとして自動的にテストが行われます。
管理者がテストの合格を確認し、マージを行うと自動的にビルド、デプロイが行われる仕組みになりました。
このため SDK のアップデートの反映が迅速になり、いつでも最新の安定版をご利用いただくことができます。
なお、このビルドパイプラインに使われている CI ツールは Travis と Appveyor です。
Windows / macOS 両方に対応させるため併用しています。
Webブラウザ向けプレイヤーをリリース
さて、SDK から離れます。
つい先日、2019年4月に新しいプレイヤー SS6Player for Web を リリースしました。
SpriteStudio 6 で作成したアニメーションを Web ブラウザ上で再生させるためのプログラムです。
これは弊社公式の Web ブラウザ向けプレイヤープログラム SSPlayer for HTML5 以来のリリースになります。
この古い SSPlayer for HTML5 では、SpriteStudio Ver.4 までの機能しかサポートしておらず、頂点変形やカラーブレンドなど一部使えない機能があり、すべてのユーザー様の期待に応えられるものではありませんでした。
ですが、今回リリースの SS6Player for Web では、SpriteStudio Ver.5 以降の機能に加えて、Ver.6 のメッシュ、ボーンにも対応しています。
また、先程ご説明した FlatBuffers 形式のデータを扱える最初のプレイヤープログラムであるため、データサイズが削減され、処理負荷も軽減しています。Web ブラウザ向けのアプリ/コンテンツ制作のために SSPlayer for HTML5 を検討し断念された方も、新たに採用を検討している方も是非お試しください。
早速試してみたいという方はこちらの GitHub ページをご覧ください。詳しい紹介はまた別の機会にしたいと思います。
以上、SpriteStudio 6 SDK のアップデート内容と、新しいWebブラウザ向けのプレイヤーをご紹介しました。
これからもクリエイターの皆様の笑顔を増やすため SpriteStudio は進化を続けていきます。
どうぞ楽しみにしていてください!