# Generación de recursos con IA para juegos de PlayDrop

Genera imágenes, música, sonido, voz, vídeo y modelos 3D para tu juego: desde el navegador con confirmación del jugador o desde un servidor que paga el creador.

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

PlayDrop puede generar imágenes, música, efectos de sonido, voz, vídeo y modelos 3D. Úsalo mientras creas un juego o dentro de un juego para que los jugadores reciban contenido generado.

## Mientras creas el juego

Los creadores con la sesión iniciada generan recursos desde Crear en la web de PlayDrop (imagen, música, sonido, voz, vídeo y 3D) o se los piden a PlayDrop Cloud mientras crean un juego. Cada generación cuesta Créditos, que se muestran antes de empezar, y el resultado se convierte en un recurso tuyo. Úsalo como cualquier otro recurso: descárgalo en tu paquete o haz referencia a él en `uses` ([recursos de juego](https://www.playdrop.ai/es/create/learn/game-assets)).

## Dentro de un juego: desde el navegador

`sdk.ai.<kind>.createTask(request)` pide a PlayDrop que genere contenido para el jugador actual. PlayDrop muestra al jugador una confirmación con el coste en Créditos, el jugador paga y el resultado es privado para él.

```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` y `model3d`. `sdk.ai.inputs.upload(blob)` envía una imagen de referencia.
- Solo puede haber una confirmación abierta a la vez; una segunda llamada se rechaza con `ai_generation_in_progress`.
- La generación de texto y JSON desde el navegador no está disponible para los juegos alojados y devuelve `app_ai_generation_disabled`. Usa un servidor.
- Llámalo a partir de una acción del jugador, durante `play`, y gestiona la cancelación.

## Dentro de un juego: desde un servidor

En un [servidor de juego](https://www.playdrop.ai/es/create/learn/game-servers), `playdrop.ai` de `@playdrop/server` genera texto, JSON, imágenes, música, efectos de sonido, voz, vídeo y 3D. Paga el creador, y los resultados son suyos de forma predeterminada; pasa `{ owner: client.auth }` para dar un resultado apto a ese jugador.

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

- Un archivo generado es privado: descárgalo en el servidor y envía los bytes solo al jugador al que va destinado.
- Las solicitudes de voz admiten como máximo 40 palabras.
- Las generaciones de los jugadores de prueba siguen siendo del creador y se ejecutan en modo de prueba.
- Estas llamadas funcionan en juegos subidos, no en desarrollo local.

La generación cuesta Créditos, así que limita la frecuencia con la que los jugadores pueden activarla, y comprueba una solicitud completa, desde la tarea hasta que el jugador realmente lo vea o lo oiga, antes de construir un juego a su alrededor.

## Guías relacionadas

- [Recursos de juego](https://www.playdrop.ai/es/create/learn/game-assets): Incluye imágenes, sonido, vídeo y 3D en tu juego: archivos incluidos, recursos propios, recursos y paquetes públicos, y búsqueda en ejecución con sdk.assets.
- [Servidores en tiempo real](https://www.playdrop.ai/es/create/learn/game-servers): Ejecuta un servidor Colyseus 0.17 alojado con base de datos MongoDB, conéctate desde el navegador con el SDK, prueba con dos jugadores y conoce los límites.
- [Monetización](https://www.playdrop.ai/es/create/learn/monetization): Pide reseñas con requestReview, recibe propinas, vende objetos con sdk.shop, muestra anuncios intersticiales y con recompensa, y mira cuánto gana el creador.
