2013年07月25日

高速化、高速化、高速化ぁ!!

どうも。
中の人です。

前回のブログでも書いたとおり、現在制作中(iOSDevCenter復旧待ち)のアクションゲームについて、あれやこれや書いていこうかと思います。

まず、今回のアプリは、随分前から構想はしてたモノ、のプロトタイプに当たります。
プロトタイプといっても、中途半端なモノをリリースするわけでなく、ゲームとしては楽しめるようになっていますよ。

そういう完成前のものという意味ではなく、いろいろな事柄をテストするための位置づけということです。

例えば全方向ティルト操作とか。
アクションとして楽しめる物が出来るのか?
ユーザーは着いてきてくれるのか?等など。

そして、グラフィック。
全方向ティルトにした訳も実はグラフィックに理由がありました。
というのも、今現在はグラフィックスタッフが居ません。
当然、ゲームに必要な物は、他所から持ってくるか、持ってくれない場合は自分で描くしかありません。

が、自分、そんなに起用じゃないっす(笑)。
そんな訳で一つのアイデアがひらめいたのは、一枚の絵を回転させてどの方向にも対応させちぇば?ってこと。

これなら、不器用な自分でも出来るッス!

更に、それを応用して、例えばアニメーションも拡大縮小回転でなんとか出来るんじゃない?とも。

そんなわけで、今回のアプリではその辺りを大量に使用して制作しました。
もちろん、そんなことをすればCPU&GPUフル稼働状態になるはず。
それで間にあえば問題ありませんが、果たしてどの程度まで耐えられるのか?

手持ちの実機で早速テストすると・・・

iPhone3GS・・・止まっているのか?と疑うほど。いや動いているけどね。
iPhone4・・・・動いてはいるけど・・・アクションでこれはないわぁ〜。
iPhone5・・・・お〜すげえぇ!!めっちゃ楽しいアクションゲームやで、これ。

という感じ。
う〜ん・・・予想してたけど、やはり厳しい。
5専用って訳にはいかないもんね。

とりあえず4Sはどうだ!?ということで中古の4Sを購入。
試してみたら、ちょっと引っ掛かりがある時があるけど、まあ気にならないかな、って位の動き。

う〜ん・・・4S以上の対応にしよっか、と思っていたところ・・・。

以前のうちのスタッフでプログラマのM君に見てもらったところ、「いや、面白いですやん」とのお褒めの言葉。
「でも、いろいろと惜しいですねぇ」との言葉も。

いろいろ聞くと、「操作性が今ひとつ」「もうちょっと先を見たくなるような仕掛けを」「続きを見たい(もっと先まで遊んでみたい)と思わせる要素を」等など、鋭い指摘を多数もらいました。

そして、最後のトドメの一言。
「もちろん4でも動かせるようしてくれるんでしょ?」
※彼の所持機はiPhone4です。

よし!じゃあ一丁やってみるか!と意気込んだまでは良かったですが、基本的に重いのは描画関係。
ご存知のように、僕はFLASHベースで制作をしているんですが、描画関係で重い場合、とれる処置は数が少ないです。

基本的に
1)画像はビットマップに
2)拡大縮小回転はなるべく使わない
3)登場する画像数を減らす
です。
※他にもあるかもですが、基本的な考えとしては以上だと思います。

まずビットマップ化ですが、基本的に今回の画像は全てPNGで描いて、それを取り込んでます。
ですので、基本的にビットマップ画像「しか」ないんです。

拡大縮小回転については、先に述べたとおり。
それらを使用してアニメを滑らかにしているので、これを外すわけには行きません。

また画像数も、アクションゲームとして、これ位は出現してくれないと困るというラインで制作しているので、これ以上少なくは出来ません。

あと、アニメに関しては、複数の画像を拡大縮小回転して一つのMCにしているんですが、それらをまとめてビットマップ化してくれる命令もあります。
ただし、この命令は、動かない(拡大縮小回転しない)画像に関してのみ、効果があり、今回のように複数のパーツが拡大縮小回転しているような場合は、効果があるどころか、更に重くなってしまうそうです。

困ったなぁと途方に暮れていると、前述のM君から目から鱗の発言が。
「そんなもん、全部のアニメをGIFアニメにしてしまえば良いんですよ」

えぇ〜!?
だって、このアニメをGIFで書き出したら100枚以上になるよ?

「や、そんなもん対した容量にはならないっすよ」

いや、容量もそうだけど、それだけの枚数、書き出して修正するのも大変よ・・・。
「まあ、そうかもしれませんけど、iPhone4対応させるなら、それくらいはせんと」

意地でもiPhone4対応させるのね・・・。
てか、それ決めるの僕なんだけど・・・。

とりあえず、その時は、いろいろ試してみて、上手く出来そうだったら、ということにしておきました。

で、制作も佳境に入ったところで例のiOSDevCenterの件。
どうせ登録申請も出来ないし、本腰を入れて、4対応をやってみましょうか!!
ということで作業を進めた結果、なんとかGIF化に成功。

驚くほど軽く動作するようになりました。
が、iPhone4で動かすと、まだまだ重い、重い。

そんな中、AIR3.6以上からはアプリケーション記述子の中にrequestedDisplayResolution タグを使って使用を除外する解像度を指定できるようになっています。

それを利用して、iPhone4ではRetina解像度を使用しないように設定しました。
こうすることでなんとか遊べる速度を確保できました。

それ以外にも、標準の2倍の大きさの敵は、別のムービークリップにしたり。
※それまでは標準の敵のMCを拡大表示してました。

ボタンの反応も悪いので、透明のボタンを作り、ボタンのアニメはその下でアニメだけするように設定しなおしたり。

アクションゲームなので、直にユーザーに反応する部分は、とにかく高速化を行いました。

そんな苦労が実りまして、iPhone4にも対応とすることが出来ました。

正直、まだ引っ掛かりとかが100%取れてる訳ではないですが、十分楽しんで頂けると思います。

はやく配信して、ユーザーの方の反応を見たいですね。
posted by カモノハシ at 09:00| Comment(0) | 日記
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: