Cube Unbound Wiki Web del juego EN Discord 0

Guía de mods

Cube Unbound está hecho para modificarse: casi todo el contenido son archivos JSON legibles y modelos de MagicaVoxel dentro de la carpeta mods/. No hace falta programar ni recompilar.

Ciclo de trabajo. Edita un archivo y pulsa F4 dentro del juego: los modelos, sonidos y packs de recursos se recargan sin cerrar la partida. Los datos (criaturas, objetos, recetas) se leen al arrancar. Si un archivo tiene un error, el juego lo avisa (qué archivo y qué campo) y sigue funcionando. Con "devMode": true en settings.json, guardar un .vox en MagicaVoxel recarga solo.
Aviso de errores de carga
Así avisa el juego: arriba de la pantalla, qué archivo falla y por qué. Aquí, tres archivos rotos a propósito.
Tres formas de ampliar el juego. Mods (carpeta mods/): contenido nuevo en JSON y .vox. Packs de recursos (resourcepacks/): cambian modelos, sonidos e imágenes sin tocar las reglas. Plugins (mods/plugins/): código nativo para mecánicas nuevas.

La carpeta mods/

CarpetaQué contieneAhora mismo
items/Objetos: materiales, bloques, herramientas, armas y equipo.1154
recipes/Recetas de fabricación y en qué estación se hacen.704
mobs/Fauna, monstruos, jefes y únicos (un archivo por criatura).253
factions/Personajes de facción con arma y rol.59
villagers/Aldeanos de cada raza.6
races/ y skills/Razas jugables y sus ramas de habilidades.10
dungeons/Mazmorras: bioma, nivel, facción, jefe y bloques.16
horde/Reglas de las hordas y composición por facción.11
furniture/Plantillas de muebles, materiales y piezas de colección.114
farming/ y fishing/Cultivos, peces, cañas y reglas.70
vehicles/Vehículos: piezas, asientos y tipo.23
structures/Estructuras del mundo como modelos .vox.34
world/Peligro por distancia, vetas, dureza, luz y botín de mazmorra.
combat/, progression/, player/Reglas de daño, experiencia y estadísticas del jugador.
equipment/Conjuntos de equipo y sus bonos.39
audio/Sonidos y música (.wav) que sustituyen a los sintetizados.
plugins/DLL con la API de sdk/CubeModAPI.h (sólo si el jugador las permite).
clans/, economy/, codex/, guide/Reglas de clanes, precios y mercaderes, códice, logros y guía.
models/Todos los modelos .vox, por carpetas.
ui/Consejos de la pantalla de carga.14

Modelos .vox

Tu primera criatura

Copia un archivo de mods/mobs/, cámbiale el id y ajusta lo que quieras. Este es el conejo real del juego:

{
  "id": "bunny",
  "name": "Conejo",
  "description": "Avanza a saltitos y se para a olfatear con las orejas tiesas.",
  "style": "hopper",
  "voxelSize": 0.06,
  "behavior": "wander",
  "tame": {
    "food": "berries",
    "bites": 2
  },
  "temper": "passive",
  "stats": {
    "health": 12,
    "armor": 0,
    "damage": 2,
    "regen": 0.5,
    "level": 1
  },
  "movement": {
    "type": "ground",
    "speed": 2.6,
    "width": 0.4,
    "height": 0.5
  },
  "spawn": {
    "count": 3,
    "group": 1,
    "biomes": [
      "plains",
      "forest",
      "snowy"
    ]
  },
  "variants": [
    {
      "1": "A07850",
      "2": "7E5C3C"
    },
    {
      "1": "9C9CA2",
      "2": "7A7A82"
    }
  ],
  "parts": [
    {
      "bone": "body",
      "model": "animals/bunny_body",
      "pivot": [
        3,
        0,
        3.5
      ],
      "at": [
        0,
        0,
        0
      ]
    },
    {
      "bone": "head",
      "parent": "body",
      "model": "animals/bunny_head",
      "pivot": [
        2.5,
        0,
        1
      ],
      "at": [
        0,
        3.5,
        2.5
      ]
    },
    {
      "bone": "tail",
      "parent": "body",
      "model": "animals/bunny_tail",
      "pivot": [
        1,
        1,
        2
      ],
      "at": [
        0,
        2.5,
        -3.5
      ]
    }
  ],
  "loot": [
    {
      "item": "raw_meat",
      "min": 1,
      "max": 1,
      "chance": 0.8
    }
  ]
}
id, name, descriptionIdentificador único (sin espacios), nombre y texto del bestiario.
styleCómo se anima: quadruped, biped, flyer, swim, insect, hopper.
temperpassive (huye), defensive (ataca si le atacan) u hostile.
statsVida, armadura, daño y regeneración base. Con level 1 la criatura toma el nivel de la zona donde aparece; un nivel mayor es fijo (jefes y únicos).
movementVelocidad y tamaño del cuerpo en bloques. type: ground, air (con flyHeight) o water (con depthMin/depthMax); swimmer para las que nadan.
spawnDónde y cuándo aparece: biomes, caves (estratos), hours, temperature, humidity, count y group. Con count 0 no aparece sola.
partsLas piezas del cuerpo. Cada una tiene un hueso (bone), un modelo, su pivot (punto de giro dentro del modelo, en vóxeles) y at (dónde queda ese punto en el cuerpo, siempre en coordenadas absolutas). mirror refleja la pieza para el lado izquierdo; parent la cuelga de otra. Tiene que haber una pieza body.
variantsHasta 15 recoloreados de la paleta.
effectsLo que causan sus golpes: knockback, bleed, slow, stun, burn, armorPierce, poison, lifesteal, thorns.
tameComida favorita, bocados y, si se monta, mount con velocidad, salto y altura del asiento.
lootLista de objetos con cantidad mínima, máxima y probabilidad.
bossTítulo, escala, radio de la arena y fases (below = fracción de vida a la que cambia; multiplicadores y frase).
uniqueLo convierte en enemigo único: biomas, horas, altura y probabilidad.

Objetos

Cada archivo de mods/items/ es una lista de objetos. Tres ejemplos reales: un arma, una pieza de equipo y una comida.

[
  {
    "id": "short_sword_iron",
    "name": "Espada corta de hierro",
    "category": "weapon",
    "color": "iron_ore",
    "model": "items/short_sword_iron",
    "grip": [
      1.5,
      3.5,
      2.0
    ],
    "maxStack": 1,
    "weapon": {
      "type": "melee",
      "style": "slash",
      "damage": 10,
      "cooldown": 0.45,
      "reach": 2.7,
      "arc": 90
    }
  },
  {
    "id": "leather_helmet",
    "name": "Gorro de cuero",
    "model": "armor/leather_helmet",
    "category": "equipment",
    "color": "dirt",
    "equip": {
      "set": "leather",
      "slot": "helmet",
      "armor": 3,
      "health": 5
    }
  },
  {
    "id": "roasted_draconic_meat",
    "name": "Carne Dracónica Asada",
    "category": "material",
    "color": "terracotta_brown",
    "maxStack": 64,
    "food": {
      "heal": 60,
      "seconds": 600,
      "stats": {
        "damage": 0.08
      }
    }
  }
]
categorymaterial, block, tool, weapon o equipment.
colorNombre de un bloque; da el color del icono cuando no hay modelo.
model, gripModelo .vox y punto por donde se agarra, en vóxeles.
weapontype: melee (con style slash, heavy o thrust, alcance y arco), bow, staff, hitscan o rocket.
toolTipo, intervalo de minado, grade (qué dureza rompe) y fastOn (bloques en los que es rápida).
equipslot (helmet, chest, legs, boots, wings, ring, amulet, offhand, back, belt), set y las estadísticas que suma.
foodCura, estamina, maná y mejoras temporales (stats durante seconds).
placesBlock, droppedByQué bloque coloca y qué bloques lo sueltan al romperse.

Recetas

Archivos de mods/recipes/: listas de recetas. Sin station se fabrica a mano.

{
  "id": "glass_flask",
  "result": "glass_flask",
  "count": 4,
  "station": "forge",
  "ingredients": [
    {
      "item": "sand",
      "count": 2
    },
    {
      "item": "coal",
      "count": 1
    }
  ]
}

Estaciones válidas: workbench (Banco de trabajo), forge (Fragua), anvil (Yunque), loom (Telar), alchemy_cauldron (Caldero de alquimia), runic_forge (Forja Rúnica), elven_forge (Forja Élfica), titan_anvil (Yunque de Sangre de Titán), creation_altar (Altar de la Creación), campfire (Hoguera), cooking_pot (Olla), oven (Horno), barrel (Barril).

Packs de recursos

Un pack cambia cómo se ve o suena el juego sin tocar sus reglas. Es una carpeta en resourcepacks/ que imita la estructura de mods/ y sólo trae los archivos que sustituye: modelos .vox, sonidos .wav u .ogg e imágenes .png. Los datos .json no se pueden sustituir desde un pack.

resourcepacks/mi_pack/pack.json
resourcepacks/mi_pack/models/items/iron_sword.vox
resourcepacks/mi_pack/audio/sfx/step_grass.wav
{ "pack": { "pack_format": 1, "name": "Mi pack", "author": "Yo", "description": "Qué cambia", "version": "1.0.0" } }

Se activan y ordenan en el menú Packs de recursos; el de arriba gana. Son de cada jugador: en LAN cada uno lleva los suyos. El juego trae uno de ejemplo, resourcepacks/ejemplo_neon.

Plugins

Para quien programa: una DLL de 64 bits en mods/plugins/ que exporta GetModInterface() con la tabla de sdk/CubeModAPI.h (C puro). Ganchos: OnGameUpdate cada fotograma, OnDamageCalculate antes de aplicar un golpe y OnChunkGenerated al generar una columna de terreno (en varios hilos a la vez y tiene que ser determinista). Si un plugin falla, el juego lo apaga y sigue.

Un plugin es código con los permisos del jugador, así que sólo se cargan si el jugador lo permite en Opciones. Cuentan para la huella de mods de la LAN: anfitrión e invitados necesitan las mismas DLL.

Sonido y música

El juego sintetiza todos sus sonidos, así que no necesita ningún archivo. Para cambiar uno, deja un .wav (PCM de 16 bits, 44.100 Hz; mono para efectos, estéreo para música) con el nombre adecuado en mods/audio/sfx/ o mods/audio/music/. La lista completa está en mods/audio/LEEME.txt.

Buenas prácticas

Comparte tu mod. En el portal de mods están las plantillas, el formato de paquete y cómo publicar el tuyo.