「Hearts of Iron IV」開発日記2022年9月14日分が公開されていましたので、その内容をご紹介。今回は技術的なことについて。「By Blood Alone」+1.12リリース前の開発日記です。
開発日記
開発日記2022年9月14日分は、技術的なことについて。
古いプラットフォームの引退計画
- 新たなプラットフォームが生まれると古いプラットフォームは納屋の後ろに持っていく必要がある。これはWindows7の話ではない(まだ)。Windows 11がリリースされても、私たちは(注:最低動作環境を)Windows 10に引き上げないことにした。というのは、古いリリースに対するMicrosoftの新たな技術のサポートが手厚いためだ。
- MacやLinuxはそうではない。新たな(注:HoI4の)バージョン1.12.0から、OSの最低バージョンをmacOS 10.14 (Mojave)、Ubuntu 20.04 LTS (Focal Fossa)に変更する。HoI4を過去のバージョンに戻すことで古いOSでもプレイ可能だが、Avalanche(注:HoI4のバージョン1.12)では起動を拒否される。
- こうしたアップデートはHoIに限らない私たちのゲームに新たな技術を導入し、スタジオ内の同じインフラですべてを構築できるようにするために行われる。
新たなデフォルト
- 昨年、私たちはゲームをDirectX9ではなくDirectX11で実行するオプションを導入した。長期間観察してほとんど問題がなかったため、私たちはこれをデフォルトにすることとした。AvalancheでParadox Launcherを初めて起動したときに、ゲームはDirectX9からDirectX11へ1回だけのアップグレードを実行する。新規のインストールでもデフォルトはDirectX11となる。この変更で問題が発生した場合は、まずバグレポートを作成し、そのあと設定ページでレンダラーをDirectX9に戻していただきたい。
- ビジュアル面ではゲームは完全に同じになるはずだが、内部的にはDirectX11のツールで一部の戦車モデルの側面に奇妙な白い四角が表示されるなどの見つけにくいグラフィック上のバグが発見できており、Avalancheで修正される。
パフォーマンスの改善
- 「新たなパッチでゲームの動作は以前のバージョンよりも早くなる?」というよくある疑問の答えをみなさんのほとんどが待ち望んでいると思うが、これにイエスと答えられることに満足している。最大の改善点はマップアイコンのレンダリング(ユニットカウンター・工場・補給ハブその他なんでも)だ。6年前のHoIのリリース以来、マップに表示される可能性のあるアイコンの数が大幅に増え、これまでのアルゴリズムはもう役に立たなくなった。
Avalancheでのデフォルトのズーム(注:フレームタイム6ms、FPS106)
- 例えば、私(注:HoI4技術リードのMatRopert氏)の仕事用デスクトップPC(i7-7700・NVIDIA GTX 1060・vsyncオフ・150 fps上限)のAvalancheでのFPSとフレームタイムはこのとおり。
Avalancheでのズームアウト(注:フレームタイム10ms、FPS75)
- 完全にズームアウトした場合。
Avalancheでの速度5(注:フレームタイム6ms、FPS41)
- ズームを戻して速度5にした場合。
- デバッグコンソールで「imgui show profiler」と入力すると、ゲーム内プロファイラーを表示できる。
Barbarossaでのデフォルトのズーム(注:レンダータイム5ms、FPS85)
- こうした数値を現在のビルド(Barbarossa 1.11.13)と比較してみよう。
Barbarossaでのズームアウト(注:レンダータイム7ms、FPS49)
Barbarossaでの速度5(注:レンダータイム5ms、FPS30)
- Barbarossaはレンダリング性能をGPU部分のみの「フレームタイム」ではなく「レンダータイム」と表示しており、BarbarossaではCPUとGPUのレンダリング時間をどちらも算定しているため数値が異なって見える。
- HoI世代のパラド社開発スタジオゲームはレンダリングとゲームシミュレーションが連携しているため、これによって(シミュレーション自体に行った小規模なパフォーマンス最適化の上にさらに)ティック速度が高速化する。しかしレンダリングの高速化はゲームスピードの高速化のみにつながるわけではない。プレイ中(特に速度4・5で一時停止していない状態)の体験がより滑らかになり、ゲームシミュレーション速度もいくらか改善する。
- HoIのパフォーマンスやゲームスピードを向上させるためのヒントについて、私なりの方法をご紹介しよう。高リフレッシュレートのモニターでなければ、グラフィックス設定でVSyncを無効にすることを考えてもらいたい。ゲームシミュレーションの方法は次に行くのにレンダリングが完了するのを待つため、リフレッシュレートが低いとCPUがモニターのVSyncを待って時間を浪費してしまうことがあり、理想的とは言えない。
- この問題の根っこは特にDirectX9を使うHoI4では対処が難しかったが、DirectX11がデフォルトになり、私たちは将来的に対処できる方法があるかどうか探っている。約束はできることはないが。
最終的な見解
- 昨年はフランスのコンテンツをいくつか紹介したが、今回のパッチではなにかをお届けする時間がなかった。
- みなさんが技術と歴史を好むなら、私は最近、マリアン・レイェフスキの業績に着目して現代のコンピューターでエニグマを解読する方法についての技術的なプレゼンテーションを書いた(彼とポーランド暗号局は多くの物語の中でアラン・チューリングとブレッチリーパークと比べて脇に置かれる傾向にあるため)。録画はまだないが、年内にあと2回は技術カンファレンスで話す予定なので、いずれYoutubeで見られるようになる。(注:質疑応答にてYoutubeにアップロードされた動画が紹介されています)
- ポーランドと言えば、Barbarossaでの私の隠しイベントをみなさんはもうご覧になっただろうか?
質疑応答
Q:ゲーム終盤のパフォーマンスはどう?
A:これとその他の改善によって少しは改善しているはずだ。実を言うと、私は社内のハードウェアラボに昨年のように新たな評価をしてもらいたいと思っていたが、残念ながら彼らはもうすぐ発売の「Victoria 3」で忙しい。
Q:CPUの複数のコアを使うようにはならないの?
A:HoIはリリース以来、複数のコアを使用してきた。私たちはその後より多くのゲームシステムをマルチスレッド化するアップデートの流れに乗せようとしてきたが、それが常に選択肢にあるわけではない。CK3のコア使用率ほどよくなることはあるのだろうか? おそらく無理だろう。CK3はHoI4より5年新しい技術を元にしている。もっと詳しく知りたい場合はこちらの動画をご覧いただきたい。
質疑応答で紹介されている動画では、複数スレッドで処理するコードを書くのが困難であること、非同期のオペレーションで複数スレッドを使用するとメインスレッドに多くの処理が留まることなどの、マルチスレッド化の問題が紹介されています。
それでも新しいタイトル(特にCK3)ではより効率的なマルチスレッド化が行われているとのことですが、既存のゲームの改修はゲームデザインから見直さなければ困難かつリスキーであるとのこと。マルチスレッド化は「言うは易く行うは難し」ということのようです。
コメント
CPUに関しては可能な範囲で複数のコアを使ってるのに、未だにクラウゼヴィッツエンジンが一つのコアしか使えないという誤った認識が無くならないんだよね
つっても一つのコアに処理が極端に集中して他のコアの性能が活かせてないのは事実で、ちゃんとしたマルチコアにしろ!って意見が出るのはしゃーない
あれが解決するだけでどれだけのユーザーが快適なHOI4ライフを送れることか
まあ、ユーザーの側からしたらまだまだ完全に稼働してないスレッドがあるんだからその分を使えば早くできるはず! みたいな感覚なのかもしれないが、実際はやっぱりメインの処理はどうしてもボトルネックになるだろうし仕方ないと思うのだけど。
なんにせよ、そのなかで工夫して早くしてくれてるのだからありがたい限りよ
内蔵グラにはDX11は重すぎるからDX9モードで遊んでいるが…
廃止とかされるとシンドイな
高速でゲームをしている時に動作が滑らかになるの助かるわ
確かにCK3は軽い印象はある
エンジンの世代のせいじゃったか
話の本筋と全然関係ないが、プレゼンの最中に突然乱入してきて妨害し始めるマックスで草生えた(CppConの動画)