2018年5月26日土曜日

CF2.5 フレーム移動時の読み込み時間短縮の方法

PCではBGM、SE、大きいオブジェクトを使用しても読み込み時間に大きな変化はなく
スムースにゲームが展開できます、しかしこの状態でAndroidにビルドし実行すると
読み込み時間が非常に長くなりストレスを感じてしまいます。

フィールド移動から戦闘フレームの読み込み時間まで4秒程掛り
戦闘終了してからフィールドに戻るまでまた4秒掛かってしまう状態になってしまいました。
課題はこれを1~2秒に削減しストレスを感じない状態にするため、全て見直してみました。

まずはグラフィックを見直します。UI、モンスター画像や背景のサイズを変更したり、
減色して容量を軽くしてみました。
結果的にそれほど大きく変わる事なく依然として読み込み時間は長いままです。

次に組み込みを見直します、組み込みの仕方によっては負担となり処理が重くなる
場合もあります。
ひとつひとつを無効化して処理させないようにしてからフレームを読み込んでみました。
特にダメージ処理の部分は多くの計算をして算出します、これを無効化してみましたが
特に効果もなく、ほとんどの処理を無効化してみましたが、特に効果がありませんでしたが、

ゲーム内部に「SE」という処理のグループがあります、技や魔法のデータの中に効果音番号を当て
その番号が指定した場合、指定した音が出るという処理がしてあります。
これもBGMも含め効果音ファイルを20、30個使用しています(最低音質のogg)

これを無効化すると、なんと読み込み時間が劇的に変化しました!

画像より重いBGMや効果音の読み込みに時間がかかっていたのです。
しかし、攻撃しても何の音もなくボタンをタップしてもSEが鳴らないのは
ゲームとしては致命的になってしまいます。しかもoggの最低音質でこれ以上の劣化は
プレイヤーに不快感を与えてしまう可能性が出てきてしまいます。

ここでCF2.5の設定で処理を軽くすることができます。(ここからは個人的な解釈です)

データエレメンツを開きサウンドを選択して音声ファイルを選択すると
左にあるオプションの中にプリロード、呼び出し時にロード、ディスクから再生の
3つの項目があります。

この3つの詳しい事は記憶していませんがシステム効果音以外の音声ファイルに
ディスクから再生にチェックします。

そしてAndroidプロパティでサウンドが次より大きい場合にディスクから再生のところを
2~3くらいにすると2秒以上ある音声ファイルは指定されたとき初めてロードしてから音声を流しますよ、という事になります。

ですので、タップしてすぐ音がなる効果音はプリロードに設定し
BGMなど、ロード時間が起きても演出的に問題がない場合はディスクから再生に設定することで
フレーム移動時の読み込み時間を劇的に短縮できますので、
数年前の古いスマートフォンでも円滑にゲーム展開出来るようになります。

以上はCFのサイトでも紹介されていましたが、軽いゲームばかり作ってたので盲点でした。
改めて対処法として体現できたので、これまでのデータ量の多いゲーム制作の場合対処できるようになりました。

ずっと悩んでたので、よかったわ~