PlayDrop 게임을 위한 AI 에셋 생성
PlayDrop에서 게임용 이미지, 음악, 효과음, 음성, 동영상, 3D 모델을 만드세요. 브라우저에서는 플레이어가 확인하고, 게임 서버에서는 크리에이터가 비용을 냅니다.
PlayDrop은 이미지, 음악, 효과음, 음성, 동영상, 3D 모델을 생성할 수 있습니다. 게임을 만드는 동안 사용하거나, 게임 안에서 사용해 플레이어가 생성된 콘텐츠를 받게 할 수 있습니다.
게임을 만드는 동안
로그인한 크리에이터는 PlayDrop 웹사이트의 만들기에서 에셋(이미지, 음악, 사운드, 음성, 동영상, 3D)을 생성하거나, 게임을 만드는 중에 PlayDrop Cloud에 요청할 수 있습니다. 생성할 때마다 시작 전에 표시되는 크레딧이 들며, 결과물은 내가 소유하는 에셋이 됩니다. 다른 에셋과 똑같이 사용하세요. 패키지에 내려받아 넣거나 uses에서 참조하면 됩니다(게임 에셋).
게임 안에서: 브라우저에서 생성하기
sdk.ai.<kind>.createTask(request)는 현재 플레이어를 위한 미디어 생성을 PlayDrop에 요청합니다. PlayDrop이 플레이어에게 크레딧 비용이 적힌 확인 창을 보여 주고, 플레이어가 비용을 내며, 결과물은 그 플레이어만 볼 수 있습니다.
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 }를 넘기세요.
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단어까지 받습니다.
- 테스트 플레이어의 생성 결과는 크리에이터 소유로 남고 테스트 모드로 실행됩니다.
- 이 호출은 업로드한 게임에서 작동하며, 로컬 개발 환경에서는 작동하지 않습니다.
생성에는 크레딧이 들므로 플레이어가 생성을 실행할 수 있는 빈도를 제한하세요. 그리고 생성을 중심으로 게임을 만들기 전에, 작업 생성부터 플레이어가 실제로 결과를 보거나 듣기까지 요청 하나가 끝까지 작동하는지 먼저 확인하세요.