Gemas — 8 niveles XP
Componente: block_xp Community v19.0 (plugin de comunidad, sin modificaciones de código)
Alcance: 1 — Gamificación
Estado: Aplicado a nivel sitio (defaults de admin); los cursos heredan salvo personalización
Propósito
Sistema de progresión por experiencia: el estudiante acumula XP por su actividad en el curso y asciende por 8 niveles temáticos ("Gemas"), cada uno con imagen propia.
Los 8 niveles
Método de cálculo flat: umbrales fijos con incrementos constantes de 500 XP (sin curva).
| Nivel | Nombre | XP mínimo |
|---|---|---|
| 1 | Gema Alba | 0 |
| 2 | Gema Aqua | 500 |
| 3 | Gema Violeta | 1.000 |
| 4 | Gema Esmeralda | 1.500 |
| 5 | Gema Solar | 2.000 |
| 6 | Gema Coral | 2.500 |
| 7 | Gema Índigo | 3.000 |
| 8 | Gema Prisma | 3.500 |
Dónde vive la configuración
A nivel sitio (aplicado): mdl_config_plugins, plugin block_xp, clave levelsdata. Los cursos cuya fila en mdl_block_xp_config tenga levelsdata vacío heredan estos defaults (fallback verificado en blocks/xp/classes/local/factory/levels_factory.php:94-116). Por eso no se necesita UPDATE por curso: basta con no personalizar niveles en el curso.
JSON aplicado (formato v2 de block_xp):
{
"v": 2,
"xp": [0, 500, 1000, 1500, 2000, 2500, 3000, 3500],
"algo": {"method": "flat", "base": 500, "coef": 1.3, "incr": 500},
"name": {"1": "Gema Alba", "2": "Gema Aqua", "3": "Gema Violeta",
"4": "Gema Esmeralda", "5": "Gema Solar", "6": "Gema Coral",
"7": "Gema Índigo", "8": "Gema Prisma"}
}
En el formato v2, xp es un array plano (0-based) pero name/desc se indexan por número de nivel (1-based) — ver levels_info_writer::construct_finaldata(). Si name se guarda como array plano, los nombres quedan corridos un nivel (la Gema Alba aparecería en el nivel 2).
La edición normal es vía Admin UI: Administración del sitio → Level Up XP → Niveles por defecto (/blocks/xp/index.php?_r=/admin/levels) e imágenes en .../admin/visuals.
Imágenes
8 PNG (requierments/assets/niveles/1.png … 8.png), fondo transparente, cargadas por nivel desde la Admin UI de visuals a nivel sitio. Los cursos que heredan los niveles también heredan las imágenes.
Verificación
-- Defaults del sitio
SELECT value FROM mdl_config_plugins WHERE plugin = 'block_xp' AND name = 'levelsdata';
-- Cursos que heredan (levelsdata vacío = hereda)
SELECT courseid, levels, levelsdata FROM mdl_block_xp_config WHERE enabled = 1;
En la UI: el bloque XP del curso debe mostrar "Nivel 1 / Gema Alba" para un estudiante nuevo y el próximo nivel a 500 XP. La presentación rediseñada (Card 1 del sidebar) se documenta en la guía del sidebar.