高速化の手順
・アルゴリズム見直し
 そもそも、10年以上前のネイティブのソースで、アルゴリズム的にそこまで酷いのは無い(クラス設計など別だが)むしろ、最近のコードのほうが、酷い事が多い。ある程度経験があればこんな事にはならないんだけどっていうコードが多いです。
 以外に見直す価値があります。

・浮動小数点演算の見直し
 ゲーム、画像処理に関して、メインとなる手法です。これは、今時のCPUでも、非常に有効です。ただし、まったく同じ結果になるとは限らないので、演算の精度との相談になります。まぁ、ゲームにしても、画像処理にしても、精度が変わったことに気付ける人に会った事が無いので、ほぼ心配いりません。
 気付かれたら、優秀な同僚がいる俺って幸せ者だと思いましょう。

・スレッド分割
 最後の砦にして、最も効果のある手法です。ただし、対象の処理が並列に処理可能である事が条件です。今時のCPUでは、複数コアが当たり前ですので、思い切ってコア数分スレッドをきりましょう。幸せになれます。
 単純な処理だと、ほぼ、スレッド数分処理時間が小さくなります。

高速化はこれくらい。

1.FXで1000万プレイヤーに成りそこね
  かなり遠かった。てか、まともに働くのと収入が変わらない程度って、リスクに見合ってない気がする。
でも、生活できるくらいに稼ぐことはできたので、よし。種も1.5倍!まぁよし。
  来年は、ユーロが終わる予定なので、よし。

2.菅野美穂を見損ねた
東京に出てきた理由はこれしかないのに、見ることすら叶わず。
 10年居れば。。。甘かった

3.誰にも惚れることがなかった
枯れた。仕事もやってるし、外出もしているのに、全く女性に興味がわかなかった。
 周りが結婚しても、興味がない。これは、ヤバイ。

4.スクリプトがやっぱり嫌い
 所詮スクリプトはスクリプト。
 ネイティブが書けない奴が書いたコードしか読んでないからだと思うけど、クソ。
現在も十分現役な3GS、について、こんなもんですよ? こんな感じでした? というまとめ

・アプリのサイズが20MBを超えると、3G回線からダウンロードできない
(iPhone全てに共通)

→高圧縮画像を用いるしかない

→伸長処理はCPU(CGImageだったか?)で行う


・glTexImage2D函数を用いた、1MB のデータ量の転送時間は、10msを余裕で超え、冷や汗

→転送は、少ない回数で


・VRAMは48MBらしい(フロントバッファ、バックバッファ込み)

→規模次第だが、隙をみて不要な画像を削除し、必要なものを読み込む処理が必要
   Now Loading画面がiPhoneに多いことなんとなく納得できます


・CPUでの行列演算(4x4)15000回程度で60fpsを割り込む数値(16,6ms割れ)

→オーサリングをきちんと行い、
データを並列処理可能にできるのであれば、
行列演算は頂点シェーダへ移行すべきでしょう


iPhone4はこんなかんじ。

・30fpsで表示可能なポリゴン数は3GSと大きな差は無かった
 →いろいろ条件があるので、詳細は控えますが、
所謂、よくある、頂点構造を用いました

→CPUはiPhone4が速い

→iPhone4のVRAMは256(フロントバッファ、バックバッファ込み)

→iPhone4で解像度が大きくなったことを考慮すれば、順当な結果です?


感想

もう少しいいハードだと思っていたので、肩透かしを喰らいました

同じ経験をした人、多いのではないでしょうか?

ただ、良い操作性と良い見た目?が実現できているのは、さすがapple!という感じです??


まとめ

今回気づいた、この手のスマートフォンでのゲーム開発で気にしなければならない点は、
以下の3つ

・画像の転送は
Now Loading画面的なものを表示中に、一気に行う。
メインメモリ→VRAM転送(glTexImage)は重い

・画像のストレージからの読み込み、伸長も重いので、
Now Loading画面的なものを表示中に、一気に処理をする

・3Dモデルの表示に関わる演算で、プログラマブルパイプラインで吸収できるものは、
吸収したほうがCPUに空きができる。
(ただし、オーサリングと戦う覚悟を持つ)

これに気をつければ、そこそこなポリゴンも出るし、
それなりのクオリティが実現できるはずです。

スペックの比較、詳細については、
いろいろなサイトで紹介されていますので、ご確認くださいませ。