# Serveurs de jeu PlayDrop : Colyseus, MongoDB et SDK serveur

Multijoueur hébergé facultatif pour les jeux PlayDrop : envoyez un server.js Colyseus avec stockage MongoDB, testez-le avec des joueurs de test et utilisez le SDK serveur facultatif pour les amis et l’IA.

Source: https://www.playdrop.ai/fr/docs/server-sdk

Un serveur de jeu est facultatif. Votre jeu peut appeler n’importe quel serveur que vous gérez vous-même. Si vous préférez, PlayDrop héberge pour votre jeu un serveur Colyseus standard avec une base de données MongoDB : envoyez-le sous le nom `server.js`, à côté de `index.html`, via [PlayDrop Connector](https://www.playdrop.ai/fr/docs/connectors), ou demandez à [PlayDrop Cloud](https://www.playdrop.ai/fr/create) de le créer. Le paquet `@playdrop/server` est lui aussi facultatif.

## Écrivez un serveur Colyseus standard

Exportez un mappage `rooms` depuis `server.js` et listez les noms de ses salles dans [catalogue.json](https://www.playdrop.ai/fr/docs/catalogue-json) sous la forme `"server": { "rooms": ["game"] }`. PlayDrop exécute le serveur : ne le démarrez pas vous-même. Stockez les données avec le pilote MongoDB standard via `PLAYDROP_MONGO_URL`, pendant le cycle de vie de la salle.

```js
import { Room, defineRoom } from "colyseus";
import { MongoClient } from "mongodb";

class GameRoom extends Room {
  async onCreate() {
    this.mongo = new MongoClient(process.env.PLAYDROP_MONGO_URL);
    await this.mongo.connect();
  }
  onJoin(client) {
    // client.auth is the verified PlayDrop player, for example client.auth.userId.
  }
  async onDispose() { await this.mongo?.close(); }
}

export const rooms = { game: defineRoom(GameRoom) };
```

## Règles du serveur hébergé

- Colyseus 0.17 (`colyseus` 0.17.10, `@colyseus/schema` 4.0.30), le pilote MongoDB 7.5 et Node 22.
- Un seul module ES autonome de 2 MiB maximum. Il ne peut importer que `colyseus`, `@colyseus/core`, `@colyseus/schema`, `mongodb` et `@playdrop/server` ; intégrez tout autre code dans le fichier.
- Jusqu’à 2 types de salles, 8 joueurs par salle, 4 heures par salle, 30 messages par seconde par joueur et 512 KiB par message.
- Aucun accès à Internet depuis le serveur : seuls MongoDB et les services PlayDrop sont accessibles.
- Les joueurs doivent être connectés. PlayDrop vérifie chaque joueur lorsqu’il rejoint la salle ; n’implémentez pas `onAuth`.
- Une base de données MongoDB par jeu, conservée d’une version à l’autre et comptabilisée dans votre quota de stockage. N’envoyez jamais ses identifiants au navigateur.

## Connectez le navigateur et testez

Dans le navigateur, `sdk.multiplayer.getConnection()` du [SDK client](https://www.playdrop.ai/fr/docs/sdk) renvoie l’adresse du serveur et le jeton du joueur ; rejoignez la partie avec le client Colyseus (`@colyseus/sdk` 0.17). Pendant le développement, exécutez Colyseus 0.17 et MongoDB 8 en local et connectez-vous directement à votre serveur local. Pour tester le serveur hébergé, envoyez une version privée, puis ouvrez `https://www.playdrop.ai/create/games/<slug>/test?v=<version>&player=1` et le même lien avec `player=2` dans une seconde fenêtre : chaque fenêtre joue avec un compte de test distinct. Lorsque tout fonctionne, rendez la version publique depuis la page du jeu.

## SDK serveur facultatif : amis et IA

`@playdrop/server` ajoute `playdrop.social` (les amis qui jouent à ce jeu et les cartes de jeu dans PlayDrop Chat) et `playdrop.ai` (génération de texte, d’images, de 3D, de vidéos, de sons, de voix et de musique, payée par le créateur). Ces appels ne fonctionnent que dans les jeux envoyés sur PlayDrop, pas en développement local. Téléchargez les médias privés générés côté serveur avec `playdrop.ai.tasks.downloadFile` et ne transmettez les octets qu’au joueur destinataire ; les requêtes de synthèse vocale acceptent 40 mots au maximum.
