日記/2007-02-15

2007-02-16 (金) 11:47:46
お名前:

すっかり検証するのを忘れていたことがあったので、ちと試してみて、よくわからなくなった。
とりあえず、公開メモという感じで。

話題:ゼロ移動キャンセル。

可能な限りAIで提案されている、攻撃高速化の一手法。
プログラムのつくり自体は、すでにある程度確立されている「移動キャンセル」と同じ。
違いは、ホムの移動先指定。
普通の移動キャンセルは、実際にホムを1セル程度歩かせる位置を指定するのに対して「ゼロ移動キャンセル」は文字通りゼロ距離:ホムのいる位置そのものを指定する。

追記:
可能な限りAIの作者・horoさんの解説では

  • 移動しないキャンセル(ゼロ移動キャンセル)を「Bモード」動作
  • 移動するキャンセル(1セル移動キャンセル)を「Cモード」動作

・・・と呼んでいます。
ゼロ移動ってのは友瀬の造語なので、誤解なきよう。

効果のほどは?

確かに、ゼロ移動キャンセルでも攻撃は高速化されている。
ただ、友瀬が使っている99レベル原種進化バニルでは、通常の移動キャンセルと比べると確かに遅いように感じる。

もう少し具体的に調べて、困った。

上記の「感じる」というのが非常に主観的なので、もっと具体的な手が使えないか考えて、Attack()を呼び出したタイミングを記録してみることにした。
と、その結果がよくわからないことになってきた。
試行回数はそれぞれ2,3回程度の平均なのでばらつきはあるかもしれない。

99進化バニル通常なし1セル移動ゼロ移動
草を倒す所要時間5秒台4秒台5秒台
AIサイクル18回前後15回前後10回前後
33未進化リーフ通常なし1セル移動ゼロ移動
草を倒す所要時間7秒台7秒台6秒台
AIサイクル20回前後30回前後10回前後
  • 確かに、ゼロ移動キャンセルには一定の効果はある。
    上記バニルのケースでは「キャンセルなし」も「ゼロ移動」も5秒台となっているが、厳密にいうとゼロ移動のほうが速いのは確か。
  • 通常キャンセルとゼロ移動キャンセル、どちらが効果的かはよくわからない。
    少なくとも上記を見る限り、進化原種バニルでは移動キャンセルのほうが速いが、未進化原種リーフではゼロ移動キャンセルのほうが速い。
  • どちらのケースにしても、移動キャンセル/ゼロ移動キャンセルを絡めるとAIサイクルの挙動が怪しい。
    特にゼロ移動時のサイクル数の少なさは、かなり異常と言っていいだろう。
    草のHPは10なので、10回攻撃が必要:つまりゼロ移動キャンセルをした場合、Attack()するたびに実際に攻撃が出ている、といっても過言ではないペースまで、AI動作が減速されているといえる。
  • 移動キャンセル時の見た目について補足:
    進化バニルでは、攻撃回数のほうが移動回数よりも多い:「攻撃・攻撃・移動」になることがある。
    未進化リーフでは、攻撃よりも移動回数のほうが多い:「移動・移動・攻撃」になることがある。
    • そういう意味では、リーフのほうが移動キャンセル時に遅いのはなんとなく理解できる。
      移動キャンセルによるメリットよりも、移動モーションによる無駄のほうが大きいのでは。

どのケースもソース・プリント出力タイミングなどは変えていないので、プリント出力によるディレイ差という問題ではなさそう。
まあいずれにせよ、まだまだ検証は必要な段階。

お名前: