C++で使用できる汎用アニメーションライブラリssbpLibのご紹介

SpriteStudio開発チームの小泉です。
今回はC++汎用アニメーション再生ライブラリssbpLibをご紹介します。

psvita_thumb

PlayStation® VitaでSpriteStudioのアニメーションを再生している様子

ssbpLibとは?

OPTPiX SpriteStudio 5(以下、SpriteStudio)で作成したアニメーションを再生するライブラリとして、SpriteStudio5-SDKをGitHubで公開していますが、SpriteStudio5-SDKは本体と同等の処理が含まれているため全体のコード量も多く、アニメーションを再生したいという目的で考えるとアプリへの組み込みは手軽とは言えませんでした。

そこでアニメーション再生情報に特化した汎用フォーマットであるssbpフォーマットを開発することにしました。再生のための情報に最適化することで再生プログラムをシンプルにできます。コンパクトであり手軽に扱えるアニメーション再生ライブラリ、それがssbpLibです。

ssbpLibはライブラリのソースコードをGitHubで公開しています。言語はC++で作成されており、C++で作成するアプリに簡単に組み込めます。

ssbpLibは、.ssbpの解析と、ゲームからアニメーションを制御するクラスを提供します。
ファイル読み込みと描画の部分は、各プラットフォームやライブラリ、フレームワークに合わせてカスタマイズが必要となります。
固有の処理をカスタマイズしていただくことで汎用性をもつ思想になっています。

近年UnityやCocos2d-xといったプラットフォーム、ライブラリが注目されていますが、C++でゲームやアプリを作成するシーンもまだまだあるのではないかと思います。

本ライブラリは商用、個人・同人等で自由にご利用いただけますので、作成しているゲームやアプリをアニメーションで少し豪華にしてみてはいかがでしょうか。

ssbpLibの使い方

1. ssbpファイルの作成

ssbpに変換するためにはSs5Converterを使用します。Ss5Converterは、GitHubで公開しているSpriteStudio5-SDKに含まれています。

Ss5ConverterGUIを実行すると以下の画面が表示されます。

ss5converter_thumb

Ss5Converterのウィンドウ

ここに変換するSSのプロジェクトファイル.sspjをドラッグ&ドロップで登録しコンバートします。成功すると、sspjのあるフォルダに同名の.ssbpが出力されます。

2. アプリケーションへの組み込み

今回はDXライブラリを使用したゲームへの組み込みの手順をご紹介します。

ゲームのメインループを作成したら、ssbpLibをプロジェクトに追加します。
リポジトリのPlayers/ssbpLibに含まれるソースファイルをプロジェクトに追加します。

vc_addssbplib

ゲームのソースファイルから”SS5Player.h”をインクルードするだけで準備は完了です。

3. プラットフォームのカスタマイズ

公開されているssbpLibはDXライブラリ用にカスタマイズされていますので、DXライブラリであればこのまま使用することができますが、他の環境で使用する場合はカスタマイズが必要です。カスタマイズが必要となる関数はSS5PlayerPlatform.cppにまとめられています。

カスタマイズしなければならない機能は、次の通りです。

  • ファイル読み込み
  • テクスチャの読み込み
  • テクスチャの解放
  • テクスチャのサイズを取得
  • スプライトの表示
  • パスチェック

4. アニメーションの再生

SS5Player.hに記述されている、ResourceManagerクラスとPlayerクラスを使用してアニメーションを再生します。

ResourceManagerクラス

ssbpファイルの読み込みや、アニメに対応するテクスチャの管理を行います。

一度読み込んだssbpファイルはResourceManagerクラスにキャッシュされていきます。
この仕組みによって同じアニメを複数表示しても、1つのキャッシュを共用するのでメモリを節約することができます。

またアニメーション再生とssbpの読み込みは別のタイミングで行えるので、事前にssbpを読み込んでおくなど、ロードのタイミングを調整することもできます。

kyouyuu_thumb

クリックで大きい画像を表示

Playerクラス

アニメーションのモーション指定や再生、停止といった制御を行います。
またアニメに含まれる各パーツの座標のようなアトリビュートのステータスを取得できるので、アニメーションに連動してエフェクトを出すような使い方もできます。

具体的なコードについてはGitHubのssbpLibのページを参照してください。

応用編

そのほか、以下のようなツールとプラグインも公開しています。

  1. ssbpToXML
    同じリポジトリに含まれているツール「ssbpToXML」で、ssbp情報をXML形式に再コンバートできます。これによってバイナリが使用しにくい環境でもアニメーションデータをインポートできる幅が広がります。
  2. ssbpLib For HSP
    ssbpLibをDLLにすることで、HSPでアニメーションの再生ができるプラグインを作成しました。詳しい説明は、ssbpLib For HSP のドキュメントをご覧ください。
    このように応用できる場面もあるのではないかと思います。

最後に

今回の内容は、リポジトリのsamples/DXLibrary/basic/ にDXライブラリ用サンプルプログラムが含まれています。こちらを参考にしていただければと思います。

あなたのアプリケーションもSpriteStudioのアニメーションで少し豪華にしてみませんか?

gamen_thumb

 

タグ , , , , , , | 2020/06/16 更新 |