[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
2010年8月31日 にあった、CEDECの講演についての記事です。
「コーエーの歴史シミュレーションゲームにおけるAI設計について」
信長シリーズ、三国志シリーズのAIについてです。
-------------------------------------------------------------
●このジャンルのAIで、常につきまとう大きな課題
ユーザーに対抗できる勢力が ある時点で無くなってしまう。
→ ゲーム継続のモチベーションが無くなる
→ 簡単に最強勢力になってしまうと、すぐに 詰まらなくなる
(RPGのようにだんだんボスを強くするわけにはいかない)
求められるAI ・・・ ユーザーに負けないスピードで勢力拡大するAI
→ 勢力図がどんどん変わる新鮮味、敵が刻々と強くなる緊張感 を得られる
設計の際、スピードを重視している
-------------------------------------------------------------
●”信長の野望 革新”を例に
施設を建てる内政要素がある ・・・ 金銭系、兵糧系、軍備系、学舎、防御施設
(学舎は、技術開発に必要)
勢力拡大で必要なものは ・・・ 軍備、兵糧、技術
このゲームの特徴は ・・・ 技術は重要だが、一つの研究に長期間かかる
同時に複数の研究ができない
学舎をたくさん用意しないといけない
→ 技術の獲得が、最も時間がかかる
AIの方針 ・・・ 技術の獲得が最優先である。
その結果として、作り上げたAIは
施設建設のプライオリティ 金銭系 > 学舎 > ・・・
(お金は、研究含め 全ての要素に必要だから)
また、研究中に 次の研究に必要となる 学舎を建築させる。
→ 常に研究ができるようにしている。
これが、ゲームの特徴にしっかり合ったAI
-------------------------------------------------------------
●個別の判断と、総合的な判断
例) 拠点A 兵2万 、 拠点B 兵2万
敵拠点 兵3万
この場合、拠点A 拠点B単体では 勝てないけど
拠点A,Bが力を合わせると 敵拠点に勝てるので 協力して勝てると判断させる。
例) 拠点A 兵2万
敵部隊 兵1万 奥の敵部隊 兵2万
拠点Aは 敵部隊には勝てるが、奥にいる敵部隊に攻められると負けるため
無駄な兵や兵糧を消費しないよう、早々に退却させる。
個別な判断 < 総合的な判断
-------------------------------------------------------------
●勢力の個性化と、雰囲気作り
・勢力の成長傾向
武田 ・・・ 騎馬
織田 ・・・ 鉄砲
など
・有能、無能の表現
武田 ・・・ 有能
今川 ・・・ 無能 (史実通り)
大名の能力に応じて、AIをあえて 非効率にさせる
→ 勢力の淘汰の促進にもつながり、とても有効
・史実エピソードに基づく判定
上杉謙信 ・・・ 姫を要求しない
武田信玄 ・・・ 甲斐国内で城を建てない
伊達輝宗 ・・・ 若くして家督を譲る
-------------------------------------------------------------
●手加減
・開始時にAI制限
(ゲーム開始から、一定期間)
出陣禁止 ・・・ どんな弱小勢力をユーザーが使おうとも、対応期間を持てるように
引き抜き禁止 ・・・ 武将を守る猶予期間を持てるように
加増禁止 ・・・ ユーザーが好きな武将を引き抜きやすくするように
(加増 = 忠誠をあげるコマンド)
・初心者対策
初級 を、特に重要視している
(初めての人が初級で勝てないと、ゲームそのものが楽しめなくなるため)
勢力拡大抑制 → 拠点数、兵力に上限 (ユーザーと同程度か、少し上以上 伸ばさない)
拠点攻略を簡単に → 城の改築しない、増援しない
-------------------------------------------------------------
●AIの負荷に対しての工夫
・判定頻度を設定している
判定 多 ・・・ 部隊の移動など
判定 並 ・・・ 建築など 定期的で良いもの
判定 少 ・・・ 加増など たまで良いもの
・負荷を常に監視できる仕組み
→ 各処理に対して、「処理そのものが呼ばれた回数」
「その処理の中で、一番時間がかかった時の 処理時間」
「その処理の平均の処理時間」
「呼ばれた合計の処理時間」
を 表示できるように
-------------------------------------------------------------
●動作確認の工夫
・デモプレイ活用
→ プレイヤー0人で、AIにひたすら対戦をやらせる
・オートセーブ活用
→ 毎月、必ずセーブさせる
→ もし、何かまずい事が起きていた場合 その直前のデータを調査できるように
・アルゴログ
AIの思考を全て 理由付きで、テキストログとして出力させる
実行しなかった場合も、実行しなかった理由を残す
例)
【撤去】実行 都市Aの市場を撤去、アップグレードするために
【出陣】中止 兵糧が足りないため
AIは、ユーザーの見えない所で、それっぽく動いている
それを見えるようにする事で、かなり的確にAIのデバッグができる
-------------------------------------------------------------
●優れたAIを実行するためには? (持論)
・ゲームシステムを決める際は、AIを念頭に置く
AIを無視して、ゲームシステムを決めてしまうと
AIを作る際に、コスト(費用)、負荷 で破綻してしまう
期間の問題で、AIの完成度を下げてしまう。
どんなに素晴らしいゲームでも、AIが大した事ないと ユーザーの評価が台無しになってしまう
→ AIをどうするか? 勝算持った上で、ゲームシステムを決めていく
・ゲームにうまくなる事が大事
AIの強さ = 設計者がプレイした際の 7割程度の強さ
・どんなゲームでも通用する HowTo は存在しない
(三国志で使った方法を、そのまま 信長には使えない
システムだけでなく、バランスが変わるだけで 強さに影響するため)
-------------------------------------------------------------
●質疑応答
・一番、処理負荷がかかっているのは?
経路探索
→ A* を使っている。
→ 少しでも軽減するために、ゲームシステム的に どんな地形でも移動コストは同じにした。
(↑ AIに合わせたゲームシステム)
・どんなワークフローで AIを作っている?
AI担当の企画は 1人 (三国志7、信長 革新、信長 天道 では)
一番はじめに、AIの仕様を決定して 資料にしっかりまとめる
(この時点で、全て決めている)
→ 各担当のプログラマに渡す
ついったー
http://twitter.com/seki_seki_seki
連絡先は
sekisekiseki(あっと)gmail.com