# Assets no PlayDrop: arquivos incluídos, assets do jogo e packs

Imagens, som, vídeo e 3D no seu jogo: arquivos no pacote, assets do jogo no catalogue.json, assets e packs públicos e consulta em execução com sdk.assets.

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

Um jogo pode levar sua arte e seu som de três formas. Escolha a mais simples que faça o que você precisa.

| Forma | Bom para | Como |
|---|---|---|
| Arquivos incluídos | Tudo o que só o jogo usa | Inclua-os no pacote e carregue-os por caminho relativo |
| Assets do jogo | Assets que você quer listar no PlayDrop, reutilizar ou vender | Declare-os em `ownedAssets` |
| Assets e packs públicos | Reutilizar assets que outros criadores publicaram | Faça referência a eles em `uses` |

## Arquivos incluídos

Coloque os arquivos ao lado do jogo e carregue-os com caminhos relativos, como `assets/music.mp3`. Eles são enviados com o [pacote](https://www.playdrop.ai/pt-br/create/learn/packaging) e ficam em cache no navegador e nos apps. Liste os necessários para iniciar em `prefetch.required`, para que os apps possam baixá-los antes ([ciclo de vida](https://www.playdrop.ai/pt-br/create/learn/lifecycle)). Um jogo em HTML simples precisa incorporar seus assets no próprio arquivo.

## Assets do jogo

Declare os assets do jogo na entrada dele no catálogo. Cada um vira um asset do PlayDrop com sua própria página, vinculado a este jogo:

```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` é `IMAGE`, `VIDEO`, `AUDIO`, `SPRITESHEET`, `MODEL_3D` ou `CUSTOM`; `subcategory` e `format` a refinam.
- `files` associa papéis a caminhos. Áudio precisa de `primary`; spritesheets precisam de `atlas` e `manifest`.
- `runtimeKey` é o nome que o jogo usa para encontrá-lo durante a execução.
- Opcionais: `visibility`, `license`, `tags` e `shopListed` com `shopPriceCredits` para vendê-lo.

## Assets e packs públicos

Faça referência a assets publicados pela revisão exata e a packs pela versão:

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

Explore-os em [assets do PlayDrop](https://www.playdrop.ai/assets) ou com `sdk.assets.catalog.listPublic()`, `sdk.assets.packs.listPublic()` e `sdk.search.query()`. Um jogo público só pode usar assets e packs públicos; respeite a licença de cada asset.

## Encontre assets durante a execução

```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 tem `assetRef`, `runtimeKey`, `sourceType` (`OWNED`, `DIRECT` ou `PACK`) e `files` com `role`, `url`, `contentType` e `sizeBytes`.

## O que o conector aceita

Seu app de IA pode enviar imagens, vídeo, áudio, spritesheets e modelos 3D convertidos em arquivos fixos (bake), incluindo imagens e spritesheets procedurais já convertidas. Modelos 3D executáveis (`MODEL_3D` com a subcategoria `procedural` ou o formato `CUSTOM`) rodam nas ferramentas do próprio PlayDrop, mas são recusados pelo conector, porque a API não executa código do criador para validá-los. Converta-os em um formato padrão, como GLB, ou faça referência a uma versão já publicada no PlayDrop.

Crie arte e som novos com a [geração de assets com IA](https://www.playdrop.ai/pt-br/create/learn/ai-assets). Para formatos que o PlayDrop não conhece, veja [formatos de asset personalizados](https://www.playdrop.ai/pt-br/create/learn/custom-assets).

## Guias relacionados

- [Geração de assets com IA](https://www.playdrop.ai/pt-br/create/learn/ai-assets): Gere imagens, música, efeitos sonoros, fala, vídeo e modelos 3D no PlayDrop, pelo navegador com confirmação do jogador ou por um servidor pago pelo criador.
- [Formatos personalizados e criações dos jogadores](https://www.playdrop.ai/pt-br/create/learn/custom-assets): Defina formatos de asset com especificações, declare os que um jogo lê ou grava e deixe os jogadores salvar e publicar criações com sdk.assets.custom.
- [Empacotamento e .play](https://www.playdrop.ai/pt-br/create/learn/packaging): Organize uma pasta, ZIP ou .play compilado com o catalogue.json na raiz, declare a mídia da listagem e os servidores e envie com prepare_catalogue_upload.
