Catalogo de Datos JSON - vykymoon/rpg-character-creator GitHub Wiki
Todo el contenido del juego (razas, clases, habilidades y vestuario) vive en src/main/resources/data/. Agregar o ajustar contenido no requiere tocar Java.
| Archivo | Factory | Contenido actual |
|---|---|---|
races.json |
RaceFactory |
7 razas |
classes.json |
CharacterClassFactory |
6 clases |
skills.json |
SkillFactory |
12 habilidades |
outfits.json |
OutfitFactory |
10 piezas de vestuario |
characters.json(personajes guardados) está en la misma carpeta pero no es catálogo: lo gestiona el DAO. Ver Galería y Persistencia.
Razas
Campos: id, name, description, baseStrength, baseDexterity, baseIntelligence, baseVitality.
| id | Nombre | FUE | DES | INT | VIT | Descripción |
|---|---|---|---|---|---|---|
humano |
Humano | 5 | 5 | 5 | 5 | Equilibrado en todo |
elfo |
Elfo | 3 | 7 | 6 | 4 | Ágil e intelectual, frágil |
orco |
Orco | 8 | 3 | 2 | 7 | Fuerza y resistencia brutales |
enano |
Enano | 6 | 3 | 4 | 7 | Resistente y fuerte, lento |
mediano |
Mediano | 2 | 8 | 5 | 4 | Pequeño y escurridizo |
draconiano |
Draconiano | 6 | 4 | 4 | 6 | Escamas duras y sangre de fuego |
gnomo |
Gnomo | 2 | 5 | 8 | 5 | Frágil de cuerpo, brillante de mente |
Clases
Campos: id, name, description, bonusStrength, bonusDexterity, bonusIntelligence, bonusVitality.
| id | Nombre | FUE | DES | INT | VIT | Total |
|---|---|---|---|---|---|---|
guerrero |
Guerrero | +5 | +2 | +0 | +4 | 11 |
mago |
Mago | +0 | +2 | +6 | +1 | 9 |
picaro |
Pícaro | +2 | +6 | +1 | +2 | 11 |
clerigo |
Clérigo | +2 | +1 | +5 | +3 | 11 |
arquero |
Arquero | +2 | +6 | +1 | +2 | 11 |
druida |
Druida | +1 | +2 | +6 | +2 | 11 |
El Mago suma 9 puntos y las demás 11. Viene del código original; conviene confirmar si es intencional.
Habilidades
Campos: id, name, description, manaCost, allowedRaces, allowedClasses.
| id | Nombre | Maná | Razas | Clases |
|---|---|---|---|---|
golpe_certero |
Golpe Certero | 0 | todas | todas |
bola_de_fuego |
Bola de Fuego | 15 | todas | mago |
sigilo |
Sigilo | 5 | elfo, humano, mediano | todas |
curacion_menor |
Curación Menor | 10 | todas | clerigo, druida |
furia_sangrienta |
Furia Sangrienta | 0 | orco | todas |
aliento_de_fuego |
Aliento de Fuego | 12 | draconiano | todas |
resistencia_petrea |
Resistencia Pétrea | 8 | enano | todas |
truco_menor |
Truco Menor | 4 | gnomo | todas |
vista_de_aguila |
Vista de Águila | 6 | todas | arquero |
golpe_escudo |
Golpe de Escudo | 5 | todas | guerrero |
paso_sombrio |
Paso Sombrío | 14 | todas | picaro, mago |
enraizar |
Enraizar | 9 | todas | druida |
Vestuario
Campos: id, name, slot, spriteRef, allowedRaces, allowedClasses.
| id | Nombre | Slot | Razas | Clases |
|---|---|---|---|---|
armor_leather |
Armadura de Cuero | armadura | todas | todas |
armor_plate |
Armadura de Placas | armadura | todas | guerrero, clerigo |
robe_mage |
Túnica de Mago | armadura | todas | mago, druida |
helmet_war |
Casco de Guerra | casco | todas | todas |
cape_elven |
Capa Élfica | capa | elfo | todas |
hood_shadow |
Capucha de Sombras | casco | todas | picaro |
shield_oak |
Escudo de Roble | escudo | todas | guerrero, clerigo |
cloak_runic |
Manto Rúnico | capa | todas | mago, druida |
boots_light |
Botas Ligeras | botas | todas | todas |
helmet_dragon |
Yelmo Dracónico | casco | draconiano | todas |
spriteRef apunta a un PNG dentro de src/main/resources/sprites/ (pixel art 64×64, fondo transparente). Hoy son placeholders: se reemplazan por arte definitivo conservando el nombre del archivo.
Reglas de restricción
allowedRaces/allowedClassesvacío ([]) = sin restricción.- Se puede escribir el id (
"elfo") o el nombre ("Elfo"), sin distinguir mayúsculas. - Una habilidad o pieza es elegible solo si cumple la restricción de raza y la de clase.
- Los ítems no elegibles se ocultan en los pasos 3 y 4 (con un aviso de cuántos quedaron ocultos).
Skill.getRequirementLabel()ya entrega el texto ("Solo Elfo") por si se prefiere mostrarlos deshabilitados.
Cómo agregar contenido
Una raza nueva
- Editar
races.jsony añadir un objeto con unidúnico en minúsculas:
{
"id": "tiefling",
"name": "Tiefling",
"description": "Sangre infernal, carisma natural.",
"baseStrength": 4,
"baseDexterity": 5,
"baseIntelligence": 7,
"baseVitality": 4
}
- (Opcional) Añadir su foto en
sprites/avatars/tiefling.jpg. El nombre del archivo es el nombre de la raza en minúsculas; si no existe se usadefault.png. - Recompilar (
mvn clean compile) para que Maven copie el JSON atarget/classes.
Una habilidad exclusiva
{
"id": "rayo_arcano",
"name": "Rayo Arcano",
"description": "Descarga mágica a distancia.",
"manaCost": 12,
"allowedRaces": ["elfo", "gnomo"],
"allowedClasses": ["mago"]
}
Validaciones al cargar
Las factories fallan al arrancar (con un mensaje claro) si:
| Situación | Excepción |
|---|---|
| El archivo no existe en el classpath | IllegalStateException indicando la ruta esperada |
| JSON mal formado | IllegalStateException("JSON inválido en ...") |
| Catálogo vacío | IllegalStateException |
Entrada nula, sin id o sin name |
IllegalStateException |
id duplicado (sin distinguir mayúsculas) |
IllegalStateException |
| Se pide un id inexistente | IllegalArgumentException listando los disponibles |
Límite conocido: no hay validación contra un esquema formal; un nombre de campo mal escrito ("baseStrenght") deja el valor en 0 sin avisar.