Curva de XP por nivel con presets matemáticos, expresiones personalizadas y simulación.

xpBalance#

Define la curva de XP que gobierna el avance de nivel del jugador (o de cualquier entidad con progresión). Soporta presets matemáticos comunes (lineal, exponencial, soft-cap, plateau) o expresiones personalizadas para fórmulas únicas.

Por qué importa#

La curva de XP es una de las decisiones de diseño más difíciles de iterar sin herramienta — cambias el growth de 1.15 a 1.20 y necesitas simular 100 niveles mentalmente. Aquí la app genera la curva, muestra el valor acumulado, el paso promedio, los plateaus y los puntos de balance. Editar es trivial.

Y como el resultado se convierte en BalancePoint[] (array de {level, value}), otras tablas/habilidades/ítems pueden referenciar esta curva para escalar valores con ella.

Dónde suele vivir#

  • Página de tipo 📈 Balance de XP. Ese es el camino principal.
  • Página de 👤 Personajes (viene como addon recomendado, junto con Profile).

Singleton — 1 curva por página.

Esquema#

CampoTipoPadrãoDescrição
idstringID interno.
namestringNombre amigable (ej.: Curva de XP del Héroe).
mode"preset" | "advanced"preset: usa uno de 7 templates. advanced: escribes la expresión.
preset"linear" | "exponential" | "tiered" | "softCap" | "hardCap" | "diminishingReturns" | "piecewise"Qué preset, cuando mode=preset.
expressionstringExpresión matemática cuando mode=advanced. Soporta level, operadores básicos, pow(), min(), max().
startLevelnumberPrimer nivel de la curva (generalmente 1).
endLevelnumberÚltimo nivel.
decimalsnumberDecimales al redondear los valores generados.
clampMinnumberPiso mínimo absoluto (opcional).
clampMaxnumberTecho máximo absoluto (opcional).
paramsBalanceFormulaParamsParámetros del preset (base, growth, offset, tierStep, etc.).
profile"rpg" | "idle" | "roguelite" | "casual"Perfil de género — preconfigura valores razonables al cambiar.
comparisonBaselineBalancePoint[]Curva de comparación (ej.: del juego anterior del estudio) renderizada detrás de la curva actual en el gráfico.
simulationInputBalanceSimulationInputInputs para simular el tiempo hasta cada nivel dados XP/min, tasa de victorias, duración de partida.
targetBalanceTargetInputMeta deseada (ej.: el jugador llega al nivel 50 en 20h). El panel sugiere ajustes para alcanzarla.

Los 7 presets#

PresetFórmula
linearbase + (nivel − 1) × step
exponentialbase × growth^(nivel − 1)
tieredLineal hasta tierStep, multiplica por tierMultiplier por tier
softCapCrece normal hasta capValue, luego crece lento
hardCapCrece normal hasta capValue, luego se detiene
diminishingReturnsCrece con retornos decrecientes
piecewiseLineal con plateau en el medio (plateauStartLevel, plateauFactor)

Ejemplo: curva exponencial clásica#

XP del nivel N = 100 × 1.15^(N−1), del nivel 1 al 100:

{
  "id": "xp-hero",
  "name": "Curva de XP del Héroe",
  "mode": "preset",
  "preset": "exponential",
  "expression": "",
  "startLevel": 1,
  "endLevel": 100,
  "decimals": 0,
  "params": {
    "base": 100,
    "growth": 1.15,
    "offset": 0,
    "tierStep": 0,
    "tierMultiplier": 1,
    "capValue": 0,
    "capStrength": 0,
    "plateauStartLevel": 0,
    "plateauFactor": 1
  },
  "profile": "rpg"
}

Resultado: nivel 1 = 100 XP, nivel 10 = 351, nivel 50 = 108k, nivel 100 = 117M XP. (Probablemente demasiado alto — ajustas growth a 1.10 o usas softCap.)

Simulación#

Si llenas simulationInput, la app calcula automáticamente:

  • Minutos por nivel — cuánto tiempo tarda el jugador en subir cada nivel dado el input
  • Horas hasta hitos — tiempo acumulado para llegar a los niveles 10, 25, 50, 100
  • Días calendario — útil para juegos que limitan XP por sesión

Permite responder "¿en cuántos días llega el jugador al nivel 50 jugando 1h/día?" sin cálculo manual.

Wizard#

El tipo de página 📈 Balance de XP crea este addon con valores razonables por defecto (preset exponential, growth 1.15, niveles 1–100). Ajustas en el panel.

Quién apunta a xpBalance#

  • craftTable.unlock.level.xpAddonRef — recetas desbloqueadas por nivel.
  • skills.unlock.level.xpAddonRef — habilidades desbloqueadas por nivel.
  • progressionTable (indirectamente) — cuando tus columnas escalan con el nivel, la curva de referencia suele ser una de XP.

Ver también#