Hearts of Iron IV 開発者日記 第54回目を紹介。
今回はAIについてです。
[記事内の画像はパラドフォーラムより引用]
Hearts of Iron IV 開発者日記 2016年4月29日分 (第54回) AI
今週の開発者日記は皆さんの多くが長い間待ち望んできた、AIについてです。
今回もプログラムコードの紹介などが出てきますが簡略化して紹介します。
不思議なほど期待の高い分野であり、そして基準は非常に低い – Wiz
CHECKこのWizさんというのはHoI4と同じく、パラドックス社のストラテジーゲーム「ステラリス」のプロジェクトリーダーの方です。
WizがHoIシリーズから他のプロジェクト(ステラリス)に進出したとき、私はHoI4のAIを担当したいと思った唯一の”狂った”人物だった。
私はこれまで1年以上AI担当に投げ込まれていましたが、それはまた大変でありつつも最も楽しいものでもありました。
HoI4のAIを作る際にいくつかの大きな課題がありました。
- 比較的ダイナミックなサンドボックス指向のゲームにおいてもっともらしい歴史的行動を維持すること。
- プレイヤーが描いた戦闘計画の実行において、それを使用することが有益であると感じるほど充実した内容にすること。
これらの問題に取り組むために、かなりの量の血と汗と涙が出ていることをご安心ください。
1.もっともらしい歴史行動の維持
1番目の取り組みのために、Heart of IronのAIを他のPDSのタイトルとは別に設定します。
まず第一に、時系列的にコンパクトで最近の性質は、人々が歴史にしたがって多かれ少なかれ行動するHoI AIに異なる期待を持っていることを意味します。
HoI4は、少なくとも最新の前任者(HoI3)よりもサンドボックス体験がより優れていますが、設立は歴史的なものであり、時には国が特定の行動パターンをとる理由がしばしばありました。
ここでの課題は、新しい状況を、歴史的であるかどうかにかかわらず、少なくともある意味で動的に処理できるAIを持つことでした。
この問題に対する私たちのアプローチは、プレイヤーとAIの両方に対して一定の方向に国を押し上げるゲーム・メカニックスによる、基盤としてのダイナミックなAIの構築です。
このための主な設計として挙げられるのが、以前の開発者日記でカバーされている国家焦点です。
これらは最終的に起こる偉大な戦争(WW2)前とその最中の両方で、プレイヤーとAIを様々な目標に向けます。
しかし、AIはどのように焦点を当てているのか?
これは、国ごとに厳密にスクリプト化され、「歴史的視点モード」でゲームをプレイすることによってアクティブにすることができます。
このモード切替は完全に変更が可能ですが、歴史視点モードには履歴の設定が含まれています。
歴史視点モードがアクティブでないとき、AIはスクリプトされた重みと、国の状況を見ている動的な基盤となるシステムの組み合わせを使用して国家方針を選択します。
スクリプト化された重みづけによってプッシュされるそのダイナミックなシステムは、すべてのAIにおいて実行されるものです。
内部のダイナミックなAI動作のさまざまな側面を微調整する200以上の調整可能な定義を除いて、開発者日記の「改造」の回で説明したトリガシステムを使用し、スクリプトの重み付けを調整することができます。
AIの側面に関して、定義、重み付け調整、またはその両方を通して触れることができないものは事実上1つもありません。
例えば、オーストリアがAnschluss(併合)イベントを受け入れるかどうかは、次のようになります。
ai_chance = { base = 30 modifier = { add = -25 GER = { has_army_size = { size < 20 } } } modifier = { factor = 10 GER = { has_army_size = { size > 19 } } } }
もし彼ら併合を拒否すれば、ドイツ人の態度は次のように変わるでしょう。
anschluss_rejected = { # Conditions enable = { tag = GER has_completed_focus = GER_anschluss country_exists = AUS } abort = { NOT = { country_exists = AUS } } # Modification if strategy is enabled ai_strategy = { type = antagonize id = "AUS" value = 300 } }
国の行動にさらに味付けを与えるため、他の国に対する態度のようなものを修正する方法があります。
これらの修飾子は、閣僚、法律、リーダーの特性などのものに付けることができます。
これは、誰が国を担当しているかに応じて、彼らのイデオロギーだけでなく、他の国との交流が異なることを意味します。
この点は将来さらに拡大することを考えているのですが、改造の可能性はすでに注目に値しています。
そのような特性は次のようになります。
warrior_code = { random = no ai_call_ally_desire_factor = -40 }
または
warmonger = { random = no ai_focus_aggressive_factor = 0.5 }
余分な自由を与える領域のいくつかは、ターゲットテンプレートを微調整することができる師団テンプレートデザイン、国ごとに特定の師団タイプのためにダイナミックシステムの優先順位を設定する統計量です。
ダイナミックシステムは、使用されていない機器タイプを持っていればそれを受け取り、それに対応するためのテンプレート設計を行います。
もう一つの注目すべきシステムは、あなたが望むならば、イデオロギーと国ごとに完全にスクリプト化可能な、AIが平和取引のオプションをどのように評価するかです。
2.戦闘計画実行のメリット
次は2.の大きな課題、プレイヤーが描いた戦闘計画の実行を有用と感じるのに十分なものにする事についてです。
システムの制御権をコンピュータに渡すと、システムのすべての弱点がプレイヤーの精査の対象となります。
自国の軍隊で間違いを犯したAIの国は、しばしばそれを取り除くことができますが、プレイヤーのユニットを台無しにすると、欲求不満につながります。
これに対する解決策は主にデザイン面となります。
システムは魔法の「勝利」ボタンではなく単一の、細部が重大ではない場合に多数のユニットを編成するためのツールです。
AIとプレイヤーの両方が重要な操作を監督することが期待されていますが、思いつくような状況について考える必要はなく、細微なマニュアル化しなければならない場合よりもはるかに大きな軍隊や操作を自由に処理できます。
これは、AIが計画の一部であるユニットをどのように処理するかという内部的な仕組みが、鐘や笛を必要としないことを意味します。
とはいえこれはとても困難でした。
ではAIの心の中を見てみましょう。
今、状況としてはドイツはポーランドとの戦争に直面しています。
このツールチップは、他の国に対する一般的かつ長期的な態度を示しています。
ドイツは、ご存知のようにファシズムの派閥メンバーを支持しながら、最も近い民主主義国家に対して不気味な目で見ています。
一方、オランダは熱気を感じています。
ドイツの脅威を受けて、彼らは弱体化しているか、友人になりたいと思っていますが、明らかに危険にさらされて敵対的になりたいとは思わないでしょう。
この時点でオランダへのイギリスの姿勢を詳しく見てみると、彼らは西ヨーロッパの民主的な小国を守りたいと思っています。
しかし、英国が後でドイツ戦争に参入したとき、オランダは同盟国に参加することを非常に嫌っており、現時点ではドイツ側についてしまう危険性があります。
そして最後に、私はAIがどのように注文する軍隊レベルを決定するかを見てみたいと思います。
多くのグループは軍隊を分かち合う必要があることを覚えておいてください。他のグループの優先度がはるかに高い場合は、必要以上に少なくなるかもしれません。
どんなタイプの軍隊がどのような順番で終わるかは動的となります。
※これについてはツールチップのスクリーンショット無し。
最も盛んな質問に答えます:
- スクリプトの外側には「ハードコーディング」はありません。コード内にどこにも「国がX、次にYをするか」と書かれている場所はありません。
- 動的AIシステムは不正行為をしません。彼らは、情報を計算して敵の力を見積もるなど、プレイヤーが利用できるのと同じ情報を使用します。
- 政党の人気を高めるために保存するといったような、AIには使用が完全に禁止されているという機能はゲームにはありません。これは、プレイヤーのためのサンドボックス機能としてさらに意図されています。私たちはまた、クーデターの舞台に立つことについて多くのことを制限しなければなりませんでした。
以下AI開発に携わった人達に対して謝辞が続きますが割愛します。
以上
感想
AIをちゃんと開発する能力が無いので、平気でAIにチート行為をさせてプレイヤーに対抗させようとするメーカーもあります。
パラドはこのあたりはしっかりしているという印象です。
HoI4 開発者日記 第54回 2016年4月29日分は以上となります。