SpriteStudio For cocos2d-xを、SSPlayerからSS5Player移行したメモ
Wikiやりながらやったけど、結構時間かかったのでメモ。
1.ssbp形式への変換
sspjなどのプロジェクトを開けるファイル一式データを用意します。
- .sspj
- .ssae
- .ssce
- 元画像ファイル(多分不必要)
データを直接いじる可能性があるので、バックアップも取っておいたほうがいいです。
・データをコンバートする
コンバーターをダウンロードします。
自分はMacでやりました。
コンバーターを起動したら、とりあえず.sspjファイルをドラッグ&ドロップして変換してみます。
特に問題なければ、プログラムコードの修正へ。
・全角文字エラー対策
Wikiより。
この時、全角があるとエラーが出ます。
ファイル名に全角文字を使用しないでください。
セル名、パーツ名、ラベル名に全角文字を使用しないでください。
上記以外に、ファイルパスにも全角あるとエラーになるので、
とりあえず.ssae、.ssceをテキストエディタで開いて、全角文字をひと通り無くします。自分は適当に半角英語に置換しておきました。
全角がなくなると、変換できると思います。
これで.ssbpファイルが出来ました。
2.プログラムコードの修正
次に、プログラムに反映します。
必要なファイルは、ssbpファイルと、エクスポート時に出力されていた画像ファイルです。
大体は
に書いてあるんですけど、
これだけだとわかりにくい部分を補足。
移行のサンプルコードにて、SSPlayerの作成までは同じ処理の代用になっていますが、
// ImageList(png名)の読み込み
ssPlayer->setData("sample");
// "ssae名/アニメーション名"で呼び出し可
ssPlayer->play("sample/hoge");
ここの引数の意味を調べる必要があります。
・setDataの引数
setDataが SSImageList::createでやっていた処理と同じく、画像を読み込む処理になります。
このsetDataの文字列は.ssceの名前じゃなくて、読み込んだ.ssbpの名前を指定する必要があるみたいです。
コメントではpng名と書いてあるのですが、png名で読み込めるパターンがあるのでしょうか……?
・play関数の引数
play関数の引数のアニメーション名は、以前は指定しなくても動いていた?ので、調べる必要があります。
再生するアニメーション名の調べ方ですが、
まず、ssaeファイルをテキストエディタで開き、animeListタグを探します。
<animeList>
<anime>
<name>animation</name>
この、animeタグ内のnameタグに囲まれている文字列を、playするときに指定する必要があります。(この場合animation)
ssPlayer->play("[.ssaeのファイル名]/animation");
こんな感じ。
自分の場合は、もともと1ファイルにつき1アニメーションだったので、1つの指定でいけました。複数ある場合は複数調べて、アニメーション切り替えタイミングでそのアニメーション名を指定すればいけるはず。
3.テクスチャのUV座標が崩れる問題
これで再生されたと思ったら、テクスチャのUVがグチャグチャになる人が出てくると思います。ぱっと見、なんとなくUV座標がおかしいのはわかるのですが、変換がミスったのか、再生するプログラムが悪いのか、わかりづらいので困りますね。
この問題は、cocos2dx側でDirector::getInstance()->setContentScaleFactorを呼んでいる場合に起こります。
対策は、Wikiに書いてあるとおり、
UVをスケールに合わせて補正する
Playerクラスのメンバ関数setContentScaleEneble()にtrueを設定すると、cocosに設定されたスケールからUVを補正して表示します。
ssPlayer->setContentScaleEneble(true);を呼ぶと解決すると思います。
この問題の解決策、マルチ解像度対応についての注意点に書いてあったので、原因を探すのに時間かかりました……
これで動くはず。
あとアニメーション再生が早いと思ったら、ssPlayer->setStepとかで調整すればいいと思います。
4.上記で解決しない、他にわからないことがあったら?
Wikiを読みましょう。実は解決策が書いてあったりします。
でも原因がわからないと、解決策がわからないような部分があるので注意。
(テクスチャUV崩れる問題がそうでした)
FAQは、症状から検索できて、それの解決法を書くのが便利だと思いました。
実現駆動開発と知識駆動開発
Xを実現したいことと定義する。
今までの自分は、将来的にXをやるためにXの知識を得ようと思い、勉強をしてきました。
これは知識駆動開発。
これからの自分は、将来的にXをやるためにXを実装していこうと行動する。
これを実現駆動開発。
と勝手に呼びます。
こういうのは、単語を定義しておくのが自分の中で納得いくと思われる。
実現駆動開発は、知識駆動開発時にメインになる『改善』をちゃんと取り入れないと、実現はできたけど実行速度が遅いとかツメが甘いことが多々起こると思いますので、PDCAサイクルはやるべきでしょう。
さらに、実現したいことが出てこないと動けないので、仕事などでは後出しになりがちで時代に一歩遅れることが起きやすい。
既に実現されていることなのに、実装の試行錯誤が凄い時間がかかるなどデメリットももちろんある。
(実現したいことが最新技術の時もあると思いますが、日本の業界では情報も少なく、チャレンジはなかなかできなさそう……)
ただそれに比べて知識駆動開発は、結局何に使うの?といったことが起こりやすいので、日本の学校の勉強に近い気がする。個人的にこの知識を得たというきっかけはあまりモチベーションが続かないし、使いどころがわからなくて知識とのギャップが大きく、時間を浪費しやすい。だけど、知識は既に書いてあることを詰め込むだけなので手を出しやすい。使うところがわかると、すごくワクワクしますけどね。
最近数学が楽しいのも、プログラミングに使うことで便利なことに気づいたからですし、それがある理由を経験から感じることって大事だ。
経験はイメージ記憶になるでしょうし、概念としても取り出しやすそう。
以上の考えから、経験から感じるためには、実現に向かわなくてはいけない。
……でもなんというか、既に方法があるなら、こういう方法があるよって教えてくれる環境って成長速度に非常に影響があると思う。そういうためにも、「一番下手なプレイヤーであれ」という環境に、どんどん突っ込むべきかなと。
いい先生・師匠に会うってすごく大事。
というわけで、来月とある塾に通います。果たしてその結果は……?
とりあえずGTD
・とりあえずGTDしてみた
実際に行動をするため、次の行動は何をすればいいのかを考えるために、GTDの計画をざっくりやりました。
すると、あれやりたいこれやりたいといったことが、結局何をすればいいのかわからないことだらけだったり、「あれ?これやっても結果には結びつきづらい気がする?」とか考えられることができたので、やってよかったです。
ちなみに、計画を行う際にはDoit.imを使用しました。
使いやすくてよかったです。有料会員になるかも。
まだやってないんですけど、週次レビューとかもちゃんとやるべきだなと思いました。まだ始めて一週間も経ってないので、習慣になるように頑張ります。
書籍版、また買おうかな。
- 作者: デビッド・アレン,田口元
- 出版社/メーカー: 二見書房
- 発売日: 2008/12/24
- メディア: 単行本(ソフトカバー)
- 購入: 127人 クリック: 1,493回
- この商品を含むブログ (304件) を見る
・どうすれば「たくさん」書けるのか
習慣といえば、アウトプットする習慣をどうすれば行えるかを学ぶために、本も読んだりしていました。
できる研究者の論文生産術 どうすれば「たくさん」書けるのか (KS科学一般書)
- 作者: ポール.J・シルヴィア,高橋さきの
- 出版社/メーカー: 講談社
- 発売日: 2015/04/08
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
この本には、Binge Writingの避け方とか、書けない言い訳を論破していたりして、痛快でした。後半は完全に研究論文に関することだったので、ざっくりと流し読みしかしませんでした。目的を持った読書!
特に索引に『言い訳』という項目があり、各言い訳へのインデックスがあったのは笑いました。やっぱり書くところまでいけない人は多いんだなと思ったり。
結局書くのを習慣にするのは、決まった時刻に決まった時間だけ書くことに集中するのがいいということでした。言い訳は無用。とにかく手を動かそう。
執筆に必要な情報を調べることも執筆時間中にやれ、それは書く行為と同じという部分には、知識だけ入れていた自分としては救われました。アウトプットができていないので、執筆時間が長いのに作品が出来ていないという恐怖が産まれましたけど。
・作業時間測定
さらに、作業時間がどれだけかかったか調べるために、Togglというサービスも取り入れてみました。
以前、ポモドーロテクニックだったり、iPhoneアプリのHoursというのも試したのですが、結構項目が見づらい感じがあったりしたのでできなかったのです。しかし、これはタイマーをスタートさせる直前に作業項目を書くので、GTDとも相性が良さそうなので続けてみようかと思います。
・サイト作った
作品を作る覚悟をするため、有料サーバー借りてポータルサイト作りました。