解説続き
2:スプライトの軌跡
緑色が終点で点滅してる赤が始点。青いのがスプライトの軌跡で、実際の移動を表しています。始点、終点間の距離に関係なく、(厳密に言うと一秒未満で完了してますが)かならず約一秒で移動は完了するように作ってあります。始点から終点への移動はキーボードの「SHIFT」か「ENTER」押しで実行されます。一度実行したら結果を見て、次の結果を得るためには「R」キーを押してアプリを再起動してください。再起動しても各観測基準点は毎回位置が保存されていますから、FPSだけがランダム値を得て変更されます。スプライトの移動中は画面左にデルタのログが表示されるけど文字列の都合で16行くらいまでしか実際見えません。ファイルにログを残すほどのものでもないためログ出力機能とかはつけていません。算出したデルタを元に移動量を割り出してるのですがMMF2はいまいち安定した結果を返せないようです。始点と終点の位置は左マウスクリック+マウス移動で決定できますが、各観測点は一度決めたらFPSを変えて何度か試してください。同じ距離、おなじ時間間隔でもFPS設定と実際のデルタが異なる場合に得られる観察結果の違いを視覚的な情報として得るのが目的だからです。
上記スクリーンショットは文字列表示をオフにした場合と、オンにした場合の結果の違いです。左の文字列描画無しの方がデルタが安定しているのでスプライトを動かしている時などにテキスト量の多い文字列の表示はしないほうがFPSを安定させることができるようです。逆に右の方は表示用のログが多くなるにつれてFPSの足を引っ張ってるのが結果を見ると分かります。特に高FPSの時、具体的にはFPS50以上からログが多くなるに従って後半のデルタが大きくなってる=青い球と球の間隔が広くなる。タイムベースはある程度の誤差が常に出るものなので、どっちも始点から終点に至るまでの経過はともかく「約一秒で終点に至る」という結果はほぼ同じ。でも誤差が生じてたまに終点位置から微妙にずれて終わるときもあります、それが画面一番右隅の結果。緑と赤がちゃんと一致しないということはなるべく避けたい=誤差を小さくしたいのですが、オーサリングツールの仕様の中で作ってるのでこの辺は限界です。
3:クリックチームの標準動作とアニメーション
このサンプルは自作した動作でタイムベースを定義し、一部オブジェクトにはクリックチームの標準動作でタイムベースを用いたサンプルってことになります。FPSが10の時とFPSが60の時、それぞれコウモリの動きを観察・比較してください。FPS60の時は動きも滑らかだけど、FPS10の時はなんか動きがぎこちない。しかしタイムベースで動かしているのでアニメーションはFPS60の時と比較してもおおむね同じように動いてるように見えるはずです。動作もぎこちないけど遅くはならない、これがタイムベースオプションが有効になってる成果です。移動量やアニメーションの速度にタイムベースが影響しているのでこういう動作になるってことは・・・フレームの設定からタイムベースオプションを無効にしたらどうなるか?結果が予測できない人は実際試してみてください。
自作タイムベースに話を戻すと、FPSが10の時のスプライトの移動はFPS60の時と何が異なるでしょうか。まず一秒間にスプライトが動く回数がまったく異なります。FPS10の時の密度とFPS60の時のスプライト位置密度はそのまんま移動回数の違いです。あと頻繁にデルタを測ってるせいなのか処理落ちなのかFPS値が高いと時々グっと時差が大きくなる瞬間が記録されています。デルタが平均よりも極端な値を取るとそれがそのまま移動量に反映されて隙間の生じる瞬間があります。FPSが低いとこのギャップは目立たなくなります(もともと隙間だらけの雑な移動だから)がギャップが無くなったわけではありません。
以上タイマベースに関する実験と結果から分かったこと、そしてMMF3に期待することなどは以下の意見に集約されています。本家で発言されていた内容ですが・・・
Most wanted/least wanted in MMF3 – Clickteam.
Re: Most wanted/least wanted in MMF3 [Re: Atom] | |
Registered: 06/30/06 |
MMF2 features plus:
– modern silk-smooth framerate |