Glenelg開発メモ:(未実装)ASPD高速化に関するメモ
Glenelgの機能についてのメモ。
自分のための覚書でもあり、利用者のための豆知識でもあり、他AI開発者のための参考情報でもあり。
課題の内容†
話の発端は、雑談スレに書きこまれた「ホムが進化したら、攻撃が遅くなったような気がする」という話題から。
雑談スレでさまざまに検証された結果、攻撃速度に関しては現状大きく2つの問題が存在している。
そのうちの1つが、このページの内容:『ホムの実際の「攻撃〜攻撃ディレイの1サイクル」と、AIの呼び出し周期との問題』です。
現象概要†
例を挙げましょう。
例えばホムのASPDが170だとします。
詳しい計算は省きますが、このホムは理論上600msecに1回、攻撃を行うことができます。
ところが実際には、ホムのAIは約140msecごとに1回しか動作しません。
このため、もしAIが動作させられるたびに無条件に攻撃命令を行ったとしても、実際に攻撃ができるのは700msecに1回になってしまいます
(以下の図を参照)。
つまり、実際にはASPD165程度の性能になってしまうのです。
これに対処するため、AI雑談スレでは「わざとAIの中で待ち時間を作って、周期をあわせてしまおう」というアイディアが挙げられています。 イメージとしては以下の図のような感じ。
上記図の赤線部分が特徴。この場合AIの中で100msecのディレイをいれて「待つ」ことで、次の攻撃可能なタイミングにあわせたAttackを行えます。
なんですが・・・†
・・・Glenelgでは、これは実装しません。
理由はさまざまにあります。
- ホムは自分のASPDの正確な値をしらない。
- ステータス画面に表示されているASPDも正しいとは思えない。
- ホムは「自分が攻撃できたかどうかわからない」ので、正確なフィードバックが行えない
- 「140msecごとの呼び出し」というのは、まったく保証されていないし安定もしていない。おそらく環境・状況によっても変わる。
- AIで待ち時間を持たせると、その間ROクライアントの表示系がとまってしまう。
・・・と、山ほど問題があるためです。
特に後者3つが非常に問題で、環境によってどれくらい振れるかわからない上に、操作性が低下。
そこまでしても本当にその速度で正しく動いてくれるか保証がない。
操作性が落ちないのであれば、入れる冒険もいいかもしれませんが・・・
その操作性低下のせいでポーションを投げられなくなるリスクがある現状では、実装する気になれませんでした。
とりあえず、なにか改善可能になる要素が出るまでは、現状のままにします。