CEDEC 2016のShadowverseのゲームデザインにおけるAIの活用事例、 及び、モバイルTCGのための高速柔軟な思考エンジンについてが分かりやすく面白かったのでレポートを書きます。
どのような目的でShadowverseのAIが誕生したか
Q: 対人戦がメインのゲームでAIって必要?その立ち位置は?
A: 練習台
初心者には「不利な局面でのみ好手を打つ(進化させるとか)」など拮抗するバランスとなるようAIを提供する。
上級者には「相手のクラスの苦手な局面」に持ち込みプレイスタイルの差を体感してもらう。この時、カードの種類をプレイヤーの初期資産と合わせ、カードは同じなのになぜ負けたかを考えてもらう機会を提供する。
こうしてAIがプレイヤーに気づきを促せる。
またユーザがオリジナルのデッキを構築した際、バリエーションに富んだデッキと勝負する事で多角的にデッキを検証できる。
AIにとって大事なこと
この3つが大事。
- 限定合理性
- 遅延評価
- 定量化
限定合理性
カードゲームで遊ぶ場合、相手や自分が捨てたカードを全て覚えている訳ではありませんよね?AIも人が覚えていられる範囲に限定して捨てカードや手札の記憶力を抑える限定合理性が大事。そうする事でユーザから見てより違和感がない振る舞いとなるそうです。
手加減も同様です。あからさまに手を抜かれるとユーザのやる気が大きく削がれるため、相手から見て自然な順でカードをプレイできるよう、AIの手札がユーザから見えない事を利用して次善の手を打つなどして手加減しているそうです。
また考慮する事項が減る事でシミュレーション負荷の低下も見込めます。
遅延評価
AIで終局までの全ての手を読み切るためには膨大な計算量が必要で、スマホで計算しきるには無理があります。
そこで遅延評価が大事。
最初から全てを計算するのではなく、段階に応じて少しずつ盤面を評価していきます。
- プロット作成、行動計画の粗筋を列挙
- 計画の詳細化、各プロットの効用を概算し有力な候補を絞り込み
ここで選外のプロットは予備プランとして残す - 実行タイミングの選定、ターン中にプレイ可能なカード組み合わせを全て列挙し評価の高いものを抽出
最初は概算して詳細な評価を後回しにすることでプランニング負荷の軽減ができ、負荷の軽減が精度向上に繋がるという事でした。
定量化
プレイングの良し悪し、好手と悪手をどう評価するか。これは形勢判断を数値化することが大事。
以下のような情報から盤面を数値化します。
- 生存している敵ユニットの評価値合計
- 相手番のアドバンテージ(敵視点で更にシミュレーション)
- 敵陣営の残りリソース
またShadowverseではAI操作キャラの台詞が形勢に応じて変化し、またユーザが好手を打った場合には感嘆した台詞をしゃべりますが、これにも定量化の数値が使われています。
所感
講演はAIの実装に携わってない人でも楽しめるよう甘口な内容で、具体的な例も豊富で大変分かりやすいものでした。