# Recursos de juego: archivos incluidos, propios y paquetes de recursos

Incluye 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.

Source: https://www.playdrop.ai/es/create/learn/game-assets

Un juego puede llevar sus imágenes y sonidos de tres formas. Elige la más sencilla que haga lo que necesitas.

| Forma | Ideal para | Cómo |
|---|---|---|
| Archivos incluidos | Todo lo que usa solo este juego | Inclúyelos en el paquete y cárgalos con rutas relativas |
| Recursos propios del juego | Recursos que quieres mostrar en PlayDrop, reutilizar o vender | Decláralos en `ownedAssets` |
| Recursos y paquetes de recursos públicos | Reutilizar recursos que han publicado otros creadores | Haz referencia a ellos en `uses` |

## Archivos incluidos

Coloca los archivos junto al juego y cárgalos con rutas relativas, como `assets/music.mp3`. Se suben con el [paquete](https://www.playdrop.ai/es/create/learn/packaging) y el navegador y las apps los guardan en caché. Indica en `prefetch.required` los necesarios para arrancar, para que las apps puedan descargarlos pronto ([ciclo de vida](https://www.playdrop.ai/es/create/learn/lifecycle)). En un juego HTML simple, los recursos deben ir incrustados en el propio archivo.

## Recursos propios del juego

Declara los recursos propios del juego en su entrada del catálogo. Cada uno se convierte en un recurso de PlayDrop con su propia página, vinculado a este juego:

```json
{
  "ownedAssets": [
    { "name": "moon-theme", "runtimeKey": "music.main", "displayName": "Moon theme",
      "category": "AUDIO", "files": { "primary": "assets/moon-theme.mp3" } },
    { "name": "astronaut", "runtimeKey": "sprites.player", "displayName": "Astronaut",
      "category": "SPRITESHEET", "files": { "atlas": "assets/astronaut.png", "manifest": "assets/astronaut.json" } }
  ]
}
```

- `category` es `IMAGE`, `VIDEO`, `AUDIO`, `SPRITESHEET`, `MODEL_3D` o `CUSTOM`; `subcategory` y `format` la precisan.
- `files` asocia roles a rutas. El audio necesita `primary`; las hojas de sprites necesitan `atlas` y `manifest`.
- `runtimeKey` es el nombre que usa el juego para encontrarlo durante la ejecución.
- Opcionales: `visibility`, `license`, `tags`, y `shopListed` con `shopPriceCredits` para venderlo.

## Recursos y paquetes de recursos públicos

Haz referencia a los recursos publicados por su revisión exacta, y a los paquetes de recursos por su versión:

```json
{
  "uses": {
    "assets": [{ "ref": "asset:someone/forest-tiles@r3", "runtimeKey": "tiles.forest" }],
    "packs": ["pack:someone/ui-kit@1.2.0"]
  }
}
```

Explóralos en [los recursos de PlayDrop](https://www.playdrop.ai/assets) o con `sdk.assets.catalog.listPublic()`, `sdk.assets.packs.listPublic()` y `sdk.search.query()`. Un juego público solo puede usar recursos y paquetes de recursos públicos; respeta la licencia de cada recurso.

## Encuentra recursos durante la ejecución

```js
const music = sdk.assets.resolveAppAsset("music.main");
const file = music.files.find((entry) => entry.role === "primary");
audioElement.src = file.url;

for (const asset of sdk.assets.listAppAssets()) console.log(asset.runtimeKey, asset.sourceType);
```

Cada resultado tiene `assetRef`, `runtimeKey`, `sourceType` (`OWNED`, `DIRECT` o `PACK`) y `files` con `role`, `url`, `contentType` y `sizeBytes`.

## Qué acepta el conector

Tu app de IA puede subir imágenes, vídeo, audio, hojas de sprites y modelos 3D horneados, incluidas imágenes y hojas de sprites procedurales ya horneadas. Los modelos 3D ejecutables (`MODEL_3D` con la subcategoría `procedural` o el formato `CUSTOM`) funcionan en las herramientas propias de PlayDrop, pero el conector los rechaza porque la API no ejecuta código de los creadores para validarlos. Hornéalos en un formato estándar como GLB o haz referencia a una versión ya publicada en PlayDrop.

Crea nuevas imágenes y sonidos con la [generación de recursos con IA](https://www.playdrop.ai/es/create/learn/ai-assets). Para formatos que PlayDrop no conoce, consulta [formatos de recursos personalizados](https://www.playdrop.ai/es/create/learn/custom-assets).

## Guías relacionadas

- [Generación de recursos con IA](https://www.playdrop.ai/es/create/learn/ai-assets): Genera imágenes, música, sonido, voz, vídeo y modelos 3D para tu juego: desde el navegador con confirmación del jugador o desde un servidor que paga el creador.
- [Formatos personalizados y creaciones de jugadores](https://www.playdrop.ai/es/create/learn/custom-assets): 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.
- [Empaquetado y .play](https://www.playdrop.ai/es/create/learn/packaging): Organiza una carpeta, ZIP o .play compilado con catalogue.json en la raíz, declara medios de la ficha y servidores, y súbelo con prepare_catalogue_upload.
