PlayDrop logoPlayDrop Studio
CrearIntercambio de partidasGanarAprenderConectoresRecursosComunidadAyuda
PlayDrop logoPlayDrop Studio
CrearIntercambio de partidasGanarAprenderConectoresRecursosComunidadAyuda
Iniciar sesión
Formatos personalizados y creaciones de jugadores
Documentación

Empieza aquí

ResumenTu primer juegoJuegos de PlayDropPreguntas frecuentes

Crea con Cloud

Creación con CloudPlanes y generaciones

Conecta tu app de IA

Todos los conectoresClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

Publica y comparte

Publicar desde tu app de IAJuegos HTML simplesEmpaquetado y .playPublicar e importarArchivos del juegoVisibilidad y alcanceImágenes y vídeo de la fichaGéneros y etiquetasLocalizaciónJuegos instantáneos

Experiencia de juego

Carga, pausa y audioPantalla completa y zonas segurasPartidas guardadas en la nubeGrupos locales y mandos

Juega en grupo

Compartir, amigos e invitacionesClasificacionesLogrosGrupos en línea y vozServidores en tiempo real

Gana

MonetizaciónCréditos y recompensas

Recursos

Recursos de juegoGeneración de recursos con IAFormatos personalizados y creaciones de jugadores

Referencia

SDK de clienteSDK de servidorcatalogue.jsonErrores y recuperaciónSolución de problemas
DocumentaciónFormatos personalizados y creaciones de jugadores
Recursos

Formatos de recursos personalizados y creaciones de jugadores

Define tu formato con una especificación de recurso, declara qué formatos lee o escribe un juego y deja que los jugadores publiquen con sdk.assets.custom.

Las especificaciones de recurso permiten que un juego defina su propio tipo de recurso, como un nivel, un personaje o una baraja, como un contrato de archivos. Así, los jugadores pueden crear, guardar y publicar creaciones en ese formato, y otros juegos compatibles pueden abrirlas.

Define una especificación de recurso

Una especificación de recurso se declara en la lista assetSpecs de catalogue.json, junto a apps:

json
{
  "assetSpecs": [{
    "name": "moon-level",
    "version": "1.0.0",
    "displayName": "Moon Jump level",
    "symbol": "specs/moon-level.svg",
    "contract": "specs/moon-level.contract.json"
  }]
}

El contrato indica los archivos de cada recurso y cómo comprobarlos:

json
{
  "primaryRole": "level",
  "roles": [
    { "name": "level", "required": true, "contentTypes": ["application/json"], "mode": "TEXT",
      "jsonSchema": { "type": "object", "required": ["tiles"], "properties": { "tiles": { "type": "array" } } } },
    { "name": "thumbnail", "required": false, "contentTypes": ["image/png"], "mode": "BINARY" }
  ]
}

Los roles pueden incluir un JSON Schema, que PlayDrop comprueba en cada guardado. Publica una nueva versión de la especificación cuando cambie el formato; los recursos antiguos conservan su versión.

Declara qué admite un juego

json
{
  "assetSpecSupport": [
    { "assetSpec": "asset-spec:your-name/moon-level", "versionRange": "^1.0.0", "capabilities": ["READ", "WRITE"] }
  ]
}

Las capacidades son READ, WRITE, EDIT, PREVIEW e IMPORT.

Guarda y carga creaciones de jugadores

js
const levels = sdk.assets.custom.forSpec("asset-spec:your-name/moon-level");

await levels.saveDraft({ assetName: "crater-run", displayName: "Crater run",
  files: { level: new Blob([JSON.stringify(level)], { type: "application/json" }) } });
await levels.publish({ assetName: "crater-run", displayName: "Crater run", files: { level: levelBlob, thumbnail: pngBlob } });

const mine = await levels.listMine();
const latest = mine[0]?.latestPublicVersion;
if (latest) startLevel(await levels.loadJson({ assetRef: latest.assetRef, role: "level" }));

const community = await levels.listPublic({ limit: 20 }); // { assets, pagination }
  • saveDraft guarda un borrador privado; publish lo hace público. Ambos necesitan el conjunto completo de archivos.
  • Las referencias de recurso tienen el formato asset:creator/name@r2. loadJson, loadText y downloadFile leen recursos publicados; loadOwned, loadOwnedJson y loadOwnedFile leen los del propio jugador, borradores incluidos.
  • supports(versionRef, capability) comprueba la compatibilidad antes de abrir un recurso de otra versión.
  • Los errores usan códigos como custom_asset_capability_unsupported y custom_asset_role_type_mismatch.

Los jugadores tienen que iniciar sesión para guardar. Revisa lo que publican los jugadores como harías con cualquier contenido de usuarios: se le aplica la política de contenido de PlayDrop.

Qué acepta el conector

Los recursos personalizados y las especificaciones que solo contienen datos se suben como cualquier otro archivo. El conector rechaza los modelos ejecutables, es decir, los recursos MODEL_3D con la subcategoría procedural o el formato CUSTOM, porque la API no ejecuta código de los creadores; hornéalos en un formato estático o haz referencia a una versión publicada. Consulta recursos de juego.

Guías relacionadas

  • Recursos de juegoIncluye imágenes, sonido, vídeo y 3D en tu juego: archivos incluidos, recursos propios, recursos y paquetes públicos, y búsqueda en ejecución con sdk.assets.
  • catalogue.jsonCampos de catalogue.json que usan los juegos: identidad, ficha, modos, pantallas, sesión, instantáneo, precarga, medios, idiomas, puntuaciones y servidores.
  • SDK de clienteSDK de navegador de PlayDrop: init, host, jugador, partidas guardadas, mandos, social, multijugador, tienda, anuncios, clasificaciones, logros, recursos e IA.
AnteriorGeneración de recursos con IA para juegos de PlayDropSiguienteReferencia del SDK de cliente de PlayDrop
Ver Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

En esta página

Define una especificación de recursoDeclara qué admite un juegoGuarda y carga creaciones de jugadoresQué acepta el conector
Ver Markdown