紋章 Mod

提供:ck3wiki
2025年10月6日 (月) 07:28時点におけるゆいかせ (トーク | 投稿記録)による版 (紋章 mod の日本語化(kagi))
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

※2025/10/6、英wikiよりkagi翻訳を通しました。機械翻訳なので一部不自然な日本語があるかもしれません。ぜひ編集してくれるとありがたいです。

紋章は、称号・王朝・家を識別するために盾や旗に用いられる画像です。

スクリプトは /Crusader Kings III/common/coat_of_arms/coat_of_arms に記述します。

基本的なスクリプト構文は次のとおりです。

coat_of_arms_name = {
    keyword1 = value1
    keyword2 = value2
    ...
}

「coat_of_arms_name」が称号、家、または王朝のキー名(例:「d_leon」)と同一である場合、ゲームはゲーム開始時にそのCoAをデフォルトのレイアウトとして自動的に使用します。これは改造(Mod)によって追加された称号・家・王朝にも有効です。

有効なキーワード[編集 | ソースを編集]

キーワード コメント
parent 継承に用います。詳細は下記参照。 parent = k_england
pattern 背景パターンのファイルへのパス(通常は /Crusader Kings III/gfx/coat_of_arms/patterns/ に配置)。
テクスチャ付きエンブレム使用時のマスクテクスチャによる見た目の問題を避けるため、パターンを含めることを推奨。
pattern = "pattern_vertical_split_01"
color1
color2
color3
color4
color5
パターンで使用する色、または colored_emblems で参照する色を指定します。
通常は /Crusader Kings III/common/named_colors で定義された色名を参照します。
RGB、HSV、8桁の16進数を明示的に指定することもできます。
color1 = "white"
color2 = hsv { 1.0 1.0 1.0 }
color3 = hsv360 { 360 100 100 }
color4 = rgb { 255 255 255 }
color5 = hex { aabbccdd }
textured_emblem --- 複数のテクスチャ付きエンブレムを指定できます。各エンブレム自体が以下の有効なキーワードを持つスクリプトオブジェクトです。 ---
texture エンブレムのファイルへのパス(通常は /Crusader Kings III/gfx/coat_of_arms/textured_emblems/)。
texture = "te_griffin_01.dds"
mask 紋章の背景パターンをエンブレムのクリッピングマスクとして使用できます。
mask = { 1 3 }
instance scale 2次元のfloatで指定、デフォルトは { 1.0 1.0 }
instance = { 
	scale = { 0.5 0.5 }  
	position = { 0.75 0.75 } 
	rotation = 45
	depth = 5  
}
position 2次元のfloatで指定、デフォルトは { 0.0 0.0 }
rotation floatで指定、デフォルトは 0.0
depth 描画順制御に使用、floatで指定、デフォルトは 0.0
colored_emblem --- 複数のカラーエンブレムを指定できます。各エンブレムは以下のキーワードを持つスクリプトオブジェクトです。 ---
texture エンブレムのファイルへのパス(通常は /Crusader Kings III/gfx/coat_of_arms/colored_emblems/)。
texture = "ce_crown.tga"
" textured_emblem のすべての項目が有効です ---
color1 エンブレムの基調色を定義
color1 = color2
color2 = "white"
#color3 = hsv360 { 360 50 50 }
color2 エンブレムの第2色(テクスチャの緑チャンネル)
color3 現在は未使用、デフォルトで白
sub --- 複数の sub を指定できます。各 sub は完全な紋章スクリプトオブジェクトで、さらに別の sub(入れ子)は不可、それ以外のすべての項目が使用可能です。 ---
instance scale 2次元のfloatで指定、デフォルトは { 1.0 1.0 } ---
offset 2次元のfloatで指定、デフォルトは { 0.0 0.0 } ---
depth 描画順制御に使用、floatで指定、デフォルトは 0.0 ---

[編集 | ソースを編集]

以下に紋章と対応するいくつかの例を示します。

flag_with_emblem = {
    pattern = "pattern_vertical_split_01"
    color1 = "lemon_yellow"
    color2 = "sky_blue"
 
    textured_emblem = {
        texture = "te_griffin_01"
    }
}
flag_with_culled_emblem = {
    pattern = "pattern_vertical_split_01"
    color1 = "lemon_yellow"
    color2 = "sky_blue"
 
    textured_emblem = {
        texture = "te_griffin_01"
        mask = { 1 }
    }
}
two_emblems_scaled_and_positioned = {
    pattern = "pattern_vertical_split_01"
    color1 = "lemon_yellow"
    color2 = "sky_blue"
 
    textured_emblem = {
        texture = "te_griffin_01"
        instance = { position = { 0.75 0.75 } scale = { 0.5 0.5 }  }
        instance = { position = { 0.75 0.25 } scale = { 0.5 0.5 }  }
    }
}

Emblem examples.png

継承と sub[編集 | ソースを編集]

この章は主に継承についてですが、その前提として sub に関する2点から始めます。

最初の「ベース紋章」は暗黙の sub です。

a = {
    pattern = "pattern_solid.tga"
    color1 = "blue"
    sub = { }
}
# 上は次と同じ意味です:
b = {
    sub = {
        pattern = "pattern_solid.tga"
        color1 = "blue"
    }
    sub = { }
}

各 instance フィールド(紋章のインスタンス。エンブレムのインスタンスではありません)は、個別の sub に変換されます。

a = {
    color1 = "blue"
    instance = { offset = { 0 0 } } # A
    instance = { offset = { 1 0 } } # B
    sub {
        color1 = "red"
        instance = { offset= { 0 1 } } # C
        instance = { offset = { 1 1 } } # D
    }
}
# 上は次と同じ意味です:
b = {
    sub = {
        color1 = "blue"
        instance = { offset = { 0 0 } } # A
    }
    sub = {
        color1 = "blue"
        instance = { offset = { 1 0 } } # B
    }
    sub {
        color1 = "red"
        instance = { offset = { 0 1 } } # C
    }
    sub {
        color1 = "red"
        instance = { offset = { 1 1 } } # D
    }
}

ここまでを踏まえ、継承に入りましょう。

継承は parent キーワードで実現します。基本的には「指定した紋章を取得し、明示的に設定していない項目をそれで埋める」という意味です。

例:

daddy = {
    pattern = "pattern_checkers_01.tga"
    color1 = "burned_red"
    color2 = "mid_grey"
    colored_emblem = {
        texture = "ce_angel.dds"
        color1 = "rust_brown"
        color2 = "rust_brown"
    }
}
 
child = {
    parent = "daddy"
    pattern = "pattern_checkers_diagonal_01.tga"
    color1 = "mint_green"
    # >color2 = "mid_grey"<        継承
    # >colored_emblem = { ... }<   継承
}

エンブレムの継承は「全てかゼロか」です。少なくとも1つのエンブレム(種類は不問)を指定すると、親のエンブレムは継承されません。エンブレムを1つも指定しない場合は、親の全エンブレムを継承します。

sub が関わると継承規則はやや複雑になります。指針となる2つのルールは次のとおりです。

親が指定されている場合、すべての値はその親の最初の sub から取得されます(多くの場合「暗黙の」sub です)。 sub に parent が指定されていない場合、その sub は最初の sub の parent を流用します。ただしこの場合、すべての値は親の対応する sub から取得されます。parent = "none" を設定すると、この自動継承は無効になります。 例:

daddy = {
    pattern = "pattern_solid.tga"
    sub = { }
    sub = { }
}
 
child = {
    parent = "daddy"
    # この暗黙の sub は daddy の暗黙の sub を継承
    sub = {
        # parent を指定していないため、この sub は >parent = "daddy"< を流用し、「daddy」の2つ目の sub を継承します。
    }
    sub = {
        parent = "other_coa"
        # parent を明示したため、これは "other_coa" の最初の sub を継承します
    }
}

継承チェーン(「深い継承」)はボトムアップで解決されます。ユーザーは継承ループを作らないよう注意してください。

grand_dad = {
    pattern = "pattern_solid.tga"
    sub = { }
}
 
daddy = {
    parent = "grand_dad"
    # >pattern = "pattern_solid.tga"< 継承
    color1 = "blue"
    # >sub = { }< 継承
}
 
child = {
    parent = "daddy"
    # >pattern = "pattern_solid.tga"< 継承
    # >color1 = "blue"< 継承
    sub = {
        # これは daddy の2つ目の sub を継承します
    }
    sub = {
        # daddy には sub が2つしかないため、これは親を持ちません
    }
}

最後に実例です:

k_england_and_france = {
    sub = {
        parent = "k_france"  # 別途定義
        instance = { offset = { 0.0 0.0 } scale = { 0.5 0.5 }  } # 左上
        instance = { offset = { 0.5 0.5 } scale = { 0.5 0.5 }  } # 右下
    }
    sub = {
        parent = "k_england"  # 別途定義
        instance = { offset = { 0.5 0.0 } scale = { 0.5 0.5 }  } # 右上
        instance = { offset = { 0.0 0.5 } scale = { 0.5 0.5 }  } # 左下
    }
}

動的な紋章(Dynamic Coats of Arms)[編集 | ソースを編集]

通常の称号に割り当てられる紋章に加え、動的な紋章定義を作成することもできます。これは /Crusader Kings III/\common\coat_of_arms\dynamic_definitions\ に保存します。

# 名前は封土称号定義と一致している必要があります
title_name = {
	item = { # 1つ以上の item
		trigger = { # この item を選ぶ条件。最初に有効な item が選ばれる。root = 称号
			<trigger> # 任意のスクリプト化トリガー、または通常どおりインラインで定義されたトリガー
		}
		coat_of_arms = name # 紋章ファイルで定義された使用する紋章名
	}
}

紋章を更新するには、称号スコープ内で update_dynamic_coa = yes を呼び出す必要があります。これはすでに on_character_culture_changeon_character_faith_change において、すべての保有称号に対して呼び出されていますが、他の状況で動的紋章を更新したい場合は、必要に応じて on_actions を実装してください。

ゲーム内デザイナーで手軽に[編集 | ソースを編集]

Royal Court DLC と併せて、パラド社は便利なゲーム内エディターも用意しています。作成したCoAを有効なスクリプトコードとして直接エクスポートすることも可能です。やり方は、デザイナーで望みの紋章を作成し、「クリップボードにコピー」ボタンを押すだけです。すると使用PCの中間ストレージに、紋章に必要な完成済みの有効なコードが作成されます。あとは CTRL+V で該当のテキストファイルに貼り付けるだけです。適切な名前(例:k_england)を設定するのを忘れないでください。モッダーは小技として、ローカライズファイルを一時的に削除することもできます。するとCKは称号名の読み込みに失敗し、ゲーム内で称号のキーワード自体を表示します。プレイヤーはCoAデザイナーで称号名を変更することもでき、この場合、キーワードをそのままコピーして該当ファイルに貼り付けられます。後に表示されない原因となるタイプミスを避けられます。

また、この時点で改めて注意すべきは、動的CoAの存在により、同一称号に複数のCoAがあり得ることです。したがって名前が称号キーと直接一致しない場合もあります。結果としてCKのインタープリタはタイプミスを認識できず、エラーメッセージを出しません。自作CoAが表示されない場合は、正しく文字単位まで一致しているかを改めて確認してください。

デザイナーの弱点[編集 | ソースを編集]

デザイナーは、例えば手書きでCoAをコーディングするより直感的に使えるかもしれませんが、デザイナーではCoAの継承や分割は扱えません。上の実例のように、イングランドとフランスの紋章を組み合わせることは、デザイナーでは実質不可能です。カスティーリャ、レオン、アラゴン、ナバラ、シチリアの紋章を組み合わせたEU4のスペイン国旗でさえ、デザイナーでは再現できません。ただし、基礎の紋章作成にはデザイナーを活用できるため、その後は手作業で継承をスクリプトすれば済みます。

紋章エンブレムのMod制作[編集 | ソースを編集]

デフォルトでは、CoAデザイナーはオリジナルゲームのエンブレムのみを表示します。しかし、リストの拡張は非常に簡単です。

.DDS ファイルのフォーマット[編集 | ソースを編集]

カスタムエンブレムをゲームに認識させるには、特定の形式で .DDS ファイルとして保存する必要があります。ファイル形式は「8.8.8.8 ARGB 32bpp / Unsigned」で、paint.net(一般的な無料画像編集ソフト)では「B8G8R8A8 (Linear, A8R8G8B8)」として知られています。縮小時の画質向上のためにミップマップを有効化できますが、必須ではありません。画像内では、特定の3色のみを使用します。ゲームは色値 0x000084(青)を color 1、0x00FF94(黄緑)を color 2、0xFF0084(マゼンタ)を color 3 として自動認識します。CKにはある程度の許容範囲があり、異なる色もこれらのいずれかにマッチさせようとします。しかしこの補正は完璧ではなく、頼るべきではありません。モッダーは常に正しい色を使用するようにしてください。

エンブレム定義ファイル[編集 | ソースを編集]

さらに、同じ場所にテキストファイルを作成します(文字コードは常にUTF-8 BOM)。テキストファイルでは、デザイナーで提供したい各エンブレムに対し、次の構文で1行ずつ定義します。

<pic_name>.dds = { colors = <1,2,3> category = <string> }

ゲームが正しくエンブレムを認識するため、テキストファイル内の名前は画像ファイル名と完全に一致していなければなりません。

color オプションには 1、2、または 3 を指定できます。これは、選択したエンブレムに対してユーザーが設定可能な色数を表します。実際に使用されている色数より大きい値を設定した場合、ユーザーは余分な色オプションを持ちますが、機能はしません。逆に、テキストファイルで色数を少なめに指定した場合は、自動補正が、色が十分近ければ余剰色を1色にまとめるか、未知の色をユーザーが変更できない赤茶色系に設定しようとします。

ゲームはデフォルトで次のカテゴリをサポートします:animals、circles_spirals、crosses_and_knots、faiths、manmade、nature、patterns、tribal_seal、writing & figures。異なる文字列を使用した場合、ゲームはユーザー向けの新しい選択カテゴリを追加します。カテゴリ名はテキストとして表示されるため、新しいカテゴリごとにローカライズファイルに次のような行を定義してください:

COA_DESIGNER_CATEGORY_<your_category_string_here>:0 "<選択言語で表示したいカテゴリ名>"


ドキュメンテーション スクリプトスコープ効果トリガー変数補正リスト
スクリプト AIブックマークキャラクターコマンド評議会文化ディシジョン王朝イベント政府歴史領地ライフスタイル連隊宗教スクリプト値ストーリーサイクル闘争称号特性
インターフェース インターフェースデータ型ローカライズカスタムローカライズフレーバー化
マップ マップ地形
グラフィック 3Dモデルエクスポーター紋章グラフィックアセットフォントパーティクルシェーダーユニットモデル
オーディオ 音楽サウンド
その他 コンソールコマンドチェックサムModの構造Mod制作ツールトラブルシューティング