2010年08月27日 05:17:55
夏コミで出した「Army & Maiden」ですが、夜の時間を利用して、内部仕様を改良中です。
どこを一番改良しているかと言うと、メモリーの使用量です。
夏コミに間に合わせるために、開発速度重視で、Javaの各種クラスを利用して作成していたのですが、けっこうメモリの使用量が激しかったです。具体的に言うと、20数MB〜80MBぐらいで推移する感じで動いていました。
ただ、この消費メモリー量だと、ミニマムスペックのAndroidで動くようには移植できません。
私が知っている範囲のAndroid Phoneで、最も性能が低いものだと、使用可能なメモリーの上限は16MBです。
というわけで、16MB以内に実行時使用メモリー量が収まるように改良をしています。
どんな改良をしているかというと、オブジェクトを利用して書いていたプログラムを、intの配列で書くプログラムに置き換えています。
分かりやすい例で言うと、例えばStackクラスを使っていた処理を、int配列のべた書きに書き換えています。
こうやって可能な限りオブジェクトを使わないようにプログラムを書き換えていくと、メモリの使用量が減っていきます。
また、GC対象を少なくするために、int配列は固定長にして、可能な限り再利用していきます。
ここ数年、携帯電話向けゲームばかり作っていた人間の、原始時代のような手法です。
あと、Androidは、描画はけっこう速いので、バッファをあまり持たせず、べた描画するようにチューニングしています。
まあ、iAppliのように、データを全部byte配列で持って、オブジェクトは何もない、みたいな極端なことはしませんが。
というわけで、現時点で、最もユニット数の多いステージで、11〜16MB程度の推移で、ゲームが動くようになりました(描画オブジェクトが少ない画面だと6MBぐらい)。これで取りあえずは、Androidに移植可能になりました。
ただ、余裕を持たせたいので、できれば10〜14MBの推移ぐらいで動くようにしていきたいところです。
というわけで、もう少しプログラムをいじって、使用メモリ量を削減していこうと思います。