「Stellaris」の開発日記#267が公開されていましたので、その内容をご紹介。今回はAI・パフォーマンスについて。3.5「Fornax」リリース前の開発日記です。
開発日記
開発日記#267は、AI・パフォーマンスについて。3.5パッチノートとModについては省略します。
- 3.5「Fornax」と「Toxoids Species Pack」は9月20日にリリース予定だ。
AI
- AIについては特に注力したわけではないが、それでもかなり大規模な改善リストとなった。
- 私たちはAIが誤ったロジックループで合金を浪費していたことに気づき、これを改善した。
- 星系基地については、AIは一般により賢くアップグレードするようになった。例えばアップグレード時に上限超過と勘違いするロジックを修正した。また、アップグレードした星系基地をダウングレードするのではなくアップグレードをキャンセルするようになり、戦争中に上限を大幅に超過した場合にダウングレードを検討するようになった。bastionsスパムはなくなり、有用と思われる場所にのみ配置するようになった。
- 3.4では、AIは防衛プラットフォームを建設しなかったが、これは修正され、bastionsの周辺に限って建設するようになった。また軌道リングもうまく扱えていなかったが、これをうまくアップグレードし、最適なモジュールや建造物を使えるようになったはずだ。
- 艦船については、AIは艦隊上限を超過したときに維持する余裕がない場合にのみ艦船を解散させるようになった。これにより、AIの予算がどのように機能するかについて少し長い目で見ることになり、連鎖的に以下の修正を行った。
- AIが積極的に無視する支出に資源を割り当てることがあったが、これは現在ではエラーログを発生させ、もう起こらないようになった。
- AIがある支出に割り当てる最大値を指定するとその値で支出に上限がかかるが、その余剰分が他に割り当て直されるようになった。
- その結果は合金支出で顕著だ。AIは合金6万を上限にすることが多いが、実際に消費されるのは割り当ての半分程度だった。これが現在では実際に合金を支出する可能性がはるかに高まった。
- AIにstrongholdsがいいものだとわからせる変更もある。ゲーム終盤(AIが繰り返し可能な研究を始める頃)には、AIは艦隊許容量をもたらす建造物を望ましいものと考えるようになった。まずしっかりした収入が必要なため高難易度で発生しやすいが、テストでは難易度grand admiralで艦隊許容量が4000を超えることも多い。
- これはAIが巨大構造物、特に軌道上居住地と軌道リングをより積極的に建設するようにしたことと対になっている。AIは新たな巨大構造物を作るためにいくつかのブロックを持っており、例えば一度に1つだけしか建設できなかった。過去には特定の状況下で軌道上居住地の建設がブロックされることもあった。ほとんどの制約は取り除かれたため、可能なら一般に軌道上居住地を建設するようになったが、入植可能な場所がある場合は新設しないなど常識的な制限はある。
- 同様にAIは可能なら常に惑星に軌道リングを建設しようとするようになった。これまではAIが巨大構造物のアップグレードに関連してここで立ち往生してしまうことがあったが、そうしたことはなくなった。しかしAIは依然として巨大構造物のアップグレードのために節約することを好む。
- コミュニティを動揺させていた3.4のAIに関するいくつかの問題については、AIが自身の従属国を好まないために連邦を脱退したり、AIがあまりにも簡単に従属国になりたがる問題に対処できた。
- 艦隊AIロジックについては、戦争中にAIが艦隊を編成するロジックを改良し、AI艦隊が暇していることが格段に減った。また、Prethorynはよりうまく入植地を奪うようになった。
- さらに、互いが相手に到達できないAI帝国同士の戦争では、両者が現状維持の和平により積極的になるようにした。これによってAI帝国が和平するまで非常に長い間立ち往生する問題が解決する。これは特に戦争疲弊の軽減が大きい虐殺帝国で大きな問題だった。
- 最後に、特定のAIが傭兵中立機構を作り、その後直ちに彼らを攻撃していることが判明したが、これはもう発生しないようにした。
パフォーマンス
- 私たちはさまざまな方法でゲーム終盤のパフォーマンスを改善しようとした。正直なところ、その結果はかなり期待できるものだ。
- まず補正の更新は計算が非常に高くついていた。例えば布告を有効にすると、国家が所有するすべての惑星・艦隊・艦船・Popの補正が再計算される。これは最終的に多くの再計算につながり、補正の更新は些末なことではないために時間がかかることがある。基本的にPopの詳細のすべての効果がどこから来たのかを示す素晴らしいツールチップには相当量の計算能力が使われている。
- 3.5では、この点に関して2つの改善が行われた。まず補正の更新をマルチスレッド化した。これまではすべて逐次的に行っていたため、長時間のフリーズや一部の日次のティックが他よりもずっと長くなることにつながっていた。
- さらにPopに巨大構造物のコスト補正のような無関係な修正が加えられていることがわかり、追加的なパラメーターを経済カテゴリーに追加してその中の補正がどこに行くかを指定するようにし、補正の再計算にかかる時間をさらに20%短縮できた。
- このほか、マルチスレッドシステムが時々おかしくなり、すべてのスレッドが数ミリ秒間待機状態になることについても大きな改善があった。
- これは私たちが行ったことのほんの一例だ。私たちは意図的にばかげたセーブデータの分析に時間を使った。このゲームはかなり遅かったが、主な原因は攻撃機の移動であることがわかった。この現象は通常のセーブでは再現できなかったが、とにかくマルチスレッド化することでいくらかまともにプレイできるようになった。
- また、このゲームでは1日に何度も星系が入植地を持っているかどうかを調べるのに時間を使っていたが、これは非常に簡単にキャッシュできるものだった(と思っていたが、後で同期ズレを2つ修正して後悔した)。
- もうひとつの大きな問題は戦争で、国家は戦っている戦争のキャッシュセットを持っておらず、情報を知る必要があるときはいつでも戦っているすべての戦争を再計算していた。言うまでもなくこれは非常に非効率的で、幸いなことにキャッシュ可能だった。それから、ゲームがある星系基地の種類を調べる必要があるときも、あらゆる種類の星系基地を調べてふさわしいものを決めていた。これもキャッシュキャッシュキャッシュだ。
- AIが支社を設置する場所を決定する時間も早めた。それから、逐次的に国家を更新するのに費やす時間のほとんどは政策の妥当性を評価するのに使われていたが、これはスレッド化できた。Popの成長や減少についても同様のロジックを使用し、自動移住時の職に関するキャッシュを50%減らしたため、毎月のティックは少し早くなったはずだ。
- すべてがうまくいったわけではなく、この作業で導入・修正された3つの同期ズレと2つのクラッシュ以外に、私たちは期待していたほどゲームが早くなっていないことに気づいた。実際、数日おきにフリーズしていた。これは意図しない結果をもたらすロジックの修正によるもので、AIが巨大構造物についてあまりにも検討しすぎるためだと判明した。そのため、より高くつくチェックを配置するための変更が必要だった。
- どれくらい影響があるかについて特定の数字を約束することはできない。こうした修正は7月に行われたが、新たな非効率性が導入されたかもしれないし、3.4と3.5ではAIの振る舞いがかなり異なっているため、比較することも難しい。さらに特定のセーブデータが特定のことによってラグを起こすこともある(上で述べた攻撃機のような)。とはいえ、3.4のセーブデータに基づいてテストを行ったところでは30%以上早くなっていた。
- ゲーム終盤は正確には早くなっていない(ゲーム終盤はゲーム序盤ほど早くなることはない。パフォーマンスは主にフレームのレンダリングにかかる時間で決まるが、ゲーム序盤はそうしたものがほとんどない)が、遅く感じるということはない。しかしみなさんがどう感じるか、もっと努力が必要だと感じるかどうかを見るのを楽しみにしている。
- ToxoidsとFornaxは来週火曜日リリース予定で、そのあとは通常の開発日記スケジュールに戻る予定だ。
コメント
AIが軌道環状施設を作りたがるわりに、作ってもTier1のままで何も活用しない問題が修正されていると良いですね
通常の星系基地もですが、自由度の高い施設なのでAIが扱うには複雑すぎるんですよね
2400年以降特に危機が出てくるとプチフリ多発しててとても軽くなったとは思えない