# Tài nguyên game PlayDrop: tệp đi kèm, tài nguyên sở hữu, gói tài nguyên

Đưa hình ảnh, âm thanh, video và 3D vào game PlayDrop: tệp đi kèm, tài nguyên do game sở hữu, tài nguyên và gói tài nguyên công khai, tra cứu lúc chạy bằng sdk.assets.

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

Một game có thể mang theo hình ảnh và âm thanh theo ba cách. Hãy chọn cách đơn giản nhất đáp ứng được nhu cầu của bạn.

| Cách | Phù hợp để | Thực hiện |
|---|---|---|
| Tệp đi kèm | Mọi thứ chỉ riêng game này dùng | Đưa chúng vào gói và tải bằng đường dẫn tương đối |
| Tài nguyên do game sở hữu | Tài nguyên bạn muốn liệt kê trên PlayDrop, dùng lại được hoặc bán được | Khai báo chúng trong `ownedAssets` |
| Tài nguyên và gói tài nguyên công khai | Dùng lại tài nguyên mà các nhà sáng tạo khác đã xuất bản | Tham chiếu chúng trong `uses` |

## Tệp đi kèm

Đặt các tệp cạnh game và tải chúng bằng đường dẫn tương đối, chẳng hạn `assets/music.mp3`. Chúng được tải lên cùng [gói](https://www.playdrop.ai/vi/create/learn/packaging) và được trình duyệt cũng như các ứng dụng lưu vào bộ nhớ đệm. Liệt kê những tệp cần để khởi động trong `prefetch.required` để các ứng dụng có thể tải chúng sớm ([vòng đời](https://www.playdrop.ai/vi/create/learn/lifecycle)). Một game HTML đơn giản thì phải nhúng trực tiếp tài nguyên vào tệp.

## Tài nguyên do game sở hữu

Khai báo các tài nguyên mà game sở hữu trong mục catalogue của game. Mỗi tài nguyên trở thành một tài nguyên PlayDrop có trang riêng, gắn với game này:

```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` là `IMAGE`, `VIDEO`, `AUDIO`, `SPRITESHEET`, `MODEL_3D` hoặc `CUSTOM`; `subcategory` và `format` làm rõ thêm.
- `files` ánh xạ vai trò tới đường dẫn. Âm thanh cần `primary`; spritesheet cần `atlas` và `manifest`.
- `runtimeKey` là tên mà game dùng để tìm tài nguyên lúc chạy.
- Tùy chọn: `visibility`, `license`, `tags`, và `shopListed` kèm `shopPriceCredits` để bán tài nguyên.

## Tài nguyên và gói tài nguyên công khai

Tham chiếu tài nguyên đã xuất bản theo bản sửa đổi chính xác, và gói tài nguyên theo phiên bản:

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

Duyệt chúng trên [tài nguyên PlayDrop](https://www.playdrop.ai/assets) hoặc bằng `sdk.assets.catalog.listPublic()`, `sdk.assets.packs.listPublic()` và `sdk.search.query()`. Một game công khai chỉ có thể dùng tài nguyên và gói tài nguyên công khai; hãy tôn trọng giấy phép của từng tài nguyên.

## Tìm tài nguyên lúc chạy

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

Mỗi kết quả có `assetRef`, `runtimeKey`, `sourceType` (`OWNED`, `DIRECT` hoặc `PACK`) và `files` với `role`, `url`, `contentType` và `sizeBytes`.

## Những gì connector chấp nhận

Ứng dụng AI của bạn có thể tải lên hình ảnh, video, âm thanh, spritesheet và mô hình 3D đã bake, kể cả hình ảnh và spritesheet procedural đã bake. Mô hình 3D thực thi được (`MODEL_3D` có danh mục con `procedural` hoặc định dạng `CUSTOM`) chạy được trong các công cụ riêng của PlayDrop nhưng bị connector từ chối, vì API không chạy mã của nhà sáng tạo để xác thực chúng. Hãy bake chúng sang một định dạng chuẩn như GLB, hoặc tham chiếu một phiên bản đã được xuất bản trên PlayDrop.

Tạo hình ảnh và âm thanh mới bằng [tạo tài nguyên bằng AI](https://www.playdrop.ai/vi/create/learn/ai-assets). Với những định dạng PlayDrop chưa biết, hãy xem [định dạng tài nguyên tùy chỉnh](https://www.playdrop.ai/vi/create/learn/custom-assets).

## Hướng dẫn liên quan

- [Tạo tài nguyên bằng AI](https://www.playdrop.ai/vi/create/learn/ai-assets): Tạo hình ảnh, nhạc, âm thanh, giọng nói, video và 3D cho game trên PlayDrop, từ trình duyệt có người chơi xác nhận hoặc từ máy chủ do nhà sáng tạo trả phí.
- [Định dạng tùy chỉnh và sáng tạo của người chơi](https://www.playdrop.ai/vi/create/learn/custom-assets): Định nghĩa định dạng tài nguyên riêng bằng asset spec, khai báo định dạng game đọc hoặc ghi, và cho người chơi lưu, xuất bản sáng tạo bằng sdk.assets.custom.
- [Đóng gói và .play](https://www.playdrop.ai/vi/create/learn/packaging): Sắp xếp thư mục game đã dựng, tệp ZIP hoặc .play có catalogue.json ở thư mục gốc, khai báo media giới thiệu, máy chủ, rồi tải lên bằng prepare_catalogue_upload.
