Modding NeoPiano

Créez pour NeoPiano

Une communauté de pianistes, un moteur 3D, une API pensée pour les créateurs. Construisez l’outil d’apprentissage, l’effet visuel ou le mode de jeu qui manque à NeoPiano, et partagez-le.

Ce que vous pouvez construire

  • Des outils d’apprentissage

    Détecteur d’accords, métronome visuel, exercices de gammes, statistiques de jeu.

  • Des effets de notes

    Traînées, sphères, étincelles et matériaux qui réagissent à la note et à la vélocité.

  • Des interfaces natives

    Panneaux dans le dock, HUD au-dessus du clavier, dialogues, toasts et raccourcis.

  • Des scènes et des thèmes

    Décors, lumières et ambiances complètes créés dans Unreal Engine 5.8.

  • Des modes de jeu

    Jouer ensemble, le mode en ligne de NeoPiano, est un mod comme les autres.

  • Du MIDI créatif

    Arpégiateurs, accompagnement, harmoniseurs (dans les prochaines versions de l’API).

Le mod Jouer ensemble : son panneau de réglages s’intègre à l’interface de NeoPiano

Jouer ensemble est un mod : son panneau, ses réglages et ses notifications utilisent les mêmes composants que NeoPiano.

Trois façons de modder

Chaque fonction de l’API neo existe en Lua, en WebAssembly et en nœud Blueprint, avec exactement les mêmes pouvoirs. Choisissez le langage qui vous convient, pas celui qui a le plus de fonctions.

  • Le plus rapide

    Lua 5.4

    Un fichier .lua déclaré dans le .uplugin, sans éditeur Unreal ni compilation. Rechargement à chaud, autocomplétion grâce aux annotations LuaLS fournies.

  • C et C++

    WebAssembly

    Compilez votre code avec le script fourni (wasi-sdk) en un .wasm de quelques kilo-octets. Un seul fichier pour Windows et macOS.

  • Unreal Engine 5.8

    Blueprint et contenu

    Créez matériaux, Niagara, scènes et Blueprints dans l’UE 5.8 du Launcher avec le SDK NeoPiano, puis cuisez votre mod.

Un mod en quelques lignes

Ce mod affiche un panneau dans le dock avec un interrupteur et compte les notes jouées, en gardant le total d’une session à l’autre.

Mods/NoteCounter/NoteCounter.uplugin
{
  "FileVersion": 3,
  "FriendlyName": "Note Counter",
  "Version": 1,
  "VersionName": "1.0.0",
  "CanContainContent": false,
  "NeoModApiVersion": 5,
  "NeoModScripts": ["Code/NoteCounter.lua"],
  "NeoModCapabilities": ["ui.panel", "settings", "storage"]
}
Mods/NoteCounter/Code/NoteCounter.lua
-- NoteCounter.lua : compte vos notes, même d'une session à l'autre
local total = neo.storage.get("total", 0)

function on_mod_init()
  neo.settings.define({
    { id = "enabled", type = "toggle", label = "Compter les notes", default = true },
  })
  neo.ui.panel({
    id = "main", title = "Compteur", icon = "piano",
    content = { type = "column", children = {
      { type = "label", id = "count", text = tostring(total) .. " notes" },
      { type = "button", id = "reset", text = "Remettre à zéro" },
    } },
  })
end

function on_note_on(note, velocity)
  if not neo.settings.get("enabled") then return end
  total = total + 1
  neo.storage.set("total", total)
  neo.ui.set("count", "text", total .. " notes")
end

function on_ui(id, event, value)
  if id == "reset" and event == "click" then
    total = 0
    neo.storage.set("total", 0)
    neo.ui.set("count", "text", "0 notes")
    neo.ui.toast("Compteur remis à zéro", "success")
  end
end

Sûr pour les joueurs, simple pour vous

  • Capacités déclarées

    Votre mod liste ce qu’il utilise (ui.panel, storage…). Le joueur le voit avant d’activer, comme les permissions d’une extension de navigateur.

  • Budgets partagés

    20 ms par appel, 6 ms par image partagées entre mods : impossible de faire ramer NeoPiano.

  • Échec isolé

    Une erreur, une boucle infinie ou trop de mémoire : le mod est désactivé avec la raison en clair, NeoPiano continue.

  • Outils de débogage

    Journal des mods visible en jeu, temps CPU et mémoire par mod, rechargement à chaud.

Prêt à créer ?

Le guide vous emmène de zéro à un mod qui tourne dans NeoPiano.