Développement de plugins¶
Wayward Crown dispose d'un système de plugins qui vous permet d'ajouter ou de remplacer des classes, des ennemis, des bâtiments et des packs de langue.
Structure d'un plugin¶
Les plugins sont placés en tant que dossiers dans le répertoire plugins/ :
plugins/
└── my_plugin/
├── plugin.json # Métadonnées du plugin (requis)
├── content/
│ ├── adventurer_classes.json # Classes personnalisées
│ ├── enemies.json # Ennemis personnalisés
│ └── buildings.json # Bâtiments personnalisés
├── lang/
│ ├── en.json # Traduction anglaise
│ └── zh_TW.json # Traduction en chinois traditionnel
└── assets/ # Ressources graphiques personnalisées
plugin.json¶
{
"id": "my_plugin",
"name": "My Plugin",
"version": "1.0.0",
"author": "Author Name",
"description": "Plugin description"
}
Ordre de chargement¶
- Le contenu de base (
game/content/) est chargé en premier - Les plugins externes sont chargés par ordre alphabétique du nom de dossier
- Les plugins chargés ultérieurement remplacent les entrées précédemment définies ayant le même ID
- Les plugins listés dans
plugins/disabled.jsonsont complètement ignorés
Classes d'aventuriers personnalisées¶
Définissez les classes dans 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}}
}
}
]
Remplacement des classes de base
Utiliser le même id qu'une classe de base (ex. "WARRIOR") remplacera la définition de la classe de base.
Ennemis personnalisés¶
Définissez les ennemis dans 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
}
}
]
Bâtiments personnalisés¶
Définissez les bâtiments dans 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"
}
]
Plugins de pack de langue¶
Le type de plugin le plus simple -- ne nécessite que plugin.json et lang/*.json :
plugins/example_jp/
├── plugin.json
└── lang/
└── ja.json
Les fichiers JSON de langue utilisent un format clé-valeur avec prise en charge de la substitution {placeholder} :
{
"window_title": "ウェイワード・クラウン",
"log_defeated_enemy": "{adv}が{enemy}を倒した(金:{gold} XP:{xp})"
}
Activation / Désactivation¶
- Les plugins peuvent être activés ou désactivés depuis le menu des paramètres en jeu
- Les plugins désactivés sont enregistrés dans
plugins/disabled.json - Un redémarrage du jeu est nécessaire après la désactivation d'un plugin pour que les changements prennent effet
Dépôt de plugins distant¶
Le jeu prend en charge le téléchargement de plugins depuis une source distante :
- L'index des plugins est stocké dans
plugins/repo.json - Vous pouvez parcourir et installer des plugins depuis le menu des paramètres
- Les plugins téléchargés sont automatiquement extraits dans le répertoire
plugins/