# Zasoby gier w PlayDrop: pliki w pakiecie, zasoby gry i wspólne pakiety

Dodaj do gry obrazy, dźwięk, wideo i 3D: pliki w pakiecie, zasoby należące do gry, publiczne zasoby i pakiety oraz wyszukiwanie przez sdk.assets.

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

Grafikę i dźwięk możesz dodać do gry na trzy sposoby. Wybierz najprostszy, który robi to, czego potrzebujesz.

| Sposób | Do czego się nadaje | Jak |
|---|---|---|
| Pliki w pakiecie | Wszystko, czego używa wyłącznie ta gra | Umieść je w pakiecie i ładuj ścieżką względną |
| Zasoby należące do gry | Zasoby, które mają być widoczne w PlayDrop, wielokrotnego użytku lub na sprzedaż | Zadeklaruj je w `ownedAssets` |
| Publiczne zasoby i pakiety zasobów | Ponowne użycie zasobów opublikowanych przez innych twórców | Odwołaj się do nich w `uses` |

## Pliki w pakiecie

Umieść pliki obok gry i ładuj je ścieżkami względnymi, takimi jak `assets/music.mp3`. Są przesyłane razem z [pakietem](https://www.playdrop.ai/pl/create/learn/packaging) i buforowane przez przeglądarkę i aplikacje. Wypisz te potrzebne do startu w `prefetch.required`, aby aplikacje mogły pobrać je wcześniej ([cykl życia](https://www.playdrop.ai/pl/create/learn/lifecycle)). Prosta gra HTML musi zamiast tego osadzić swoje zasoby w pliku.

## Zasoby należące do gry

Zadeklaruj zasoby należące do gry w jej wpisie katalogu. Każdy z nich staje się zasobem PlayDrop z własną stroną, powiązanym z tą grą:

```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` to `IMAGE`, `VIDEO`, `AUDIO`, `SPRITESHEET`, `MODEL_3D` lub `CUSTOM`; `subcategory` i `format` ją doprecyzowują.
- `files` przypisuje role do ścieżek. Dźwięk wymaga `primary`; arkusze sprite'ów wymagają `atlas` i `manifest`.
- `runtimeKey` to nazwa, po której gra znajduje zasób w czasie działania.
- Opcjonalnie: `visibility`, `license`, `tags` oraz `shopListed` z `shopPriceCredits`, aby sprzedawać zasób.

## Publiczne zasoby i pakiety zasobów

Odwołuj się do opublikowanych zasobów w dokładnej rewizji, a do pakietów zasobów w wersji:

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

Przeglądaj je w [zasobach PlayDrop](https://www.playdrop.ai/assets) albo przez `sdk.assets.catalog.listPublic()`, `sdk.assets.packs.listPublic()` i `sdk.search.query()`. Gra publiczna może używać tylko publicznych zasobów i pakietów zasobów; przestrzegaj licencji każdego zasobu.

## Znajdowanie zasobów w czasie działania

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

Każdy wynik ma `assetRef`, `runtimeKey`, `sourceType` (`OWNED`, `DIRECT` lub `PACK`) oraz `files` z `role`, `url`, `contentType` i `sizeBytes`.

## Co przyjmuje konektor

Twoja aplikacja AI może przesyłać obrazy, wideo, dźwięk, arkusze sprite'ów i wypalone modele 3D, w tym wypalone obrazy i arkusze sprite'ów generowane proceduralnie. Wykonywalne modele 3D (`MODEL_3D` z podkategorią `procedural` lub w formacie `CUSTOM`) działają we własnych narzędziach PlayDrop, ale konektor je odrzuca, ponieważ API nie uruchamia kodu twórców, żeby je zweryfikować. Wypal je do standardowego formatu, takiego jak GLB, albo odwołaj się do wersji już opublikowanej w PlayDrop.

Nową grafikę i dźwięk stworzysz dzięki [generowaniu zasobów z AI](https://www.playdrop.ai/pl/create/learn/ai-assets). Formaty, których PlayDrop nie zna, opisuje poradnik o [własnych formatach zasobów](https://www.playdrop.ai/pl/create/learn/custom-assets).

## Powiązane poradniki

- [Generowanie zasobów z AI](https://www.playdrop.ai/pl/create/learn/ai-assets): Generuj obrazy, muzykę, efekty dźwiękowe, mowę, wideo i modele 3D do gry: w przeglądarce za zgodą gracza lub na serwerze gry na koszt twórcy.
- [Własne formaty i twórczość graczy](https://www.playdrop.ai/pl/create/learn/custom-assets): Zdefiniuj format zasobu, zadeklaruj formaty czytane lub zapisywane przez grę i pozwól graczom zapisywać i publikować dzieła przez sdk.assets.custom.
- [Pakowanie i .play](https://www.playdrop.ai/pl/create/learn/packaging): Zbudowana gra w folderze, ZIP lub .play z catalogue.json w katalogu głównym: media strony gry, serwery i przesyłanie przez prepare_catalogue_upload.
