HoI4 開発者日記 第52回 改造 2016/4/15

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

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

今回は改造、Modの作成についてです。

Hearts of Iron IV - Development Diary 52 - Modding
Hi everyone, this weeks diary is going to get really technical! We will be talking modding and improvements we have made...

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

スポンサーリンク

Hearts of Iron IV 開発者日記 2016年4月15日分 (第52回) 改造

今週の日記は本当に技術的な内容になる予定です!
我々は、HOI4のMod製作者に対して我々が行った改造と改善について話しますす。これはまた非常に長いものになるでしょう。

お知らせ

今回の開発者日記はMod製作者向けの内容になっています。Mod制作しない方にはあまり関係がありませんし、内容もテクニカルな部分が多く難解です。
よって簡単な紹介に留めます。

Mod製作

私たちはHOI4を最もmoddable(改造可能)なゲームにしたいと思った。
それはハードコーディングのことではありません(HOI3にはハードコーディングされたロジックと特定の国への参照がたくさんありました)。
HOI4では、これらのすべてがソフトコード、またはシナリオスクリプトの設定の一部になっており、クールな改造のためのより良いプラットフォームになっています。
私たちはまた、私たちが使用するツール(さらに深い部分まで操作できるもの)を組み込むことに決めました。
それは現実のゲームと比べて制作したModの内容が洗練されていない時に非常に便利です。
ゲームはあなたがMod製作において間違いを犯したときにあなたに知らせることではるかに優れています。
間違っていることは、通常、ログなどで知らせることになります。

ツールと入門

MODの作成を始めるのはこれまで以上に簡単になりました!
HoI4ゲームランチャーのMODツールを使用すると、ゲームを開始することなく、何も手間をかけずに空のMODを作成することができます。

その後、 “-debug”フラグを付けてゲームを開始すると、ゲームを変更するのに便利ないくつかの余裕度チェックとツールを有効にする “modderモード”が有効になります。
たとえば、Nudgerツールを使えばゲーム内の地図のプロパティを変更するための簡単なインターフェイスが提供されます。

ここで私はスメランドからいくつかの州を再分配してÖstergötlandの素晴らしい州を作り、建物の位置を微調整しました。
Nudgerツールは、私の変更を検証して、私と私のmodのための適切なファイルを作り数回のマウスクリックで保存します。

これらのファイルはもちろん人間が読める形式で、お気に入りのテキストエディタで簡単に編集して、より高度なスクリプト作成や小さな変更を加えることができます(状態履歴設定など)。
Nudgerを外部プログラムで開くこともできます。あなたはファイルシステムでそれらをいちいち見つける必要さえありません。

もう一つの素晴らしいツールは右下隅に表示される「Error Dawg」と呼ばれる瞬間フィードバックシステムで、ゲームプレイ中のスクリプトエラーやおかしなことに関するフィードバックを即時に提供します。
それをクリックすると、忘れてしまったスクリプトや他のスクリプトに悩まされていることを痛感しながら、エラーログを開くことができます。

あなたは作ったMODのすべてのエラーを修正し満足ししたら、Mod Toolを使ってSteamワークショップにアップロードすることで、HoI4コミュニティや他のコミュニティとModを共有することができます。

私たちが多くの努力をしてきたことのもう一つは再ロード可能性です。インターフェイスをリロードすることもできます(ファイルが変更されたかどうかをゲームがチェックし、即座に変更が反映されるように自動的にチェックします)。
たとえば、国家方針ツリーが変更に伴ってリロードされるため、作成作業をすばやく簡単に実行でき、常にゲームを再開する必要はありません。

スクリプティングと言語の改善

小さなヘルプ機能の1つにコンソールコマンド “trigger_docs”があります。これにより、ゲーム内にあるすべてのトリガーとエフェクトのリストが表示され、使用方法の小さな説明が表示されます。
これは、新規Mod製作者が探しているものを見つけるための有用なツールとなり、古参のMod製作者は隠れた可能性を発見するのに役立つことを願っています。
私たちはもちろん、間違っているときにあなたに吠えて教えてくれる、愛すべきデバッグ・ドッグを用意しています。

私たちは、スクリプト言語そのものの使いやすさを向上させようと努力し続けています。
したがって私たちは他のゲームで紹介された優れた例を取り入れ、それらをすべてのタイトルに統合しようとします。
私たちが後から移植した追加機能の1つは、スクリプトエフェクトとトリガーです。
これは基本的に、効果やトリガーと言ったブロック全体に実行するゲームのさまざまなスクリプトファイルを参照できるマクロです。

例えば、ドイツの隣国は派閥に属していないというイベントオプションと、世界の他のイベントオプションを表示したい場合があります。
これはあなたのすべてのイベントで共通の出来事であり、これらのイベントオプションのすべてに次のトリガーが必要です。

any_neighbor_country = {
    tag = GER
}

NOT =  { is_in_faction_with = GER }

これは代わりに、スクリプトファイル内のscripted_triggersフォルダ内で次のように定義するスクリプトトリガとして作成できます。

is_neighbor_not_in_german_faction = {
    any_neighbor_country = {
        tag = GER
   }

   NOT =  { is_in_faction_with = GER }
}

これは、異なるイベントオプションで参照される可能性があり、以前に必要とされた複数行の代わりに1行のトリガー(is_neighbor_not_in_german_faction = yes)としてトリガーされます。

よく使用されるトリガーとエフェクトの組み合わせがどんどん複雑になるにつれて、このスクリプト機能には2つの大きな機能があります。
第1に、必要とされるであろうコード複製の量を減少させる。
第2に、イベントの一般的な条件で何かを変更しなければならない状態にあるときは更新が必要な異なる場所のすべてを見つける必要がありますが、この機能を使えばスクリプトされたトリガーの中に追加するだけで、1ヶ所を更新するだけで済みますのでコードを簡単に保守することができます。

スクリプト言語のもうひとつの特長は、特定のスコープをイベントまたはイベントチェーン内のイベントターゲットとして定義する機能です。
この機能は、常にスコープの変更が過負荷になっていたCrusader Kings IIのスクリプト言語よりも優れています。

イベントターゲットを使用すると、さまざまな州や国をイベントテキストで参照し、正しいターゲットに対して効果を実行することが容易になります。
その結果イベントスコープを正しく評価したり、さまざまなアクターや場所を追跡したりすることができます。
そして更に本格的に創造的なものにしたい場合は、これらの2つのスクリプト機能を組み合わせて、イベントターゲットを定義してスクリプトトリガーまたはエフェクトの中で使用して、サブルーチンの一種として機能させることができます。

AI

HOI3のAIはLuaスクリプトで実行されましたが、私たちはHOI4でいくつかの理由でこれらを断念することに決めました(会社での知識の欠如とパフォーマンス低下が大きな理由です)。
AIはまだ非常に改造可能な分野で、多くのスクリプトを修正する必要があります。
私は私が作っているAIについて専用の開発者日記で話をしたいと考えています。

来週は2Dアートやインタフェースについて話します。

以上


感想

今回はMod製作についてでした。
個人的にこの分野に関心があるのでとても興味深かったです(・∀・)
パラドのすごいところはこういった改造をすることを許可しているだけでなく、積極的によりよい開発環境までユーザーに与えている点ですよね。

欧米と日本ではMod文化が異なるのでなかなか難しい面もあるのだと思いますが、もっと日本メーカーもModを解放する方向に向かってくれないかなぁと思う次第です。

HoI4 開発者日記 第52回 2016年4月15日分は以上となります。