# Game-assets: meegeleverde bestanden, eigen assets en assetpakketten

Lever afbeeldingen, geluid, video en 3D mee: meegeleverde bestanden, eigen assets in catalogue.json, openbare assets en pakketten, en opzoeken met sdk.assets.

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

Een game kan zijn afbeeldingen en geluid op drie manieren meenemen. Kies de eenvoudigste die doet wat je nodig hebt.

| Manier | Geschikt voor | Hoe |
|---|---|---|
| Meegeleverde bestanden | Alles wat alleen de game zelf gebruikt | Lever ze mee in het pakket en laad ze via een relatief pad |
| Eigen assets van de game | Assets die je op PlayDrop vermeld wilt hebben, wilt hergebruiken of wilt verkopen | Declareer ze in `ownedAssets` |
| Openbare assets en assetpakketten | Assets hergebruiken die andere makers hebben gepubliceerd | Verwijs ernaar in `uses` |

## Meegeleverde bestanden

Zet bestanden naast de game en laad ze met relatieve paden, zoals `assets/music.mp3`. Ze worden geüpload met het [pakket](https://www.playdrop.ai/nl/create/learn/packaging) en gecachet door de browser en de apps. Zet de bestanden die nodig zijn om te starten in `prefetch.required`, zodat de apps ze vroeg kunnen downloaden ([levenscyclus](https://www.playdrop.ai/nl/create/learn/lifecycle)). Een eenvoudige HTML-game moet zijn assets in plaats daarvan inline opnemen.

## Eigen assets van de game

Declareer de assets die de game bezit in zijn catalogusitem. Elk ervan wordt een PlayDrop-asset met een eigen pagina, gekoppeld aan deze game:

```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` is `IMAGE`, `VIDEO`, `AUDIO`, `SPRITESHEET`, `MODEL_3D` of `CUSTOM`; `subcategory` en `format` verfijnen dit.
- `files` koppelt rollen aan paden. Audio heeft `primary` nodig; spritesheets hebben `atlas` en `manifest` nodig.
- `runtimeKey` is de naam waarmee de game de asset tijdens het spelen vindt.
- Optioneel: `visibility`, `license`, `tags`, en `shopListed` met `shopPriceCredits` om de asset te verkopen.

## Openbare assets en assetpakketten

Verwijs naar gepubliceerde assets op exacte revisie en naar assetpakketten op versie:

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

Blader erdoor op [PlayDrop-assets](https://www.playdrop.ai/assets) of met `sdk.assets.catalog.listPublic()`, `sdk.assets.packs.listPublic()` en `sdk.search.query()`. Een openbare game kan alleen openbare assets en assetpakketten gebruiken; respecteer de licentie van elke asset.

## Assets vinden tijdens het spelen

```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);
```

Elk resultaat heeft `assetRef`, `runtimeKey`, `sourceType` (`OWNED`, `DIRECT` of `PACK`) en `files` met `role`, `url`, `contentType` en `sizeBytes`.

## Wat de connector accepteert

Je AI-app kan afbeeldingen, video, audio, spritesheets en gebakken 3D-modellen uploaden, inclusief gebakken procedurele afbeeldingen en spritesheets. Uitvoerbare 3D-modellen (`MODEL_3D` met de subcategorie `procedural` of het formaat `CUSTOM`) draaien in de eigen tools van PlayDrop, maar worden door de connector geweigerd, omdat de API geen code van makers uitvoert om ze te valideren. Bak ze naar een standaardformaat zoals GLB, of verwijs naar een versie die al op PlayDrop is gepubliceerd.

Maak nieuwe afbeeldingen en geluiden met [AI-assets genereren](https://www.playdrop.ai/nl/create/learn/ai-assets). Voor formaten die PlayDrop niet kent, zie [eigen assetformaten](https://www.playdrop.ai/nl/create/learn/custom-assets).

## Gerelateerde gidsen

- [AI-assets genereren](https://www.playdrop.ai/nl/create/learn/ai-assets): Genereer afbeeldingen, muziek, geluidseffecten, spraak, video en 3D in PlayDrop: in de browser met akkoord van de speler, of op een gameserver op kosten van de maker.
- [Eigen formaten en creaties](https://www.playdrop.ai/nl/create/learn/custom-assets): Definieer een eigen assetformaat met een assetspec, geef aan wat een game leest of schrijft en laat spelers creaties opslaan en publiceren met sdk.assets.custom.
- [Verpakken en .play](https://www.playdrop.ai/nl/create/learn/packaging): Richt een gebouwde gamemap, ZIP of .play in met catalogue.json in de hoofdmap, geef media en servers op en upload met prepare_catalogue_upload.
