かるく

おゲームめいん。

【Hearts of Iron Ⅳ】名前や部屋名の色を変えたい!

f:id:calufate:20200211122508p:plain

 MOD製作やら解説やらは全く進んでおりませんが、本日はTwitterで気になるつぶやきを見掛けたので、そちらのお話をしていこうと思います。

 呟きの内容としましては、マルチプレイ用の部屋名がカラフルになっている画像と共に驚きの声があがっているものでした。本来ならば白い文字でしかできないはずの部屋名がカラフルになっているということで、そういうこともできるのか、と私も驚きました。

 

 ということで、本日は簡単にプレイヤー名や部屋名をカラフルにする方法について調べたので、共有しておきたいと思います。

 

 

 

1.やり方

 まどろっこしい解説は後において、やり方だけ知りたい方にやり方だけ述べておきます。

 実のところ、そこまで手の込んだことは必要なく、

「」

という文字を使えばそれだけで十分だったりします。

 ……はい、実のところ、Twitterでもここでも特殊文字が表示できないので、「これをコピーして」という風に表示することができません。

 しかし、「特別な文字 0~999-特殊文字リファレンス」の「」がそれに該当しますので、「」の左にある謎四角をコピーすることで対応できます。

 

 というわけで、以下では「(特殊文字)」の部分を「特別な文字 0~999-特殊文字リファレンス 」にある「」の左にある謎四角に変換してお読みください。

 

 この謎四角をペーストして「(特殊文字)R(色を変えたい文字列)(特殊文字)!」と並べることで「(色を変えたい文字列)」を赤色に変更することができます。

 例えば「(特殊文字)R(色を変えたい文字列)(特殊文字)!」の中身をコピーしてマルチプレイのところにペーストすれば、

f:id:calufate:20201010134749p:plain

というように名前が赤色になりました。

f:id:calufate:20201010134840p:plain

 このまま部屋を作ると、このように自分の名前が変更されていることがわかりました。

 しかし、赤色だけでは味気ないので、おそらく使える色を一覧にしておきます。

(特殊文字)W(特殊文字)!(白)

(特殊文字)G(特殊文字)!(緑)

(特殊文字)R(特殊文字)!(赤)

(特殊文字)B(特殊文字)!(青)

(特殊文字)Y(特殊文字)!(黄)

(特殊文字)b(特殊文字)! (黒)

(特殊文字)C(特殊文字)! (ライトブルー/シアン)  

(特殊文字)g(特殊文字)!(灰色)

(特殊文字)T(特殊文字)!(青緑色)

(特殊文字)O(特殊文字)!(オレンジ)

(特殊文字)L(特殊文字)!(ダーティーグレイ色?"a dirty grey colour") 

  さて、これらを組み合わせれば自由に色づけすることが可能です。

 例えば、「【(特殊文字)G誰でも歓迎(特殊文字)!】(特殊文字)Lてすと(特殊文字)!【(特殊文字)R1939年まで戦争禁止(特殊文字)!】」という文字列にすれば、

f:id:calufate:20201010140006p:plain

 このような形で色分けすることも可能です。

 また「(特殊文字)RCALUFate(特殊文字)!」という名前にして部屋に入ることで、

f:id:calufate:20201010140352p:plain

f:id:calufate:20201010140404p:plain

 このように名前に色がつくため、マルチプレイでは視認性が上がるので、友人などでプレイする際は個別に色を設定することで誰の発言かわかりやすくなるというメリットがあるかもしれません。ただ、私はマルチプレイほぼ未経験なので本当に視認性が上がるかはわかんないです。

 

 少しだけ詳しく解説すると、「(特殊文字)R」は「以下の文字列を赤色に変更する」というもので、「(特殊文字)!」は「直前までの変更を停止する」というものです。MOD製作をしたことがある方はわかるかもしれませんが、「§R§!」という文字が色を変更できるのと同じ原理です。どうやらマルチプレイやらプレイヤー名だけは「§」ではなく「(特殊文字)」で対応しているみたいですので、それさえ把握すれば問題ないかもしれません。

 

 やり方は以上となります。お疲れさまでした。

【Hearts of Iron Ⅳ】MOD製作 イベント製作:基礎③【初心者向け】

f:id:calufate:20200211122508p:plain

 皆様、こんばんは、私です。

 バレンタインシーズンも終わり、男性諸兄におかれましてはホワイトデーのお返しで頭を悩ませていることでしょう。……そうでもない? それは知らない。まぁ、HoI4プレイヤーの皆様であれば新DLCLa Résistance』(抵抗する者)の発売の方が重要でしょうか。

 さて、前回はイベントを目的の条件下でのみ発生するように調整しました。しかし、それらはあくまで何の効果も発揮しないイベントでした。もちろん、フレーバー的なイベントもゲーム展開に味を持たせるために重要なものではありますが、よりダイナミックにゲームに変化を加えるためには様々な効果をもたらすイベントが必要です。

 今回は、イベントに効果を付与させてよりダイナミックに場面を動かしていくイベント製作についてみていきましょう。

 

 今回の記事では、根本的なイベント製作方法についての知識を前提として話を進めていきますので、それらについて自信のない方は先に以下の記事を読まれると、理解の一助になるやもしれません。

calustrategy.hatenablog.com

 

 

1.効果のあるイベント

1-1.効果の付与

 新しく1からイベントを考案するのも面倒なので、前回使った「帝都不祥事件(二・二六事件)」に効果を加えていくことにしましょう。

 ちなみに、「帝都不祥事件」のイベントはこんな感じでした。

f:id:calufate:20200212232931p:plain

 「帝都不祥事件」は青年将校たちのクーデター未遂ということで、このイベントでは「安定度の低下」というデバフ効果を実装したいと思います。

 

 このようなイベントまたは国家方針、ディシジョンなど様々な場面において効果を発揮するのが「Command」です。「安定度の低下」もそうですし、「研究ボーナスを付与」「特定の州を中核州へ」「特定の国家を傀儡へ」「建造物を追加・削除」というその場その場で効果が発揮するものは、「Command」を用います。「Command」はかなり応用が利くものですので、発想次第でかなり面白い効果を発揮させることも不可能ではありません。そこはMOD製作者の腕の見せ所と言えるでしょう。

 

 では、早速、目的の「Command」を探して使っていきましょう。

 英語が読める方は「Commands」を、英語を見たくもない方は「MOD/コマンドリスト」を参考に目的の「Command」をまずは見つけましょう。当該ページを開き、キーボードの「Ctrl」と「F」キーを同時押しで右上に検索欄を出し、「Commands」の場合は「stability」で、「MOD/コマンドリスト」の場合は「安定度」で検索すると「add_stability」という項目と「set_stability」という項目の2つが見つかると思います。

 両者も使用例にあるように「add_stability = 0.1」や「set_stability = 0.5」のように等号の先を小数で指定して使うものです。この場合、小数は100分率で考える必要があるので、「0.1」は「10%」のことであり、「0.5」は「50%」のことです。そして、前者が「add(加える)」とあるように「現在の値に加える」ものであり、後者が「set(設定する)」とあるように「現在の値をこの値にする」ものです。例えば、現在の安定度が90%の国家で「add_stability = 0.1」の効果が発揮すると安定度は90%に10%を追加して安定度は100%になりますし、「set_stability = 0.1」の効果が発揮すると安定度は90%から10%になります。90%から10%まで安定度が落ちるイベントってなんだ……。

 

 今回は「現在の安定度を増減させる」ことを目的としているため、より適切な「add_stability」の方を使っていきましょう。

 ご存知の通り、多くのイベントでは選択肢を選んだ時に効果を発揮します。なので、今回は選択肢の段落である「option = { }」にそのまま追記していきましょう。

f:id:calufate:20200226163837p:plain

 今回は「add_stability =」の等号の向こう側を「-0.05」にしています。「add_stability」は安定度を増加させる「Command」ですが、その増加する数字が「-(マイナス)」であれば当然減少方向に作用してくれます。今回は「-0.05」なので「安定度を5%減少する」という効果になっているはずです。

 

 早速確認をしていきましょう。

 まずはMODを有効にしてからHoI4を起動し、日本を選択してイベントが発生するまで待ちます……というのも不毛なので、こちらから強引にイベントを起動させてみましょう。

 HoI4でキーボードの「半角/全角キー」を押すと左の方に枠が出てくるのはご存知の方も多いかもしれません。

f:id:calufate:20200226165919p:plain

 これは「Console」で、ここから特定のコマンドを利用することで、所謂チート的なことが行えます。まぁ、チートはさておき、MOD製作者にとっては自作したイベントや国家方針の確認などの際に手早く確認が行える機能なので便利です。

 早速「Console Command」を入力して、と言いたいところですが、通常環境で「半角/全角キー」を押したら入力が日本語になってしまい、かといってもう一度「半角/全角キー」を押したら枠が消えてしまうというジレンマに襲われると思います。私の場合はWindowsの機能で「半角/全角キー」の本来の機能を「Shift + Enter」で行うようにしているため、これを起動させても半角入力が可能になっています。

 今から皆様にはその設定を、というのも面倒なので、ここは大人しく枠を出現させてからキーボードの「Caps Lock」を押して強制的に半角入力しかできないようにしてみましょう。私の環境では完全に同じ状況が再現できないので、確実にできるかはわかりませんが、これでおそらく「Console」を開いて半角入力ができるようになったと思います。駄目だったら、コメントか何かで教えてもらえたらまた何か方法を考えます。ちなみに、「Caps Lock」の解除は再び「Caps Lock」を押せば大丈夫です。

 この「Console」で使える「Console Command」も多くあるので、確認したい方は「Console Commands」か「データ集/チートコード」を見ましょう。

 イベントを確認するための「Console Command」は「event」という非常にわかりやすいものです。使い方としては「event」と入力し、半角スペースを空けてから「イベントID」を入力すればそのイベントが発生します。今回「帝都不祥事件」の「イベントID」は「stm.1」なので「Console」に「event stm.1」と入力し、Enterを押すと「帝都不祥事件」が発生します。

f:id:calufate:20200226171935p:plain

f:id:calufate:20200226171957p:plain

 マウスカーソルを選択肢の上に置いてみたところ、狙い通り「安定度の基本値に-5%」という効果があります。

 ちなみに、このとき「Console」を見ると、このイベントの発生条件が確認できます。以前実装した通りなので問題ないこともわかります。

 

 以上で選択肢に効果を与える、という基本事項は達成できました。あとは「Commands」や「MOD/コマンドリスト」を参考にしながら目的の効果を同じように付与していくことで、自分が望む効果のイベントを作れるようになると思います。

 

1-2.連続するイベント

 上ではイベントの選択肢に「Command」を使って効果を付与する方法をみてきました。この「Command」の中には様々な効果のものが存在し、どのようなイベントを作りたいかによって使い分けていくことになりますが、その中でも使用頻度が非常に高く、MODを製作上では欠かせない「country_event」について触れていきたいと思います。

 

 「country_event」の効果は「特定のイベントを発生させる」というものです。つまり、あるイベントが発生し、そのイベントの選択肢によって、さらにイベントが発生する、という連続するイベントを作ることができます。

 例えば、「ダンツィヒか、戦争か」では、国家方針でドイツが「ダンツィヒか、戦争か」を完了することで、ポーランドにドイツに屈するか対抗するかを選択するイベントが発生します。さらにそのイベントによるポーランドの選択によって、ドイツにポーランドダンツィヒを差し出したあるいは戦争を選んだという報告のイベントが発生します。

 これらのイベントは、事前のイベントによってさらに後続のイベントが引き起こされる、という連続した構成になっています。このような場合に「帝都不祥事件」のような特定の条件下での発生とするには不都合が多いため、「country_event」によって後続のイベントを発生させていくという形をとることになります。

 

 と、長々と説明しましたが、実際にやってみた方が早いでしょう。

 

 「帝都不祥事件(二・二六事件)」では連続するイベントは少しばかり考えづらいですが、あくまでMOD練習なので強引でも適当にイベントを展開させていってみましょう。MOD製作は何をやったって良いのです。

 というわけで、内容は後々考えるとして「帝都不祥事件」の選択肢次第で発生するイベントを新しく用意します。

f:id:calufate:20200227115835p:plain

 用意しました。新しいイベントは基本的に下に新しくコピーして貼り付けをしてから数字を一つ増やせば完了です。皆様の場合は「stm.2」になるかと思いますが、私の場合は前回のおまけで一つイベントを追加していたので、「stm.3」になっています。この数字は必ず一つずつ増やさないといけない、という類のものではありませんので、「stm.2」を作らずに「stm.3」を作っても問題ありません。

 さて、内容は決めていないこのイベントですが、このまま実装してこのイベントIDを「country_event」で発生させる、というだけでは不都合があるということにお気づきでしょうか。「trigger = { }」が存在せず、「何の条件もなく発生するイベント」になってしまっていますね。これでは以前試したように、勝手に何度もこのイベントが発生することになります。あくまで一つ前の「帝都不祥事件」の選択肢の結果を受けて発生するイベントにしたいのに、それでは不適切です。

 そこで、今回はこれを「country_event」によってのみ発生するイベントであることを指定するために「is_triggered_only = yes」(トリガーによってのみ発動)を使っていきたいと思います。これは「fire_only_once = yes」と使い方は同じです。「country_event = { }」の中に直接記述します。

f:id:calufate:20200227121132p:plain

 これでこのイベントは「country_event」という「Command」でのみ発生するようになりました。勝手に何度も発生して鬱陶しいという事態にはなりません。

 発生するイベントを用意できたので、実際に「帝都不祥事件」からこのイベントを発生させるようにしてみましょう。この場合は、他の「Commad」と同様に「option = { }」の中に「country_event」を記述していきます。

f:id:calufate:20200227121830p:plain

 「option = { }」の中にある「Command」の「country_event = { }」は「id = 」と「days = 」を指定する必要があります。「id = 」は当然、後から発生させるイベントのことです。そして「days =」はそのイベントが何日後に発生するのかを指定しています。勿論、すぐさま後続のイベントが発生する場合は「days = 1」やもしくはここは「hours = 」(時間)も使えるので「hours = 1」にすれば即座に後続のイベントが発生します。

 しかし、実際には多くの出来事は数日やそれ以上の期間をかけて起こっていくもので、選択肢を選んで即座に次のイベントが発生するのは違和感がありますし、何よりそんなに詰められてイベントを発生されてはプレイヤーが疲れてしまいます。

 なので、自分が実装したいイベントがどれほどの期間で進んでいくのか、どれくらいの頻度ならプレイヤーの負担にならないかはしっかりと考えながらイベントが発生するまでの日数は決めていきましょう。

 今回は「days = 2」となっているので、選択肢を選んだ二日後に「stm.3」が発生することになるはずです。早速、HoI4で確かめてみましょう。

f:id:calufate:20200227124456p:plain

f:id:calufate:20200227124516p:plain

 「Console」で「event stm.1」と入力し「帝都不祥事件」を発生させ、選択肢を押して丁度2日後に「stm.3」のイベントが発生しました。無事、「country_event」の実装を行うことができたようです。

 

 実装自体はここで完了ですが、折角ですので、選択肢を増やしたり、訳を追加してそれっぽい形にしていきましょう。

f:id:calufate:20200227143639p:plain

f:id:calufate:20200227143654p:plain

f:id:calufate:20200227143707p:plain

f:id:calufate:20200227143917p:plain

f:id:calufate:20200227143937p:plain

f:id:calufate:20200227143957p:plain

 というわけで、強引に「Console」でイベントを二回発生させて両方の選択肢を選びましたが、無事、それぞれのイベントが発生しました。例えば、ここから「譲歩」を選んだ場合にはより内戦を誘発しやすくしていったり、政体に影響を及ぼすようなイベントを継続して発生させると、より面白くなるかもしれません。

 

 連続するイベントの実装は以上です。お疲れさまでした。

 

2.最後に

2-1.まとめ

 「is_triggered_only = yes」のイベントはその利便性からかなり使用頻度が高くなると思います。選択肢を選んで効果が発揮しておしまい、ではなく、他国にも影響を及ぼすようなイベントの場合、そちら側の報告イベントも用意しなければ、勝手に数値が変更する、という奇妙な挙動になり、その国を操作するプレイヤーとしては納得がいかないでしょう。勿論、当該国家以外のプレイを想定しないMODであればそれでも大丈夫かもしれません。それは製作者次第ですので、労力と比較しながら検討すると良いと思います。

 これでイベントに関する基礎的な部分については解説したと思います。あとは「Command」や「Condition」にどのようなものがあるかを把握していけば、かなりのイベントが作れるようになると思います。ここまでお疲れさまでした。たくさんイベントを作ってMODを増やしていきましょう。

 

2-2.おまけ:二・二六事件

 さて、ここまで実装してきた「帝都不祥事件」ですが、多くの方が思っているようにできれば2月26日に発生させたいものです。勿論、HoI4には直接日付を指定したりすることはできません。

 少し詳しい話をするのであれば、例えば「date > 1936.02.25」「date < 1936.02.27」のようにしたとしても、「イベントが条件を満たしているか?」のチェックがデフォルトでは「20日ごと」に発生するため、あまりに期間が短いものについては発生せずに終わることになります。無論、そのチェックの頻度も変えることはできますが、頻度を高くしてしまうとゲームが重たくなるのであまり推奨できません。

 

 では、2月26日に丁度イベントを発生させることはできないのでしょうか。確かにHoI4では「N月N日」と日付を指定することはできませんが、非常に都合が良いことに「Command」の「country_event = { }」では「N日後」と日付を指定することが可能です。

 どういうことか、実際にやっていってみましょう。

f:id:calufate:20200227160621p:plain

 まずは「stm.1」を「country_event」でしか発生しないようにするために「is_triggered_only = yes」を追加。

 ここからですが、バニラのHoI4にある「history/countries/JAP - Japan.txt」を「mod/shoshinsha_test_mod/history/countries/JAP - Japan.txt」となるようにコピー。

f:id:calufate:20200227161039p:plain

 コピーした「JAP - Japan.txt」を開いて以下のように記述します。

f:id:calufate:20200227161539p:plain

 これはゲーム開始と同時に「Command」を使用し、ゲーム開始時である「1936年1月1日」から「56日後」である「1936年2月26日」に「stm.1」のイベントを発生させる、というものです。かなり強引な手法ではありますが、これによって「二・二六事件」を実装することも可能です。

f:id:calufate:20200227161716p:plain

 「二・二六事件」はゲームが始まったばかりの時期なので、この手法でも大きな問題はありませんが、これ以上に先となるとかなりゲーム展開などにも左右されるので、いつでも使える手段ではありません。しかし、このように序盤では使えないこともない手法ですので、何かに役立てば良いと思います。

 

 おまけは以上です。今回でイベントの基礎的な部分は終わりましたので、とりあえず、国民精神あたりを解説してから国家方針につなげていけたら良いかな、という風に考えていますが、予定は未定です。

【Hearts of Iron Ⅳ】MOD製作 イベント製作:基礎②【初心者向け】

f:id:calufate:20200211122508p:plain

 HoI4プレイヤーの皆様、こんにちは。バレンタインシーズンをいかがお過ごしでしょうか。バレンタインだったので久々に買ったガーナチョコレートの銀紙が桃色に変わっていて、「これがバレンタイン……」と驚いた私です。

 前回は根本的なイベント製作方法について見ていきました。しかし、あれだけでは完全に無意味なイベントです。ここで言う無意味というのは「何の効果もない」という意味ではありません。何の効果もないイベントだったとしても、フレーバーとしてプレイヤーを大いに楽しませられるのなら、それはとても意味があるイベントです。では、何を以て無意味とするのでしょうか。今回は、意味のあるイベント製作について見ていきたいと思います。

 

 今回の記事では、根本的なイベント製作方法についての知識を前提として話を進めていきますので、それらについて自信のない方は先に以下の記事を読まれると、理解の一助になるやもしれません。

calustrategy.hatenablog.com

 

 

1.「イベント」

1-1.前回のイベント

 前回製作したイベント文は以下のようなもので、実際にプレイしてみると以下のようなイベントが発生しました。

f:id:calufate:20200211034408p:plain

f:id:calufate:20200211050545p:plain

 文章の内容はともかく、フレーバーとしてのイベント製作方法としては問題ないように思えますが、試しにこのMODを入れた状態でしばらくプレイしてみました。

f:id:calufate:20200211133046p:plain

f:id:calufate:20200211133108p:plain

 イベントの「Paradox万歳!」を選択しておよそ20日後、再び同じイベントが発生しました。その後もおよそ20日前後で同じイベントが発生し続けます。また、このイベントはすべての国で発生しているようなので、このMODは「すべての国に対して「id = stn.1」のイベントが20日ごとに何度も発生するMOD」になっているわけです。

 私が無意味だと断じたのは、いくらフレーバー的なイベントであっても、特に脈絡もなく、すべての国に何度も発生するイベントでは何の味付けにもならず、むしろプレイヤーに対する嫌がらせになりかねないからです。例え、どんなに面白おかしいイベント文であろうと、さすがに何の脈絡もなく発生しては興ざめです。

 

 そこで、今回はイベントを狙ったタイミングで発生させるような方法について、私が調べたことを皆様と共有していきたいと思います。

 

1-2.条件付け

 イベントが「どのようなタイミングで」「どのような国家で」発生するかは非常に重要です。例えば、「ダンツィヒか、戦争か」というイベントが20日ごとに勝手に発生しては意味が分かりませんし、「パナマ」で発生しても仕方ありません。

 

 まずは、イベントを狙った条件下で発生させる方法をみていきましょう。

 イベントには「発生条件」を指定することが可能です。前回作ったイベントではこの「発生条件」を何も指定していないので、無条件に何度も発生するイベントになってしまっていました。これを「発生条件」を指定することで、意味を持たせていきます。

 ただ、前回のような何も考え無しのイベントでは、どのような「発生条件」を考えれば良いのかわからないため、今回は「二・二六事件」というフレーバーイベントを追加していきたいと思います。

 

1-2-1.条件考案

 「発生条件」を実装するためにも、「二・二六事件」がどのような条件下で発生するかを考えていきましょう。

 一つは「大日本帝国」であることが条件として必要でしょう。世界中の国で発生しても仕方ありません。もう一つ、出来れば「2月26日」に発生することが望ましいですが、残念ながらHoI4は直接イベントの日付を指定して発生させるようにはできません。なので、妥協して「1936年の2月中」に発生するようにしましょう。

 つまり、

を「発生条件」として考えることができます。

 ただ、個人的にはこのようなイベントの場合、「二・二六事件」としてしまうとイベント名が発生した日付と合致せず、「二・二六事件」という名前に違和感があるので、今回は「帝都不祥事件」という名前で実装したいと思います。

 

1-2-2.条件実装

 「発生条件」は「trigger = { }」という形式で指定することができます。「trigger(引き金)」なので、引き金に指を掛けたら発動するようになる、という意味合いでしょうか。

 早速、前回作ったイベントに「trigger = { }」を実装します。「trigger = { }」は「id」や「title」、「desc」、「picture」、「option」と同じ段落に記述します。

 ちなみにMODでは「{}」で区切りをしているので、以下の記述では「country_event = { }」で一つの区切りになっており、HoI4に対して「「country_event」の「{」から「}」までが一つのイベントである」という区切りを判別させています。また、「country_evet = { }」内にある「trigger = { }」と「option = { }」でさらに別々の区切りとなります。この「{}」を忘れると、HoI4はどこまでが区切りなのか判別できずにエラーを起こすことになるので、「}」で閉じることは忘れないように気を付けてください。よくやります。

f:id:calufate:20200211154636p:plain

f:id:calufate:20200211155800p:plain

ちなみに「Notepad++」では「{}」がどこに対応しているか、赤く表示してくれる。

 「国が大日本帝国である」という条件は「tag」というもので指定することができます。「tag = 国家タグ」と記述することで、当該国家タグを有する国家でのみ、このイベントが発生することになります。国家タグは「HoI4 日本語Wikiのデータ集の中の国家タグ」から確認できます。「英語の国名や国旗でもどの国か判別できる!」という方は「HoI4WIKIのCountries」からでも確認できます。

 大日本帝国の国家タグは「JAP」となっているので、「trigger = {}」の中に「tag = JAP」と記述してこのイベントが大日本帝国だけで発生するようにしましょう。

f:id:calufate:20200211161136p:plain

 これで「stm.1」というイベントは大日本帝国でのみ発生することになりました。ここで「tag = USA」にするとアメリカでのみ、「tag = TIB」にするとチベットでのみ、このイベントは発生します。

 一つ目の「発生条件」は指定できたので、続いて「1936年2月中」という条件を指定します。直接「1936年2月中」という条件は指定できないので、今回は二つの条件を併用することでこれを再現したいと思います。

 日付は「date」を使用して条件付けできます。例えば「date < 1936.02.29」とすると「1936年2月29日以前の日付である」ということが条件となります。これと同時に「date > 1936.02.01」を使用すると「1936年2月1日以降で1936年2月29日以前の日付である」ということが条件となるため、「1936年2月中」という条件を達成することができます。このようにMODでは複数の条件を併用して、望む条件を付ける必要があるため、自分が望む条件を具体的に想像し、それに見合うように条件を組み合わせていきましょう。

 

 では、これをさらに追加して「大日本帝国である」「1936年2月中である」という条件でイベントを実装してみましょう。

f:id:calufate:20200211164046p:plain

 このままでは少し「trigger = { }」の中身が見づらいので、改行とTabを使って整理します。

f:id:calufate:20200211164233p:plain

 これで望む条件でイベントが実装されたはずです。早速試してみました。

f:id:calufate:20200211164743p:plain

 「大日本帝国」でプレイしたところ、1月中にはイベントは発生せず「2月中」にイベントが発生しました。その後は2月を過ぎると、イベントが発生する様子もなく、指定した条件がうまく機能しているであろうことが確認できました。念のため、サウジアラビアでもプレイしてみましたが、3月に入ってもイベントが発生する様子はなかったので、国の指定もうまくいっているようです。

 イベントの条件付けが上手くいったようなので、最後に前回記入した「イベント名」「イベント文」「選択肢」を改変していきましょう。まずはフレーバー的なイベント予定なので、「選択肢」を一つ削ります。「stm.1.b」の「option」は不要なので削除し、「option」を一つだけにします。

f:id:calufate:20200211165527p:plain

 さらに「mod/shoshinsha_test_mod/localisation/stm_l_english.yml」の中身を適当に変えていきます。

f:id:calufate:20200211170130p:plain

 これで完了したので、HoI4を起動させて確かめてみます。

f:id:calufate:20200211170510p:plain

 これで「帝都不祥事件」がイベントとして実装できました。イベント文はWikiからコピペしただけなのであれですが、もう少しこだわってこの時期の日本の不穏な空気感を再現できればフレーバーとしてとても意味のあるイベントになると思います。

 

1-2-3.条件の見直し

 さて、無事、「大日本帝国」で「1936年2月中」に「二・二六事件」を実装できましたが、果たしてこの条件だけで良いのでしょうか。確かに史実プレイでは特に問題ありませんが、例えば国家方針の「皇道派を支持」を初手で選択していたとしたらどうでしょう。「皇道派を支持」は35日で完了し、初手で選ぶと2月の頭には完了していることになります。その場合、皇道派を推奨している状況下で「二・二六事件」がそのまま勃発するのは違和感があります。

 よって、もし国家方針の「皇道派を支持」をイベント発生までに完了している場合には、このイベントを発生しないようにしたいと、私は思いました。

 つまり、

という3つの条件を実装していきたいと思います。

 

 国家方針が完了しているかどうかの条件付けは「trigger = {}」に「has_completed_focus」を使用することで再現できます。そのままこれを日本語的に読むと「フォーカスを完了した」という意味合いになります。どのように使用するかと言うと、「has_completed_focus = (完了したかチェックしたい国家方針のID)」という形式で使っていきます。「国家方針のID」とはそれぞれの国家方針をデータ上で管理するために与えられる文字列です。TwitterのIDと同じようなものだと思って構いません。すべての国家方針やイベントにはこのIDが割り振られていて、MOD製作する上では名前ではなく、このIDで管理していきます。

 では、まずは「皇道派を支持」のIDを調べていきます。日本の国家方針のデータが入っている「バニラのHoI4のデータ」である「common/national_focus/japan.txt」を開いてから「検索」で……と言いたいところですが、何と検索すれば良いのかわかりづらいと思います。そこで、今回はHoI4のゲーム画面から直接確かめる方法を使いましょう。

 「Steam」の「ライブラリ」から「Hearts of Iron Ⅳ」のタイトルを右クリックして「プロパティ」を選択。

f:id:calufate:20200211174850p:plain

 出てきたウィンドウの「起動オプションを設定…」を選択。

f:id:calufate:20200211175108p:plain

 枠内に「-debug」と入力し、「OK」を押して準備完了です。

f:id:calufate:20200211175209p:plain

 そのままHoI4を起動します。このとき、「error.log」というメモ帳が起動すると思いますが、今のところはあまり関係ないので無視して閉じて貰って大丈夫です。

 この状態から日本を選択してゲームを開始し、国家方針の上にマウスを乗せると、名前の下に「Focus ID」が見え、「皇道派を支持」は「Focus ID = JAP_support_the_kodoha_faction」であることが確認できました。

f:id:calufate:20200211181857p:plain

 ここで注意なのですが、「-debug」の状態ではマルチプレイをできないので、MOD製作を終えたときやマルチプレイに参加する場合には、再度「ライブラリ」から「起動オプションの設定…」を開いて「-debug」を削除しておきましょう。毎回「error.log」が立ちあがるのも面倒ですし。

 

 「皇道派を支持」のFocus IDも判明したので、早速「trigger = {}」の中に条件を追加していきます。

f:id:calufate:20200212180717p:plain

 条件を追加できましたので、保存してから再度HoI4を起動してみました。しかし、待てど暮らせど一向に「stm.1」のイベントは発生しません。不審に思って、ニューゲームを行い、今度は「皇道派を支持」を完了させてからしばらく待つと、ようやく「stm.1」のイベントが発生しました。

f:id:calufate:20200212182020p:plain

  このことからわかるように、この「has_completed_focus」は「対象のFocus IDが完了していた場合」という条件の判断を行うものであって、「対象のFocus IDが完了していない場合」という条件の判断を行うものではありません。これをどのようにMODで実装すれば良いのでしょうか。これは条件を読み替えて「対象のFocus IDが完了していた場合という条件を達成していない場合」という風に考えます。というわけで、「has_completed_focus」を否定してあげましょう。 HoI4のMODにおいて条件の否定は簡単で「NOT = { }」を使用します。

 

 早速、「stm.1」の条件に否定を加えましょう。

f:id:calufate:20200212195052p:plain

 実際に使ってみたところ、狙い通り、「「皇道派を支持」を完了した状態ではない状態」で「帝都不祥事件(二・二六事件)」が発生しました。念のため、「皇道派を支持」を完了した状態で待ってみると、3月になっても「帝都不祥事件」は発生しませんでした。

f:id:calufate:20200212195531p:plain

 これでようやく「帝都不祥事件(二・二六事件)」の実装が完了しました。お疲れさまでした。

 

1-2-4.条件の見直し2

 一応、前述の条件で「帝都不祥事件(二・二六事件)」は問題ない、と考える方も多いかもしれません。しかし、私は一つだけ気になることがありました。それは「皇道派を支持」から「近代幕府」という分岐に進んだ場合、それは「帝都不祥事件(二・二六事件)」を止められるのでしょうか。

 実際の歴史的な議論は私にはわかりませんが、少なくともイベントを作る私は、「皇道派を支持」を完了していたとしても「近代幕府」の道に進むのならば「帝都不祥事件(二・二六事件)」が発生するようにしたい、と思いました。

 このような場合、どのように条件を考えれば良いのでしょうか。

 

 まず、そもそもの「帝都不祥事件」の条件として、

は必要です。同時に「皇道派を支持」を2月の頭までに完了していたとしても、

  • 「近代幕府」を完了した

 という条件を満たすならば「帝都不祥事件」を発生させた方が良いと思ったとします。

 このとき、「下の条件に「大日本帝国である」を加えなくて良いの?」と思う方もいらっしゃるかもしれません。おそらくイベント製作の「条件付け」に対して深い理解を得られた方だと思います。今回の場合は、「近代幕府」という国家方針が「大日本帝国」にしか存在せず、世界中で「近代幕府」を完了させるという条件を満たせるのが、自然と「大日本帝国」だけになるため、今回の場合は「大日本帝国である」という条件は不要になります。もちろん、「tag = JAP」を追加しても問題ありませんが、出来るだけ節約した方がバグの可能性を減らせるので、今回は省略します。

 話を戻して、このように二つの条件のうち、どちらか一方を満たす場合、という条件付けもHoI4では行えます。それが「OR = { }」です。

 

 実際に、一つ目の条件と二つ目の条件のどちらか一方を満たしている場合、という条件を作ってみましょう。まず、「-debug」の起動オプションを入力した状態でHoI4を起動させ、「近代幕府」のFocus IDを確認します。確認してみると、「JAP_modern_shogunate」であることがわかりました。

f:id:calufate:20200212204207p:plain

 必要な情報はそろったので、条件を記載しましょう。

f:id:calufate:20200212204532p:plain

 さて、これで、

または

  • 1936年2月29日以前である

または

  • 1936年2月1日以降である

または

  • 皇道派を支持」を完了していない

または

  • 「近代幕府」を完了している

といういずれかの条件で「帝都不祥事件」が発生します。

 ……駄目ですね。この状態ではHoI4は条件が5つある中の、いずれかを満たした場合に「帝都不祥事件」を発生させてしまいます。私たちはあくまで二つの条件群のどちらかを満たした場合に「帝都不祥事件」が発生するようにしたいです。そこで、複数の条件をまとめて一つの条件群にするために「AND = { }」を使って、上の4つの条件をひとまとめにしましょう。

f:id:calufate:20200212205307p:plain

 これで、

または

  • 「近代幕府」を完了している

という条件を実装できました。

 実際にプレイをしてみると、「皇道派を支持」を完了している状態ではイベントが発動しませんが、「近代幕府」を完了させたところ、4月なのに「帝都不祥事件」が発動しました。無事、条件を達成です。

f:id:calufate:20200212212427p:plain

 が、今度は5月にも「帝都不祥事件」が発生しました。

f:id:calufate:20200212212706p:plain

 これは、前半の条件には「1936年2月中」というものがあったので「1936年2月」を過ぎればイベントが再度発生することはありませんでしたが、後半の条件は「近代幕府」を完了しているということだけなので「近代幕府」を完了して以降はずっと条件を満たしていることになり、何度も発生するようになってしまっています。

 しかし、このイベントは一度発生すれば十分ですので、一度だけ発生するようにしましょう。

 

 イベントが一度だけ発生するようにするには、「fire_only_once = yes」を用います。日本語的には「一度だけ発動」という意味合いになると思います。これを「stm.1」のイベントに追記していきましょう。「fire_only_once = yes」は「trigger = { }」と同じ並びで「country_event = { }」の中に記載します。

f:id:calufate:20200212215713p:plain

 これで「帝都不祥事件」は一度しか発生しないイベントになりました。試しに「近代幕府」を完了させると、一度だけ「帝都不祥事件」が発生しましたが、その後は発生することはありませんでした。

 

 

1-2-5.イベント画像

 蛇足ですが、公開する予定もないMODなので、Wikiから画像をお借りしてイベントの左下の「picture」も変更してさらに雰囲気を出しましょう。イベントの画像は「210×176ピクセル」みたいなので、以前と同じように調整して「.dds」の画像を用意しましょう。このとき、イベント画像は微妙に斜めらせないといけず、斜めらせない場合は変がウィンドウ枠と平行な感じで表示されますが、気にしない方は割と面倒くさい作業なのでやらなくても良いと思います。

 用意したイベントの画像は「gfx/event_pictures/」に保存してあげます。今回、私は「210×176ピクセル」で「mod/shoshinsha_test_mod/gfx/event_pictures/report_event_japan_niniroku.dds」というファイルを用意しました。

 しかし、今回はただ「gfx/event_pictures/」に画像を追加して、そのファイルの名前をイベントの「picture = 」に書くだけでは上手くいきません。イベントの画像や国民精神のアイコン、おそらく国家方針のアイコンなども、一旦、別のファイルを通して「Focus ID」のようなIDを与えてあげる必要があります。そのファイルが「interface/」にあるので、「mod/shoshinsha_test_mod/interface/」に新規作成でテキストファイル(.txt)を用意してあげましょう。名前は既存のHoI4のバニラのファイルと被らなければ何でも大丈夫ですが、拡張子は「.txt」から「.gfx」に変更してください。私は「shoshinsha_test_mod.gfx」にしました。

f:id:calufate:20200212230847p:plain

 新規作成した「mod/shoshinsha_test_mod/interface/shoshinsha_test_mod.gfx」をテキストエディタで開いて、バニラのHoI4のデータの「interface/」にあるファイルと同じように形式で記述していきます。まずは「spriteTypes = { }」を追加します。

f:id:calufate:20200212231412p:plain

 続いて新しく追加した画像にIDを設定してあげましょう。これには「spriteType = { }」を使う必要があるみたいです。以下のように追加していきます。

f:id:calufate:20200212231702p:plain

 ここで「name = ""」の「""」の中身が写真のIDになります。自由に名付けることができますが、出来るだけわかりやすくしておきましょう。私は「バニラのHoI4のデータ」と似たように名付けた方が管理が楽なので、今回は「GFX_report_event_japan_niniroku」としておきます。

 次に「texturefile = ""」を使ってこの「name」で名付けたIDがどの画像に対応しているかを指定してあげます。今回は「gfx/event_pictures/report_event_japan_niniroku.dds」の画像のIDなので「texturefile = ""」にこれを記述してあげます。

f:id:calufate:20200212232516p:plain

 これでイベント画像の追加ができましたので、最後に「stm.1」の「picture = 」を「GFX_report_event_japan_niniroku」書き換えて完了です。

f:id:calufate:20200212232931p:plain

 ファイルを上書き保存してからHoI4を再起動させて、イベントを発生させてみましょう。

f:id:calufate:20200212233452p:plain

 無事、左下の画像が実装されました。

 

 ここまでお疲れさまでした。これで本当にフレーバーイベントである「帝都不祥事件」の実装が完了しました。

 

2.最後に

2-1.まとめ

 いかがだったでしょうか。これで「国家」「日付」「国家方針を完了したか否か」という条件で発生するフレーバーイベントは実装できるようになりました。

 これを使えば以下のようなフレーバーイベントを実装することもできます。

f:id:calufate:20200212234008p:plain

f:id:calufate:20200212234746p:plain

f:id:calufate:20200212235156p:plain

 さて、皆様は「stm.2」のコードを見ただけでどのようなイベントなのかご理解することはできたでしょうか。できた方もできなかった方も、新しいイベントをどんどん作って慣れていってみましょう。

 

 それでは、ここまでお疲れさまでした。イベントに関する条件付けの実装方法は以上となります。「trigger = { }」に使えるものは「tag」や「date」、「has_completed_focus」以外にもさまざまにありますが、量が多くて今回だけでは並べられません……。もし「英語は大丈夫!」という方や「気合でやる!」と言う方は、HoI4WIKIの「Conditions」からご確認ください。私が全部は無理、と申し上げさせていただいている理由もご理解いただけるかと思います。

 次回以降は、さらにイベントに関する内容を取り扱いたいと思います。また次回もよろしくお願いいたします。

 

 今回は特に思いつかなったので、おまけはありません。

【Hearts of Iron Ⅳ】MOD製作 イベント製作:基礎①【初心者向け】

 HoI4プレイヤーの皆様、こんにちは。私です。

 さて、この記事を開いていただけたということは、HoI4のMOD製作に、真剣にせよ、好奇心にせよ、多少なりとも関心があるのだと思います。今回は、HoI4のMODの中でも重要な位置を占める「イベント」の製作について触れていきます。

 

 この記事内ではフォルダの位置を「Documents/Paradox Interactive/Hearts of Iron Ⅳ/mod」のように表記したり、最低限のMOD製作の知識を前提とするものです。これらについてあまり自信がない方は、事前にこちらの記事をお読みいただけると理解の一助になるかもしれません。

calustrategy.hatenablog.com

 

 また、今回から『メモ帳』ではなく、私が普段使っている『Notepad++』を使いたいと思いますので、念のために同じ環境でMOD製作を行いたいという方や、これから本格的にMOD製作を行いたいという方は以下のようなサイトを参考に『Notepad++』をインストールしてみてください。

www.howtonote.jp

 

 

1.「イベント」

 「イベント」はMODの中でも重要な位置にあります。皆様もゲームプレイの最中に様々なイベントによって物語が進行したり、戦略に大きな変化が訪れるという体験を経験なさっていると思います。そんなMODの中でも応用を効かせやすいMODの製作方法について、簡単に解説をしていきたいと思います。

 

1-1.作業フォルダ

 HoI4のMODは、フォルダによってそのデータが何に関するデータなのかを大まかに判断しています。そのため、まずは「イベント」のデータがどのフォルダに納められているのかを確認し、改変する前のデータを確かめましょう。

 

 「Steam」の「ライブラリ」から「Hearts of Iron Ⅳ」のタイトルを右クリックして、「管理」から「ローカルファイルを閲覧」をクリックします。そうすると、「Heart of Iron Ⅳ」のデータがある場所を見ることができます。

f:id:calufate:20200210161013p:plain

 この中のどのフォルダで作用するのかというと、わかりやすく「events」というフォルダがありますね。中を開いてみましょう。

f:id:calufate:20200211015841p:plain

 こちらは「history/countries/」にある「国家データ」のように単純に国ごとに分かれているわけではありません。例えば「AcePilots.txt」や「Baltic.txt」、「CapitulationEvents.txt」、「Decisions_Events.txt」など、明らかに国家単位とは関係ない名前まで見受けられます。これは大規模で世界中に影響を及ぼすようなイベントだったり、国家が特定の行動をとればどの国でも発生するようなイベントだったりと、国家単位で管理するのは不適切だと思われるイベントが多く存在しているからです。この中で言えば「AcePilots.txt」には「エースパイロットの誕生」や「エースパイロットの死亡」と言ったどの国でもあるようなイベントについて記述されています。

 

1-2.MOD製作

 「イベント」に関連するデータが「events」にあるということがわかったので、早速MODを作っていきましょう。まずは白紙のMODを用意します。

 前回と同様に「Hearts of Iron Ⅳ」を起動して「ランチャー画面」に移り、「MOD」から「MODツール」、「MODを作成」し、「名称」「バージョン」「ディレクトリ」「タグ」を適当に決めていきます。今回は皆様の任意の名称やディレクトリで問題ありません。私は前回作った『Shoshinsha Test Mod』を今後使う予定もないので、再利用していきたいと思います。なので、皆様のディレクトリは「ドキュメント/Paradox Interactive/Hears of Iron Ⅳ/mod/(任意のディレクトリ名)」になり、私のディレクトリは「ドキュメント/Paradox Interactive/Hears of Iron Ⅳ/mod/shoshinsha_test_mod」になりますので、これからの作業では「shoshinsha_test_mod」の部分を「(任意のディレクトリ名)」に置き換えて作業を行ってください。

 また、私の場合は、前回作った中身は不要なので「mod/shoshinsha_test_mod/history」および「mod/shoshinsha_test_mod/gfx」は削除しておきます。このとき、私と同じように『Shoshinsha Test Mod』を再利用しようとしていらっしゃる方は、「mod/shoshinsha_test_mod/descriptor.mod」は削除しないようにしてください。これはMODに関する情報が記載されており、白紙のMODであっても必要なものです。誤って削除した方は「ごみ箱」から「descriptor.mod」を右クリックして「元に戻す」を選択してください。

 

 これで白紙のMODフォルダができました。

f:id:calufate:20200211022800p:plain

 イベントに関するMODを作りたいので、先ほど確認した「events」フォルダを新規作成から「mod/shoshinsha_test_mod/events」となるように作ってあげます。

f:id:calufate:20200211023017p:plain

スペルミスに注意!

 これで作業フォルダを用意できました。ここまでは前回と同じですが、困ったことに今回は改変元のデータというものが存在しません。なぜなら、前回が「Franklin Denalo Roosevelt」さんのデータを改変するだけだったのに対して、今回は一から新しいイベントを作るからです。

 こういうときは、すでにあるイベントを参考にしながら作っていきましょう。試しに「バニラのHoI4のデータ」にある「events/Germany.txt」を開いてみます。

f:id:calufate:20200211024358p:plain

 一気にやる気を失ったかもしれませんが、これでも一部です。さらに下にスクロールしていくと、全部で6,093行あるようです。このようにドイツ並みの規模の国家でイベントを作ろうとするとこれだけの記述量が必要になります。気になって確認しましたが、MODの『The Great War』の最大サイズのファイルであるロシアのイベントでは804行なのに対し、『Kaiserreich』のネーデルランドのイベントは19,482行ありました。狂ってる。

 もちろん、量が多ければ良いMODというわけではありませんし、個人でそれだけの量のイベントを最初から作成できるかというのは怪しいですので、バージョンアップという形でどんどん追加していくのが望ましいと思います。

 

 さて、参考にしようと試しに「events/Germany.txt」を開いたわけですが、全く意味がわかりません。この意味が分からない記述の羅列であるここから何を参考にするのでしょうか。

 いくらか下へとスクロールしていき、「#」がコメントアウトつまり製作者のただのメモ書きということに気を付けると、何度も同じ文の構造が繰り返されているのがわかります。

 それが

add_namespace = germany

country_event = {

 id = germany.数

 title = germany.数.t

 desc = germany.数.d

 picture = GFX_XXXXXXXXXXX

 

 (is_triggered_only = yes) たまに無い。

 

 なんかごちゃごちゃ。

 

 option = {

  name = germany.数.a

  なんかごちゃごちゃ。

 }

 たまにoptionが複数ある。

}

という構造です。他に「events/France.txt」や「events/Britain.txt」を開いても「germany.数」が「france.数」や「britain.数」に変わっているだけで、構造自体は大きく変わりません。そして、複数のファイルを見比べると、その変わっている「germany」や「france」、「britain」というのがファイルの一番最初に記述されている「add_namespace =」に書かれてあることに気が付きました。

 つまり、「add_namespace = 」で適当な名前を付けて、同じような文構造を再現すればイベントを作成できそうです。

 

 早速、試してみましょう。

 まずは「mod/shoshinsha_test_mod/events/」にテキストファイルを新規作成して「shoshinsha_test_mod.txt」という名前にしてみます。

f:id:calufate:20200211032242p:plain

 「mod/shoshinsha_test_mod/events/shoshinsha_test_mod.txt」を開くと何も記入していない白紙の画面が出てきます。

 そこに先ほど見たイベントファイルと同じような文構造にするために「add_namespace」と「country_event」を追加していきます。「add_namespace =」で宣言した言葉は何度も繰り返して書くことになりそうなので、「shoshinsha_test_mod」ではなく「stm」と省略しておきたいと思います。また、「picture =」は明らかに写真のことなので、写真を選ぶのも面倒なので今回は適当に「events/Germany.txt」の「id = germany.1」にある「picture = 」をそのままコピーしました。

f:id:calufate:20200211032936p:plain

 とりあえず、記入していきましたが、どことなく見づらいです。HoI4のMODでは「Tabキー」による段落分けは特にMODの動作に影響を及ぼしませんので、見やすいように「Tabキー」を使って「id」や「title」の前に空間を開けていきましょう。ちなみに「Tabキー」はテキストファイルでは段落を分けるのによく使うので、文字の並びを整えたいときには活用しましょう。

f:id:calufate:20200211033251p:plain

 これで少しは見やすくなりました。詳しいことはわかりませんが、これでイベントができていると思われます。なので、試しにこれを保存してからこのMODを起動してみました。

 すると、アメリカプレイでもソ連プレイでもこのようなイベントが発生しました。

f:id:calufate:20200211033749p:plain

f:id:calufate:20200211033804p:plain

 おそらく他の国でも同様のイベントが発生していると思われます。バグか何かのように見えますが、このイベントを見ると、イベント名が「stm.1.t」、イベント文が「stm.1.d」、選択肢が「stm.1.a」になっています。もしや、と思い、イベントに記述した「option」を一つ追加すると、このようなことになりました。

f:id:calufate:20200211034408p:plain

f:id:calufate:20200211034343p:plain

 つまり、このようにイベントを書くと、すべての国家に対して「stm.1.t」という名前で「stm.1.d」という説明文で「stm.1.a」や「stm.1.b」という名前の選択肢があるイベントを追加することができるということがわかりました。

 

 フレーバー的なイベントだと特に効果も必要ないので、本質的な部分ではこれだけで十分ではありますが、そうだとしてもさすがに「stm.1.t」や「stm.1.d」、「stm.1.a」では味気ありません。なので、これらに名前を与えてあげたいと思います。

 これらに名前を与えるには「localisation」というフォルダの中身をいじっていきます。「localisation」は言語に関するファイルが入っている場所で、中身を開くと「_l_(言語).yml」というファイルがたくさん並んでいます。これらは、HoI4の言語選択で当該言語を選択した場合に、そのファイルを読み込んで、その中にある言葉を表示するようになっています。皆様がサブスクライブしているであろう『Japanese Launguage Mod』ではこのファイルのうち、「_l_english.yml」を改変し、中身を日本語にすることで、言語選択を英語にしたときに日本語の文章が読み込まれるようになっています。イベントの名前や文章もここによって日本語にされているため、上記のイベント「stm.1」を編集するには、これを真似します。

 

 まずは「mod/shoshinsha_test_mod/localisation」を用意します。

f:id:calufate:20200211043602p:plain

 そして、中身に新規作成からテキストファイルを作り、名前を「stm_l_english.yml」にします。このとき、拡張子「.txt」を「.yml」に確実に改変し、種類が「YMLファイル」になっていることを確認してください。念のため、「stm_l_english.yml」の「l」はアルファベットの小文字の「L(エル)」で、「Launguage(言語)」を意味していると思われます。

f:id:calufate:20200211043925p:plain

 「.yml」はテキストエディタで問題なく開けると思うので、「Notepad++」で開いてください。白紙の中身が表示されるので、以下のように書いてください。

f:id:calufate:20200211044134p:plain

 ここから改行し、半角スペースを空けてから、さらに以下のように追記してください。

f:id:calufate:20200211044500p:plain

 察しの良い方はわかったかもしれませんが、「stm.1.t」のイベント名をその後ろの「""」内に、「stm.1.d」のイベント文をその後ろの「""」内に、「stm.1.a」の選択肢名をその後ろの「""」内に記入していきます。今回は適当な名前を付けていきます。

f:id:calufate:20200211044910p:plain

 これを保存し、ゲームを起動してみます……が、イベント名は「stm.1.t」のまま、イベント文も「stm.1.d」のまま、選択肢も「stm.1.a」のままでした。

 そこで「HoI4WIKI」をチェックしてみると「ガイドライン」にこのような記述がありました。

 エンコードが何なのか良くわからない方も多いかもしれませんが、大雑把に言えば「訛り」のようなものだと思って大丈夫だと思います。言語ファイル(.yml)では、UTF-8-BOMという方言でしゃべるのに、他のテキストファイル(.txt)と同様にUTF-8という方言でしゃべっているため、相手に良く伝わっていないのです。なので、訛りを修正してあげる必要があります。

 「Notepad++」には簡単にエンコードを変更できるツールバーがあるので、それを利用します。「mod/shoshinsha_test_mod/localisation/stm_l_english.yml」を開いててツールバーから「Encoding」をクリックし、「Encode in UTF-8-BOM」を選択し、保存します。

f:id:calufate:20200211050436p:plain

 この状態でゲームを起動すると、このようなイベントが発生しました。

f:id:calufate:20200211050545p:plain

 

2.最後に

2-1.まとめ

  今回は何の効果もないフレーバー的なイベントを追加するMODを作りました。ゲームをより盛り上げるためにも、フレーバー的なイベントは大切な要素になると思います。

 しかし、これだけでは盛り上がりに欠けるのも確かですし、もう少し影響のあるイベントを追加したいという方もいらっしゃると思います。全くもって同意するところではありますが、MOD製作では基本的なことを理解し、自ら応用する方法を考えることが大切になってきます。自分の想像するMODの手法がすべて用意されているわけではないので、どのような道筋でMODを再現するのかは自分で考える以外に方法がありません。なので、今は基本的なことを理解した上で、応用をする基礎を作り上げることに注力していただくのが一番かと思います。

 地道なことも多いMOD製作ですが、出来上がったMODが実際にゲーム上で動作するのは非常に楽しいです。ゆっくり焦らずにMOD製作の技術を身に着けていきましょう。

 

2-2.おまけ:MODの競合

 MODは「既存のデータを上書きしたり、新規のデータを追加する」ことによって望む状態を作り出すものであることは前回の記事でも述べましたが、既存のデータを上書きすることには大きな問題点が含まれます。

 それが「MODの競合」です。

 皆様の中にも複数のMODを同時に使用しようとしたら、競合して片方しか適応されない、という事態に遭遇した方はいらっしゃると思います。それがなぜ発生するのかと言うと、既存のデータを改変するMODを同時に使用すると、改変されたデータを片方しか読み込めないからです。具体例を交えながら考えていきましょう。

 

 私は以前の記事で「history/coutries/USA - USA.txt」を改変して、「Roosevelt」さんの顔と名前を自分にするMODを作りました。今度は全く別の新しいMODを作成し、「history/coutries/USA - USA.txt」を改変して初期研究枠を6つにするMODを製作したとします。

 このとき、同時にMODを適応したらどのようなことが起きるでしょうか?

 この場合、HoI4はアメリカ合衆国のデータを読み込む際にMODを優先して読み込みますが、「history/countries/USA - USA.txt」が存在するMODは二つあります。HoI4はアメリカ合衆国のデータとして一つの「history/countries/USA - USA.txt」しか読み込めません。結果として、片方の「history/countries/USA - USA.txt」だけが読み込まれ、「大統領の顔と名前が自分になる」か「初期研究枠が6つになる」のいづれかしか効果を発揮しません。これが競合の原因です。

 つまり、あまりに多くのデータを改変するMODはたくさん競合してしまうことになるため、MOD製作の際には必要最低限のファイルだけ改変する方が、競合の可能性も減らせ、動作も軽くなるのでおすすめです。

【Hearts of Iron Ⅳ】MOD製作 #導入【初心者向け】


f:id:calufate:20200211122508p:plain

「HoI4のMODを作りたい!」

 

 そうお考えの紳士淑女の皆様、こんばんは。『度々思い付きでMODを作るけれど、公開の仕方がわからないし途中でアイデアが尽きちゃって完成しない』で私の中で有名な私です。

 今回は、MOD製作初心者だった私が、MOD製作について一から独自に調べたことについて、皆様の手助けになればと思い、共有していきたいと思います。「MOD製作に興味があるけど、何がわからないのかさえわからない」「英語は適性言語」という方でも、簡単なイベントやディシジョンを製作できるようになることを第一目標に書いていきたいと思います。

 余裕があれば国家方針や新規国家追加についても触れていきたいと思いますが、どちらも比較的に規模が大きな作業だったり、複合的な知識を求められる作業になるので、最初はイベントやディシジョンからお付き合いいただけると幸いです。

 

 今回は、イベントやディシジョンを取り扱う前に、まずは基本的なMODの製作方法について述べていきます。すでにMOD自体は製作したことがあり、イベントやディシジョンのやり方がわからない、という方には少々退屈な内容になるかもしれませんので、その場合は次回以降をお待ちいただけるようお願い申し上げます。

 

 

1.公式ツール

 さて、MOD製作についてですが、HoI4のMOD製作は公式によってサポートされています。そのため、公式のHoI4のランチャー*1を利用することで、かなり容易にMOD製作が可能になっています。もちろん、これによってMOD製作の幅が狭まるわけではないので、原則として公式ツールを利用してMODは製作しましょう。

 というわけで、今回は、公式ツールを用いて「国家元首の顔と名前を自分に変える」MODを作っていきたいと思います。

 

1-1.HoI4のランチャーを起動する

 まずは、ゲームをするときと同様にHoI4を起動させましょう。このような画面が表示されると思います。(20/02/10現在)

f:id:calufate:20200210114151p:plain

ランチャー画面。

1-2.MODツールを使用する

 見慣れた画面ですね。この画面で「最新情報」「DLC」「MOD」「ゲーム設定」「ランチャー設定」と並んでいるところから「MOD」をクリックして、これまた見慣れたであろうMODを管理する場所へ飛びます。そうすると、SteamでサブスクライブしたMODが並んで表示されていると思います。

f:id:calufate:20200210114834p:plain

MODの名前の横にある赤いエクスクラメーションマークは、バージョンが非対応であることを示している。バージョンが非対応でも問題なく起動することも多いが、最近はMODの仕様が大きく変更されたので、上手くいかないことが多い。

 「MODを管理する」「MODツール」とボタンがあると思うので、「MODツール」の方をクリックします。すると、小さな画面が出てくると思います。

f:id:calufate:20200210115307p:plain

ここからアップロードも行えるようだが、私はやったことがない。MODが完成したことがないので。

 MOD製作をしたい私たちにとって都合が良いことに「MODを作成する」というボタンが右上にあるので、そちらをクリックします。

f:id:calufate:20200210120450p:plain

「タグ」のところに英語が並んでいるが、大したことではないのであまり気にしないで大丈夫。

 色々と表示されますが、この画面でやるべきことは4つです。

  • 「名称」にMOD名を記入

  •  「バージョン」にMODのバージョンを表記

  • ディレクトリ」でMODを保存するフォルダを決定
  • 「タグ」でどのようなMODかにチェック

 上から順番にやっていきましょう。

 最初に「名称」に記入していきます。MOD名はわかりやすくかっこいい名前とかにしておきましょう。ただし、半角の英数字程度の表記にしておきましょう。今回は初心者のテスト用のMODなので「Shoshinsha Test Mod」という名称にしておきます。MOD名には半角スペースが開いても問題ありません。

f:id:calufate:20200210122147p:plain

日本語は試したことがないが、海外の方が使ったりする可能性を考えると半角英数字の表記の方が好ましい。

 次に「バージョン」ですが、これはMODがどのHoI4のバージョンに対応しているか、ではなく、MODそのもののバージョンになります。例えば、国家方針を追加するMODを製作していたとして、バグを修正したりしたときにはこのバージョンを「1.0」から「1.1」へ、新しいルートを追加したときは「1.1」から「2.0」などにすることによって、利用者にもわかりやすく、あと製作者が感慨深くなることができます。今回は初めての作成なので「0.0」とかにしておきましょう。

f:id:calufate:20200210122826p:plain

このMODのバージョンシステムは最近追加されたらしいので、それ以前のMODを製作していた方は初めてみるかもしれない。

  そして、「ディレクトリ」*2はMODを保存するフォルダ名を決めます。基本的にはこのフォルダ内で作業を行うので、こちらはかっこ良さよりもわかりやすさを重視しましょう。今回は「Shoshinsha Test Mod」という名前のMODを作るので、わかりやすく「shoshinsha_test_mod」にしておきましょう。MODのディレクトリには半角スペースも利用できないので、スペース部分は「_(アンダーバー)」で代用しましょう。

f:id:calufate:20200210133556p:plain

わかりやすければ「test」など、好きなディレクトリ名で構わない。

 最後に「タグ」を設定します。たぶんSteamにアップロードしたときに検索などで関係するとは思いますが、あんまりよくわかりません。一応、自分が作るMODがどういうものに該当するのかを考えてチェックを入れましょう。

 それぞれ、

 

 

Alternative History(異なる歴史)

Balance(バランス調整)

Events(イベント関連)

Fixes(修正等)

Gameplay(ゲームシステム変更系)

Graphics(画像・兵器モデル等)

Historical(史実)

Ideologies(イデオロギー・主義関連)

Map(州の追加・変更・調整から大規模に地図を差し替えるとき)

Military(軍事関連)

National Focuses(国家方針関連)

Sound(音関連)

Technologies(技術関連)

Translation(翻訳)

Utilities(公共? わかんない)

 

 

という感じなので、自らが作りたいMODに当該する場所にチェックを入れておきましょう。変更は後からでもききますので、適当に選んでも大丈夫だと思います。今回は、自分を国家元首にするMODを作っていきますので……まぁ、Graphicsとかで良いんじゃないでしょうか。たぶん、大丈夫です。

f:id:calufate:20200210135648p:plain

アップロードするつもりがないときは、大抵「Alternative History」にチェックを入れている。

 では、これでMOD製作の準備は整いました。MODを作成する、とクリックするとMODが作成されます。早速、作りましょう。

f:id:calufate:20200210140227p:plain

完成。

 これでMODの製作は完了しました。実際に「MODを管理する」から確認すると、「Shoshinsha Test Mod」が存在していると思います。

f:id:calufate:20200210140344p:plain

できてる!

 MODの作成自体はこれだけで簡単に行うことができます。ただ、このMODは現状何にも変更を加えない白紙のMODになります。これを有効にしても通常プレイに何の変更もありませんし、実績の解除もできると思います。

 

2.MOD

 さて、MODの作成は終わりましたが、白紙のMODでは何の変更も加わりません。今回の目的である「国家元首の顔と名前を自分に差し替えるMOD」の中身を作っていきましょう。

 

2-1.MODの仕組み

 ここからが本格的なMOD製作になるのですが、初めての方にとってはここからが一番よくわからない部分に入ると思います。MODの方針を立てようにも、どこからどのように手を付けて良いのかわからない、という事態に陥ると思います。そういった方のために、まずはMODの仕組みについて簡単に説明し、MOD製作の方針を立てられるようにしましょう。

 

 まず、MODがどのような仕組みでゲームに変更を加えているのかと言うと、「既存のデータを上書きまたは新規のデータを追加する」ことでゲームに変更を加えています。

 例えば、「アメリカ合衆国」に「Franklin Delano Roosevelt」という名前で「ドイツ嫌い」という特性の「民主主義(リベラル)」の国家元首が存在しているのは、「アメリカ合衆国」のデータにそのような国家元首が存在するという記述があるからです。

 MOD製作者はこのデータをMODによって上書きしたりすることによって、自分が望むデータに改変していくことになります。

 

 つまり、MOD製作を行うのに必要なことは「改変したいデータがどこかを把握し、その部分を自分が望むデータに書き換える」ということです。

 

 ここからは独自の解釈なので、間違っているかもしれませんが、HoI4というかParadox社のゲームは基本的にフォルダによってデータの種類を区分しているようです。例えば、「countries」というフォルダに入っているテキストファイル(.txt)は「国家」のデータとみなされます。逆に言えば、「countries」に入っていなければどれだけきちんとデータを記述していても「国家」のデータとはみなされないので、「どこのフォルダにデータを入れているか?」という点には気を付けてください。

 

 すなわち、MODで「countries」にある「アメリカ合衆国」について記載されているテキストファイル(.txt)を改変したものを用意すれば、元の「アメリカ合衆国」のデータではなく、MODのデータを優先して読み込むため、データを変えるMODになる、ということになります。

 

2-2.改変

 MODの仕組みについて軽く触れましたので、それを前提として実際にデータを編集してみましょう。

 

 まずは、改変したいデータがどこにあるのかを把握します。実のところ、この「改変したいデータがどこにあるのか」を把握するのが一番大変だったりします。実際にファイルを一つ一つ開いて中身のデータを見ながらどのようなデータかを把握するのが確実ですが、あまりに手間がかかり過ぎます。どのようなフォルダにどのようなデータがあるのかについては、大まかなものはご紹介しますが、すべてを紹介するのは私の気力や能力的にも厳しいですので、ご容赦ください。大規模なMODを作る場合には、改変するデータの場所を知るために英語などで情報収集を行わなければならない場面も多いです。もちろん、インターネットで日本語で検索して見つかることもありますが、期待値はそんなに高くないと思います。

 今回は「国家元首のデータ」を改変するつもりなので、国家の初期状態などについて記載されている「国家」のデータを改変することになります。*3早速、HoI4の本体から改変元のデータであるバニラのデータを持ってきましょう。

 

2-2-1.バニラのデータを探す

 とりあえず、HoI4のフォルダを開きます。Steamのライブラリで『Hearts of Iron Ⅳ』のタイトルを右クリックして、「管理」から「ローカルファイルを閲覧」をクリックすると「Hearts of Iron Ⅳ」というフォルダが開くと思います。

f:id:calufate:20200210160923p:plain

他のゲームタイトルが見えるが、買っただけであんまりプレイしてない……。

f:id:calufate:20200210161013p:plain

こんな名前のフォルダがぶわーって並ぶフォルダが開く。

 これがHoI4内にあるバニラのデータです。MODではここから必要なデータだけをコピーして、中身をいじっていきます。このバニラのデータを改変してしまうと、ゲームが起動しなくなったりといったトラブルが発生し、アンインストールしてから再インストールという手間がかかるので、誤ってここのデータを編集しないようにしましょう。

 今回の目的は「国家」のデータです。これはこの中の「history」というフォルダ内の「countries」というフォルダ内にあります。

f:id:calufate:20200210161445p:plain

「states」も作るMODにも寄るが、よく使う。

f:id:calufate:20200210161627p:plain

この一つ一つが「国家」のデータである。

 「国家」のデータ名は「国家タグ+国名」で管理されています。「国家タグ」とは、国に割り振られた3文字の名前です。国名コードのようなものだと思ってもらって構いません。これはたくさんのコードを記述するときに何度も登場する国をわざわざ「Afghanistan」とか「British Antilles」とか書くのは手間が過ぎるので、「AFG」や「BAS」というタグを割り当てることで手間を減らすことができるのです。

 今回は、「アメリカ合衆国」の国家元首を自分にしようと思うので、「アメリカ合衆国」の国家タグである「USA」から始まるファイルを探します。ちなみに主要国全般をいじりたい場合は、ファイルのサイズで降順に並べ替えをすることで記述量が多い国家を上に持ってくることができます。

f:id:calufate:20200210164027p:plain

やはり7大国の情報量が多い。

 サイズ順で並び替えると、上から三番目に「USA - USA.txt」というファイルがあるので、これが目的の「改変元のデータ」です。これを先ほど用意したMODフォルダ「shoshinsha_test_mod」に「コピー」していきます。このとき、誤って「切り取り」をしないように気を付けてください。

 「shoshinsha_test_mod」は「ローカルディスク(C:)」の中にある「ユーザー」フォルダの中にある「(自分のユーザー名)」フォルダの中にある「ドキュメント」フォルダの中にある「Paradox Interactive」の中にある「Hearts of Iron Ⅳ」の中にある「mod」の中にあります。

 ……御覧の通り、この「○○の中にある××」という表記はこのようにとても長くなることがあるので、今後はこの「○○の中にある××の中にある□□」というのは「○○/××/□□」という風に表記していくことにします。

 例えば、今回は「ローカルディスク(C:)/ユーザー/(自分のユーザー名)/ドキュメント/Paradox Interactive/Hearts of Iron Ⅳ/mod/shoshinsha_test_mod」という風に表記できます。また、基本的にはHoI4のMOD製作は「mod」フォルダの中でしか作業しないため、今後は簡単のためにフォルダやファイルの場所を「mod/shoshinsha_test_mod/USA - USA.txt」という風に前半部分を省略して表記したいと思います。

f:id:calufate:20200210165915p:plain

実際に「shoshinsha_test_mod」に「USA - USA.txt」をコピーした。ちなみにアイコンがカメレオンになっているのは、標準のテキストエディタを「Notepad++」にしているため。

 

2-2-2.データ編集

 では、早速編集を、と言いたいところですが、前述したとおり、Paradox社のゲームはどのフォルダに入っているかでデータの種類を判別しています。この「国家」のデータはバニラの本体では「history」フォルダの中の「countries」に入っていました。つまり、「history/countries/USA - USA.txt」にしなければ、HoI4はこのデータを国家データだと認識しません。なので、編集する前にこのデータをきちんとした場所に置いてあげましょう。

 「mod/shoshinsha_test_mod/」にフォルダを新規作成して「history」という名前を付けてあげます。

f:id:calufate:20200210170730p:plain

スペルミスに注意!

 そして、「history」フォルダ内に「countries」フォルダを作ってあげて、「mod/shoshinsha_test_mod/USA - USA.txt」を「mod/shoshinsha_test_mod/history/countries/USA - USA.txt」に移してあげます。

f:id:calufate:20200210171858p:plain

スペルミスは本当に割とよくあるので確認はしっかり。

f:id:calufate:20200210171941p:plain

「mod/shoshinsha_test_mod/USA - USA.txt」を「切り取り」して「mod/shoshinsha_test_mod/history/countries/USA - USA.txt」に移動した。

 これでHoI4にこれが「国家」のデータであると認識させることができます。

 

 今度こそ、編集をしていきましょう。これは「テキストファイル(.txt)」なのでメモ帳などでも編集が可能ですが、出来ればきちんとしたテキストエディタを使うことが望ましいです。HoI4WIKIでは『Notepad++』や『Sublime Text』などの良いテキストエディタを使用するのを好ましいとしていますが、今回はそういった準備の説明もなく始めたので、私もメモ帳を使って作業をしてみます。

 メモ帳で「mod/shoshinsha_test_mod/history/countries/USA - USA.txt」を開くとこのような文字列が現れて、めまいを覚えると思います。このとき、誤って「バニラのHoI4のデータ」を開かないように気を付けてください。そちらを編集するとHoI4の再インストールが必要になってしまいます。

f:id:calufate:20200210173003p:plain

全部で1200行以上ある。正直、この中から何の情報もなく、目的のデータを探すのは至難。

  簡単に説明をしてみると、一行目の「capital」が国家の首都を設定していて、「361」というのは「メリーランド州」に割り当てられた番号であるので、初期状態では「アメリカ合衆国」の首都はメリーランド州に設定されています。これを「629」に変えると、首都を「ハワイ州」に変更することもできます。「首都なのに州を指定するだけで良いの?」と思われた方もいるかもしれませんが、どうやら州の中で戦勝点が最も高い都市を自動的に首都にするみたいです。

 さらに12行目にある「set_research_slots」は初期研究枠を設定してあり、「アメリカ合衆国」ではこれが「4」つに設定してあります。例えば、ここに「チベット」の国家データをもってきて、「set_research_slots = 6」にすれば、1936年時点で「チベット」を世界一研究機関が優れた国家にすることも可能です。「set_stability」は安定度、「set_war_support」は戦争協力度を示しており、それぞれ好きな数値にすることで好きな初期状態を再現することが可能になります。ちなみに、HoI4のデータはパーセンテージでの表記のものは少数で表記するのが基本であり、「set_stability = 0.75」は「安定度が75%」という意味で、「set_stability = 1」にすると「安定度が100%」ということになります。

 

 このように国家データには国家に関するデータがたくさんあります。そして国家元首に関するデータも同様にあります。さすがに1200行以上ある中からどこにあるのかを探すのは手間なので、上にあるツールバーから「編集」を押して「検索」を押します。今回は「国家元首の画像と名前を自分にする」ので、「アメリカ合衆国」の国家元首である「Roosevelt」さんを検索してみます。すると、298行目に「Franklin Delano Roosevelt」に関する記述が見当たりました。

f:id:calufate:20200210182658p:plain

ルーズベルトさんのスペルは英語なので、そこだけは諦めてください。

 ここをいじることで国家元首対して様々な変更を加えることができますが、今回は見ればわかるであろう「name」と「picture」のみを編集することになります。

 まずは、「name」の「""」の中身を自分の名前にしてみましょう。ちなみにこの「""」は「一つの文字列」という宣言のようなものであり、この中に含まれた部分は「一つの文字列」として認識されます。なので、このように直接日本語を記述しても動作します。

f:id:calufate:20200210183532p:plain

自分の名前を入れる。英語と日本語は問題なく入るが、他言語は未確認。

 

2-2-3.画像追加

  次に自分の画像を追加します。画像の追加は少しだけ手間がかかりますが、一度やり方を覚えると活用できる場面も多いと思うので、是非挑戦してみましょう。

 第一に、HoI4の画像は「.dds」という拡張子で保存されていますが、私はこの拡張子をHoI4以外で見たことはありませんし、読み方もわからなければ、通常の「ペイント」で開くこともできません。これを開くには『GIMP』や『Paint.net』などのフリーソフトを使う必要がありますが、私は今パソコンを新しくしたばかりで『GIMP』がうまく機能しないようなので今回は『Paint.net』を使っていきましょう。

 

 『Paint.net』を開くと「窓の杜からダウンロード」があるのでそれをクリックします。*4少し待つと保存する場所を選択する画面が出てくるので、わかりやすいところに保存します。これはインストーラーと呼ばれるもので、簡単にインストールをするサポートをしてくれるものなので、後から削除しても大丈夫なため、わかりやすくデスクトップなどに保存しても良いです。

 ダウンロードすると「paint.net.数.数.数.install.zip」のようなファイルが保存されていると思います。「数」はバージョンの情報なので多少変化しているかもしれません。これをまずは「解凍」します。Windows10の場合は、右クリックから「すべて展開」を押して「展開」を選択すると、同名のフォルダができます。Windows10以前の方は手元に確認環境がないのでどうやれば良いのか具体的なアドバイスができかねますが、「7-Zip」を使えば基本的には確実だと思います。

 では、「paint.net.数.数.数.install/paint.net.数.数.数.install.exe」を起動させてください。コンピューターへの変更に対する許可を求められたら「はい」を選択し、しばらく勝手に画面が動いていって、最終的にこのような画面になると思います。

f:id:calufate:20200210192749p:plain

最初は「エクスプレス」の方にチェックが入ってるかも。

 私はこのフリーソフトのインストールするフォルダなどを選択したいので「カスタム」を選択します。「エクスプレス」でも問題ないかもしれませんが、今回は下で進めていきます。「カスタム」にチェックを入れて「次へ」。

f:id:calufate:20200210193219p:plain

英語がんばって。

 気合で読んで「同意します」にチェックを入れて、「次へ」。

f:id:calufate:20200210193301p:plain

色々あるけど、基本的には一緒で良いと思います。

 このような画面になるので、上の3つは基本的にチェックを入れても外しても問題ありません。デスクトップが煩雑になるのを避けたい方は「デスクトップにショートカットを作成する」のチェックを外しても大丈夫ですが、どこにインストールしたのかは必須ではないものの、覚えておいた方が賢明でしょう。フリーソフトをインストールしすぎてどこに何があるのかわからなくなる、はあるあるだと思います。

 「次へ」。

f:id:calufate:20200210193712p:plain

わかりやすくて整理しやすい場所が望ましい。

 ここでpaint.netをインストールするフォルダを選択することになりますが、わかりやすくて整理しやすい場所が望ましいです。適当に「HoI4/MOD/フリーソフト/画像編集/」などのようにしても大丈夫です。私はがさつなので「ツール/DDS/」というめちゃくちゃ適当にインストールしています。

 ここで「次へ」を選択するとインストールが開始するので、終了するのを待ちます。

f:id:calufate:20200210194148p:plain

チェックは外してもいいが、すぐに使うことになる。

 今回はこのまま「Paint.net」を使っていきたいので、「paint.netの起動」にはチェックを入れたまま「完了」をクリックして大丈夫です。 これで「.dds」を編集する準備が整いました。それでは自分の画像をHoI4の形式に変換していきましょう。

 

 とりあえず、自分のTwitterのアイコンを用意しました。

f:id:calufate:20200210195516p:plain

フリーアイコン。「Picrew」にある「GORILLA_ART」というアイコン。

 これを「Paint.net」で編集していきます。起動させた「Paint.net」に画像を「ドラッグアンドドロップ」させて、「開く」を選択します。すると自分のアイコンが読み込まれたと思います。みなさんがどのような画像を編集しているのかはわかりませんが、HoI4のアイコンはサイズが指定されており、それに合わせる必要があります。

 それが「156×210ピクセル」です。

 これに対してどのように合わせるかですが、まずは元の画像の比率から調整していきます。普通にサイズ変更をしてしまうと比率が狂って潰れたような画像になってしまいます。そこで、最初から比率を調整しておく必要があります。

 最初に細長いツールウィンドウから「四角形選択」をクリック。

f:id:calufate:20200210201335p:plain

 次にツールバーでここの「通常」を「固定比率」に変更し、幅を156、高さを210にします。

f:id:calufate:20200210201555p:plain

f:id:calufate:20200210201656p:plain

 これで、マウスをドラッグしてできる四角形が「156×210」の比率を保つようになりました。描かれる四角形を見ながらどの部分を画像にしたいか選択しましょう。このとき、思いっきりドラッグしちゃうと画面外まで四角が伸び切っちゃって比率が崩れてしまうので青い範囲が画面外に飛び出さないように気を付けてください。また、ツールウィンドウから「選択範囲の移動」が選べるので、そちらで上手く調整してください。

f:id:calufate:20200210202136p:plain

 さて、良い感じに選べたら実際に画像を編集します。「イメージ」にある「選択範囲に合わせてトリミング」をクリック。そうすれば画像が「156×210」の比率で切り抜かれたと思います。

f:id:calufate:20200211135417p:plain

 しかし、まだこれはあくまで「156×210」の比率というだけで「156×210ピクセル」ではありません。これを「156×210ピクセル」に加工したいので、「イメージ」から「サイズ変更」をクリック。

f:id:calufate:20200210202620p:plain

 このような「サイズ変更」のウィンドウが出てきます。

f:id:calufate:20200210202835p:plain

  ここで「絶対サイズを指定」の下の「縦横比を維持する」にチェックを入れてから、幅を「156ピクセル」にすると、良い感じに高さが「210ピクセル」になってくれます。もしならない場合は範囲選択のときに画面外を含んでいた可能性があります。多少変形しても構わないようなら「縦横比を維持する」のチェックを外してから直接、幅を156ピクセル、高さを210ピクセルと入力しても大丈夫です。

f:id:calufate:20200210203241p:plain

 これでOKを押すと、画像が少し小さくなって「156×210ピクセル」の画像が完成しました。

 が、これをそのまま上書き保存しては「.dds」になりません。「ファイル」から「名前を付けて保存」を選択し、保存するときに「ファイルの種類」を「DirectDraw サーフェイス(DDS)(*.dds)」にしましょう。

f:id:calufate:20200210203643p:plain

f:id:calufate:20200210203631p:plain

 「構成の保存」もそのまま「OK」。以上で画像を「.dds」にすることができました。

f:id:calufate:20200210204205p:plain
f:id:calufate:20200210204213p:plain

 

 これを先ほど編集していた「mod/shoshinsha_test_mod/history/countries/USA - USA.txt」の国家元首のところに参照させるように記入をしていくわけですが、その前にこの画像を適切な位置に移動させなければなりません。国家元首の画像がどのフォルダに保管されているかと言うと、「gfx/leaders/」です。さらにそこで各国家に分かれて保存してありますが、今回はアメリカ合衆国国家元首を変更するので「gfx/leaders/USA/」に先ほどの画像を入れます。

f:id:calufate:20200210205202p:plain

 では、「mod/shoshinsha_test_mod/」に「gfx」と「leaders」「USA」というフォルダを追加して「mod/shoshinsha_test_mod/gfx/leaders/USA/」に保存した「.dds」ファイルを移動させましょう。

f:id:calufate:20200210205146p:plain

 さすがにこの画像の名前では参照したりするときに不便なので、バニラの名前に倣って名前を変更しましょう。今回は「Portrait_USA_CALUFate」という名前にしておきます。

f:id:calufate:20200210205513p:plain

「CALUFate」は私のTwitterID。適当で大丈夫。

  さて、ここまでくればあと少しです。「mod/shoshinsha_test_mod/history/countries/USA - USA.txt」を開いているメモ帳に画面を切り替えて、「picture」の「"Portrait_USA_Franklin_Roosevelt.dds"」を「"Portrait_USA_CALUFate.dds"」に変更し、「ファイル」から「上書き保存」をします。

 

f:id:calufate:20200210210133p:plain

 

 

2-3.完成

 以上で編集作業はおしまいです。お疲れ様でした。これで「1936年に自分がアメリカ大統領になるMOD」を製作することができました。

f:id:calufate:20200210211146p:plain

f:id:calufate:20200210211956p:plain

『転生したらアメリカ大統領だった件~史実知識で新世界秩序を築く!~』

 これを使えば「転生したら第二次世界大戦直前のアメリカ大統領だった件」というタイトルでAARを書いたり実況をしたりすることが容易にできます。ちなみになんとなく「capital = 629」(ハワイ州)にしていたので、首都が「ホノルル」になっています。

 

3.最後に

3-1.まとめ

 さて、ここまでいかがだったでしょうか。MOD製作は思ったよりも簡単そうでしたでしょうか、それとも想像通りに難しそうでしたでしょうか。いずれにしても、MOD製作について触れていただき、自分で作ろうと思うも良し、他のMOD製作者の方々にこんな大変な作業をありがとうと感謝するも良し、で結果的に皆様の学びに繋がっていれば、この記事を書いた私としても幸いです。

 この「国家元首を自分の画像と名前に変えるMOD」は、

  1. 画像を用意する。
  2. 画像を「.dds」に変換する。
  3. 国家データの名前と写真を書き換える。 

の3ステップ程度でできています。初回なので「.dds」を編集するフリーソフトをインストールするなどの手間はありましたが、次回以降はそれもないのでより簡単に作ることができると思います。次は「国家元首を自分の好きな偉人に変えるMOD」だとか「自分の好きなキャラクターに変えるMOD」など、自由に作ることも可能でしょう。このMODの場合はフレーバー以上の意味合いはありませんが、そういったフレーバーを楽しむのもこういうシミュレーションゲームの醍醐味だと思います。

 

 それでは、この記事が皆様が良いMODライフを送れる一助になれればうれしいです。では、ここまでお付き合いいただきありがとうございました。

 

 次回の記事は未定ですが、反響があればMOD製作の解説も続けたいと思います。

 

3-2.おまけ:実績解除可能?

 

f:id:calufate:20200210213337p:plain

 

 今回「国家元首の顔と名前を自分に変えるMOD」を製作してきたわけですが、このMODは「国家データ」に変更を加えているMODであり、このままでは実績の解除ができません。もちろん、実績の解除ができなくとも問題ないと考える方も多いでしょうが、折角なら実績解除が可能なMODにしてみたいと私は思いました。

 では、どのようにして実績解除が可能なMODにするのかを考えていきましょう。今回「国家データ」をいじるのは実績の解除を行えるMODの条件としては不適合です。なぜなら「国家データ」には国家の初期状態に関するデータが詰まっており、「set_research_slots」を「10」とかにしてしまうと、ゲームバランスに大きな影響を与えてしまいます。つまり、「国家データ」を編集して「name」を「"かるふぁて"」にしたり、「picture」を「"Portrait_USA_CALUFate.dds"」に変更することはできません。

 一方で、「Japanese Launguage Mod」は「言語を変更する」というMODのため、ゲームバランスに影響を与えないファイルを編集しているので、実績解除が可能です。

 

 すなわち、ゲームバランスに影響を与えないファイルを編集することによって同じ効果のMODでも実績解除ができるような仕様を目指すことにします。

 

 やり方としては、すでに「国家データ」で指定されている「Portrait_USA_Franklin_Roosevelt.dds」のデータを差し替え、「"Franklin Delano Roosevelt"」の読み方を変えてあげれば良いのです。

 とりあえず、「mod/shoshinsha_test_mod/history/」以下はいじれないので、「history」フォルダを削除します。続いて画像を差し替えるために「Portrait_USA_CALUFate.dds」の名前を「Portrait_USA_Franklin_Roosevelt.dds」に変更します。

f:id:calufate:20200210214800p:plain



 これでこのMODを使用すると「Roosevelt」さんのアイコンはこちらで読み込まれます。

 続いて名前の変更です。こちらは「Japanese Launguage MOD」と同じ手法を取ります。「mod/shoshinsha_test_mod/」に「localisation」フォルダを追加。「バニラのHoI4」の「localisation/」にあるファイル名の最後が「_l_english.yml」になっている適当なファイル、今回は「abilities_l_english」を「コピー」して「mod/shoshinsha_test_mod/localisation/」に貼り付けし、名前を「shoshinsha_test_mod_l_english.yml」に変更します。このとき、後ろの「_l_english.yml」は「言語設定が英語のときにこのファイルを読み込む」という意味になるので、消さないようにしてください。

 

 「mod/shoshinsha_test_mod/localisation/shoshinsha_test_mod_l_english.yml」をメモ帳で開くと、いっぱい文字が出てくるので最初の二行以外を範囲選択して削除します。

f:id:calufate:20200210220038p:plain

 そして「ABILITY_TOOLTIP_NAME」を「Franklin Denalo Roosevelt」に書き換えて、「"$NAME|H$"」を「"かるふぁて"」にします。

f:id:calufate:20200210220913p:plain

  あとは保存すれば完成です。早速確認してみましょう。

f:id:calufate:20200210221233p:plain

 はい、実績の解除は可能になってアイコンも変わりましたが、名前は変わりませんでした。「Roosevelt」さんの名前に含まれる半角スペースが問題なのでしょうかと、名前に半角スペースが含まれない方でも試してみましたが、上手くいかなったので、どうやら言語ファイルをいじることで人名を変更するのは無理そうです。「Japanese Launguage Mod」が人名をそのままの表記にしているのは実績解除を可能にするためだったのかもしれません。

 MOD製作では、このように試してできたできなかったという積み重ねも大きな糧になります。「mod/」を編集する分には最悪、削除してしまえばゲーム影響はないので、どんどん試行錯誤していってみましょう。

 以上、おまけでした。

*1:ゲームを起動したときに出てくる、再開とかプレイとかボタンがあって、DLCやMODを管理する画面。

*2:Windowsではフォルダと呼ぶ。

*3:「国家」のデータには、「首都・研究スロット・安定度・政体・研究状況・植民地」等々国家に関する初期データがだいたい記載されています。もし、国家の初期状態を改変したい場合はこのデータを改変すると良いでしょう。

*4:有料版や寄付もあるので、便利だと思った方は是非。

ブログの記事のタイトルとかで長文打つのめちゃ見苦しいと思うんだけど、短いは短いで狙ってる感あってどっちにもできない。

要約

 AAR的なゲームのあれそれをやってくためにブログ始めました。

 

本文

 最後にブログをいつ書いたのかと思い返してみると、学生時代に個人ブログが周辺で異様な盛り上がりをみせ、友だちに連れられるままに始めて以来のように思う。

 元々他人に自分を認めてもらうのが好きなタイプなので、ブログという自分だけをひたすらにアピールする場は、きっと性に合っていたのだろう。誘われて始めた割には、一緒にブログを始めた友だちの中で最後までブログに残り続けた。

 今では、Twitterで自己表現・自己アピールを短文でし放題なので、こういった長文を面白おかしく書き上げ、閲覧者を稼ぐ、というものをしなくなった。長文を書き上げる労力と140文字を書き上げる労力を比べるべくもない。さらには読者も長文を読む労力と140文字を読む労力を比べるべくもなく、閲覧数の増加は圧倒的にTwitterが楽だった。そして、安易に自己表現をできる手段に流れていくのは、当然と言えば当然の流れだったのだろう。友だちとの妙なやり取りが残っているブログは放置し、SNSに特化したのだった。

 さて、そういった経緯もあったのに、今更ながらにブログを始めることにした。別段、友だちに誘われたわけでもなく、SNS疲れからブログに退避しようとしたわけでもない。たぶん、ない。

 AARというものがある。After Action Reportと呼ばれるものであり、TRPG*1的に言うのならばリプレイである。主に歴史シュミレーションゲーム*2において、どのような行動を取り、どのような結果となったのかをまとめ、他者の共有するための手法で、実況動画*3に対する実況文章と言えないこともない、と個人的には思っている。知らないけど。

 AARは文章で表現される性質上、文章を書けるような場所であればどこでも執筆することができる。ブログは当然、Twitterでも可能だろう。もっとも、歴史シュミレーションというゲームが、一旦始めると気付けば夜が明けていた、という錯覚を覚えるほどに面白く、同時にそれだけの長時間をかけてプレイするようなものが多いことから、長文になるのは目に見えているため、140文字という制限があるTwitterはあまり馴染まないかもしれない。

 AARの公開場所としては、Wikiが存在する。きちんと調べたわけでもないけれど、そこが活発らしいような雰囲気とか気はしないでもない。けれど、Wikiは編集のやり方も分からなければ、そもそも複数が共有して使う場所であり、マナーやルールは当然守らなければならない。でも、そういうのを調べたり気にしたりするのが面倒くさくて、かと言ってそういったものを無視して自分の好きなように行動して迷惑をかけるわけにもいかない。

 しかし、個人ブログならば、書く内容は余程のものでなければ個人の自由である。下手なプレイを曝そうが、変な書き方をしようが、面倒くさい文章を書こうが、たぶん、自由である。閲覧者も少ないからそもそも問題を提示するような人もいないのだけれど。

 このようにして、AAR的なものをしたいと思い、昔のブログ以来のブログを開設することになった。

 

 AARの題材は主に「Hears of Iron Ⅳ」になる。Paradox社から発売されている歴史シュミレーションゲームである。歴史の舞台は、第二次世界大戦。私は世界史を取っていないので、第二次世界大戦について、三国同盟と連合が戦争してアメリカが勝った、くらいのような知識状態で購入した。つまり、コミンテルンって何? ファシストって何? アメリカが参戦したのはドイツの無限潜水艦作戦のせいだったよね……? という具合。それでも552時間プレイしてる(2018/07/10時点)んだから、なんだかんだ楽しめてる。

 他に気が向けば「Europa Universalis Ⅳ」*4や「Stellaris」*5も掲載するかもしれない。しないかもしれない。たぶんしない。

 

 AARを始める時期は未定。プレイ国家は日本……? 今年は色々予定詰まっていて新しいことを始める余裕なんてないはずなのに、なんで始めたのやら。現実逃避的な側面があったことは否定できないかもしれない。

*1:テーブルトークRPG。好き。

*2:戦略ゲームの一種。実際の歴史を題材に扱われる。

*3:歴史シュミレーション系の実況動画も当然ある。むしろ、そこからハマった。

*4:1444年からが舞台。何時代と言うのかは知らない。なぜか日本語化MODで起動できない。

*5:舞台は宇宙。SFチックな戦略ゲーム。