2012年8月17日金曜日

にっきちゃんBlueStacks


 AndroidアプリをWindowsで動かすソフト「BlueStacks」を導入し、
自作のアプリを動かした。
.apkが関連付けされるため、ダブルクリックすれば自動でインストールされ便利。
またエミュレータで動かすより高速なので、実機により近い動作速度を期待できる。
Run Android on Windows with BlueStacks :: Android on PC :: Android Player for Windows | BlueStacks
 
 30FPSで動くようにしていた気がしたがそんなことはなかった。
どっかまちがってんのかな。
詳しく調べてないが、Thread.sleep()一回だと指定時間ちゃんと待ってくれない感じがする。
30~45FPSぐらいをうろちょろする。
long now;
for (;;)
{
  now = System.currentTimeMillis();
  if ( now-this.prevTime < 33 )
  {
    try
    {
      Thread.sleep( 33 - (now-this.prevTime) );
    }
    catch ( Exception e ) {}
  }
  else
  {
    break;
  }
}
 
this.prevTime = now;
 とかなんとかやって何回かまわしてあげるとある程度正確にループするようになった。
でも30FPSを想定してるのに25FPSぐらいで安定しちゃう、計測方法が悪いのかそれ以外かよくわかってないが。
sleep使わずに空回ししても25FPSぐらいになるから計測方法が悪いんだろうなあ。
 時間きっちり待ったあと、さらに垂直同期を待つために指定より低いフレームレートになるんじゃないかと予想したがどうかな。
根拠? ない。

 ためしになんも停止処理いれずに動かしてみたら100FPSでた。
垂直同期とかないんだなBlueStacks
こうなるとゲーム用スレッドを別に作ってレンダリングは都合のいいタイミング任せにしちゃったほうが楽かもしれない。
 あれ、となると30FPSにならないのはやっぱりおかしいのか。


 
 ふと思い返したらring^-27のAnotherの解禁フラグを立ててないかも。
あー。
 確認したらぎりぎり開放してた。はー、ひやっとした。
しかし実績29番目を解除できないバグを見つけてしまった、デバッグが不足してんなあ。
申し訳ないです。

0 件のコメント: