Top / MOD / 新参者が行く、Hoi2-MOD製作あれやこれ / 05小ネタあれやこれ

MOD/新参者が行く、Hoi2-MOD製作あれやこれ/05小ネタあれやこれ

小ネタあれやこれ


 
 
Elder_Sign_clip_art_hight.png

これから、Mod制作に役立ちそうな小ネタAARを始めます。

 
symRMN.png

はーい。

 

不満度

Elder_Sign_clip_art_hight.png

まず初めに、不満度減少の算出方法について説明しよう。
Hoi2に慣れ親しんだ人でも、不満度減少の詳しい仕組みはわかっていない人が多いんじゃないだろうか。

 
symRMN.png

確かに、あまり考えたことはないですね。
不満度がたまったら、ICを消費財に全力をつぎ込んでいました。

 
Elder_Sign_clip_art_hight.png

プレイヤの時には、とにかくゼロにすればいいからね。
ただ、不満度の仕組みをある程度理解しておくと、閣僚特性の設定やその他イベント効果の設定に役立つかもしれない。

 
symRMN.png

Mod製作の際に、不満度周りの設定は、なんとなく感覚で決定していました。
どちらかというと縛りプレイ時や高難易度プレイ時に役立ちそうな気がします。

 
Elder_Sign_clip_art_hight.png

そうだね。
とりあえずは下に画像二つを表示させよう。
不満度計算の式と、実際にあてはめた状況(DH Full1933ソビエト, 難しい, タカ派+1, 軍需大臣をスターリンに変更)だ。

 

05_01.png

05_02.png

symRMN.png

エクセル方眼死すべし。慈悲はない。

 
Elder_Sign_clip_art_hight.png

DHには"./Modding documentation/Dissent progress.xls"が存在しているんだが、このファイルはミスがあり、数値を代入しても不満度が正しく計算されない。
ミスを修正し、分かり易いように数式図を追加したものが上の画像だ。

 
Elder_Sign_clip_art_hight.png

緑色がゲーム中に変更できる値(閣僚特性やスライダ特性によって変動)であり、
赤色がハードコード、青色がMisc.txtによって設定される値だ。
NEEDEDは消費財の需要、Used IC on CG は、実行ICを消費財に使用した割合の値となる。
また、数式の分母に存在する閣僚・政策補整には下限があり、分母がゼロに極限まで近づくことはない(= 不満度減少が∞になることはない)

 
symRMN.png

この数式からわかること下にまとめます。

 
  1. 平時の消費財需要は、戦時の二倍である。
  2. 閣僚補整と政策補整は別口で計算される。(= 閣僚補正値と政策補正値を足して減少率???%ということではない。)
  3. 消費財需要の減少と不満度減少が同値の場合、不満度減少の効果を採用した方がIC回復率と不満度減少は速い。
symRMN.png

Hoi2に慣れたプレイヤは当たり前に思うかもしれませんね。
他にも数式から導けることがあったらコメント欄で教えてください。

 
Elder_Sign_clip_art_hight.png

少し話が逸れるが、不満度が実行ICにそのまま乗りかかることを考えると、単純な工場建設の速度(1 IC / 360 days / 5 IC)が不満度解消によるIC上昇を上回ることはない。
つまり、工場建設を行う際は不満度を0にしてからの方がよいということがわかる。

 
symRMN.png

プレイ時には変な貧乏性を発揮して、不満度が1〜2 %あたりで工場建設を始めていました。

上ではIC増加による工場建設増加を考えませんでしたが、たぶん複利計算でも同じだと思います。

 

カラースケール

Elder_Sign_clip_art_hight.png

次に、カラースケールについて説明しよう。
Hoi2のMap上で、国の支配地域を着色する際に参照されるファイルが、colorscales.csvだ。
各Mapフォルダ(DHMapはMap_1)に存在しており、国の色を指定する以外にも、経済Mapモードや外交Mapモードでの色を定義する。

 
symRMN.png

以下に、各定義色と各Mapモードでの関係を"./Modding documentation/map colors index.xlsx"を訳してまとめます。

 
country.csv地形
Map
天候
Map
経済
Map
補給
Map
パルチザン
Map
外交
Map
Green工業力あり補給あり反乱率なし友好国の低VP
Orange平原
Dark Yellow中立国の高VP
Yellow砂漠中立国の低VP
Dark Grey都市
Grey山岳
Dark Green密林工業力なし友好国の高VP
Light Red敵対国の高VP
Red補給切れ反乱率あり敵対国の低VP
Light Green湿地
Brown泥濘泥濘
DarkOrange
White

 

Elder_Sign_clip_art_hight.png

次に、Colorscales内での各定義色の定義の仕方をまとめる。
country.csv覗いてみよう

 
Black;;;
red;green;blue;index
85;85;85;0
75;75;75;20
50;50;50;40
1;1;1;64
symRMN.png

これが色の定義のひとまとまりです。Index値については後に説明します。

 
Elder_Sign_clip_art_hight.png

一行目が定義する色の名前(Black)、二行目以降が各Index値とそれぞれにおけるRGB値だ。
Index値が0の時はR=85, G=85, B=85の[#555555]色になる。

 

インデクス値が直接定義されていない、例えば上の定義だとIndex=10のときは最も近いIndex値上下のグラデーションで決定される。(おそらく等比)

例:Index10の時、
Indexが20と0の定義から、

Red = (75 - 85) * ( (10 - 0) / (20 - 0) ) + 85 = 80
Green = (75 - 85) * ( (10 - 0) / (20 - 0) ) + 85 = 80
Blue = (75 - 85) * ( (10 - 0) / (20 - 0) ) + 85 = 80

Index[x]のとき、b>x>aとすると
Index[b]とIndex[a]の各定義は、
(Red, Green, Blue) = (Rb, Gb, Bb)
(Red, Green, Blue) = (Ra, Ga, Ba)
とおける。

Red = (Rb - Ra) * ( (Index[x] - Index[a]) / (Index[b] - Index[a]) ) + Ra
Green = (Gb - Ga) * ( (Index[x] - Index[a]) / (Index[b] - Index[a]) ) + Ga
Blue = (Bb - Ba) * ( (Index[x] - Index[a]) / (Index[b] - Index[a]) ) + Ba

Math.png

symRMN.png

そもそもIndex値って何ですか?

 
Elder_Sign_clip_art_hight.png

いい質問だね。
Map自体をいじった人ならわかるが、Mapはグレースケールで表現されているんだ。
Map上のある一点に着色するとき、その点の色を4で除したものを64から引いた値がIndex値となる。
つまり、RGBs=(255, 255, 255)の時、インデックス値は64 - (255 / 4) ≒ 0 となる。

 
symRMN.png

なるほど。
Mapには、単純にColorScalesの色をグレイスケールに重ねているわけじゃないんですね。

 
Elder_Sign_clip_art_hight.png

そうだよ。
そしてこれは、Dhfull用のColorScaleをDDAMapに適用させても、微妙に陸地の色が異なる理由でもあるんだ。
DDAでは陸地は白(Index=0)だが、Fullでは陸地が灰色(Index=19)だからね。

 

※追記:正確には、DDAmap陸地のIndexは1、Fullmap陸地のIndexは20です。

symRMN.png

確かに、DHfullのColorScalesをDDAMapに適応させると、
FullのMapにくらべて少し明るい感じになってました。

 
Elder_Sign_clip_art_hight.png

ちなみに、ColoscaleはIndex値が上から下の行へ昇順になるように配置する必要があるんだ。
Index値が同じ値でもエラーを吐かないが、表示される色としては下にある定義が優先される。

 

 

※追記:指定した色と実際に表示される色との間には微妙なズレが存在します。
これは、Hoi2が16BitColorのソフトウェアであることに起因すると思われます。

 

+  Excel用VBA – Colorscales.csv セル着色 
Elder_Sign_clip_art_hight.png

ちなみに、DDAのMapでもFullの様に着色されるように調整したものが、これだ。
下にそれぞれの比較図を表示しておこう。

 

Compare.png

symRMN.png

この図では、調整したものがFull-oid Colorscales.csvと表記されています。
こう見ると結構色が変わっているのが判りますね。
ちなみに、GIFアニメーション化したものはこちらです。

 
symRMN.png

名付けといてなんですが、Fulloidってフッ化物(Fluoride)みたいですね。

 

 
Fulloid Map
 

フラグ&カウンター

symRMN.png

CounteMaker, FlagMaker, EazyFlagMaker, PNPMulti-FlagMaker, いろいろあります、画像のツール

 
Elder_Sign_clip_art_hight.png

白人ラッパーの方かな。少し古いね。
掴みはこれくらいにして解説に入ろう。

 
symRMN.png

はい

 
Elder_Sign_clip_art_hight.png

Hoi2で使用される画像は、カウンタやフラグ、閣僚、イベント表示など様々な種類がある。
これら画像は、単純に編集するだけではなく、決まった様式で作成することが必要なんだ。
この手順を無視すると、画像が色化けしたり表示がおかしくなったりすることがある。
この欄では、そういった各種の画像について説明していこうと思う。

 
symRMN.png

確かに、Hoi2用の画像を作成することって結構面倒だった気がします。

 

 

Elder_Sign_clip_art_hight.png

では最初は簡単なものから始めるとして、シールドについて解説していこう。

 
Elder_Sign_clip_art_hight.png

シールドは外交画面に表示される国旗だ。

 
symRMN.png

下のこれの事ですね。

 

05a_01.png

Elder_Sign_clip_art_hight.png

まず国旗画像を用意して、その画像を70 x 44 px に拡大する。
その後、画像を時計回りに90°回転させる。
コピー&ペーストで横に四つ並べ、好みのShild_Blank画像を乗算で重ねて終了だ。

 
symRMN.png

簡単にですが画像にまとめてみました。
画像は別館のTop絵を使用しています。

 

05a_02.png

Elder_Sign_clip_art_hight.png

USAなど国旗にカントンが存在するものは、縦掲揚時にカントンが左上に位置する必要がある。
こうした国旗の際には、上の二行目の手順時に画像の左右反転を行い、270°回転を行うとよいだろう。

 

※FlagMakerでは90°回転を行っているが、筆者が作成したGimp用のScript-fu(後掲)では、左右反転後に270°回転を行うように設定している。

 

Elder_Sign_clip_art_hight.png

次にフラグの説明に入ろう。フラグ作成はシールド作成と似ている点があるため理解しやすいだろう。

 
Elder_Sign_clip_art_hight.png

まず背景色を純緑(#00ff00)に設定して、画像のサイズを700 x 18に設定しよう。
国旗画像を28 x 18 px より小さい大きさに縮小する。
その後、28 pxごとに横に25個並べる。
各画像を旗めかせた後に好みのShild_Blank画像を乗算で重ねて終了だ。

 
Elder_Sign_clip_art_hight.png

ちなみに、FlagMakerでは旗のはためきが異なる。
下にその画像を示そう。
上がFlagMaker、下がそれ以外、どちらもGifアニメーションで動くようになっている。

 

Image05a_03.gif

 

Elder_Sign_clip_art_hight.png

次にカウンタとアイコンの説明に入ろう。
それぞれの例を下の画像に示した。

 

05a_04.png

symRMN.png

アイコンは、遠征軍を受け入れた時など自軍ではない軍隊の指揮権を所有している際に表示されますね。

 
Elder_Sign_clip_art_hight.png

まずカウンタの説明をするが、最初に質問をしよう。
下の画像を見てくれ。

 

05a_05.png

Elder_Sign_clip_art_hight.png

これらの画像は、それぞれ保存済みのオランダとベルギーのカウンタ画像だ。
さて、どちらの画像がゲーム上で正しく表示されると思う?

 
symRMN.png

えっ、
普通に考えて表示の正しいオランダじゃないんですか...?

 
Elder_Sign_clip_art_hight.png

それじゃあ、結果を見てみようか。

 

05a_06.png

symRMN.png

あれ、ベルギーの方が正しい表示になっている。
なんでこうなるんですか。

 
Elder_Sign_clip_art_hight.png

そうだね。これからそれを解説していこう。
まず、Hoi2はカウンタを扱うときに、その表示される画像を見ていない。
正しく表示されるカウンタ画像の情報を見てみようか。

 

05a_07.png

symRMN.png

あっ、カラーパレットが画像のようになっています!

 
Elder_Sign_clip_art_hight.png

その通り。Hoi2が参照しているのは、画像のカラーパレット部分なんだ。
カラーパレットの三つ目から半分程度までが、陸軍などで使用される国旗部分(14 x 9 px)の色を、半分から後半にかけてが、空軍に使用される円形章(9 x 9 px)の色を定義しているんだ。
他の部分の定義は画像で示した通りだね。

 
Elder_Sign_clip_art_hight.png

CounterMakerやScript-fuは画像からカラーパレットへの変換を行うことで、カウンタがHoi2に正しく表示されるようにしているんだ。
カラーパレットとカウンタ表示の対応は、「./gfx/map/」の「hoi_counter_strip.bmp」で定義されているから、
正確なカラーパレットとカウンタ表示の対応を知りたい場合は、この画像の表示とカラーパレットを確かめるとよいだろう。

 
Elder_Sign_clip_art_hight.png

ちなみに、新規ユニットを追加するなどして、ユニット定義の類別数と「hoi_counter_strip.bmp」のカウンタ表示がズレると、Hoi2上のカウンタ表示が真っ二つになる。
新規ユニット追加を考えている人は留意した方がよいだろう。
例を下に提示しておく。

 

05a_08.png

 

 

Elder_Sign_clip_art_hight.png

最後に、アイコンの話をするとしよう。
背景色を純緑に設定した、16 x 14 px のイメージを作成する。
国旗画像を14 x 9 px に設定し、上から3 px目、左から2 px目に位置させよう。
最後に、国旗の周りを黒で囲って終了だ。

 
Elder_Sign_clip_art_hight.png

アイコンはカウンタの陸軍国旗と同程度の大きさなので、作成は簡単だろう。
場所は「./gfx/map/flags/」で名前を「icon_[国タグ].bmp」設定すればHoi2に読み込まれる。

 
Elder_Sign_clip_art_hight.png

以上で画像関係の説明は終了だ。
これらの画像はすべて、色空間情報なし、24bitのビットマップ(αチャンネル無し)で出力しよう。
また、Hoi2上では、これらの画像の純緑部分が透明として扱われることに留意しておこう。

 

 

 

Script-Fu For Gfxs

Gimpでカウンタ画像、フラグやシールド画像の生成ができる。
筆者作成

 

フォント設定

DHをEuropa Engine Patcherで日本語化した場合、ゲームパスには_INMM.iniが存在しています。

この_INMM.iniを編集することで、Dhのフォントを変更することができます。
ただしビットマップフォント以外をフォントに指定した場合は、一部の文字が滲みます。

DH1.05でツールチップに様々な情報が表示されるようになりました。
MaxLinesを初期設定のままにしておくと、表示されない情報があります。
また、勝利ポイントシステム拡張MODのマップ外VP獲得条件が全て表示されません。
タワーなんか作らない、作らせない、あるいはPCパワーに自信のある人は、
自己責任でMaxLinesをコメントアウトして打ち切り設定を無効にしても良いかもしれません。
不安な人は、確かめながらMaxLinesを少しずつ増やしていくとよいかもしれません。
(一応自己責任でお願いします)

パラメータの説明はIniファイルに記述されています。
それぞれ、

Font=[描画フォント名]
Height=[フォントサイズ]
Bold=[太字か否か]
AdjustX=[描画位置のX軸修正]
AdjustY=[描画位置のX軸修正]

になっています。
描画位置は、フォントごとのカーニングやベースラインによってそれぞれ調整する必要があります。

筆者が確認できた用途を列記していきます。

### 不明
[FONT-eurostilecond12]

### イベント本文・シナリオ名
[FONT-eurostilecond14]

### 任務・歴史概略国家名・ボタン
[FONT-eurostilecond14bold]

### Ver.のチェックサム?
[FONT-eurostilecond18bold]

### 格言・イベントタイトル等
[FONT-eurostilecond20bold]

### 不明
[FONT-eurostilecond24bold]

 

文字装飾

■色指定文字列
ァA 暗い緑 (0,64,0)
ァB 青 (0,0,192)
ァC 暗い赤 (128,0,0)
ァD 黄色 (255,255,0)
ァE マゼンタ (255,0,255)
ァF オレンジ (255,128,0)
ァG 緑 (0,255,0)
ァH グレー (128,128,128)
ァI 明るい青 (0,0,255)
ァJ 少し暗い緑 (0,192,0)
ァM 明るい緑 (100,255,100)
ァN 明るい赤 (255,100,100)
ァR 赤 (255,0,0)
ァW 白 (255,255,255)
ァY 水色 (208,232,248)
ァZ 黒 (0,0,0)
ァァ 元の色に戻す
\ァ 「ァ」の文字を入力
%XXX (Xには0〜7の数値が入る。BGRの順)

・「ァ」は「§」で代用可能
・A〜Zの配色は_inmm.iniで
ColorY=$00F8E8D0
のように指定可能(00BBGGRRの順)

■その他
$ コイン画像を表示 (For the Glory用; 画像がなければ「$」を表示)
\\ 「\」を表示
\$ 「$」を表示
\% 「%」を表示
\ァ 「ァ」を表示
\§ 「§」を表示 

以下のURLより引用
http://okbdak.blog101.fc2.com/blog-entry-242.html

以上に示した通り、Hoi2では文字装飾を行うことができる。
これらの装飾は改行時にリセットされるが、一応[ァァ]でもとの色に戻した方がよいだろう。
[ァ]は小文字のァを半角カタカナにすることで入力。
[§]は、「セクション」と入力して変換することで入力できる。

筆者は、昔Min○crafで配付ワールドを作っていた経験から、§で文字装飾を行う事が多いが
ここは完全に好みの問題であろう。

そもそも文字コード的には、Latin1の「§」が、Shift-jisの「ァ」である。(どちらも0xa7)

上で引用した部分に紹介されていない英字でInmm.iniで定義していない場合、(例えば[ァX]など)
色は黒(0, 0, 0)となる。

 

Window化

Settings.cfgを編集し、Display modeを1にすることで
Hoi2のWindow化が可能になります。

Hoi2ウィンドウの一部でも画面外にはみ出してしまうとDHは落ちてしまうため、
ウィンドウを掴んでブンブン振らないようにしましょう。

画面が1024 x 768 以下の事が多いスリムなノートパソコンでは
Hoi2のWindow化で画面からはみ出てしまいます。
そこでWindowの大きさを、はみ出ないように余裕をもって設定するとウィンドウ化で起動できます

6 # Display resolution: 0 = do not change (default: 1024x768), 1 = 1152x864, 2 = 1280x768, 3 = 1280x1024, 4 = 1440x900, 5 = 1600x1024, 6 = user specified - see below
1014 # Screen Width (used if 6 is selected as screen resolution - see above)
758 # Screen Height (used if 6 is selected as screen resolution - see above)

ただし、UIが一部削れます。

Setting.cfgには、他にもMod製作に有用な設定がありますが、公式ランチャからは変更出来ません。
テキストを直接変更して、実行ファイルを起動する必要があります。

 

DH Launcher

私的ランチャを作成しました。ランチャー上からSetting.cfgの設定を変更できます。
また、DH終了後に自動的にSavedebugを開くように設定できる機能なども付けています。

05a_09.png

こんな感じです。

 

miscの設定

Misc設定の中から特に、Mod製作やデバッグに役立ちそうな設定について説明します。
日本語名はHoI2Editor準拠です。

Modセクション

AIの諜報/外交をログに記録

AI Spy and Diplomatic Mission Loggers

表記の通りAiの外交行動をログとして出力できます。

国家情報をログに記録

Country Logger

表記の通り国家情報をログとして出力できます。
一日ごとにログを出力するため、Hoi2が激重になります。
ログを知りたい一日に限定して出力させる使い方がよいでしょう。
チートコード「savestats」で十分な場合はそちらで対処した方がよいでしょう。

AI切り替えをログに記録

Switched AI Files Logger

AIを作成する際に、本当にAiファイルが読み込まれているのか確認することができます。
出力される「SwitchAI.txt」は自動でリフレッシュされないため、ログが溜まり過ぎることがあります。
検索する際に邪魔になりますので、情報が確認できたらテキストファイルを削除するとよいでしょう。

新自動セーブファイル名

Use New Auto-Save File Format

自動保存設定ごとに別ファイルを出力します。バグの原因を探索する際に、指定毎にさかのぼれるため便利です。
Mod製作の際には必須の設定となるのではないでしょうか。

その他AIセクションの
AIイベント選択ルール

AI Events Action Selection Rules

も、イベントチェーンを確認する際に有用です。

 

Dh1.03==>1.04化

DH1.03を1.04に適応させるために、「./db/country.csv」を編集し
行末のX前にセミコロン(;)三つを挿入する必要があります。

country;main color;leader language;Army Nationality Sprite;Model Nationality Picture ;Model Nationality Icon;Model Nationality Name;END
AFG;LightGray;ENG;ENG;;;;X

また、Miscを編集する必要があります。

+  1.03 to 1.04 misc.txt

また、1.04から任務効率定義のCsvが追加されました。
デフォルトから変更したい場合は、「./db/mission_eff.csv」
をModフォルダにコピーして編集を行うとよいでしょう。
追加しない場合はデフォルトの設定が読み込まれます。

Configフォルダに変更を加えているModの場合、変更点を追加する必要があります。

この欄はフォーラムの
How to update a 1.03 mod to 1.04
を参考にしています。

 

Dh1.04==>1.05化

DH1.04を1.05に適応させるために、Miscを編集する必要があります。

+  1.04 to 1.05 misc.txt

Configフォルダに変更を加えているModの場合、変更点を追加する必要があります。

この欄はフォーラムの
How to update a 1.04 mod to 1.05
を参考にしています

 
 
 

MOD/新参者が行く、Hoi2-MOD製作あれやこれに戻る


Top / MOD / 新参者が行く、Hoi2-MOD製作あれやこれ / 05小ネタあれやこれ