ポケモンバトルAI
from やってみたいポケモン
攻撃技選択 AI の賢さ
0. ランダムに技を選ぶ。
1. タイプ相性を理解した技選択ができる。
2. タイプ相性と火力指数を加味した技選択ができる。(逆に言うと相手の耐久指数はまだ考慮できない)
3. タイプ相性とダメージ概算を元にした技選択ができる。
例えばハピナス相手にサブウェポンの格闘物理技を打つ判断ができる。
変化技選択 AI の賢さ ← これを設計するのが難しい
0. ランダムに技を選ぶ。
1. そもそも変化技を搭載しない。
2. 自分のポケモンのステータス的な長所を活かした技選択ができる。
例えば、攻撃力が高いポケモンの攻撃を上げる剣の舞を舞った後で物理技を放てる
3. 技同士のシナジーを理解した技選択ができる。
まるくなる→転がる等の固有のコンボが使える
鉄壁→ヘビーボンバーのような固有のステータスを利用する技選択ができる
交代 AI の賢さ
0. 必ず交代せず突っ張る
1. タイプ相性不利な相手からは交代して逃げ、より有利なポケモンを繰り出す
2. 自分のポケモンが持つ技のダメージ計算を加味して不利な相手からは交代して逃げ、より有利なポケモンを繰り出す
例えばCPUが特殊型ポケモンを繰り出している際にプレイヤーがハピナスを繰り出すとCPUは引っ込めて物理型ポケモンを繰り出す
例えば変化技でステータスがCPU不利になった場合、より有利なポケモンを繰り出す。
3. 相手の行動を読んで交代できる。
読み AI の賢さ
0. 相手の出方を読まない
1. 場に出ている相手のポケモンが突っ張る前提で行動を1手読むが、そのポケモンの種族値や特性、繰り出していない技は考慮できない。
ただし、タイプ一致攻撃技が入っていることは想定する。
技を開示していくと想定択が変化する。
2. 場に出ている相手のポケモンが突っ張る前提で行動を数手読み、そのポケモンの種族値や特性、そのポケモンが使いうる技を考慮する。
サブウェポンや変化技を想定できる。
技を開示していくと想定択が変化する。
3. 相手の控えポケモンを考慮した上で交代読みできる
例えば対面有利な際に交代読み積み技ができる。
例えば交代先のタイプ相性を読める。
控えにゴーストタイプが居て、相手が交代したほうが勝率が高い場合、ゴースト交代読みでノーマル技を控える。
或いはより積極的に交代先に抜群を取れる技で返り討ちを狙う。
ステータス予想 AI の事前知識
0. 相手ポケモンの種類からタイプがわかる
アナウンスのあった特性を覚えておける
相手が繰り出した技は覚えておける
1. 相手ポケモンの種類から特性が予想できる
2. 相手ポケモンの種類から覚える技が予想できる
3. 相手ポケモンの種類から種族値がわかる
最悪ケースを想定して特化ステータスでダメージ概算をする。
例えば、相手のジャイロボールのダメージ概算のために A 特化 S 最遅ステータスを利用して計算する
或いは、自分のポケモンのイカサマのダメージ概算のために
相手ポケモン種族値が A>C なら A 特化ステータスを想定して計算し、相手ポケモン種族値が C>A なら A 最低ステータスを想定して計算する
4. 戦闘中の行動順とダメージ計算から相手ポケモンのステータスやステータスを変化させる持ち物を予想できる
パーティ編成 AI ← これも設計が難しい
1. タイプ相性補完の取れたポケモンを含むパーティ
2. 相性と役割の補完の取れたポケモンを含むパーティ
3. 各ポケモンの苦手なポケモン、天敵ポケモンを考慮し隙の無いように補完したパーティ
コンセプト等の別の制約条件の中で、そのパーティを詰ませるポケモンの数が最小になるように設計する
個体作成 AI
0. 野生ポケモンと同じ: 性格、個体値はランダムに選ばれ、努力値が無振りで特定のレベルで覚えられる最後の技4つを覚えている
1. 旅パ風: 努力値がランダムに振られており、特定のレベル以下のレベル技から火力指数を考慮したタイプ一致技や攻撃技や耐久指数とシナジーのある変化技が選ばれている。
2. エンジョイ勢風: 努力値がランダムに振られており、あらゆる手段で教えられる技の中から火力指数を考慮したタイプ一致技や攻撃技や耐久指数とシナジーのある変化技が選ばれている。
3. ライト勢風: 種族値に合わせた補正付き性格が選ばれ、努力値が性格と種族値に合わせて極振りされており、あらゆる手段で教えられる技の中から火力指数を考慮したタイプ一致技や攻撃技や耐久指数とシナジーのある変化技が選ばれている他、一致技の相性を補完するサブウェポンを搭載している。
4. ガチ勢風: ライト勢風の特徴に加えて個体値も厳選している。
ルールベースで実装できそうな部分と機械学習ベースで実装したほうが良さそうな部分がある
パーティ編成は機械学習ベースのほうが良さそう
ポケモンの種類が多すぎる
個体作成も微妙な調整は機械学習を要するのではないか?
微妙な調整の仮想敵が多すぎる
変化技関連も機械学習ベースのほうが良さそう
変化技の効果が多すぎる
戦闘時の数手読みはミニマックス法とかでいいかも。
ポケモンバトルはターン数が少なく、想定択が多いので、
ゲーム木は極めて浅く、極めて広い
並列計算できそう