日記/2007-02-15 のバックアップ(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 日記/2007-02-15 へ行く。
- 1 (2007-02-15 (木) 19:49:20)
- 2 (2007-02-15 (木) 20:00:59)
- 3 (2007-02-15 (木) 20:00:59)
すっかり検証するのを忘れていたことがあったので、ちと試してみて、よくわからなくなった。
とりあえず、公開メモという感じで。
話題:ゼロ移動キャンセル。 †
可能な限りAIで提案されている、攻撃高速化の一手法。
プログラムのつくり自体は、すでにある程度確立されている「移動キャンセル」と同じ。
違いは、ホムの移動先指定。
普通の移動キャンセルは、実際にホムを1セル程度歩かせる位置を指定するのに対して「ゼロ移動キャンセル」は文字通りゼロ距離:ホムのいる位置そのものを指定する。
効果のほどは? †
確かに、ゼロ移動キャンセルでも攻撃は高速化されている。
ただ、友瀬が使っている99レベル原種進化バニルでは、通常の移動キャンセルと比べると確かに遅いように感じる。
もう少し具体的に調べて、困った。 †
上記の「感じる」というのが非常に主観的なので、もっと具体的な手が使えないか考えて、Attack()を呼び出したタイミングを記録してみることにした。
と、その結果がよくわからないことになってきた。
試行回数はそれぞれ2,3回程度の平均なのでばらつきはあるかもしれない。
99進化バニル | 通常なし | 1セル移動 | ゼロ移動 |
草を倒す所要時間 | 5秒台 | 4秒台 | 5秒台 |
AIサイクル | 18回前後 | 15回前後 | 10回前後 |
33未進化リーフ | 通常なし | 1セル移動 | ゼロ移動 |
草を倒す所要時間 | 7秒台 | 7秒台 | 6秒台 |
AIサイクル | 20回前後 | 30回前後 | 10回前後 |
- 確かに、ゼロ移動キャンセルには一定の効果はある。
- 通常キャンセルとゼロ移動キャンセル、どちらが効果的かはよくわからない。
少なくとも上記を見る限り、進化原種バニルでは移動キャンセルのほうが速いが、未進化原種リーフではゼロ移動キャンセルのほうが速い。 - どちらのケースにしても、移動キャンセルを絡めるとAIサイクルの挙動が怪しい。
特にゼロ移動時のサイクル数の少なさは、かなり異常と言っていいだろう。
草のHPは10なので、10回攻撃が必要:つまりゼロ移動キャンセルをした場合、Attack()するたびに実際に攻撃が出ている、といっても過言ではないペースまで、AI動作が減速されているといえる。 - 移動キャンセル時の見た目について補足:
進化バニルでは、攻撃回数のほうが移動回数よりも多い:「攻撃・攻撃・移動」になることがある。
未進化リーフでは、攻撃よりも移動回数のほうが多い:「移動・移動・攻撃」になることがある。
- そういう意味では、リーフのほうが移動キャンセル時に遅いのはなんとなく理解できる。
移動キャンセルによるメリットよりも、移動モーションによる無駄のほうが大きいのでは。
- そういう意味では、リーフのほうが移動キャンセル時に遅いのはなんとなく理解できる。
どのケースもソース・プリント出力タイミングなどは変えていないので、プリント出力によるディレイ差という問題ではなさそう。
まあいずれにせよ、まだまだ検証は必要な段階。