2022/1/30
フォーラム内のやりとりを追記
パラドックス社の公式フォーラムに
ステラリスの開発者日記 第239回が掲載されています。
今回はAIの改善に関するお話です。
※画像等はフォーラムより引用。
ステラリス 開発者日記 第239回 AI++
冒頭のあいさつ
こんにちはStellaris AIの最新情報をお届けします。再び登場しましたGuidoです。
今日は同じく有機的なことをするのが好きな仲間のOffeと一緒に来ました。
光合成で光を処理してエネルギーを生成し、それを摂取して物質という形にするように、私はベーコンとアイスクリームが好きです。
そう、誰もがベーコンとアイスクリームが好きなはずです。
ということでOffe、ここから先をお願いします。
こんにちは私はOffeです!
私は28歳の人間で、この北の地で製造・運営されています。
北極圏のオフィスで2年間働き、最近ジュニアプログラマーとしてカストディアンチームに加わりました。
Guidoとは以前にも別のプロジェクトで一緒に仕事をしたことがありゲーム開発についていろいろ教えてもらいましたが、最も重要なのは私の外交的相互作用のプロトコルを改善するためのヒントをいくつか学んだことです。
私がよく使う「絶対的な惨事だ」という言葉に対して、彼は「これはかなり良いが、もっと良いこともある!」というフレーズを好んで使うのです。
これは後々、重要なポイントになるかもしれません。
またオープンベータに参加してフィードバックやバグレポートを提供してくれた方々に感謝します。
もしAIが何か奇妙なことをしているような状況に遭遇したらバグレポートを送ってください。また最も重要なのはセーブゲームを添付することです。これはとても役に立ちます。
たとえばおかげで2つの個別の問題が見つかり、新しくジョブを変更することで対処されました。
そして最後に、この開発日記にはベータ版よりもずっと前に行われた古い変更とスクリーンショットが含まれていますが、ベータ版には含まれていなかった新しい変更も含まれています。
つまりVer3.3のリリースではまだいくつかの新しい変更が待っています。
Popジョブシステムの変更
AIだけでなくプレイヤーにも直接影響を与えるので、この変更の話題から始めようと思います!
今までの仕組み:
惑星で何か重要なことが起こるたびに、例えばポップが成長したり地区や建物が建設されたりアップグレードが終了したりすると、すべてのポップがそれぞれの仕事(ジョブ)をするための欲求(重みづけともいう)を更新していました。
そしてすべてのポップは仕事の割り当てを解除され、すべてのポップは(潜在的な)新しい仕事へと戻されます。
さて、この方法にはいくつかの長所と短所があります。
良い点は、何も変化がなければジョブ(仕事)を更新しないので必要のないときは計算をしないことです。
しかし例えば、惑星にあるアメニティの数に基づいて条件付きでジョブの重みをスクリプトで設定した場合、最終的にシステムが更新されるとすべてのポップが同時に移動するためジョブ間でポップの大量移動が発生することになるという欠点があります。
現在のVer3.2システムにおける最も明確な問題は、ハイブマインドに満ちた帝国で惑星のアメニティレベルが低くなると、ポップがメンテナンスドローンのジョブに大量移動し、次のアップデートでアメニティが多すぎるためにすべてのポップが去ってしまい、永久にピンポン現象が続くということです。
3.2では資源が不足すると、その資源を生産するジョブをすべての惑星で優先的に行うため、ハイブマインドではないAI帝国にも影響がありました。
たとえばエネルギー通貨が不足すると、すべての惑星で技術者のジョブが優先され、すべてのジョブが即座に満たされることになります。
そうなると鉱物などの他の資源も不足する可能性が高く、ほとんどの種類のAI帝国は資源不足に陥るとピンポン動作でスタックしてしまいます。
また必要ないはずの建設をAIが始めてしまうという不幸な副作用もありました。これはポップのジョブが突然移動することでそのように見えるのです。
Ver3.3での挙動:
- 毎月の更新中にすべての惑星のジョブを更新する
- 更新中はジョブごとに最大1のポップのみを削除または追加する
ステラリスのポップ数に基づくスクリプト計算は非常にCPUに負荷をかけるので、今すぐにでもCPUが溶けるのではないかと想像して怒りのこぶしを握りしめている人が多いのではないでしょうか。
しかし私は皆さんにいくつかの良いニュースを持って来ています。
まずVer3.2ではジョブの重みの計算に冗長な呼び出し処理がいくつかありましたが、それらを可能な限り取り除くことで、既存のジョブの重み付けの計算量を約75%削減することができました。
さらに同じ種族で同じ仕事をするポップ間で、仕事の重みを再利用するようにしました。
つまり、ある惑星で鉱夫として働く40人のポップがいたとして、彼らがすべて同じ種族であれば、スクリプトによるジョブ・ウェイトの計算はVer3.2での40回ではなく、1回だけ実行されることになります。
しかしこれにはいくつかの制限があります。
どの派閥に属しているか、幸福度はどうかなど、個々のポップのデータに基づいてジョブの重みを決めるのはもはや安全ではなくなったと言うことです。
最終的にすべてのジョブ・ウェイト計算の大部分は削除されましたが、それでも毎月ジョブについては更新の作業が残ります。
新システムではピンポン動作を起こすことなく、それ自体に依存するジョブウェイト計算をスクリプトで書くことができるようになりました。
例えばアメニティを生産するジョブはその惑星のアメニティレベルをジョブの重みの基準とすることができるようになりましたし、執行官のジョブはそのジョブの重みづけを犯罪レベルを基準とすることができるようになりました。
開発の意図としてはVer3.2のシステムとの違いを、執行官やメンテナンス用ドローンのような、より合理的な量のポップが働いているジョブ以外については何も気がつかないようにするということです。
Popのためのジョブ
Ver3.2ではAIが新しいジョブを作る必要があるかどうかを判断する際に、惑星上のフリーなジョブの数を見ていました。
例えば3つのフリーなジョブがあればAIは手を叩いて「よくやった」と言い、次へ進みます。
その一方でその惑星では大量の失業者が街頭で暴動を起こすかもしれません。
このシナリオは、すべてのポップがすべてのジョブをこなせるわけではないという事実から来ています。
つまり技術的にはフリーのジョブが惑星上に存在しますが、だからといって失業しているポップが実際にそのジョブをこなせるわけではありません。
Ver3.3ではAIがどのようなジョブを創出すべきかを決定する際に、惑星に対する見方を変えています。
惑星上のフリー・ジョブの数を調べ、その数が少ないときにもっと多くのジョブを作るのではなく、AIは実際の失業中のポップを調べ、そのポップが実際に働けるジョブを作るようにします。
これはAIが奴隷やロボットのようなポップのために良い決定をしないという、Ver3.2に存在する様々な問題を解決します。
このテーマは今後も私たちが注視し続けるものですが、今回の改修は正しい方向への大きな第一歩です。
経済サブプランのAIスケーリング
サブプランのスケーリングについては、将来のために計画された機能として以前お伝えしたものでしたが、未来はもう始まっています!
Ver3.2では、早期ゲーム/中期ゲーム/後期ゲームの戦略であらかじめ定義されていた古い経済計画を廃止し、今が何年かではなく帝国がどのような状態にあるかを見る共有ベース計画を導入しました。
さてGuidoの新しい経済プラン構想を初めて見たとき、私はすぐにこれがかなり良いと思いましたが、それはさらに良いことがあります!
そこで私は生産の上限をすべて取り除くことを目的としたスケーリング縮小計画に取り組み始めました(前述したVer3.2での月別上限500合金)。
そうしつつも、AI経済の現状に適応した即応性の高い計画をAIに提供することに変わりはありません。
Ver3.3における経済システムの挙動:
現在の基本経済計画は非常に小さく、鉱物、エネルギー、食糧など、すべての種類の厳しく必要とされる資源での最低目標を設定しています(毎月の収入+20など)。
これらの目標が達成されると、少量のCGs、合金および科学的目標が追加されます。
上記の基本プランがすべて満たされるとスケーリングサブプランを有効にします。
これは他の経済プランと同様ですが実行されるたびに無制限に追加されます。
スケーリング計画は少量のエネルギー/鉱物を含んでいますが、主に合金と科学を含んでいます。
これはAI経済が成熟すればするほど、基地資源への関心が小さくなり、軍事・科学生産に重点が移ることを意味しています。
さらに私たちは3つの異なる条件付きスケーリングサブプランを追加しました。
これは物質主義、軍国主義(および総戦争帝国)、精神主義の帝国向けに可能となるもので、AI経済を互いに区別しやすくするための最初のステップとして経済プランに科学、合金、統合ターゲットを追加します。
難易度Grand Admiralのハイブマインドが2422年までに1回のテストで合金3k、科学22kの月収に到達します。
(これはUnityを手直しする前のスクリーンショットです)
AIの地区/建物の専門分野
私たち人間がAIに対して持っている大きな強みは、仮定や目標に基づいた長期的な戦略を容易に立てられることです。
例えばまだ植民地化していない惑星を工場地帯にするという長期的な戦略を立てることができます。
前回のAI開発日記の質問に対する回答でも触れましたが、経済AIはステートレスです。つまり過去や未来の概念がなく、今あるものと経済計画を満たすために何ができるかを見ているだけなのです。
そのため現在の経済状況を注意深く観察し不足があればすぐに対応しますが、私たち人間が持っているような長期的な計画能力は持っていません。
ではAIは将来の計画を立てずに、どのようにして特殊化した世界を作ることができるのでしょうか?
簡単な方法は過去に建設した地区の場所を変えることです。
2つの惑星を比較してみましょう。どちらも5つの採掘地区と5つのエネルギー地区を持っています。
その2つの地区を1つずつ入れ替えることで徐々に惑星を特殊化していき最終的には10のエネルギー地区と10の採掘地区を持つ惑星になります。
この方法は実際に非常にうまく機能し、またゲーム序盤ではAIがハイブリッド惑星を作り、帝国が拡大するにつれてより専門的になるという意味で、非常にダイナミックなアプローチと言えます。
AI消費財VS合金生産と惑星指定
Ver3.3ではAIシステムを追加し、デフォルトのスクリプトによる惑星指定システム(自分で変更しない場合はプレイヤーが取得するものと同じもの)を使う代わりに、AIが自ら惑星指定を選択するようにします。
AIシステムは各惑星の利用可能な指定を調べ、指定を選択することで毎月得られる資源の数を計算します。
そして獲得した資源がAIの経済計画にどの程度適合しているかを判断することで、それぞれの指定にスコアを付け、経済目標に沿った指定に追加スコアを与えます。
通常は指定を選ぶのは非常に簡単です。
たとえば鉱山地区だけがある惑星では明らかに鉱山指定を行います。
しかし工場/鋳造ワールドのような他の指定はより複雑であり、AIは経済のバランスを保つようにこれらの指定を慎重に割り当てる必要があります。
ハイブマインドにとって消費財と合金の生産はこれまで私たちが直面してきた最大のAI経済の課題です。
なぜならAIは、同じ地区から3つの異なる方法で生産されているにもかかわらず、経済計画の目標を達成するために、互いに独立してこの両者の資源を生産する必要があるからです。
現在のシステムは正しい方向への一歩ですがこれは間違いなく厄介な問題であり、今後さらなる微調整が必要になるでしょう。
AI合金支出
AIが合金と消費財の生産を別々に調整するようになった今、AIが合金をどのように消費するかに取り組む時が来ました。
Ver3.2でAIは防衛プラットフォームを非常に好み、可能なときはいつでもアップグレードして最新の状態に保つことができました。
これは合金の大量流出であるだけでなく、造船所の生産待ちキューを多かれ少なかれ永続的に埋めてしまうことになります。
そのため新しい船を建造したくても建造できない場合もありました。
さらにAIスターベースのテンプレートに従い何も建築できないモジュールスロットがオープンしている場合、AIはモジュールを建造したりスターベースをアップグレードしたりすることができなくなるという問題がありました。
例えばAIは専用の造船所スターベーステンプレートを持っており、その中に空きスロットがあればその上にタイタンアセンブリモジュールを構築したいと考えています。
しかしまだ研究がなされていなければ、AIはここでブロックされ新たなスターベースの建設が妨げられます。
Ver3.3のAI合金の支出優先順位は次のようになっています。
- 艦隊の上限に達するまで新しい船を建造する
- スターベースモジュールの建造
- 新たなスターベースの構築
- スターベースのアップグレード
- 船(と防衛プラットフォーム)をアップグレードすることで+30%の艦隊パワーボーナスが得られるなら、とにかく造船所にいる間に当該の船が所属する艦隊全体をアップグレードすること。これは合金と時間の両方を節約することができます。
- 最後の手段として防衛プラットフォームを構築する
AIのテクノロジー仕分け
AIはゲーム内の各テクノロジーの重みをスクリプト化しているため、研究が完了するたびに次にどのテクノロジーを選択すべきかについて、ある程度の指示を与えることができます。
どちらのテクノロジーがより強力であるかという点でも、AIの性格を考慮すると軍国主義帝国は例えば武器テクノロジーを研究する傾向が強いです。
Ver3.2では多くのテクノロジーがAIに選ばれる可能性を高めるよう修正を施していましたが、すべてを優先するということは何も優先しないのと同じです。
Ver3.3ではゲーム内のすべてのテクノロジーを見直し、AIの優先順位をゼロから作り直し、AIがゲームの中盤と後半に拡大するのに役に立つテクノロジーを強調しました。
例えば資源生産を促進するテクノロジー、ポップを成長させるテクノロジー、資源生産の建物チェーンは現在ではより奨励されています。
さらにAIは他の選択肢に比べて安価なテクノロジーをより好意的に捉えられるようになり、利用可能な選択肢をより迅速に切り替え、自分が本当に好きなテクノロジーを見つけることができるようになります。
AIの余分な破壊
これは短くシンプルです。
AIは私たちが必要としていないジョブや住宅、建築物を提供した場合、それらを削除するようになります。
例えば、もし私たちがエネルギー地区によって提供されるよりも多くの無料のジョブと住宅を持っている場合、私たちは単に維持費を支払うことを避けるためにそれを削除し、将来の何かのためにこのスロットを解放します。
このシナリオはAI帝国が別の惑星に侵入しそのポップを一掃したときによく発生するので、断固とした駆逐者は征服された惑星を彼らの経済と一致するものに転用することができるようになります!
AIのローグ・サービターとバイオトロフィー
この開発日記ではプレイヤーと経済的に競争できるAIの能力に多く注目していますが、AIイニシアティブの主な目的の1つは、AIのロールプレイ機能を強化することでもあります。
Ver3.3ではローグ・サービターの市民と彼らのバイオトロフィー・ポップの扱いにAIサポートを追加します。
AIは今後、各惑星にオーガニック聖域を建設し、首都の構成をアップグレードして、バイオトロフィーを他の惑星に広げるべきです。
そして複雑なドローンを多数搭載した惑星に新たな聖域を建設すべきです。
さらにAIはガイアシーダー、スポーニングプール、チャンバーオブエレベーションといった特殊な建物を作ることができない事に関するバグにも対処しました。
AIの比較
最後にVer3.2と3.3でのAIの比較グラフをいくつか紹介します。
ご覧いただけるのは難易度signに対する1回のテスト実行と、難易度grand admiralに対する1回のテスト実行に基づいています。
この比較は数値的証拠として解釈されることを意図したものではなく、あくまでもVer3.2と3.3の間に何が変化したかを示すものです。
どのようなAIのプレイスルーにおいても、テクノロジーの選び方、伝統、アセンションパークなどのランダムな要因によって、AIのパフォーマンスには大きなばらつきがあります。
実験のセットアップは内部AIテストにのみ使用され、実際のプレイスルーを表すものではありません。
実験設定:
- 小規模銀河
- 1つのAI帝国
- 全てのテストでUnited Nations of Earth帝国を使う
- ゲームの中盤と後半の年を2575/2600に設定しているためトリガーはされない
- Ver3.2と3.3の比較で銀河マップは同じだが、ensignとgrand admiralのテストでは同じではない。
まず3.2と3.3で難易度ensignの状態を比較してみましょう。
100年目までは軍事力がほぼ同じですが、それ以降は中盤から後半にかけてのAIのスケーリングにかけた成果が顕著に表れ始めます。
これによりゲーム後半ではAIが以前よりもずっと興味深い方法で行動し、反応するようになります。
1) 150年頃、Ver3.3(グラフ中の”develop”)AIはゲーム内のすべてのテクノロジーを調査した結果、32/32のスターベース能力に達し軍事力の開発を減速させます。
2) Ver3.2のAIは100年経過直後に約30年間、経済的な死のスパイラルに立ち往生し、最終的にAIは死のスパイラルから脱出することができ、その後、巨大な経済成長を獲得しており、30年~の間合金を貯めたことにより、32/32のスターベースのキャップまで迅速に構築することができます。
経過200年になると両AIの軍事力の差は縮まっています。
どちらのAIも実際には多くの船舶を建造しているわけではないからです。
なぜならそれらの船舶は星の数を最大限に活用しており、すでに艦隊の上限をはるかに超えているため、非常に高価な艦隊となっているからです。
200年のパワーギャップは、Ver3.3のAIが優れたテクノロジーを持っていたことが主な原因です。
しかしgrand admiralの難易度においてはAIは貿易価値による増加バフを正しく適用しないことが判明しました。
もしそれが実現されれば、AIはプレーヤーにとってより挑戦的なものになるという方向に一歩前進します。
全体として難易度grand admiralとensignでのテストは最初の100年がほぼ同じで、その後差が大きくなるという類似のパターンを示します。
しかしgrand admiralでのテストでは、Ver3.3においてAIスケーリングの上限を150-200年頃に見ることができます。それは軍事成長曲線がスターベース許容量の上限に達する時点で平坦になる傾向のためです。
今日の開発日記はこれで終わりです。
AIの経済に関する質問があれば、以下に自由に投稿してください。可能な限り回答したいと思います!
以上
フォーラム内のやり取り(Q&A)
Q:惑星/セクターの自動化を担当するAIを作る予定はありますか?
A:プレイヤーの惑星/セクターの自動化については調べていません。
この分野での改善を望んでいる人々が多くいることは聞いていますが、残念ながら実際に対戦相手となるAIを改善するという作業の範囲外となります。
Q:利用可能なメンテナンスドローンのジョブの数を制御する必要がなくなる時が来ることを楽しみにしています。
A:残念ながら現在のゲーム挙動としては惑星上でポップスが取り組むものがなくなると、最後の手段としてメンテナンスドローンのジョブに取り掛かる事になります。
ですので以前よりは良くなるはずですがまだ完璧ではありません。
AIに対しては1日の終わりにメンテナンスドローンが多すぎる場合、ジョブを禁止するマイクロマネジメントを追加しましたが、プレイヤーについては今のところこれを手動で行う必要があります。
Q:この変更は同じ設定でゲームがより難しくなるのか、それともAIの反応性がかなり高くなるだけなのか?
A:それはどのように捉えるかに依ります。
現状ではAIはゲームの序盤で最も強くなる傾向があります。
今回の変更でプレイヤーに対してゲーム中盤から後半にかけての弱さが軽減されるはずです。
しかしプレイヤーがAIを上回ることはできるかもしれませんが、以前よりその程度は低くなるでしょう。
パッチ間の2つのゲーム後半におけるセーブデータでAI艦隊とテクノロジーの絶対数を比較すると、Ver3.2と比較してゲーム後半ではAIが大幅に強くなっている可能性が非常に高いです。
全体的に見ればゲーム中盤から後半にかけてAIが急に貧弱になるようなことはなく、よりバランスの取れたプレイ体験ができると思います。
Q:現在のところAIの経済が固定化されているため最も弱い点はAIの軍事戦術です。しかしこれに関してこの記事では変更も言及もされていません。
A:AIの作業のほとんどは、Modが変更できないコード内のものを修正することによって行われました。
AIの軍事戦術は将来の作業として最優先事項です!
Q:今回の改修はセクターに影響を及ぼしますか?
A:残念ながら他のAI制御の帝国に関することのみになります。
Q:これは、プレイヤーが管理する帝国の自動再定住の行動にも関わりますか?
A:これはゲームの通常の仕組みを使用しているだけです。
失業中のポップスは毎月、彼らのために仕事と住居を持っている他の惑星に移動する機会があります。
他にもたくさんの項目がありましたが今回は以上とします。
感想・まとめ
以上、Stellaris 開発者日記 第239回の紹介でした。
忙しくて記事作成が遅くなってしまいました。
待っていた方はすみませんm(_ _)m
一つ気になるのはAIスケーリングのサブプランの箇所で基本プラン完了後に追加されるスケーリングサブプラン。
これ、実行されるたびに「無制限に」追加されるとのことですが、
これってAI(CPU)の負荷が増えたりしないんでしょうか?
(かといってサブプランの追加に回数制限があるってのもおかしな話になるんでしょうけど😥)
多分そのあたりも十分に考えぬいて作ってあるのだろうと思いますが、ちょっとだけ気になりました。