# Geração de assets com IA para jogos do PlayDrop

Gere imagens, música, efeitos sonoros, fala, vídeo e modelos 3D no PlayDrop, pelo navegador com confirmação do jogador ou por um servidor pago pelo criador.

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

O PlayDrop pode gerar imagens, música, efeitos sonoros, fala, vídeo e modelos 3D. Use esse recurso enquanto cria um jogo ou dentro de um jogo, para que os jogadores recebam conteúdo gerado.

## Enquanto você cria o jogo

Criadores logados geram assets em Criar, no site do PlayDrop (imagem, música, som, fala, vídeo e 3D), ou pedem ao PlayDrop Cloud enquanto criam um jogo. Cada geração custa Créditos, mostrados antes de começar, e o resultado vira um asset seu. Use-o como qualquer outro asset: baixe-o para o seu pacote ou faça referência a ele em `uses` ([assets de jogo](https://www.playdrop.ai/pt-br/create/learn/game-assets)).

## Dentro de um jogo: pelo navegador

`sdk.ai.<kind>.createTask(request)` pede ao PlayDrop que gere mídia para o jogador atual. O PlayDrop mostra ao jogador uma confirmação com o custo em Créditos, o jogador paga e o resultado fica privado para ele.

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

- Tipos: `image`, `music`, `sfx`, `speech`, `video` e `model3d`. `sdk.ai.inputs.upload(blob)` envia uma imagem de referência.
- Só uma confirmação pode ficar aberta por vez; uma segunda chamada é rejeitada com `ai_generation_in_progress`.
- A geração de texto e JSON pelo navegador não está disponível para jogos hospedados e retorna `app_ai_generation_disabled`. Use um servidor.
- Faça a chamada a partir de uma ação do jogador, durante `play`, e trate o cancelamento.

## Dentro de um jogo: por um servidor

Em um [servidor de jogo](https://www.playdrop.ai/pt-br/create/learn/game-servers), `playdrop.ai` de `@playdrop/server` gera texto, JSON, imagens, música, efeitos sonoros, fala, vídeo e 3D. O criador paga e, por padrão, é dono dos resultados; passe `{ owner: client.auth }` para entregar um resultado elegível a esse jogador.

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

- Um arquivo gerado é privado: baixe-o no servidor e envie os bytes somente ao jogador de destino.
- Solicitações de fala aceitam no máximo 40 palavras.
- As gerações dos jogadores de teste continuam pertencendo ao criador e rodam em modo de teste.
- Essas chamadas funcionam em jogos enviados, não no desenvolvimento local.

A geração custa Créditos, então limite a frequência com que os jogadores podem acioná-la e comprove uma solicitação completa, da tarefa até o jogador realmente ver ou ouvir o resultado, antes de construir um jogo em torno dela.

## Guias relacionados

- [Assets de jogo](https://www.playdrop.ai/pt-br/create/learn/game-assets): Imagens, som, vídeo e 3D no seu jogo: arquivos no pacote, assets do jogo no catalogue.json, assets e packs públicos e consulta em execução com sdk.assets.
- [Servidores em tempo real](https://www.playdrop.ai/pt-br/create/learn/game-servers): Rode um servidor Colyseus 0.17 hospedado com um banco MongoDB para o seu jogo, conecte o navegador com o SDK, teste com dois jogadores e conheça os limites.
- [Monetização](https://www.playdrop.ai/pt-br/create/learn/monetization): Peça avaliações com requestReview, receba gorjetas, venda itens com sdk.shop, mostre anúncios intersticiais e premiados e veja quanto fica com o criador.
