# Génération de ressources par IA pour les jeux PlayDrop

Générez images, musique, effets sonores, voix, vidéos et 3D pour un jeu PlayDrop : dans le navigateur avec l’accord du joueur, ou sur un serveur payé par le créateur.

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

PlayDrop peut générer des images, de la musique, des effets sonores, des voix, des vidéos et des modèles 3D. Utilisez cette génération pendant la création d’un jeu, ou dans le jeu lui-même pour offrir du contenu généré aux joueurs.

## Pendant la création du jeu

Les créateurs connectés génèrent des ressources depuis Créer sur le site PlayDrop (image, musique, son, voix, vidéo et 3D) ou les demandent à PlayDrop Cloud pendant la création d’un jeu. Chaque génération coûte des Crédits, affichés avant le lancement, et le résultat devient une ressource qui vous appartient. Utilisez-la comme n’importe quelle autre ressource : téléchargez-la dans votre paquet ou référencez-la dans `uses` ([ressources de jeu](https://www.playdrop.ai/fr/create/learn/game-assets)).

## Dans un jeu : depuis le navigateur

`sdk.ai.<kind>.createTask(request)` demande à PlayDrop de générer un média pour le joueur actuel. PlayDrop montre au joueur une confirmation avec le coût en Crédits, le joueur paie, et le résultat lui est réservé.

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

- Types : `image`, `music`, `sfx`, `speech`, `video` et `model3d`. `sdk.ai.inputs.upload(blob)` envoie une image de référence.
- Une seule confirmation peut être ouverte à la fois ; un second appel est rejeté avec `ai_generation_in_progress`.
- La génération de texte et de JSON depuis le navigateur n’est pas disponible pour les jeux hébergés et renvoie `app_ai_generation_disabled`. Utilisez un serveur.
- Appelez-la à la suite d’une action du joueur, pendant `play`, et gérez l’annulation.

## Dans un jeu : depuis un serveur

Sur un [serveur de jeu](https://www.playdrop.ai/fr/create/learn/game-servers), `playdrop.ai` de `@playdrop/server` génère du texte, du JSON, des images, de la musique, des effets sonores, des voix, des vidéos et de la 3D. Le créateur paie et possède les résultats par défaut ; passez `{ owner: client.auth }` pour attribuer un résultat admissible à ce joueur.

```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 fichier généré est privé : téléchargez-le sur le serveur et n’envoyez les octets qu’au joueur concerné.
- Les requêtes de synthèse vocale acceptent 40 mots au maximum.
- Les générations des joueurs de test restent la propriété du créateur et s’exécutent en mode test.
- Ces appels fonctionnent dans les jeux envoyés sur PlayDrop, pas en développement local.

La génération coûte des Crédits : limitez la fréquence à laquelle les joueurs peuvent la déclencher, et validez une requête complète, de la tâche jusqu’au moment où le joueur voit ou entend réellement le résultat, avant de construire un jeu autour.

## Guides associés

- [Ressources de jeu](https://www.playdrop.ai/fr/create/learn/game-assets): Intégrez images, sons, vidéos et 3D à un jeu PlayDrop : fichiers inclus, ressources du jeu dans catalogue.json, ressources et packs publics, accès avec sdk.assets.
- [Serveurs de jeu temps réel](https://www.playdrop.ai/fr/create/learn/game-servers): Faites héberger un serveur Colyseus 0.17 avec base MongoDB pour votre jeu, connectez le navigateur avec le SDK, testez à deux joueurs et connaissez les limites.
- [Monétisation](https://www.playdrop.ai/fr/create/learn/monetization): Avis avec requestReview, pourboires, ventes avec sdk.shop, publicités interstitielles et récompensées, et part du créateur pour chaque source.
