Hearts of Iron IV 開発者日記 第299回目を紹介。
今回、日記のタイトルはTechとなっていますが、内容は国際市場におけるAIについてのお話です。
[記事内の画像はパラドフォーラムより引用]
Hearts of Iron IV 開発者日記 2023年8月9日分(第299回)
冒頭の挨拶
皆さんこんにちは!私はHearts of Ironのプログラマーの一人、Plankieです。
私の仕事の大部分は、機能化作業、バグ修正、一般的なゲームの改善で構成されています。
私がゲーム開発で最も気に入っているのは、AIと連携してより楽しく、面白く、没入感のあるゲームにしようとすることです。
そこで今週の開発者日記では、AIが主要な新機能の1つであるThe International Market(国際市場)とどのように相互作用するかに焦点を当てて説明します。
市場機能にとってAIが必要なこと
非常に高いレベルでAIが市場を活用するために必要なことがいくつかあります:
- 市場アクセスを獲得し、他国が何を売りに出しているかを知る。
- 他国に設備を売る。つまり、市場に設備を売りに出す。
- 他国から機材を購入する。つまり、何をどれだけ購入するかを決める。
また、販売するには余剰の装備が必要ですが、幸いなことにAIはすでに装備の生産方法を知っているので、少し手を加えるだけで済みます!
国際市場でのAIの行動の基礎となるのは、生産備蓄(物流タブの下に表示されている装備品のリストです)にあるさまざまな種類の装備品の余剰/不足です。
一般的に不足している装備品は買おうとし、余っている装備品は売ろうとします。
この基本的な行動はAIの戦略など他の要因によって変更されます。
生産備蓄にどのような装備があるかを示すおなじみの物流タブです。
一番右の余剰/不足を示す数字はAIが国際市場とどのように相互作用するかを示す重要な要素です。
ものを売りに出す
誰もがAIから機器を購入する前に、当然AIも機器を売りに出す必要があります。
人間プレイヤーと同じよう、AIが市場に機器を追加できるのは余った分だけです。
しかし余剰分があるからといって、その余剰分をすべて売りに出すのは得策ではありません。
余剰がなくなり再び機器が不足し始めたら、AIはその機器を市場から撤去して、代わりに自分で使えるようにすべきでしょう。
基本的には次のような動作が必要です。
- 自分たちで機器を必要とするのであれば売らない
- 余っている機器が多い場合は一部の機器の販売を開始するが、全ての機器の販売を開始するわけではない。
問題は商品をいつ売り始めるべきかを知るために、どれだけの「量」があるかを定義する必要があることです。
これは装備の種類や自国がどのような状況にあるかに大きく左右される可能性があります。
「200以上の余剰がある場合、販売を開始します。」という単純なこともできますが、歩兵装備200個と戦略爆撃機200機は全く別の規模なので、絶対数を使うのは得策ではありません。
しかしさまざまな機器の種類や状況、国に合わせて手動で数値を定義する必要があるとなれば、多くの作業とバランス調整を必要とすることも意味しますから、少なくとも調整の可能性のある良好なデフォルトとなる動作が必要なのです。
市場AIの最初のイテレーション(反復)の1つにおいては、余剰機器の一定の比率(例えば20%)を売りに出させるだけとしました。
これはシンプルなアプローチにもかかわらず、かなりうまく機能しており、シンプルなので理解もデバッグも簡単です。
いくつかの欠点があったので少し修正をしましたが、それでもAIが物を売りに出す方法の基本となっています。
市場AIが更新されるたびに、すべての機器タイプの総余剰(生産在庫の余剰+市場在庫のすべて)が計算され、その比率が正しいことが確認される。
つまりAI自身が機器を必要とする場合、全体の余剰は0であるため、0.2*0=0の機器を売りに出す、つまり販売しないということになります。
また、すでに売りに出ているものは、自分で使えるように引き上げます。
合計で100台の余剰機器がある場合、0.2*100=20台の機器を売りに出します(20%の比率を想定)。
そのため余剰分が多ければ多いほど販売しようとする一方で、事態が悪化して機器自体が必要になった場合に備えて緩衝分を保持しています。
またしきい値に絶対数を指定する必要がないため、状況に適応することをも意味します。
しかし前述のように、このアプローチにはいくつかの欠点がありました。
AIは市場に出回っている装備を「少しずつ」売り込もうとする傾向があり、5丁のライフルが余ったらすぐに1丁のライフルを売ろうとするなど、これは非常に人工的なもので、あまり人間らしいものではありませんでした。
そこで私たちは、AIが装備品を単品ではなく一括で考えるようにアルゴリズムを変更しました。
一括するサイズは、おおよそ1つの工場で1か月にどれだけの装備を製造できるかであるため、AIが3丁のライフルを売ろうとするのではなく、350丁前後のライフル(余剰の「バッチ」1単位分)に達するまで待ってから市場に出すようになりました。
この時点で、AIが機器を売りに出す方法については妥当なデフォルトの動作になりましたが、微調整する機能はまだ必要でした。
これはスクリプト化されたAI戦略によって行われます!
HoI4でどのようなAI戦略があるのか分からない場合、基本的にはコンテンツデザイナーやMod制作者がスクリプトを使ってAIの動作を調整できるという方法です。
AI戦略では以下のような修正が可能です。
- 市場で売るための余剰と考える前にどれだけの設備が必要か
- AIが市場に投入したい機器の比率
- 売りに出す機器の最小量と最大量(デフォルトのバッチサイズを上書きする)
AI戦略を用いれば、例えば小国がすべての列車を売るのを防ぐことができます(戦前にはあまり使われていなかったので、厳密には余剰品です)。
ドイツは戦争準備の際、膨大な余剰兵器を売却しないという筋書きが可能です(面白い事実:ドイツのAIは戦争が勃発するほんの数ヶ月前まで大きな戦争になることを実際には認識していないため、異なるスクリプト化されたAI戦略がなければ、十分な準備ができないでしょう)。
言うまでもなくAI戦略はデザイナーにとって非常に有用なツールです。
機器の購入
AIに何らかの機器が不足している場合は、国際市場からの購入を検討します(売却を申し出てくれる人がいる場合)。
第一に、設備購入にどれだけの民需工場を使うかを決めます。
次に販売されているすべての利用可能な機器を調べ、必要なものと一致するものがあるかどうかを判断します。
その後、AIが使用する工場があり、購入したい機器がある場合は、何を最初に購入するか、どれだけ購入するかを決めるだけでよいです。
これは潜在的な取引ごとにスコア計算することによって行われ、そのスコアは以下を考慮しています。
- 必要な設備の製造コスト―最大のニーズを最初に修正することを好む
- 機器の性能はどれだけ優れているか―私たちはより良い統計値を持つ新しい機器を好む
- 機器の値段はどれだけ高いかー私たちは安いものを好む
- 適用される補助金ー補助金がある場合はそれを優先的に使用する
- スクリプト化されたAIの重みづけーコンテンツデザイナーとMod制作者を満足させたい
市場AIのデバッグ情報ウィンドウの例です。
ここではアメリカのAIは294機の戦術爆撃機とほぼ19kの歩兵装備を欠いています。
不足している爆撃機の価値の方が不足している歩兵装備の価値よりも高いため爆撃機を購入したいのですがが、今のところイギリス製の歩兵用ライフルしか販売されていないので、アメリカは代わりにそれを購入し始めます。
さて何を購入したいのかは分かりましたが、いくらで購入するのでしょうか?
もし我々が19k歩兵装備の購入を求めても、一つの工場で支払うだけの準備しかできていなければ、何年も続く取引になるかもしれません。
このような問題を回避するため、AIは完成時間が許容されるまで、設備や割り当てられた工場の量を微調整して、小さすぎず、大きすぎない契約を作成しようとします。
この記事の執筆時点(および今後変更される可能性があります)では、AIは約10か月で提供できる以上の機器を購入することは避けています。
また前述の「バッチサイズ」を、購入する機器の最小限度として使用しています。
たった1つの民需工場で19kの歩兵装備を完済するには数年かかります。
長期的な兵器取引というのは計算する前の段階ではより良いものとして聞こえますが…。
もちろんAIが機器を購入する方法に影響を与えるAI戦略もあります。
これらの値はスコアリング計算に入るか(AIが何を購入したいか、複数の選択肢がある場合は誰から購入するかに影響します)、特定の種類の機器を購入したい場合のしきい値などを調整します。
市場アクセスの確立
ここまででAIがどのように機器を売りに出すか、そして購入したいものをどのように判断するかがわかったと思います。
しかしAIが他の国の市場にアクセスできなければ、それらは何の役にも立ちません。
もちろん何らかの方法で市場にアクセスする必要があるのです。
市場アクセスはドッキング権や不可侵条約のような通常の外交関係以上に複雑なものではないため、これは比較的単純なプロセスです。
当然、AIは市場アクセスの要求には要求すれば応じることができますが、自ら主導権を握ることがなければ、これはかなり退屈な機能でしょう。
他の国との市場アクセスを望むAIの意図に含まれる正確な要素は、もちろんゲームのバランスを取るにつれて変化する可能性がありますが、執筆時点で最も重要な要素は以下の通りです。
- 外交的意見―HoI4では意見があまり使われていないと思うので、私はこれが本当に好きです。それを維持するために貴重なPP(政治ポイント)を使う準備ができている限り、国との市場アクセスを達成することが可能になります😉
- 貿易への影響
- 「イデオロギー的」意見―一部のイデオロギーは多かれ少なかれ他のイデオロギーを好みます
- 競合する派閥ー両国が異なる派閥に属している場合
この結果、貿易ブロックと似たようなもの、つまり(多くの場合派閥やイデオロギーに沿って)互いに貿易を行う国のグループが見られる傾向があります。
しかし貿易圏間の境界線は緩やかであり、多くの場合はあなたに対する評価を高めることで、各国を説得してあなたと貿易するように納得させることができる場合が多いです。
余剰装備の生産
最後に、国際市場は余剰機器を中心に回っているので、取引する機器がなければあまり面白くありません。
これは特にAIが自身のニーズをすべて満たしている場合に、AIが機器を生産する方法にいくつかの変更を加えることと関連しています。
お気づきの方もいらっしゃるかもしれませんが、BBA(By Blood Alone DLC)以降、多くの小国は軍需工場を十分に活用できていません。
装備の必要性がすべて満たされると(戦場のあらゆる軍隊のための緩衝分を持つことを含みます)、すぐに軍需工場の使用を停止します。
この挙動がBBAで導入されたわけではありませんが、AIによる軍隊の新兵募集方法にいくつかの変更が加えられたため、問題がより明確になりました。
彼らが機器の生産を停止する理由は、技術的に言えばこれ以上機器を必要としないからであり、生産に必要な機器がなければ…良くて単に生産を停止するだけです。
人間のプレイヤーである私たちは、戦争が間近に迫っていることを知っており、「十分にある」という理由だけで生産を中止する理由はありません。より多くの備蓄を用意した方が良いからです。
また国際市場の参入により、私たちは突然、内なる資本主義者を満足させ、余剰装備を売って収入を得ることができます。
つまりAIは自分たちのニーズを満たすのに十分な設備が整った時点で、「余剰生産状態」に移行し始めるのです。
この状態においてAIは再びAI戦略を使って何を生産すべきかを決定します。
これにより各国がさまざまな種類の余剰装備を生産するようスクリプトを組むことが可能になり、ひいては市場における「装備の多様性」が高まり、より多くの装備から選択できるようになります。
まとめ
この開発者日記も終わりに近づいてきましたので簡単にまとめてみましょう!
新機能「国際市場」のAIを少し深く掘り下げ、余剰装備をどのように売りに出し、どのように購入リクエストを作成するのか、そのロジックを見ることができました。
さらに、AIがどのように他国へ市場を開放するのか、そして最後に、他のすべてのニーズが満たされたときに余剰装備がどのように生産されるのかに影響を与える要因についても見ていきました。
市場AIの内部構造の一端をご覧いただき、興味を持っていただけたなら幸いです。
また新しい取引相手とゲームを楽しんでいただけることを願っています!
来週の開発者日記では、HoIのコンテンツ・デザイナーたちと一緒に、HoIの改造方法について詳しくご紹介します!
ご期待ください。
以上
振り返り感想
HoI4開発者日記 第299回でした。
Techという原題でしたが中身は国際市場に関するAIの挙動についてでしたね😅
ちょっとお断りがあります。
今回の日記内で原文にて画像に対する注釈文ではないかと思われる箇所が複数あったのですが、注釈にしては異様に文章が長い&画像に注釈として書くとレイアウトの関係でとても読みにくくなる―ため、私の判断で一部は本文扱いとして掲載しました。
普通の開発者日記だと画像の説明文は中央寄せで書いてあるんですが、今回の日記はそういう体裁になっていなかったのでなんとも判断に迷う所です😥
ご了承くださいm(_ _)m
正確を期すよう努めていますが詳細はパラドックスサイトの原文をお読みください。