Aller au contenu

Anatomie d’un mod

Un mod NeoPiano est un plugin Unreal Engine au sens large : un dossier avec un fichier .uplugin du même nom. Ce qu’il contient dépend de son type.

  • RépertoireMods/
    • RépertoireChordCoach/
      • ChordCoach.uplugin le descripteur
      • RépertoireCode/
        • ChordCoach.lua un ou plusieurs scripts
      • README.md

CanContainContent vaut false et les scripts sont listés dans NeoModScripts. Un mod WebAssembly suit la même forme, avec un fichier .wasm dans Code/.

  • RépertoireMods/
    • RépertoireSparkEffect/
      • SparkEffect.uplugin
      • RépertoireCooked/ paquets cuits par le SDK
        • …
      • RépertoireCode/ facultatif : scripts du mod
        • …

Le contenu (Blueprints, matériaux, Niagara, sons) est cuit par le SDK en paquets chargés par NeoPiano. Le mod contient un manifeste à l’emplacement /<NomDuMod>/NeoModManifest, qui liste ses effets de notes. Voir Mods de contenu et Blueprint.

Les champs propres à NeoPiano commencent par NeoMod. La liste complète est dans la référence du .uplugin.

{
"FileVersion": 3,
"FriendlyName": "Chord Coach",
"Version": 3,
"VersionName": "1.2.0",
"CanContainContent": false,
"NeoModApiVersion": 5,
"NeoModScripts": ["Code/ChordCoach.lua"],
"NeoModCapabilities": ["ui.hud", "ui.panel", "settings", "storage"]
}
  • Les réglages et le stockage du mod sont enregistrés par NeoPiano dans le dossier utilisateur (NeoPiano/Mods/<NomDuMod>.json), jamais dans le dossier du mod.
  • Un mod peut lire ses propres fichiers (données, textures, sons), et seulement les siens.
  1. Au démarrage, NeoPiano lit chaque .uplugin du dossier Mods, vérifie NeoModApiVersion et les capacités.
  2. Il monte le contenu cuit, puis charge les scripts.
  3. Il appelle on_mod_init, puis les callbacks au fil des événements (on_note_on, on_tick…).
  4. Si le mod dépasse un budget ou lève une erreur, il est désactivé et la raison s’affiche dans le panneau Mods.

Documentation synchronisée avec NeoPiano · commit cbf48cc · 17 octobre 2026