Crusader Kings III

Crusader Kings III

Not enough ratings
CK3 MOD制作入門:チート剣を作る
By adoring_onion
Crusader Kings3のMODは構造が複雑で、日本語解説もあまりないのでとっつきにくいです。このガイドではチートレベルの剣のartifactを追加し、それを手に入れるためのdecisionとイベントを作成する中で簡単なMODの作り方を解説していきます。
2
   
Award
Favorite
Favorited
Unfavorite
本ガイドの目的
今回は所持者にチートレベルの効果がもたらされる剣のartifactと、それを手に入れるためのイベントとdecisionを追加する「Cheat Sword」というそのまんまなMODを制作します。このMODを制作する流れの中で、最低限のMODの仕組みやファイルの構造などを理解してもらうことで、CK3のMODを作るために何が必要なのかを何となく掴んでもらって、最初のステップを踏んでもらうことが目的です。

正直なところ、筆者も最近MODの開発を始めたばかりで、MODの構造や仕組みについて正しく理解できているとは言えません。なので動かすために最低限なものしか解説できませんが、今後学んでいく中で追記できればと思っています。また指摘や補足があればコメント欄でぜひ書いてください。

また日本語MODを使用していない人も前提にしているのと、英Wikiを検索する時に便利という理由で、ゲーム内の固有名詞はできるだけ原文の英語で記述しています。
CK3のMOD構造
CK3のゲームファイルは多数のテキストファイル、画像、3Dモデルが、決められたディレクトリに配置されて構成されており、MODを製作する際は新規作成するMODディレクトリの下に同様の形でファイルを配置していきます。

"CK3のインストールディレクトリ\Crusader Kings III\game"を見るとゲーム本体で使われているファイルを見ることができますが、あまりにも多いため、今回は必要最低限の部分の解説だけをしていきます。

大まかにですが、ゲーム内で使われる設定の多くはcommonの下に配置されています。その他グラフィックやUI、翻訳テキストなどはそれぞれgfx, gui, localizationなどに配置されていますが、大体commonディレクトリの中で作業していくことになると思います。

今回使用するディレクトリ
先述したように、今回はチートレベルのartifactと、それを手に入れるためのdecisionとイベントの3つの要素を作っていきます。そのために最低限必要なディレクトリは以下の通りです。
  • common\artifacts\visuals: artifactの画像と3Dモデルの設定
  • common\decisions: decisionの設定
  • common\modifiers: キャラクターの能力値を変更する効果の設定
  • common\scripted_effects: ゲーム中に実行される処理(CK3ではEffectsと呼ぶらしい)の設定
  • events: イベントの設定
  • localization: 翻訳ファイルの設定

各設定ファイルがゲーム中でどんな流れで使われるか示した図です

図を見て気づいた人もいるかもしれませんが、イベントやdecisionと異なり、artifactは個別に設定を作っていくのではなく、modifierやvisualなどの部品となる要素をeffectの中でその都度組み合わせて生成するという形になっています。このおかげで様々な効果を持ったartifactを柔軟に作ることができるようになっているのですが、Excaliburなどの特定のartifactの設定を変更したいという時は、Excaliburの設定ではなく、Excaliburを作成するeffectの設定を探す必要があります。
MOD制作のツールについて
CK3のMOD制作は、基本的にはテキストファイルを編集していくことが中心になるので、テキストファイルを編集することさえできればメモ帳でも問題ないです。ただ最近は便利機能がついている無料のテキストエディターが色々あるので、そちらを使うことを勧めます。有名どころとしては
  • Visual Studio Code
  • Atom
  • Sublime Text
  • Notepad ++
などがあります。Visual Studio CodeとSublime TextにはCK3のMOD制作をサポートするプラグインがあります。プラグインについては詳しくは英語Wiki[ck3.paradoxwikis.com]を見てください

筆者は普段使い慣れているということもあってVisual Studio Codeを使っていますが、サポートプラグインであるCWToolsはCK3の部分については未完成で現状では使えるレベルにはなっていないと思います。ただ色分けなどは見やすくなります。Sublime Textとプラグインはまだ使ったことがないので、後日追記したいと思います。
1. MODの設定ファイルを作成する
まず最初にMODの設定ファイルを作成します。Paradoxランチャーを起動してインストール済みのMODのページを開いた後、右上のMODをアップロードをするをクリックします


するとアップロードするMODを選択するウィンドウが表示されますが、まだ何もないので右のMODを作成するをクリックします



MODの基本情報を入力する画面が出てきます。今回は画像のように入力しますが、後で変更もできます。


MODを作成するをクリックするとmodフォルダ(Windowsデフォルト設定だと"マイドキュメント\Paradox Interactive\Crusader Kings III\mod")に先ほどディレクトリで指定した名前のフォルダと、その中にdescriptor.modという設定ファイルが作られます。メモ帳等で開いてもらうと先ほど入力した設定が記述されていることが分かると思います。変更したい場合は直接書き換えて
変更してください

version="0.1" tags={ "Gameplay" "Events" } name="CheatSword" supported_version="1.8.2"

これでとりあえずのMODフォルダと設定ファイルを作ることはできました。今後の作業で作成するMODファイルは、作成されたcheat_swordのディレクトリに配置していきます。下記の画像ではまだ作られてないフォルダがありますが、この時点ではdescriptor.modファイルだけあります。

またdescriptor.modと同じ階層にthumbnailという画像ファイルを配置すると、それがそのままMODのサムネイル画像として使われるようになります。忘れがちなので気をつけてください。

2. 画像と3Dモデルを設定する
まず一番簡単な画像を3Dの設定を作っていきます。

cheat_sword\common\artifacts\visualsというディレクトリを作成して、その中にcheat_sword_visual.txtというテキストファイルを作成してください。

ファイルの中身に以下の内容を貼り付けてください
cheat_sword_visual = { icon = "artefact_icons_unique_artifact_excalibur.dds" asset = ep1_western_sword_03_a_portrait_entity }

common以下の設定ファイルは大体このように
キー = { // 何かしらの設定 }
という形になっています。キーは元々のゲームファイルや他のMODも含めた、全ての設定ファイルの中で固有のものにする必要があります。キーが被ってしまうと後から読み込まれたMODの設定が上書きされてしまうのですが、逆に元々のゲームや他MODの設定を改変したい場合は、改変したい設定のキーを指定してください。

iconではartifactの画像を指定していて、gfx\interface\icons\artifactの中に入ってる同名のddsファイルを探してくるようになっています。assetでは3Dモデルを指定しているんですが、3Dモデルについては知見がなくてどう3Dモデルファイルを探してきているのか解説できません。ただ今回のケースではgfx\models\artifacts\weaponsの中にあるep1_western_sword_03_a_portrait.meshファイルを参照することになっています。

自分で用意したものを指定することができますが、今回は元々ゲームにあるExcaliburのアイコンと3Dモデルを使いまわしています。
3. modifierを作る
剣を装備した時にキャラクターに付与されるmodifierを作成します。

cheat_sword\common\modifiersというディレクトリを作成して、中にcheat_sword_modifiers.txtというテキストファイルを作成してください。

次に以下のテキストを貼り付けてください。
cheat_sword_modifier = { prowess = 500 monthly_prestige = 500 monthly_piety = 500 knight_effectiveness_mult = 5000 }

ここでは剣を装備すると
  • prowessを500増加
  • 月間prestigeを500
  • 月間pietyを500
  • Knight Effectivenessを5000倍
になるようになっています。まさしくチート。


他にも色んな能力値を操作することができますが、詳しくは英Wikiのリスト[ck3.paradoxwikis.com]を参照してください

4. artifactを生成する処理を追加する
artifactに必要な部品はとりあえず揃ったので、それを組み合わせてartifactを生成する処理を追加します。

cheat_sword\common\scripted_effectsというディレクトリを作成して、中にcheat_sword_effect.txtというテキストファイルを作成してください。

次に以下のテキストを貼り付けてください。
create_artifact_cheat_sword_effect = { $OWNER$ = { save_scope_as = owner } set_artifact_rarity_illustrious = yes create_artifact = { name = cheat_sword_name description = cheat_sword_description type = sword visuals = cheat_sword_visual wealth = scope:wealth quality = scope:quality history = { type = created_before_history } modifier = cheat_sword_modifier save_scope_as = newly_created_artifact decaying = no } scope:newly_created_artifact = { set_variable = { name = historical_unique_artifact value = yes } save_scope_as = epic } }

ぶっちゃけ自分もよくわかってないところが多くて説明が雑になります。

$OWNER$ = { save_scope_as = owner } ではこのeffectの外からキャラクターをパラメーターとして受け取って、artifactの所有者に設定しています。save_scope_as はぶっちゃけよく分かっていません。あとでイベントのほうで設定しますが、操作キャラが所有者になるようにします。

set_artifact_rarity_illustrious = yesはartifactのrarityをillustriousに設定している(そのまんま)と思います

namedescriptionではそれぞれartifactの名前と説明文を設定します。ここに直接書いてもいいんですが、基本ゲーム中のテキストは言語を切り替えられるように、localizationファイルの中にキーと文章のペアを定義して、キーだけを指定する形になっています。ここではそれぞれcheat_sword_namecheat_sword_descriptionというまだ作ってないキーを指定していますが、後でlocalizationファイルを作る時に使います。

typeswordを指定していますが、実はcommon\artifacts\typesの中に定義されているartifactタイプから選べます。

modifierには先ほど作ったcheat_sword_modifierを、visualsにはcheat_sword_visualを指定しています。

decaying = noではartifactを消耗させないように設定しています。

あとの項目はよく分かっていませんが、まあとりあえず動くので無視しましょう!誰か分かる人いたら教えてください。
5. artifactを入手するイベントを作る
artifactを入手するイベントを作成します。

今までとは違い、イベントの設定ファイルはcheat_sword\eventsとして作る必要があります。作ったら中にcheat_sword_events.txtというテキストファイルを作成してください。

次に以下のテキストを貼り付けてください。
cheat_sword.1 = { title = cheat_sword.1.name desc = cheat_sword.1.desc type = none left_portrait = { character = ROOT scripted_animation = ecstasy } theme = faith option = { name = cheat_sword.1.a create_artifact_cheat_sword_effect = { OWNER = root } } option = { name = cheat_sword.1.b add_stress = -25 } }

イベントのキーは名前.数字という形式で定義されています。

titledescの中身はlocalizationファイルで定義するので、cheat_sword.1.namecheat_sword.1.descというキーを指定してください。

typeではイベントの種類を設定できるようですが、今回はnoneで問題ないです。

left_portraitではイベントポップアップに表示されるキャラクターの設定できます。他にもright_portraitlower_left_portraitなどを設定して複数のキャラクターを表示させることができますが、今回は操作キャラクターだけ表示したいのでleft_portraitだけにします。

characterには表示するキャラクターを指定するので、操作キャラクターを表すROOTを指定します。scripted_animationではキャラクターのポーズが指定できます。今回は適当にecstasyを指定していますが、他のポーズは英Wiki[ck3.paradoxwikis.com]を参照してください。

themeではイベントの背景やBGMがセットになったものを指定できます。scripted_animationと同様に英Wiki[ck3.paradoxwikis.com]から探せます。

optionではイベントの選択肢を定義していきます。今回はartifactを入手する選択肢と何もしない選択肢を用意したいので、optionを二つ作ります。nameはlocalizationファイルで中身を定義するので、cheat_sword.1.acheat_sword.1.bのキーを指定しておきます。その下に選択肢の効果を指定するのですが、上の選択肢でartifactを入手したいので、先ほど作成したcreate_artifact_cheat_sword_effect = { OWNER = root }を指定します。{ OWNER = root }はパラメーターとしてcreate_artifact_cheat_sword_effectの中に渡されて、この場合ではartifactの所有者を操作キャラクターに指定しています。もう一方の選択肢では適当にストレスを減らすようにしておきます。
6. イベントを発生させるdecisionを作る
先ほど作成したイベントを発生させるdecisionを作ります。

cheat_sword\common\decisionsというディレクトリを作成して、中にcheat_sword_decisions.txtというテキストファイルを作成してください。

次に以下のテキストを貼り付けてください。
cheat_sword_decision = { picture = "gfx/interface/illustrations/decisions/decision_major_religion.dds" title = cheat_sword_decision_name desc = cheat_sword_decision_desc confirm_text = cheat_sword_decision_confirm selection_tooltip = cheat_sword_decision_tooltip is_shown = { is_adult = yes } is_valid = { is_adult = yes has_religion = religion:christianity_religion } effect = { custom_tooltip = cheat_sword_decision_effect_custom_tooltip trigger_event = { id = cheat_sword.1 } } ai_check_interval = 0 }

title, desc, confirm_text, selection_tooltipにそれぞれlocalizationファイルで使うキーを指定します。confirm_textはdecisionの実行ボタン上に表示されるテキストで、selection_tooltipはdecisionにマウスオーバーした時に表示されるツールチップのテキストを示しています。

pictureではこのdecisionのサムネイル画像を指定します。今回は元々のゲームにある宗教的なdecisionの画像ファイルを使用します。

is_shownではdecision一覧に表示される条件を指定することができます。今回はis_adult = yesを指定しているので、操作キャラクターが成人しないとそもそもdecisionの一覧に表示されません。

is_validではdecisionを実行できる条件を指定しています。is_adult = yeshas_religion = religion:christianity_religionを指定しているので、操作キャラクターが成人していてかつchristianity_religionの宗教でなければ実行できません。

これらの条件指定はCK3ではTriggerという名前で扱われています。英Wiki[ck3.paradoxwikis.com]に様々なTriggerがあるので参考にしてください。

effectでこのdecisionを実行した時の効果を指定できます。今回は先ほど作成したイベントを発生させたいので、trigger_eventというeffectを指定し、パラメーターとして作成したイベントのキーを指定しています。custom_tooltipではこのdecisionによって発生する効果の説明文を指定します。本来はeffectの中の内容に応じて勝手にテキストを生成してくれるのですが、trigger_eventだとテキストが生成されないため、個別で指定しています。

ai_check_intervalはAIがこのdecisionを実行できるかどうかをチェックする頻度を指定できます。今回のdecisionはAIは実行できないようにしたいので0にしておきます。

7. テキストデータを作る
最後にテキストデータを作成します。今回はデフォルトの英語版だけ作成するので、cheat_sword\localization\englishというディレクトリを作り、中にcheat_sword_l_english.ymlというファイルを作成してください。

今回は.txtファイルではなく.ymlファイルという形式であることと、localizationに配置する翻訳ファイルは〇〇_l_翻訳したい言語.ymlという形式のファイル名にすることに注意してください。

ファイルを開いて、以下のテキストを貼り付けてください。
l_english: cheat_sword_name:0 "Cheat Sword" cheat_sword_description:0 "What a surprise. You cheat" cheat_sword_decision_name:0 "Get Cheat Sword" cheat_sword_decision_tooltip:0 "Cheat" cheat_sword_decision_desc:0 "You get Cheat Sword" cheat_sword_decision_confirm:0 "Cause event" cheat_sword_decision_effect_custom_tooltip:0 "You get the cheat sword" cheat_sword.1.name:0 "Cheat Sword" cheat_sword.1.desc:0 "Want a cheat sword?" cheat_sword.1.a:0 "I want" cheat_sword.1.b:0 "I don't want it."

ファイルの一番上にl_english:と記述した後、その下の行から半角スペース一個空けて、キー:0 "テキスト本文"という形式で記述していきます。ここに今まで作ったartifactやイベントの中で指定したキーとそれに対応する本文をペアで記述していきます。

またここで英語ではなく日本語を入力すればそのまま表示されますが、日本語化MODの作り方については以下のガイドで解説しています。
https://steamcommunity.com/sharedfiles/filedetails/?id=2959298332
8. MODをSteam Workshopにアップロードする
ここまでの作業でMODが完成しました。個人的に使うだけなのであればこれで終わりですが、次はSteam WorkShopに公開する方法を解説します。

MOD設定ファイルを作成した時に開いた「MODをアップロードする」ボタンを押すと、プルダウンから先ほど作成したCheat Swordを選択できるようになっているので選択します。



ここでMODが対応しているゲーム本体のバージョンとアップロード先、MODの説明文を入力できます。MOD IDはアップロードした後に勝手に作られるので無視して問題ないです。今回はSteam WorkShopにアップロードするのでそれを選択した後、説明文を適当に入力してボタンを押してアップロードします。

アップロードが完了すると、SteamWorkShopのあなたのファイル > 投稿したファイルにアップロードしたMODが表示されています。この画面からタイトルや説明文、画像やこのMODに必要になる前提DLCやMODを指定することができます。

次のステップ
これでMODを作成することができました。お疲れ様でした。

今回はMODを作る最低限のことだけしか解説していませんが、CK3には改変できる項目が大量にあり、やろうと思えば大型MODのように元々のCK3とは全然違ったゲームにすることもできます。

このガイドの後にやったほうがいいかなと思うことをいくつかあげます。

元々のゲームファイルを見て構造を調べる
先述したように、MODは元々のゲームファイルと同じ構造で作られているので、Crusader Kings III\gameの下に配置されているファイルを読んでいけば理論上では元々のゲームに存在するものは再現することができます。ただやはりファイル数が多いので時間がかかります。

またcommonより下の各ディレクトリには〇〇.infoというファイルがあります。これはそのディレクトリに配置される設定ファイルの各項目を解説したテキストファイルになっているので、とりあえずこれを読んでどんな項目が設定できるのか調べるといいと思います。

またlocalizationにはゲーム中に使われるテキストデータとキーがペアで記述されているので、ゲーム中のイベントやアイテムの名前でまずlocalizationの中を検索し、対応したキーでゲームファイルの中を検索すればイベントやアイテムの設定を見つけ出すことができます。参考にしたいイベントやアイテムをまずゲームの中で見つけて、それを再現するのも良い方法かもしれません。

また他の方が作ったMODならゲーム本体よりもファイルが少ないので構造が理解しやすいです。小規模なMODを拾ってきて中身を覗いて学ぶのも良いと思います。



補足
コンソールコマンドでscript_docsを実行すると、"マイドキュメント\Paradox Interactive\Crusader Kings III\logs"にゲーム中に使用されるスクリプト(triggers, on_actions, modifiers, effects)のドキュメントが出力されます。

英Wikiを見る
CK3のMOD情報はあまりまとまっていない印象なんですが、英Wikiには設定できる項目の一覧や各要素の改変方法などが書いてあるので、読むと勉強になると思います。

https://ck3.paradoxwikis.com/Modding

また公式フォーラムやReddit、Discordなどで情報を集めるのもいいかもしれません。

https://forum.paradoxplaza.com/forum/forums/crusader-kings-iii-user-mods.1080/
https://www.reddit.com/r/CrusaderKings/



補足
日本語のMOD開発コミュニティとして、日本語化プロジェクトのDIscord[discord.com]があるようです。
また海外には「Mod Co-op」[discord.com]と呼ばれる互助会的なDiscordがあるようです。

情報共有をお願いします
最近になってCK3のMODの作り方を調べて、ある程度分かるようになったのでこのガイドを書きましたが、一番困ったのは情報がまとまってないことでした。英Wikiは比較的情報がありましたがそれでも私にとっては不十分で、日本語情報はほぼ皆無だったと認識しています。Shogunateなど日本人の方が中心になって作られている大型MODもあるので、私が見つけられてないだけでどこかにまとまっているのかもしれませんが…(海外フォーラムやコミュニティを常にチェックしておけやという指摘はあると思います

コミュニティの発展の要は何よりもまず情報共有です。CK3もまだまだ数年はDLC出続けるでしょうし、早いうちにみんなが気軽にMODを作ったり、自分で設定をいじれるようになったりすればもっと楽しめるはずです。とにかく質より量だと思うので、もしMODを作ってみたよって人がいたら、メモ書き程度でもいいのでWikiなりここでもいいので書いていただけるとありがたいです。




Twitterで補足していただいたFUNさんには感謝します。ありがとうございます。
4 Comments
adoring_onion  [author] Apr 28, 2023 @ 7:39pm 
今回はdecisionを使ってプレイヤーが自発的にイベントを起こす方法を解説しましたが、ランダムイベントの発生はまた別の設定を作らなきゃいけないんですよね。次回はそれについて書こうと思います
Pangea929 Apr 19, 2023 @ 7:11am 
暗殺のランダムイベントを自作で作りたい場合もご教授いただけたら嬉しいです。
暗殺や恋愛イベントの種類を増やしたいなぁと
abakan Apr 17, 2023 @ 2:41am 
あ、ありがてえ。インド関係のMOD自作するしかないかなあと思っていたので、参考にさせていただきます。
adoring_onion  [author] Apr 8, 2023 @ 6:37pm 
入門にしては難しすぎでは?という指摘があったので、もっと入門に適切なコンテンツを探してみようと思います