J
Jumpfall - Guia actual de skins
Flujo actual: Skin Tool -> JVSK Publisher -> Jumpfall
Formato .jvsk actual
EN

Crear skins para Jumpfall sin romper el formato actual

Esta guia reemplaza el metodo viejo de comprimir carpetas a mano. El flujo recomendado ahora usa tres partes: la herramienta de skins, el empaquetador JVSK y el juego.

Resumen correcto: crea y prueba la skin en jumpfall_skin_tools, empaqueta la carpeta con jumpfall-skin-jvsk, y copia el .jvsk final a Documents/jumpfall/skin/local.
Importante: dentro del .jvsk, el archivo skin.json debe quedar en la raiz. No debe quedar dentro de una carpeta extra como miSkin/skin.json.

1. Flujo actual de trabajo

1. Crear y probar

Usa jumpfall_skin_tools. Esta herramienta sirve para ver la skin en caliente mientras editas los PNG y el JSON.

2. Empaquetar

Usa jumpfall-skin-jvsk. Esta aplicacion convierte la carpeta de la skin en un archivo .jvsk valido.

3. Probar local

Copia el .jvsk a Documents/jumpfall/skin/local y activalo desde el menu de skins del juego.

4. Publicar

El mismo .jvsk se puede subir a Steam Workshop con el publisher cuando la skin este lista.

2. Rutas importantes

Carpeta donde la herramienta de skins lee y prueba tu trabajo:

C:\Users\TU_USUARIO\Documents\jumpfall_skin_manager\skin

Carpeta donde Jumpfall lee skins locales ya empaquetadas:

C:\Users\TU_USUARIO\Documents\jumpfall\skin\local

Carpeta donde Jumpfall descomprime temporalmente los .jvsk:

C:\Users\TU_USUARIO\Documents\jumpfall\skin\temp_extract

Carpeta usada por las skins descargadas desde Workshop:

C:\Users\TU_USUARIO\Documents\jumpfall\skin\workshop
En Android/iOS, las skins personales estan desactivadas por ahora. El sistema de skins personales esta pensado para PC/Steam.

3. Estructura recomendada de una skin

La carpeta que vas a empaquetar debe tener skin.json en la raiz. Puedes nombrar las carpetas como quieras, pero se recomienda usar nombres claros con _frames.

skin/
  skin.json
  meta.json              opcional, recomendado para Workshop
  preview.png            opcional, recomendado para Workshop

  idle_frames/
    0.png
    1.png

  walk_frames/
    0.png
    1.png

  run_frames/
  jump_frames/
  fly_frames/
  punch_frames/
  landing_frames/
  death_frames/
  dash_ground_frames/
  dash_air_frames/
  climbing_wall_frames/
  climbing_wall_jump_frames/
Si una animacion no existe, el juego no deberia romperse. Pero si falta una animacion importante, esa accion puede verse con idle o con la animacion base.

4. Animaciones soportadas actualmente

Estos son los nombres que van dentro de files en skin.json:

Clave JSON Uso en el juego Loop recomendado
idleJugador quietotrue
walkCaminandotrue
runCorriendotrue
jumpSaltofalse
flyCaida o aire prolongadotrue
punchAtaque/golpefalse
landingAterrizajefalse
deathMuertefalse
dashgroundDash en suelotrue
dashairDash en airetrue
climbing_wallAgarrado/deslizandose en paredtrue
climbing_wall_jumpSalto desde paredfalse

El juego tambien acepta climbingwall y climbingwalljump, pero para nuevas skins usa climbing_wall y climbing_wall_jump.

5. Plantilla actual de skin.json

Esta plantilla usa el formato que Jumpfall y jumpfall_skin_tools entienden. Puedes borrar las animaciones que aun no tengas, pero deja al menos idle.

{
  "active": true,
  "fps": 12,
  "visual": {
    "scale": 1,
    "widthScale": 1,
    "heightScale": 1,
    "mirror": true,
    "colorOverlay": [255, 255, 255, 255]
  },
  "files": {
    "idle": {
      "path": "idle_frames",
      "fps": 12,
      "pivotX": 0.5,
      "pivotY": 0,
      "xOffset": 0,
      "yOffset": 0,
      "loop": true
    },
    "walk": {
      "path": "walk_frames",
      "fps": 12,
      "pivotX": 0.5,
      "pivotY": 0,
      "xOffset": 0,
      "yOffset": 0,
      "loop": true
    },
    "run": {
      "path": "run_frames",
      "fps": 12,
      "pivotX": 0.5,
      "pivotY": 0,
      "xOffset": 0,
      "yOffset": 0,
      "loop": true
    },
    "jump": {
      "path": "jump_frames",
      "fps": 12,
      "pivotX": 0.5,
      "pivotY": 0,
      "xOffset": 0,
      "yOffset": 0,
      "loop": false
    },
    "fly": {
      "path": "fly_frames",
      "fps": 12,
      "pivotX": 0.5,
      "pivotY": 0,
      "xOffset": 0,
      "yOffset": 0,
      "loop": true
    },
    "punch": {
      "path": "punch_frames",
      "fps": 12,
      "pivotX": 0.5,
      "pivotY": 0,
      "xOffset": 0,
      "yOffset": 0,
      "loop": false
    },
    "landing": {
      "path": "landing_frames",
      "fps": 12,
      "pivotX": 0.5,
      "pivotY": 0,
      "xOffset": 0,
      "yOffset": 0,
      "loop": false
    },
    "death": {
      "path": "death_frames",
      "fps": 12,
      "pivotX": 0.5,
      "pivotY": 0,
      "xOffset": 0,
      "yOffset": 0,
      "loop": false
    },
    "dashground": {
      "path": "dash_ground_frames",
      "fps": 12,
      "pivotX": 0.5,
      "pivotY": 0,
      "xOffset": 0,
      "yOffset": 0,
      "loop": true
    },
    "dashair": {
      "path": "dash_air_frames",
      "fps": 12,
      "pivotX": 0.5,
      "pivotY": 0,
      "xOffset": 0,
      "yOffset": 0,
      "loop": true
    },
    "climbing_wall": {
      "path": "climbing_wall_frames",
      "fps": 12,
      "pivotX": 0.5,
      "pivotY": 0,
      "xOffset": 0,
      "yOffset": 0,
      "loop": true
    },
    "climbing_wall_jump": {
      "path": "climbing_wall_jump_frames",
      "fps": 12,
      "pivotX": 0.5,
      "pivotY": 0,
      "xOffset": 0,
      "yOffset": 0,
      "loop": false
    }
  }
}
Que significa cada parametro
  • fps: velocidad de la animacion. Si una animacion no define FPS, usa el FPS general.
  • scale: escala general de la skin.
  • widthScale y heightScale: ajustan ancho y alto por separado.
  • mirror: permite que la skin mire a izquierda/derecha con el jugador.
  • colorOverlay: color RGBA. Usa [255,255,255,255] para no alterar colores.
  • path: carpeta donde estan los PNG de esa animacion.
  • pivotX y pivotY: punto de apoyo del sprite entre 0 y 1.
  • xOffset y yOffset: ajuste visual fino. El juego divide estos valores por 100.
  • loop: si la animacion se repite o se queda en el ultimo frame.

6. meta.json para publisher y Workshop

El archivo meta.json no controla la animacion. Sirve para el empaquetador y para la informacion del Workshop.

{
  "mod_name": "Mi Skin",
  "description": "Descripcion corta de la skin.",
  "author": "Tu nombre",
  "version": "1.0.0",
  "preview": "preview.png"
}

Cuando actualizas una skin ya publicada, el publisher puede agregar workshop_id automaticamente para saber que item debe actualizar.

7. Crear el .jvsk correctamente

Metodo recomendado: jumpfall-skin-jvsk

  1. Abre jumpfall-skin-jvsk.
  2. En Folder or file (.jvsk), selecciona la carpeta que contiene skin.json.
  3. Completa titulo, descripcion, autor, version y preview si corresponde.
  4. Elige donde guardar el archivo final, por ejemplo mi_skin.jvsk.
  5. Presiona Package (.jvsk).
Este metodo es el correcto porque empaqueta el contenido de la carpeta en la raiz del ZIP. Asi Jumpfall encuentra skin.json inmediatamente al descomprimir.

Metodo manual, solo si sabes lo que haces

  1. Entra dentro de la carpeta de la skin.
  2. Selecciona skin.json, meta.json, preview.png y las carpetas de frames.
  3. Crea un ZIP con esos archivos seleccionados.
  4. Renombra el ZIP de .zip a .jvsk.
Correcto
mi_skin.jvsk
  skin.json
  meta.json
  preview.png
  idle_frames/
  walk_frames/
Incorrecto
mi_skin.jvsk
  mi_skin/
    skin.json
    idle_frames/
    walk_frames/

8. Probar la skin en Jumpfall

  1. Copia el archivo .jvsk final a:
C:\Users\TU_USUARIO\Documents\jumpfall\skin\local
  1. Abre Jumpfall en PC.
  2. Entra al menu de skins locales.
  3. Selecciona tu skin.
  4. Pruebala en un mapa con caminar, correr, saltar, pared, dash y muerte.
Si el juego ya tenia una version vieja extraida en temp_extract, puede convenir cerrar y abrir el juego para que vuelva a descomprimir la version nueva del .jvsk.

9. Problemas comunes

La skin no aparece en el juego
  • Confirma que el archivo termine en .jvsk.
  • Confirma que este en Documents/jumpfall/skin/local.
  • Abre el .jvsk como ZIP y revisa que skin.json este en la raiz.
Una animacion muestra idle o se ve como la base
  • Revisa que esa clave exista dentro de files.
  • Revisa que el path coincida exactamente con la carpeta real.
  • Revisa que la carpeta tenga al menos un PNG.
La skin se ve gigante, chica o desplazada
  • Ajusta visual.scale, widthScale y heightScale.
  • Ajusta xOffset y yOffset en la animacion que falla.
  • Usa PNG con lienzo consistente entre frames.
Climbing wall no se ve bien
  • Agrega climbing_wall y climbing_wall_jump al skin.json.
  • Usa loop: true para climbing_wall.
  • Usa loop: false para climbing_wall_jump.