2017年2月16日木曜日

HoI4 - 『Patch 1.3.3 Update #2』 意訳


その1はこちら→(#1

HoI4のアップデートパッチ1.3.3の情報その2が出ました(参照
その1の意訳をやってみた続きでその2もやってみようかともいます。
今回あちらさんの本文が長いので変更点を中心に短くできそうなとこは短くいこうと思います。

『』:意訳
平文:感想とか考察っぽいやつ


 〇産業:資源欠乏仕様の変更

『これまでは生産ラインは資源の欠乏があると最大で80%のペナルティを受けました。しかしこれは工場数を多くすることで効果的に対処できました。』
『資源の欠乏によるペナルティは不足している資源ごとに計算され、100%を上限として着実に大きくなります』

資源が欠乏すると最大100%のペナルティが生じる、つまり生産が行えなくなるということで資源を確保する重要性が上がります。


〇QOL
どうやらUI周りの改善のようです。

『新しく建設を行うときCTRL+Clickで建設ラインの先頭に突っ込むことができます』
わざわざ矢印をCTRL+Clickする必要が無くなるということですね。

『師団を選択したとき、師団リストの中でその師団がいる位置へ自動スクロールします』
軍に所属している師団を選択したとき、師団のリスト内でわざわざ手動スクロールする手間が省けるらしいです。

『ゲーム画面右下のボタンに新たなボタンを追加し(ホットキーはMに設定)自ユニットを残して他のユニットを非表示にします』
混戦しているときにユニットが重なり合って見辛くなるという現象があるかと思いますがそれへの対策だそうです。

『戦場のフォグを消すボタンを追加します。地形の確認がやりやすくなります』

『ロード中に画面上部に進行バーを表示します』

『マルチプレイヤーモードのときにあるプレイヤーがラグってるとメッセージウィンドウが表示されていましたが、これを警告にします』
マルチはやったことがないので詳しくは判りませんが、ラグったときに「Oh the humanity!」(だったっけ?)とか言ったりしないで済むようになるのかなと思います。右クリックすれば消えるアレになるのかなと。

『軍に割り当てられていない師団がいる場合に警告を発するようにしました。左クリックすれば該当する師団を選択します。右クリックすれば消えます。遠征軍が到着したときなんかにどうぞ』
遠征軍は結構行方不明になったりすることがあるので便利かと思います。


〇AIのアップデートについて

『海軍AIの戦域計算が改良され、状況変化への対応力が向上しました』
既に任務がある艦隊の戦域移動が苦手だったところを改良したの…かな?

『海軍AIは打撃艦隊に任務が割り当てられてない場合に沿岸砲撃を試みるようになります』
strike fleet いず 何って感じではありますが、AIが沿岸砲撃を行ってくるのは大きな改良だと思います。最大25%の抑制力をもつので沿岸砲撃の威力は結構高いです。

『AIが陸軍について展開可能師団数を計算するとき、供給力をより良く扱えるようになりました』
『AIに装備備蓄戦略機能を追加しました。これによりプレイヤーはAIの想定する備蓄量に影響を与えることができるようになります』
『陸軍師団数が多い場合にAIは装備をより多く備蓄しようとします』
AI相手の戦闘だと戦っているうちに徐々に相手師団の耐久力が減っていく(し壊滅的な低さになる)ことが多いですが少しマシになるかもしれません。

『AIの前線管理と前線に必要な師団数の計算について改良を加えました』
これまではAIの扱うユニットが多くなると前線も多くなっていることが結構見かけられますが、これら前線が整理されやすくなりそうです。原文では「特定の状況下で」と言っています。

『AIはあるテンプレートの師団が必要量得られたら配備ラインを取り消すようになります』
これまでは訓練し始めたらそのまま配備まで突っ走っていましたが、しっかり取り消すようになるようです。根こそぎ徴兵までの時間が長くなりそうに思えます。

『AIが占領地におけるレジスタンス活動を完全に放置するという致命的なバグがありましたが、修正しました』
これまではAIが占領している地域は気づいたらレジスタンス活動100%になっていましたが、これはバグだったようで修正されるとのことです。工場インフラの修理ばっか多くなって占領したところでアレだった現象がなくなるのは重要な改善でしょう。

『AIがいつ何処にレンドリースを行うか判断するロジックを改良しました』
『AIは旧式装備もレンドリースするようになります』
『AIは自国に余裕がなくなったときや行う意味がなくなったときにレンドリースを止めるようになります』
AIが行うレンドリースがより効果的なものになるとのことです。アメリカ辺りがだだ余りの旧式装備をレンドリースするようになるとかなり大きな支援になりそうです。数は力。

『AIは民需工場を多くもつとき、海軍造船所の建設が軍需工場の建設を上回らないようにするようになります』
民需工場が多くあることは工場の建設可能残数が少ないことを表しますが、どうやら『アメリカを筆頭として造船所が多くなる傾向がある』ようなのでその対処だそうです。

『AIは安全な前線をうまく扱えるようになりました。これまでは脅威がない前線にも大量の師団を配置していることが度々ありました』
『安全な前線のいくらかは共通の敵国と戦っている他国に向いているものであり、たとえその戦争に勝利しつつあるとしてもその時は脅威にはならないのです』
『結論:AIが操作するユニットの多くは実際に差異を生みだす筈です』
『例えば、日本は対中戦争が落ち着くまで対ソ戦を行わなくなります』


〇パフォーマンスと最適化

『バージョン1.3.3では全体で14~18%の速度向上がなされています。しかし主目的はパフォーマンスが急激に落ち込む現象を解消することです』
この直後の文でいわれている通り、1.3.2では日をまたぐときにゲームが幾秒かに渡って停止することが多々あります。師団数が多くなるゲーム終盤ではこの影響が大きくなります。この辺りの改善が主な最適化対象になるとのことです。

『講和会議のプログラムを書き直しました。大戦の終わりにある講和会議ではスキップ(ポイントを得るコマンド)が連発されて処理が重くなっていました。このプログラムは入れ子になったループ文で構成されていたのでこれを改善しました』

『艦隊に任務を与えたときゲーム上ではまず移動経路を計算することになります。このときAIは艦隊が適切な位置に移動するのを確実にすべく結果として「移動せよ」という命令を連発していました。もちろんこの命令は1度出せばよいものです。そしてこの問題は解決されました』

『補給システムの改良は最も影響の大きいものになります』
『プログラムがフィールド上の領域に対して「何が支援済で何が不足しているか」参照するとき、現状では各領域について毎回最初から計算しなおしていました。これを計算済の情報をキャッシュに保存するようにすることで再計算することなく参照できるようにしました』
『師団の装備消耗量のデータを得るとき、これまでのプログラムでは各プロヴィンスを回ってそこにいるユニットの各々に消耗量を尋ねるようになっていました。これを変更し、ゲーム内時間において毎時に各ユニットが自らの消耗量を「報告」するようにしてデータを得るようにしました。一見同じことのように見えますが、プログラム技術の面でいえば差異が生じます。この変更によりとても重いループ処理が削除されました』

ここでの改良は「無駄な計算」と「ループの削除」です。
1つ目の改良では各プロヴィンス或いはその中にある各区画がもつインフラ供給量なんかの、師団に対する支援可能量は、その値が変わらない期間が長めなので一度計算しといてメモリに保存しておけば再計算の必要がなくなります。変わるタイミングといえばどっかのインフラが向上したとかどっかに港をつくったくらいのもので、これが一月にあっても数回と考えれば毎時インフラ計算をやり直すのは結構な無駄だと判断できます。
2つ目の改良はループの数を減らそうという試みです。ループというのはつまり「AとBとCと…etcをN回繰り返せ」みたいな処理のことで、重いループという言葉で真っ先に連想されるのが多重ループです。軍隊を連想すると、「中隊長が各小隊の様子を見に行くが「中隊長が来たところの小隊長が慌てて各兵卒の様子を見に行く」」、みたいな事態が起きます。とにかく、面倒くせぇというニュアンスが伝わればOKです。今回の改良では少なくとも「兵卒連中くらいは小隊長のところに自分から来いや」みたいなことが行われていて、少なくとも小隊長が慌てる手間は省けるわけです。今回は中隊長が巡回するのが各プロヴィンスを回ることに該当し、小隊長が巡回するのが各ユニットを参照することに該当します。プログラムでやることはこれよりももっと面倒なことをやってる上に厳密には違う構造をもち出したっぽいのですが、この「重いループ」が無くなるとかなりのパフォーマンス向上につながります。
ちょっと長く書いてみましたが間違ってたら申し訳ないです。m(_ _)m

『旧来の補給システムは、パフォーマンスが落ち込んだ時に計算時間の65%を占めていましたが、アップデート後は6%を下回ります。』
だいぶ改善されたようです。

『AIが師団テンプレートを編集する際、プレイヤーと同様に大隊や支援中隊の追加・削除・変更とそれに伴う再計算を行っていましたが、これを変更しAIがテンプレートを埋めきった直後だけ統計情報を再計算するようにしました』
プレイヤーが編集するときは統計情報をみながら行いますが、AIは目標とするテンプレートがある程度決まっているそうなので統計情報を見つつやることは必要ないようです。

『AIに対する最適化は他にもあって、上陸作戦計画、前線へのユニット展開、レーダーによる艦隊への戦闘ボーナス、適切なルートが使用不可能になった場合の代替護送ルートの計算、そして他にも説明が難しいのだけれどもたくさんあります』
プレイしてのお楽しみというか期待というか。

『これまではClausewitz engine側の問題でユーザーインターフェースのデータ構造がフラットなのでウィンドウやボタンが増えるとゲームがそれだけ重くなるという問題がありました。ようやくこの問題への解法を発見しました。これまではループの中に最大12万の処理がありましたが、いまでは700を切っています』
フラットな構造つまりデータをただ並べただけで全探索しかできなかったところを、何らかの手法でデータ間の関連付けに成功したということでしょう。ここはUIが軽くなったと捉えておけば十分だと思います。


以上で本記事は終わりです。
意訳に焦点を当てているので細かいところで間違い等あっても大目に見てもらえると幸いです。

0 件のコメント:

コメントを投稿