HoI4 開発者日記 第304回 改造!

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

2023/9/18 誤字脱字を修正し、一部表現を手直ししました。


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

今回はゲームの改造についてのお話です。

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

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

スポンサーリンク

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

今回の日記担当はParadox社コミュニティ管理者のPDXKattenさんです。
また後半はMano de Zombiさんが担当します。

冒頭の挨拶

こんにちは、Carloです。
コンテンツデザイナーおよび開発者として、私たちはコンテンツを作成するだけでなく、仕事をより良く、そしてより速く行うための新しいツールを常に見つけようとしています。
またHoI4は改造(Mod制作)が非常に簡単なため、Mod制作もこれらの(開発)ツールを使用できるようになっており、以下で紹介するJoint Focus Treesをはじめとする新たなツールをMod制作の際に使用できるようになります。

Joint Focus Treeはどのように使うのか?

JFT(Joint Focus Tree)の中核部分となるのは共有フォーカス部門です。
それは条件次第で加盟国が設定され、フォーカスの完了が加盟国間で共有され、異なる効果が、フォーカスを完了した国、その他の国、またはすべての国に等しく適用される点にあります。

もちろん内部的にはいくつかの点でShared Focuses(共有フォーカス)とは少し異なります。
最初に気がつくのはtext_iconパラメータであり、後述しますが2番目に気づくのはjoint_triggerセクションでしょう。
これはどの国がJFTの一部と見なされ、対応する効果を得るかを決定するトリガーです。
この場合、同盟国のリーダーの旗を持っているか、この国と派閥関係にあるかをチェックします。

もう1つ、通常のフォーカスツリーと異なる点は、完了報酬に3つの異なるセクションがあることです。

1つ目の通常の古いcompletion_rewardは、すべての有効な国でその効果を発揮し、すべての国で同じ効果を発揮します。

次にcompletion_reward_joint_originatorがあり、これはフォーカスを完了した国でのみ効果を適用します。

最後にcompletion_reward_joint_memberは、フォーカスを完了した国ではない同盟のすべての有効なメンバーに効果を適用します。

基本的には以上です。
シンプルなシステムですが、特に派閥である必要がないため、ユースケースやバリエーションが豊富で柔軟性があることを期待しています。
その最も明白な使用例として派閥を使用しましたが、関係のある国や関係のない国であれば、いくらでもツリーを共有させることができます。
大陸の全ての国?OKです。
すべての共産主義国?どうぞ。
戦争の両陣営の国?止められません!

皆さんがこれをどのように使うかが楽しみです。

フォーカスタイトルの背景

前のポイントでtext_iconパラメータについて触れましたが、これはフォーカスタイトルの背景を変更する機能を提供する方法です。
これはJoint Focus Treeを強化するために追加された機能の1つですが、あらゆる種類のフォーカスツリーコンテンツにおいて役立ちます。

この機能は通常のフォーカスとジョイントフォーカスを素早く区別する方法を求めていた際に生まれました。
最初はフォーカスアイコンのフレームを同じにすることだけを考えていましたが、それでは理想的ではないことが判明しました。

最大の問題はすべてのフォーカスアイコンがすぐに満杯になり読みにくくなることです。

更にツリー全体が五角形になっていると、繰り返し要素が多すぎるように見えました。

最終的に、アートやデザインではこの問題を解決できないことを受け入れ、極端な手段を取らざるを得なくなりました…プログラマーと話すことです。

辛うじて生き延びましたが、大変な作業の末、タイトルの背景を変更できるシステムにすることで合意しました。
これは最高の選択肢でした。比較的簡単に実装でき、目立つし、すべてのアイコンを一から作る必要もありませんでした。
もちろん見た目を正すためにはまだ試行錯誤がありましたが。

設定は比較的簡単です。
最初にnationalfocusview.gfxで設定した4つのGFXエントリを設定する必要があります。
この場合、ほとんどのアニメーションとマスクは正常に動作するため、ほとんどコピー&ペースト作業でした。

00_titlebar_stylesという新しいファイルがあり、スタイルエントリを追加して各状態のGFXを指定し、1つをデフォルトに設定することでフォーカスごとにスタイルを指定する必要がなくなります。

これでtext_iconパラメータで目的のフォーカスを使用して新しいスタイルを使用するだけです。
これらはフォーカスごとに設定されているため、どのようなフォーカスにも対応できます!

ダイナミック フォーカス アイコン

これはJoint Focus Treeのおかげで追加されたもう1つの機能です。
条件に応じてフォーカスアイコンを変更できるようになりました。
これは私が長い間望んでいたことでしたが、今までは実装を行うだけの十分かつ大きな理由を見つけることができませんでした。

最終的にJFTに追加した理由は、いくつかのテーマを区別しながら、複数のイデオロギーとしてプレイするオプションを持たせたいからです。
結局のところ、民主主義同盟は君主制や独裁国家によって形成された同盟とは全く異なる外観を持つべきなのです。

設定方法は非常にシンプルです。
GFXを指定する代わりに、括弧を開けてトリガーと値を入力できます。
最初に真であったものが、そのフォーカスのアイコンとなります!
「dynamic=yes」パラメータを追加することを忘れないでください。

イベント オプションのツールチップの表示

イベントを行うときに最も嫌いなことの1つは、イベントによる両方の効果をツールチップに表示することです。
通常、別のイベントを別の国に送信するイベントオプションがある場合、何が正しい選択なのかをよりよく判断できるよう、あなたの国では何が起こるのか、そしてまた別の国で何が起こるのかを示さなければなりません。
これは常にeffect_tooltipsを追加し、その中で相手側の効果を複製することを意味していましたが、維持管理するには時間がかかり煩わしいものでした。

ああもう(ちょっと)だめです!
ということでevent_option_tooltipという効果を追加し、オプションが表示するツールチップを表示できるようにしました。

これは、If They Accept(受け入れた場合)のツールチップの後に続くエフェクトに対しても非常に便利です。

ただし両側にshow_event_tooltipがあれば無限ループで誤ってゲームをクラッシュするため、FROM内の何かを無視するなど、いくつかの制限があります。
とは言え、これはすでに時間の節約になっていますから、今後改善していきたいと思います。

砦(要塞)の効果を変更する

現実のすべての砦が同じように建てられているわけではありませんが、今までのHoIではそうなっていました。
ノルウェーとデンマークの要塞がどれだけ劣悪で時代遅れなものであるかを表現しやすくするため、追加の何かの要素が必要だったので、要塞によっては攻撃してくる敵に課される攻撃ペナルティを変更するいくつかのパーセント修飾子となるland_bunker_effectivity_factorとcoastal_bunker_effectivity_factorを追加しました。

従来は、劣悪な砦があることを表現したい場合、唯一の選択肢は生産速度を下げることでした。
それは数値的には多少理にかなうものでしたが、テーマ的には少しずれているように感じられました。
非常に早く真に悪い砦を作ることができ、逆もまた同様だからです。

たとえば砦が通常15%のペナルティを課しland_bunker_effectivity_factorの値が-50%の場合、そのペナルティは7.5%に軽減されます。
砦はすでに十分に効果的なので、主に砦を悪化させるためにこの機能を使っていますが、もちろん例外もあります。

私からは以上ですが、Mano de Zombiがまだ皆さんに見せたいものが他にたくさんあるようです!

追加機能、ツール、改善点など

Mano de Zombiです!

晴れたバカンスからこのスウェーデンの大洪水に戻った後、私の人生に意味を与え私が楽しんでいること、そしてこの天気でさえ私にとって破滅することはないことを思い出させるため、私たちが最近受けているコードサポートをいくつか実行する必要がありました。
今回は、ここ数ヶ月の間に我々の素晴らしいコーダーによって追加された機能、ツール、改善点をいくつかご紹介します。

スクリプト化されたLocが動的修正値で使用できるようになりました。

動的修正値が動的に名前を変更できるようになりました(以前は重複を作成して修正値を交換する必要があり、本当に苦痛で醜いものでした)。

create_wargoalのエフェクトに新しいジェネレーターパラメーターを採用

これによりエフェクト create_wargoal のジェネレーターとして配列を使用できるようになり、エフェクトが実行されるまでの世界の条件に基づいてジェネレーターの状態を設定できるようになりました。

  • 必要に応じて、すでに設定されている配列を使用できます。

  • または独自の配列を作成し、必要な要件に基づいて状態を追加することもできます。

CTRL + ALT + クリックの新機能

(デバッグ専用の)ホットキーである、CTRL+ALT+特定のUI要素をクリックするための機能が追加されました。
このホットキーを知らない方のために説明すると、これはスクリプトとデバッグに非常に便利なツールです。
UIの特定のオブジェクトに対して使用すると自動的にファイルが開き、そのオブジェクトが定義されている行に繋がるため、すぐにその背後にあるスクリプトを確認し、必要な操作を行うことができます。
簡単な例:(デバッグモードをオンにして)CTRL+ALT+フォーカスをクリックすると、適切なフォーカスファイルが開き、定義されている行に移動します。

念のために言っておくと、これはフォーカスイベント(国民精神、デザイナー、法律、将校部隊の精神)、決定アイデア(アドバイザー、国家リーダー、ユニットリーダー)、キャラクターテクノロジードクトリンなどで使用できます。
忘れた物があっても許してください、この雨のせいで私の考えがまとまらないのです…。

さて、私たちの素晴らしいコーダーは、利用できないアドバイザーがこれで機能しないというバグ(今現在そうなっています!)問題を修正し、新しい機能が追加され、CTRL+ALT+クリックできるようになりました。

  • 船舶/戦車/飛行機デザイナーのデザイナー モジュール

  • 師団デザイナーの大隊

  • 生産タブの生産ラインと機器

  • Intel Agencyのアップグレード

  • オペレーションとフェーズ

  • MIOと特性

師団長の改善
師団長(フィールドオフィサー)のスクリプト作成方法を少し改善しました。
これでローカライズされた名前とポートレートを使用して、OOBファイルとcreate_unit効果の両方で定義できるようになりました。

random_select_amount パラメータ
この便利な新しいパラメータは、すべてのevery_ [scope] エフェクト(every_character、every_state、every_other_countryなど)に追加できます。
このパラメータは値として整数を取り、この値は背後で実行されている「for」ループを解除するまでにエフェクトが実行される回数です。

以前は例えば3つのランダムな状態にエフェクトを適用する方法がいくつかありましたが、どれも同じ状態にエフェクトを2回適用できないようにするため、スクリプトとカスタムのツールチップが不合理な量必要で、すべてのツールチップが非常にひどい状態になっていました。

それが今やrandom_select_amountを使用すると、非常に簡単な方法で複数のランダムスコープ(州、キャラクター、国…)に効果を適用でき、同じスコープを2回選択して効果の対象となる実際の状態を示す標準ツールチップを生成する必要はありません。

エフェクト&トリガーに非表示のユニットリーダーを含めるためのフィルター
国から見えるか見えないかに関わらず(例えば国がまだフォーカスを完了していないなどの理由で)、全ての陸海空軍の将校にエフェクトを適用する必要がある場合、include_invisibleという新しいパラメータは非常に便利です。
このパラメータはユニットリーダー(every/random/all/any_unit/navy/army_leader)に関連するスコープ付きトリガーおよびエフェクトのフルセットでオプションパラメータとして使用できるようになりました。
デフォルトではfalseに設定されているため、国に表示(アンロック)されているかどうかに関係なく、TAGに属するすべてのユニットリーダーをスコープとする場合にのみ使用する必要があります。

以下は、このパラメータの恩恵を受けるエフェクトとトリガーの完全なリストです。

Every_unit_leader
random_unit_leader
Every_army_leader
randan_army_leader
Every_navy_leader
randan_navy_leader
all_unit_leader
all_army_leader
all_navy_leader
any_unit_leader
any_army_leader
any_navy_leader

ターゲット修正値でのタグとしての変数の使用
targeted_modifierブロック内にtagパラメータとして変数を入力することが可能になり、変数内に適切な国を格納してから適切な国をターゲットにした国民精神を非常に簡単に適用できるようになりました!

以上が私からのすべてです。
また将来の開発者日記でお会いしましょう!


以上

振り返り感想

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

てっきりフィンランドの仮想歴史の開発者日記が来ると思っていたのですが、予想外にModについての内容でした。

来週こそフィンランドの仮想歴史回となるでしょうか。