素材
PlayDrop 遊戲的 AI 素材生成
在 PlayDrop 為遊戲生成圖片、音樂、音效、語音、影片與 3D 模型:可從瀏覽器經玩家確認後生成,或從遊戲伺服器生成並由創作者付費。
PlayDrop 可以生成圖片、音樂、音效、語音、影片與 3D 模型。你可以在製作遊戲時使用,也可以在遊戲中使用,讓玩家獲得生成的內容。
製作遊戲時
已登入的創作者可以在 PlayDrop 網站的「創作」中生成素材(圖片、音樂、音效、語音、影片與 3D),或在製作遊戲時請 PlayDrop Cloud 生成。每次生成都要花費點數,開始前會顯示費用,生成結果會成為你擁有的素材。像其他素材一樣使用即可:下載到你的套件中,或在 uses 中參照(遊戲素材)。
在遊戲中:從瀏覽器
sdk.ai.<kind>.createTask(request) 會請 PlayDrop 為目前的玩家生成媒體。PlayDrop 會向玩家顯示附有點數費用的確認視窗,由玩家付費,生成結果只屬於該玩家。
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));
}
}- 種類:
image、music、sfx、speech、video和model3d。sdk.ai.inputs.upload(blob)可傳送參考圖片。 - 同一時間只能開啟一個確認視窗;第二次呼叫會以
ai_generation_in_progress拒絕。 - 託管遊戲無法從瀏覽器生成文字與 JSON,呼叫會傳回
app_ai_generation_disabled。請改用伺服器。 - 請在玩家操作時、於
play階段呼叫,並處理取消的情況。
在遊戲中:從伺服器
在遊戲伺服器上,@playdrop/server 的 playdrop.ai 可以生成文字、JSON、圖片、音樂、音效、語音、影片與 3D。由創作者付費,生成結果預設歸創作者所有;傳入 { owner: client.auth } 可將符合資格的結果交給該玩家。
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 });- 生成的檔案是私人的:請在伺服器上下載,並只將位元組傳送給預定的玩家。
- 語音請求最多接受 40 個字詞。
- 測試玩家的生成結果仍歸創作者所有,並以測試模式執行。
- 這些呼叫適用於已上傳的遊戲,無法在本機開發環境中使用。
生成需要花費點數,因此請限制玩家觸發的頻率;在圍繞它打造遊戲之前,先驗證一次完整的請求,從建立生成工作一直到玩家實際看到或聽到結果。