HoI4 開発者日記 第309回 (Arms Against Tyrannyの)パフォーマンスと変更ログ

スポンサーリンク
更新情報

Hearts of Iron IV 開発者日記 第309回目を紹介。

今回は新DLC、Arms Against Tyrannyのリリースとそれに伴う無料アップデートによってゲームパフォーマンスにどのような影響があるかがテーマです。
またアップデートの変更ログが紹介されています。
※変更ログの詳細についてはいつものように割愛させていただきます。

前回308回が最終の開発者日記とのことでしたし、パラドックスフォーラムでの投稿時間を見るとこの309回分のほうが308回分より先に作成(下書き)されたように見えるのですが、公開時間では今回の日記の方が時系列では後になっていますので、今回分を第309回といたします。
(HoI4はこの辺りが他のゲームのParadoxフォーラムの開発者日記に比べてかなりいい加減で無茶苦茶な感じ😥)

また前回308回の最後に「私が開発者日記を紹介するのはこれで一応最後」と言っていましたが、この309回がArms Against Tyrannyリリース前の最後の日記とのことなので区切りとして今回分まで紹介する事とします。

以下、パラドックスフォーラムの内容を意訳したものとなります。
正確を期すよう努めていますが詳細はパラドックスサイトの原文をお読みください。

[記事内の画像はパラドフォーラムより引用]

スポンサーリンク

Hearts of Iron IV 開発者日記 2023年10月9日分(第309回)

今回の日記担当はHoI4 ゲームディレクターのArheoさんです。

冒頭の挨拶

みなさんこんにちは!
Arms Against Tyranny DLCとStella Polarisアップデートが封をされ、出荷される準備が整う日が近くなりました。
AAT(Arms Against Tyranny)の開発プロセスに参加できたことは喜ばしいことであり、チームはこれまでに見事に無罪を勝ち取ってきましたー私たちは皆、皆さんが私たちの取り組みについてどう思うかを知りたいと思っていますし、私たちが提供するものを楽しんでいただけることを願っています。

今後数週間は、リリース後のサポート期間になります。
私たちは、コミュニティのニーズに反応し続けることを好みます。
リリース直後のロードマップを作成することは、実際にそういった活動を行うことを困難にします。
その代わり、今回の日記にて私達は積極的なプレゼンスを維持し、必要に応じて、時間とリソースが許す限り迅速に対応することを説明したいと思います。

昔ながらのやり方で、パッチノートを早めに公開していますので、お気に入りの脆弱性の修正を1日か2日早く理論化したり、熱心に予想したり、同情したりすることができます。
いつものようにメモ内の項目紛失は起こりえますし、もしそういったものが後日見つかった場合は、時間が経つにつれてこの記事の最後にスポイラーとして追加される事でしょう。

アップデートはVer1.13.0と1.13.1が同時にリリースされます。

管理人注 以下Ver1.13.0 “Stella Polaris”アップデートと、Ver1.13.1パッチの詳細がスポイラーとして紹介されていますが、紹介は割愛します。
ご覧になりたい方は元ページにてご確認ください。

さてここからは、パフォーマンスの変更についての説明をテクニカルリードに引き渡します。

ボンジュール・ア・ヌーボー、友よ!
三度目の正直が伝統になるかどうかはわかりませんが、HoIの技術チームからの最新情報を伝えるために、1回目2回目に続いてリリース前にもう一度登場しました。

去年から私にあまりお会いしていないとしたら、それは**検閲**、**検閲**、および**検閲**で忙しかったこともありますが、ここ数ヶ月、私の注意は完全にHoIに戻ってきています。

では、Ver1.13のStella PolarisアップデートにおけるHoIの新しいテクノロジーとはどんなものなのでしょうか?

機雷そして最大の都市伝説

まず、素晴らしいニュースです。
海軍の機雷によってゲームが遅くなることはもうありません!おめでとう!

ただしそれは嘘です。
いくつかのコミュニティハウスのルールで私が読み続けている「機雷によるラグ」は大したことではありません。
2年も経っていません。Ver1.11(Barbarossa)で直したのでわかります。
しかし2020年12月からのこの変更(2021年にNo Step Backがリリースされた)は変更履歴として残らなかったことが判明しているので、通知を見逃した事を残念に思う必要はありません。

commit da0ce4ac94ba1938459ffb6abe3bf2b0cd4bab1e
Author: Mathieu Ropert
Date: Mon Dec 14 17:38:59 2020 +0100

[X] Fixed performance issue when mines are used

ふむ。

しかし、さらに良いニュースがあります。
地雷の使用によってゲームの進行が遅くなることはなかったのですが、概念としての機雷の存在は、それを使用するかどうかにかかわらず、依然としてパフォーマンスに対するコストを発生させていました。これもVer1.13にて大幅に改善されました。

だからどうぞ。気をつけてください。海全体に機雷を設置してください。どうなるか見てみましょう。

V-Sync、G-Sync、Free-Sync、NSync …

今回は大きなプラットフォームの更新はありませんが(サポートされるオペレーティングシステムは変わりません)、HoIのレンダリング技術にいくつかの小さな改善を導入しました。

主なものは、可変リフレッシュレートモニタとGPUのサポートです。
DX(1.12以降のデフォルト)を使用していて、ハードウェアがそれをサポートしている (かつWindows 10以降を使用している) 場合は、V-Syncオフでより多くのFPSが得られるはずです。
職場のNVIDIA RTX 3060では、ゲームを一時停止するとVer1.12では140-150fpsだったのが、Ver1.13では約190fpsにアップします。

視覚的に違いが分かると言っているわけではありません。
しかし数字が上がる事が嫌いなら我々のファンにはなれないでしょうから、これは無料の要素としては衝撃を受けるはずです。

また、一時停止を解除した場合のゲームのレンダリング方法も少し変更されており、特に時間/日単位のティックが16/33/50ms(ゲーム速度によって異なります)より遅くなり始めた場合にその傾向が顕著になります。
簡単に言えば、シミュレーションのCPU負荷が高くなったときにfpsを安定した状態に保つための「コスト」が改善され、fpsが向上し、特に速度4と5での「ラグ」が少なく感じられるようになりました。

管理人補足文中ではV-Syncのみに言及されていますが、この章のタイトルを見る限りFree-Sync等、同様の垂直同期調整効果OFFでも似たような効果が得られるのではないかと思われます。

全体的なパフォーマンスの向上

先ほど予告として機雷の例を使いましたが、一般的にこのアップデートはかなりの性能向上を伴います。
これらは、他のタイトルや、残念ながら掘り下げることができない秘密のものを見て時間を費やしたことに触発された部分もありますし、古い問題に新たな目を向けるようになったこともあります。

Ver1.12(Avalanche)とVer1.13(Stella Polaris)の比較を並べてみました。

まず、私の仕事用マシン Corei 7-12700k 20コア上における新しい1936年のゲームです。

HoI4 Ver1.12 “Avalanche” – 1936 – Intel i7-12700k

HoI4 Ver1.13 “Stella Polaris” – 1936 – Intel i7-12700k​

そして、次は1943年に同じマシンで作成された2つの似たようなセーブデータです:

HoI4 Ver1.12 “Avalanche” – 1943 – Intel i7-12700k

HoI4 Ver1.13 “Stella Polaris” – 1943 – Intel i7-12700k​

これまでの開発者日記にてゲーム内プロファイラを見たことがない方は、ちょっと圧倒されるかもしれません(ゲーム内で表示させるためのコンソールコマンドはimgui show profilerです)。
ここで皆さんに注意を向けてもらいたいのは、Ticks per second(秒あたりのティック数)とLast ticks average(過去24ティックの平均値)という、ゲームの進行速度を大まかに知るための情報です。

長い話をしますと、1936年のシナリオでは、ティック刻み(ゲーム内の一時間をシミュレートするのにかかる時間)の平均が15ミリ秒から10ミリ秒になります。
あるいは毎秒42から64のシミュレーションが必要な場合もあります。

1943年のシナリオでは、戦争、師団、艦隊、航空機の数がはるかに多く、ティック刻みの平均は43ミリ秒から29ミリ秒になります。
また17から27のゲーム内時間を現実世界の秒ごとにシミュレートします。

どちらの場合もシミュレーションは約1.5倍速くなります。
実際にはGPUの応答時間などを考慮する必要があるため、体感速度は少し低くなりますが、それでもかなり目立つ差になるはずです。

もちろんすべての人が第10世代以降のCore i7 CPUを搭載しているわけではないことは理解しています、ローエンドマシンでの意味についても見ていくのが公平でしょう。
幸運なことに、私はAMD Ryzen 3 1200(クアッドコアCPUで、Intel Core i 5-7400にほぼ相当するとインターネットで教わりました)にもアクセスできます。
更にグラフを注意して見てみましょう。

まず1936年です:

HoI4 Ver1.12 “Avalanche” – 1936 – AMD Ryzen 3 1200

HoI4 Ver1.13 “Stella Polaris” – 1936 – AMD Ryzen 3 1200​

そして先程と同じ1943年のセーブデータでは次のようになります。

HoI4 Ver1.12 “Avalanche” – 1943- AMD Ryzen 3 1200

HoI4 Ver1.13 “Stella Polaris” – 1943- AMD Ryzen 3 1200​

まず最初にまだ疑問が残っているのであれば、確かに、より高性能なマシンに切り替えることで、HoIは確実に速く動作するようになります。
この数字からわかるように、このケースでは先述のハイエンド20コアマシンよりも3倍ほど遅く動作しました。

次に、Ver1.13は依然としてVer1.12よりもパフォーマンスが優れていますが(約25-30%高速)、ハイエンドマシンほどではありません。
なぜ?と尋ねるでしょう。それはスレッドに依るからです!

HoI4でマルチスレッドを利用できる(できない)

Paradoxのゲームはマルチスレッドを使用しないという誤解が繰り返されています。
これは明らかに事実ではありません。
私はStellarisで作業を行っていた時代からこのことを話してきました。

しかし、ゲームシミュレーションの中には多くのコアを利用するのに優れた部分があるのもまた事実です。
また一度コアを1つしか使わないようにしてしまえば、ゲームのシミュレーションがそれに依存し始めるにつれて、変更するのは通常かなり難しくなります。

これは昔、Europa UniversalisがPCに移植されたボードゲームだった時代に遡ります。
結局のところ、それらは各俳優が順番に交代するように設計されることがかなり一般的です。
ドイツのプレイヤーはボード上の全部隊を動かす。
それからイギリス。それからソビエト。など…これは非常にシリアルなプロセスです。
理解しやすくまたデザインもしやすいですが、すべてのプレイヤーが同時に進行する場合よりも遅くなります。
そしてもちろん、誰もが突然同時に動き始めた場合、衝突が発生し、それを特定し解決するためのルールが必要になるため、後から変更することは非常に困難なのです。

Crusader Kings 3では、技術的なデザインに根本的に異なるアプローチを取ることでこれらの問題のほとんどを解決したが、明らかに我々にはそのような余裕はありません。
それに以前聞いた話とは違い、これはエンジンとはほとんど関係がないのです。昔のClausewitz(とその友人のJomini)は主にグラフィック、ネットワーク、ファイルの読み込みと保存などに関心があったことを理解してください。
パフォーマンスのボトルネックの大部分はそこにあるのではなく、ゲームシミュレーションの中にあり、どのようにアプローチしたいかを決定するのはほぼすべて各ゲーム次第であり、その決定は通常、ゲーム開発の最初の数年間、リリースされる前に行われます(そして変更するのは難しいのです)。
それでもこのパッチでは、「ターンベース」の設計をやめて、同時進行のプロセスに置き換えることができる場所を特定できました。これほど賢明なことは無いでしょう。
これにより1つコアに依存するのではなく、すべてのコアへ作業を投げかけることができました。

これがコアが多いほどゲームパフォーマンスが改善されていることに気づく主な理由だと思います。
たとえばプロセスがたとえば2ms前にかかったとします。
大まかに言って、4コアで0.5ms(2/4)、20コアで0.1ms(2/20)かかります。
1942年後半の20コアでのHoI4 CPU使用率の大まかな概要は以下の通りです。

上部のCPUチャートには、特定の時点で使用されているコア数が示されています。
理想的には常に完全なグリーンの状態にしたいのですが、これは今後のHoI4のリリースで得られる事でしょう。

技術的な知識がある方には、ACCU 2023でPDSゲームのマルチスレッド化の課題について講演したこの(最新の)講演をお勧めします。

さて、この開発者日記のスクリーンショットを作成している間に何かがおかしいことに気づいたので、調査に戻り、リリース後のパッチでさらに改善できることがあるかどうかを確認したいと思います。

Ver1.12対Ver1.13で30秒間ゲームをプレイさせた場合の比較を並べてみます。
一番上の日付/時刻に注意してください。


以上

振り返り感想

HoI4開発者日記 第309回でした。

Ver1.13ではゲームパフォーマンスが大幅に向上しているようで、無料アップデートでその恩恵が受けられるのは嬉しいですね🙂

本文中で垂直同期の項がありそこではVSync+NVIDIAのグラフィックカードの組み合わせのことだけ書かれていましたが、
私のグラフィックカードはAMDのRadeonなのでFree-Sync OFFにしてパフォーマンスが変わるかどうか後日試してみたいと思います。

また併せてAMDといえば先日公開されたAMD Fluid Motion FramesとRadeon Super Resolutionという機能がありますので、それらの使用でfpsが更に向上できるかどうかも試してみたいと思います。

さて、今回こそArms Against Tyranny関連の開発者日記は一旦終了のようです。

前回308回の感想のところでも触れましたが
私のHoI4開発者日記の翻訳記事作成はこれにて一旦区切りにしたいと思います。
(もう無いと思いますが、Arms Against Tyranny関連の日記がまた公開されたらそれまは翻訳したいと思います)

長い間お読みいただき、ありがとうございました。
御礼申し上げますm(_ _)m