# Tạo tài nguyên bằng AI cho game PlayDrop

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

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

PlayDrop có thể tạo hình ảnh, nhạc, hiệu ứng âm thanh, giọng nói, video và mô hình 3D. Hãy dùng tính năng này khi làm game, hoặc ngay trong game để người chơi nhận được nội dung được tạo ra.

## Khi làm game

Nhà sáng tạo đã đăng nhập có thể tạo tài nguyên từ trang Tạo trên website PlayDrop (hình ảnh, nhạc, âm thanh, giọng nói, video và 3D) hoặc nhờ PlayDrop Cloud trong lúc xây dựng game. Mỗi lần tạo tốn credit, được hiển thị trước khi bắt đầu, và kết quả trở thành một tài nguyên bạn sở hữu. Hãy dùng nó như mọi tài nguyên khác: tải nó vào gói của bạn hoặc tham chiếu nó trong `uses` ([tài nguyên game](https://www.playdrop.ai/vi/create/learn/game-assets)).

## Trong game: từ trình duyệt

`sdk.ai.<kind>.createTask(request)` yêu cầu PlayDrop tạo media cho người chơi hiện tại. PlayDrop hiển thị cho người chơi một bước xác nhận kèm chi phí credit, người chơi trả phí, và kết quả là riêng tư với họ.

```js
try {
  const task = await sdk.ai.image.createTask({ input: "A friendly robot pet, flat colors", aspectRatio: "1:1" });
  const done = await waitForTask(task.id);
  const blob = await sdk.ai.tasks.downloadFile(done.id);
  showPet(URL.createObjectURL(blob));
} catch (error) {
  if (error.message === "ai_generation_cancelled") return;
  throw error;
}

async function waitForTask(id) {
  for (;;) {
    const task = await sdk.ai.tasks.get(id);
    if (task.status === "DONE") return task;
    if (["FAILED", "CANCELLED", "EXPIRED"].includes(task.status)) throw new Error(task.status);
    await new Promise((resolve) => setTimeout(resolve, 2000));
  }
}
```

- Các loại: `image`, `music`, `sfx`, `speech`, `video` và `model3d`. `sdk.ai.inputs.upload(blob)` gửi một ảnh tham chiếu.
- Mỗi lúc chỉ mở được một bước xác nhận; lệnh gọi thứ hai bị từ chối với `ai_generation_in_progress`.
- Việc tạo văn bản và JSON từ trình duyệt không khả dụng cho game được lưu trữ và trả về `app_ai_generation_disabled`. Hãy dùng máy chủ.
- Hãy gọi nó từ một thao tác của người chơi, trong giai đoạn `play`, và xử lý trường hợp bị hủy.

## Trong game: từ máy chủ

Trên một [máy chủ game](https://www.playdrop.ai/vi/create/learn/game-servers), `playdrop.ai` từ `@playdrop/server` tạo văn bản, JSON, hình ảnh, nhạc, hiệu ứng âm thanh, giọng nói, video và 3D. Nhà sáng tạo trả phí và mặc định sở hữu kết quả; truyền `{ owner: client.auth }` để trao một kết quả đủ điều kiện cho người chơi đó.

```js
import { playdrop } from "@playdrop/server";

const task = await playdrop.ai.speech.createTask({ input: "Welcome back, captain." }, { owner: client.auth });
// Later, once the task is DONE:
const file = await playdrop.ai.tasks.downloadFile(task.id, { role: "primary" });
client.send("speech", { bytes: new Uint8Array(await file.arrayBuffer()), contentType: file.type });
```

- Tệp được tạo là riêng tư: hãy tải nó về máy chủ và chỉ gửi các byte đến đúng người chơi.
- Yêu cầu giọng nói chấp nhận tối đa 40 từ.
- Nội dung do người chơi thử tạo vẫn thuộc sở hữu của nhà sáng tạo và chạy ở chế độ thử nghiệm.
- Các lệnh gọi này hoạt động với game đã tải lên, không hoạt động khi phát triển cục bộ.

Việc tạo tốn credit, vì vậy hãy giới hạn tần suất người chơi có thể kích hoạt nó, và chứng minh một yêu cầu hoàn chỉnh, từ tác vụ đến lúc người chơi thật sự thấy hoặc nghe kết quả, trước khi xây dựng cả game xoay quanh nó.

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

- [Tài nguyên game](https://www.playdrop.ai/vi/create/learn/game-assets): Đư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.
- [Máy chủ game thời gian thực](https://www.playdrop.ai/vi/create/learn/game-servers): Chạy máy chủ Colyseus 0.17 được lưu trữ kèm cơ sở dữ liệu MongoDB cho game, kết nối từ trình duyệt bằng SDK, thử với hai người chơi và nắm rõ giới hạn.
- [Kiếm tiền](https://www.playdrop.ai/vi/create/learn/monetization): Xin đánh giá bằng requestReview, nhận tiền ủng hộ, bán vật phẩm bằng sdk.shop, hiển thị quảng cáo xen kẽ và có thưởng, và phần nhà sáng tạo nhận được từ mỗi nguồn.
