素材
为 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 个单词。
- 测试玩家生成的内容仍归创作者所有,并以测试模式运行。
- 这些调用只适用于已上传的游戏,不适用于本地开发。
生成会花费点数,所以请限制玩家触发生成的频率;在围绕它设计整款游戏之前,先验证一次完整的请求,从创建生成任务一直到玩家真正看到或听到结果。