プラグイン開発¶
ウェイワード・クラウンは、クラス、敵、建物、言語パックを追加またはオーバーライドできるプラグインシステムに対応しています。
プラグインの構造¶
プラグインは plugins/ ディレクトリ内にフォルダとして配置します:
plugins/
└── my_plugin/
├── plugin.json # プラグインメタデータ(必須)
├── content/
│ ├── adventurer_classes.json # カスタムクラス
│ ├── enemies.json # カスタム敵
│ └── buildings.json # カスタム建物
├── lang/
│ ├── en.json # 英語翻訳
│ └── zh_TW.json # 繁体字中国語翻訳
└── assets/ # カスタム画像アセット
plugin.json¶
{
"id": "my_plugin",
"name": "My Plugin",
"version": "1.0.0",
"author": "Author Name",
"description": "プラグインの説明"
}
読み込み順序¶
- コアコンテンツ(
game/content/)が最初に読み込まれる - 外部プラグインはフォルダ名のアルファベット順で読み込まれる
- 後から読み込まれたプラグインは、同じIDの既存エントリをオーバーライドする
plugins/disabled.jsonに記載されたプラグインは完全にスキップされる
カスタム冒険者クラス¶
content/adventurer_classes.json でクラスを定義します:
[
{
"id": "NINJA",
"i18n_key": "class_ninja",
"color": [30, 30, 30],
"stats": {
"hp": [35, 80],
"str": [5, 15],
"agi": [10, 25],
"int": [3, 10],
"lck": [5, 15]
},
"desires": {
"gold": [0.3, 0.8],
"safety": [0.0, 0.2],
"glory": [0.5, 1.0],
"curiosity": [0.3, 0.7]
},
"level_up": {
"primary": "agi",
"primary_range": [3, 7],
"secondary": "str",
"secondary_range": [1, 3]
},
"attack_stat": "agi",
"attack_range": 5,
"skills": {
"3": {"id": "shadow_step", "i18n": "advskill_shadow_step", "effect": {"dodge": 0.2}},
"6": {"id": "poison_blade", "i18n": "advskill_poison_blade", "effect": {"atk_flat": 6}}
}
}
]
コアクラスのオーバーライド
コアクラスと同じ id(例:"WARRIOR")を使用すると、コアクラスの定義がオーバーライドされます。
カスタム敵¶
content/enemies.json で敵を定義します:
[
{
"id": "ORC",
"i18n_key": "enemy_orc",
"color": [100, 150, 50],
"spawn_tile": "MOUNTAIN",
"danger_level": 3,
"stats": {
"hp": 200,
"attack": 10,
"defense": 8,
"speed": 0.8,
"xp": 50,
"gold": 25,
"attack_range": 3,
"sight_range": 18
}
}
]
カスタム建物¶
content/buildings.json で建物を定義します:
[
{
"id": "TAVERN",
"i18n_key": "building_tavern",
"color": [160, 120, 60],
"cost": 180,
"hp": 700,
"max_level": 2,
"upgrade_costs": [300],
"attracts": null,
"category": "shop"
}
]
言語パックプラグイン¶
最もシンプルなプラグインタイプで、plugin.json と lang/*.json のみ必要です:
plugins/example_jp/
├── plugin.json
└── lang/
└── ja.json
言語JSONファイルはキーバリュー形式で、{placeholder} 置換に対応しています:
{
"window_title": "ウェイワード・クラウン",
"log_defeated_enemy": "{adv}が{enemy}を倒した(金:{gold} XP:{xp})"
}
有効化 / 無効化¶
- プラグインはゲーム内の設定メニューから有効化・無効化できます
- 無効化されたプラグインは
plugins/disabled.jsonに記録されます - プラグインを無効化した後、変更を反映するにはゲームの再起動が必要です
リモートプラグインリポジトリ¶
ゲームはリモートソースからのプラグインダウンロードに対応しています:
- プラグインインデックスは
plugins/repo.jsonに保存されています - 設定メニューからプラグインを閲覧・インストールできます
- ダウンロードされたプラグインは自動的に
plugins/ディレクトリに展開されます