> For the complete documentation index, see [llms.txt](https://docs.edgegap.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.edgegap.com/docs.edgegap.com-fr/learn/matchmaking/matchmaker-in-depth.md).

# Analyse approfondie

Approfondissez vos connaissances sur les concepts du matchmaker sans code d'Edgegap et personnalisez-les selon vos besoins.

## ✔️ Introduction

**Commencez en moins de 5 minutes et testez toutes les fonctionnalités gratuitement, sans carte de crédit requise.**

Passez à l'offre supérieure lorsque vous serez prêt pour un cluster privé (dédié) plus puissant. Intégration native avec Edgegap [Déploiements](/docs.edgegap.com-fr/learn/orchestration/deployments.md) offre un ping de premier ordre, peu importe où se trouvent vos joueurs.

{% hint style="info" %}
Le niveau gratuit permet 3 heures d'exécution après chaque redémarrage. Votre matchmaker s'exécutera sur une infrastructure partagée avec des ressources limitées, adaptée aux tests. **Après votre mise en production publique, le matchmaker doit fonctionner 24h/24 et 7j/7.**
{% endhint %}

Il existe trois concepts essentiels pour chaque matchmaker :

* [#hosting-cluster](#hosting-cluster "mention") - l'infrastructure serveur sous-jacente, entièrement gérée et exploitée par Edgegap.
* [#configuration](#configuration "mention") - ensemble de règles et de paramètres qui définissent le fonctionnement du matchmaker.
* 🌐 Instance de service **-** service de matchmaking en direct fonctionnant 24h/24 et 7j/7 sur le cluster, utilisant la configuration pour apparier les joueurs et produire les affectations de déploiement (serveur).

{% hint style="success" %}
[Mettez fréquemment à jour la version de votre matchmaker](#changelog) à **pour profiter des nouvelles fonctionnalités et des corrections de bugs.**
{% endhint %}

## ▶️ Démarrer le matchmaking

**Démarrez rapidement - ajoutez notre exemple de démarrage SDK à votre jeu**:

Découvrez le processus de matchmaking pour personnaliser, dépanner et optimiser l'intégration de votre jeu :

<figure><img src="/files/afb83dff8e2b537cadf95c995fb02354a9ccfbec" alt=""><figcaption><p>Séquence de matchmaking</p></figcaption></figure>

1. [Authentifier le joueur](#authenticate) - empêche les copies piratées de jouer en ligne,
2. [Créer le salon](#create-group) - rejoignez vos amis et partagez les préférences de joueur/de match,
3. [**Former un groupe**](#group-up) **- enregistrez votre salon comme groupe de matchmaking,**
4. [**Trouver un match**](#find-match) **- préparez-vous et commencez à rechercher un match (nouveau ou existant),**
   1. Attribuer un serveur et injecter les tickets - le serveur est attribué automatiquement après quelques secondes,
5. [**Se connecter et s'authentifier**](#connect-to-server) **- tenter une connexion sécurisée au serveur de jeu,**
   1. Confirmer l'identité - le serveur vérifie l'identité du client de jeu à l'aide de jetons tiers,
   2. Accepter le joueur ou l'exclure - le serveur décide si le joueur est autorisé à rejoindre.

### Authentifier

{% hint style="success" %}
**Ce jeton peut être inclus en toute sécurité dans votre client de jeu, car il ne donne pas accès à l'API Edgegap.**
{% endhint %}

Les joueurs individuels peuvent être identifiés à l'aide de leur ID de ticket, disponible sur les clients et le serveur. En option, ajoutez une authentification personnalisée ou des limites avec un proxy personnalisé en utilisant [#server-to-server-api](#server-to-server-api "mention") l'API.

### Former un groupe

La création d'un groupe (party) garantit que les joueurs rejoignent la même équipe et le même serveur avec leurs amis.

{% hint style="success" %}
Créez un groupe marqué comme prêt à [#find-match](#find-match "mention") rapidement en tant que **joueur solo sans membres de groupe**.
{% endhint %}

<figure><img src="/files/663f995c9cb62350eb464c595bf9695972bcf4bb" alt=""><figcaption><p>Diagramme d'activité du cycle de vie du groupe</p></figcaption></figure>

#### Lobby et groupe

Utilisez un service de lobby si la conception de votre jeu exige de définir des préférences de matchmaking contrôlées par le joueur (par exemple : choix du personnage, difficulté, carte, etc.). À mesure que les joueurs rejoignent et quittent le lobby, ils mettent également à jour le groupe de matchmaking afin de se préparer à trouver plus tard un match.

{% hint style="success" %}
**Pas le temps de mettre en place un service de lobby ?** Invitez les joueurs à partager les IDs de groupe via Discord ou des DM.
{% endhint %}

<table><thead><tr><th width="390">Conception du jeu - Fonctionnalité / Exigence</th><th>Lobby avant match</th><th>Groupe de matchmaking</th></tr></thead><tbody><tr><td><a data-footnote-ref href="#user-content-fn-1">inviter des amis à jouer avec moi</a></td><td>✅</td><td>✅</td></tr><tr><td>modifier mes préférences de joueur/de match</td><td>✅</td><td>❌</td></tr><tr><td>voir les préférences des autres membres du lobby</td><td>✅</td><td>❌</td></tr><tr><td>stocker et gérer des données clé-valeur personnalisées</td><td>✅</td><td>❌</td></tr><tr><td>avertir les membres du groupe que je suis prêt à jouer</td><td>❌</td><td>✅</td></tr><tr><td>afficher la progression du matchmaking et trouver un match</td><td>❌</td><td>✅</td></tr><tr><td>obtenir l'affectation d'équipe pour un joueur/groupe</td><td>❌</td><td>✅</td></tr><tr><td>récupérer les détails de connexion au serveur de jeu</td><td>❌</td><td>✅</td></tr></tbody></table>

Notre matchmaker multiplateforme prend en charge tous les services de lobby commerciaux et personnalisés :

<table><thead><tr><th>Service de lobby (tiers)</th><th width="120" data-type="checkbox">Unreal Engine</th><th width="75" data-type="checkbox">Unity</th><th width="50" data-type="checkbox">PC</th><th width="90" data-type="checkbox">Consoles</th><th width="65" data-type="checkbox">VR/XR</th><th width="100" data-type="checkbox">Mobile</th></tr></thead><tbody><tr><td><a href="https://dev.epicgames.com/docs/game-services/lobbies-and-sessions/lobbies/lobbies-intro">Lobby d'Epic Online Services</a><br>(Epic Games)</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td></tr><tr><td><a href="https://partner.steamgames.com/doc/features/multiplayer/matchmaking#friends">Lobby Steamworks</a><br>(Valve Corporation)</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td></tr><tr><td><a href="https://heroiclabs.com/docs/nakama/concepts/groups/">Groupe Nakama</a><br>(Heroic Labs)</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td></tr><tr><td><a href="https://learn.microsoft.com/en-us/gaming/playfab/community/associations/groups/quickstart">Lobby Playfab</a><br>(Microsoft)</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td></tr><tr><td><a href="https://docs.braincloudservers.com/learn/key-concepts/multiplayer/lobbies/#lobby-experience">Lobby brainCloud</a><br>(bitHeads)</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td></tr><tr><td><a href="https://developer.apple.com/documentation/gamekit/connecting-players-with-their-friends-in-your-game">Gamekit Friends</a><br>(Apple)</td><td>true</td><td>true</td><td>false</td><td>false</td><td>false</td><td>true</td></tr><tr><td>Lobby personnalisé<br>(votre entreprise)</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td></tr></tbody></table>

Le propriétaire du lobby (le joueur qui envoie les invitations) doit également créer le groupe de matchmaking.

**Stockez l'ID de votre groupe dans les données partagées de votre lobby**, afin que les autres membres du lobby puissent facilement trouver et rejoindre un groupe de matchmaking associé au lobby tiers. Les joueurs invités au groupe utilisent l'ID du groupe pour **créer leurs adhésions (rejoindre)**, et pour **stocker en toute sécurité leurs** [**attributs de matchmaking**](#matchmaking-rules)**.**

{% hint style="warning" %}
**Une fois qu'un groupe commence le matchmaking, il ne peut plus être rejoint.** [#abandon-queue](#abandon-queue "mention") et en créer un nouveau.
{% endhint %}

#### Optimisation du ping

Si [#configuration](#configuration "mention") inclut [`latences` règle](#rule-example-elo_rating) tous les membres du groupe envoient leurs [Balises Ping](/docs.edgegap.com-fr/learn/orchestration/ping-beacons.md) mesures à **empêcher d'apparier des joueurs dans des régions éloignées** ou avec un ping (latence) beaucoup plus élevé/plus faible.

{% code title="Mesures de ping d'un client de jeu d'exemple en millisecondes" %}

```json
{
  "Chicago": 224.4,
  "Francfort": 23.2,
  "Tokyo": 167.4
}
```

{% endcode %}

#### **Abandon de la file d'attente**

Le propriétaire du groupe peut supprimer le groupe, ce qui supprime automatiquement toutes les adhésions au groupe. Supprimer le groupe après le début du matchmaking annulera toutes les adhésions et les supprimera peu après.

Les membres du groupe (à l'exception du propriétaire) peuvent supprimer leurs adhésions (quitter le groupe) à tout moment avant [#find-match](#find-match "mention"). Supprimer une adhésion ensuite annulera le matchmaking pour l'ensemble du groupe.

{% hint style="info" %}
Une fois le matchmaking annulé, les membres sont [retirés automatiquement du matchmaking](#matchmaking-profiles) et avertis via l'adhésion `status:CANCELLED`  dans leur prochaine réponse de sondage du statut.
{% endhint %}

Une fois annulé, si le groupe souhaite relancer le matchmaking, le propriétaire du groupe doit recréer le groupe, partager le nouvel ID du groupe avec les membres et leur faire recréer leurs adhésions.

**Une fois qu'un match est trouvé, le groupe ne peut pas être supprimé** (`409 Conflict`), et sera [supprimé automatiquement](#connect-to-server). Votre serveur doit laisser un certain délai (par exemple 60 s) aux joueurs pour se connecter avant de considérer qu'un joueur a abandonné.

Si votre serveur signale qu'un joueur a abandonné, vous pouvez :

* remplacer le joueur parti par un personnage IA pour démarrer immédiatement le match,
* ou créer un [backfill](#backfill-match) pour trouver un nouveau joueur afin de remplacer le joueur parti,
* ou continuer sans remplacer le joueur parti, si la conception de votre jeu permet un nombre de joueurs variable.

### Trouver un match

Pour commencer à rechercher un match, tous les membres et le propriétaire doivent se marquer comme prêts.

{% hint style="success" %}
Pour permettre au propriétaire du groupe de **démarrer immédiatement le matchmaking, marquez les adhésions comme prêtes à la création**. Une fois que le propriétaire se marque comme prêt, le matchmaking commencera, puisque tout le monde est prêt.
{% endhint %}

{% hint style="info" %}
Pour une meilleure expérience, **fournissez des mises à jour de statut aux joueurs via l'interface utilisateur en jeu**.
{% endhint %}

**Tous les joueurs doivent interroger leur adhésion à intervalles réguliers** (3 à 5 s recommandés) pour détecter le démarrage du matchmaking et communiquer la progression du matchmaking via l'interface utilisateur en jeu.

Les joueurs devraient **enregistrer de manière persistante leur adhésion et les IDs de groupe**, ce qui leur permet de redémarrer le jeu et de reprendre sans perdre la progression du matchmaking en cas de crash du client de jeu.

Une fois que nous trouvons suffisamment de joueurs pour les placer dans la même équipe en respectant votre [#matchmaking-rules](#matchmaking-rules "mention"), les joueurs seront avertis dans leur réponse d'adhésion avec `status:TEAM_FOUND`.

Supprimer une adhésion à ce stade entraînera l'annulation de toutes les adhésions du groupe et le retour de toutes les autres affectations au même équipe à `status:SEARCHING` .

Les équipes continuent le matchmaking avec d'autres équipes en utilisant les valeurs qui se chevauchent entre leurs groupes (ou la moyenne dans le cas de `number_difference` ) jusqu'à ce que suffisamment d'équipes soient assemblées. Les adhésions l'indiquent dans la réponse  `status:MATCH_FOUND` , ce qui signifie que votre [déploiement est en cours de lancement](https://docs.edgegap.com/docs.edgegap.com-fr/learn/matchmaking/pages/5d7a2f9e0583a99d78071f1c4b8a7892a518534a#id-1.-start-a-deployment).

**Le matchmaker vise à maximiser le taux de remplissage des matchs et ne passera pas à `MATCH_FOUND` tant que l'une des conditions suivantes n'est pas remplie :**

1. suffisamment d'équipes sont appariées avec la taille d'équipe maximale configurée,
2. ou si [#rule-expansion](#rule-expansion "mention") est défini ET que le temps d'expansion est atteint, ET que suffisamment d'équipes sont appariées avec la taille d'équipe minimale configurée,
3. ou que le temps d'expiration du ticket configuré s'est écoulé ET que suffisamment d'équipes sont appariées avec la taille d'équipe minimale configurée.

Si aucun des deux scénarios ne réussit avant l'expiration configurée du ticket, le groupe et les tickets sont annulés.

{% hint style="info" %}
Vous constatez de longs temps d'attente pendant les tests, ou avec des joueurs dans des régions moins populaires ? Définissez une période d'expiration du ticket plus courte (par exemple 30 s) et recréez le groupe (ou les tickets) côté client à l'expiration.
{% endhint %}

L'expiration du ticket est automatiquement réinitialisée chaque fois qu'un groupe (ou un joueur) est apparié à une équipe.

{% hint style="success" %}
Stocker `team_id`  et `match_id` dans le backend de votre jeu pour afficher en jeu les informations des membres de l'équipe.
{% endhint %}

{% hint style="info" %}
Chaque joueur reçoit un **ID de ticket unique, qui peut être utilisé pour** [#authenticate](#authenticate "mention") **avec les serveurs de jeu.**
{% endhint %}

Si le joueur a été apparié et affecté à un serveur de jeu, son ticket est supprimé automatiquement. Les joueurs qui abandonnent la file après `status:HOST_ASSIGNED`  peuvent être remplacés par [backfill](#backfill-match).

Une fois que les joueurs reçoivent `status:HOST_ASSIGNED`  ils passent à [#connect-to-server](#connect-to-server "mention").

### Se connecter au serveur

### Match de remplissage

Une fois l'initialisation du serveur de jeu terminée, **votre serveur devrait**:

* **Démarrer le minuteur d'abandon pour chaque nouveau joueur.** Nous recommandons d'indiquer la progression du chargement aux joueurs connectés avec une scène/un niveau de chargement - soit une scène 3D complète, une interface sociale de type lobby, soit un écran de chargement avec barre de progression.
* **Suivre les nouvelles connexions de joueurs ou les départs des joueurs existants au fil du temps**:
  1. Les nouveaux joueurs doivent annoncer l'ID de ticket au serveur pour l'authentification et pour associer leur connexion au matchmaker [#injected-variables](#injected-variables "mention") ou `assigned_ticket` (si rempli).
  2. Créez de nouveaux backfills pour la capacité de joueur inutilisée (joueurs partis) pendant toute la durée de vie du serveur.
  3. Renouvelez les backfills expirés, qui sont supprimés après `ticket_expiration_period`.
* **Nettoyez (supprimez) tous les backfills restants** une fois que le [/pages/5d7a2f9e0583a99d78071f1c4b8a7892a518534a#id-5.-deployment-stopped](https://docs.edgegap.com/docs.edgegap.com-fr/learn/matchmaking/pages/5d7a2f9e0583a99d78071f1c4b8a7892a518534a#id-5.-deployment-stopped "mention"):
  * Unity - [`OnApplicationQuit`](https://docs.unity3d.com/6000.0/Documentation/ScriptReference/MonoBehaviour.OnApplicationQuit.html) callback ou callback personnalisé de fin de partie,
  * Unreal Engine - [`OnWorldDestroyed`](https://forums.unrealengine.com/t/call-function-before-quit-game/344954/2) , [`PreExit`](https://forums.unrealengine.com/t/event-on-close/298087/2) , ou un callback personnalisé de fin de partie.

Tout profil peut être utilisé pour le backfill tant qu'une affectation serveur valide et au moins un ticket sont fournis. Voir [Matchmaking](/docs.edgegap.com-fr/learn/matchmaking.md#backfill-showcase) pour un exemple minimal.

## ⚙️ Configuration

L'API du matchmaker est générée à partir d'une configuration JSON spécifiée lorsque vous créez un nouveau matchmaker (ou un redémarrage rapide). Vous pouvez spécifier n'importe quel nombre de profils avec des règles et des expansions variables :

{% hint style="success" %}
Voir [Matchmaking](/docs.edgegap.com-fr/learn/matchmaking.md) pour nos SDK et des scénarios d'exemple détaillés.
{% endhint %}

{% hint style="warning" %}
Modifier un matchmaker en cours d'exécution **déclenchera un rechargement rapide**, supprimant tous les tickets et provoquant une courte interruption.
{% endhint %}

### Profils (files d'attente) <a href="#matchmaking-profiles" id="matchmaking-profiles"></a>

Les profils représentent des files de matchmaking entièrement séparées, partageant la même version de matchmaker. Vous pouvez **configurer n'importe quel nombre de profils pour chaque matchmaker.** Diviser votre base de joueurs en plusieurs profils peut entraîner des temps d'attente plus longs pour vos joueurs.

Chaque profil de matchmaker utilise une [version de l'application](/docs.edgegap.com-fr/learn/orchestration/application-and-versions.md) comme modèle pour lancer de nouveaux déploiements (serveurs).

{% hint style="success" %}
Certains modes de jeu peuvent nécessiter davantage de vCPU / RAM, surtout s'ils prennent en charge un plus grand nombre de joueurs. Chaque **matchmaker peut inclure plusieurs profils**, chacun lié à une version d'application avec des ressources ajustées.
{% endhint %}

### Règles <a href="#matchmaking-rules" id="matchmaking-rules"></a>

Chaque joueur et groupe rejoint la file de matchmaking et trouve des matchs en utilisant  `initial` les règles initiales d'abord.

Chaque entrée du profil au chemin `.rules.initial` représente une règle, où :

* **key** est une valeur de chaîne permettant de nommer la règle comme vous le souhaitez ; par ex. `match_size` , et
* **value** est un objet définissant le type et les attributs de la règle, conformément à notre ensemble de règles standard.

{% hint style="info" %}
Toutes les règles doivent être satisfaites simultanément pour lancer l'attribution d'hôte et démarrer ou trouver un déploiement.
{% endhint %}

**Opérateurs (type de règle)**

**`player_count`** est une règle spéciale définissant combien de joueurs doivent correspondre pour lancer l'attribution.

{% hint style="warning" %}
La règle `player_count`  **est requise et ne peut être définie qu'une seule fois** dans vos règles de configuration initiale.
{% endhint %}

Le matchmaker s'efforce toujours de maximiser le taux de remplissage des matchs, jusqu'à la `max_team_size` :

1. si la taille d'équipe maximale est atteinte, le match est créé immédiatement,
2. sinon, les joueurs attendent dans la file pour remplir le match jusqu'à ce que l' [expansion](#rule-expansion) (ou l'expiration) soit sur le point d'arriver,
3. peu avant [l'expansion](#rule-expansion) (ou l'expiration), si un match partiel est possible (≥ min et < max team size), ce match sera créé avec tous les joueurs au même stade d'expansion (en supposant que les autres règles passent).

{% hint style="success" %}
Pour les modes de jeu coopératifs, free-for-all ou à taille d'équipe asymétrique, définissez votre `"team_count": 1` .
{% endhint %}

Le nombre d'équipes peut être configuré pour composer plusieurs équipes équilibrées pour les jeux compétitifs :

* **les attributs du groupe sont calculés comme la moyenne/le chevauchement** des attributs **des joueurs du groupe,**
* **les attributs de l'équipe sont calculés comme la moyenne/le chevauchement** des attributs **du groupe de l'équipe.**

En supposant une taille d'équipe fixe de 4 joueurs :

<figure><img src="/files/f43554f07b1bdce5af7fc1776f692271ae328c81" alt=""><figcaption><p>Scénarios d'exemple de match</p></figcaption></figure>

{% hint style="info" %}
**Les groupes sont appariés en équipes sans sur-remplissage,** uniquement si une équipe a une capacité suffisante pour accueillir tout le groupe.
{% endhint %}

**`string_equality`** apparie les joueurs ayant exactement la même valeur de chaîne.

<details>

<summary>Exemple de règle : <code>selected_game_mode</code></summary>

`selected_game_mode`  la règle fera correspondre les joueurs en respectant la casse :

:white\_check\_mark: Alice + Bob + Dave peuvent correspondre,

:x: Alice + Erin, ou Charlie + Frank ne correspondront jamais.

| "Free For All" | "Capture The Flag" | "capture the flag" |
| -------------- | ------------------ | ------------------ |
| Alice          | Erin               | Frank              |
| Bob            | Charlie            |                    |
| Dave           |                    |                    |

</details>

**`number_difference`** apparie les joueurs selon la différence numérique absolue entre eux.

<details>

<summary>Exemple de règle : <code>elo_rating</code></summary>

`elo_rating`  règle ci-dessus avec `"max_difference": 50` initialement :

:white\_check\_mark: Alice + Bob peuvent correspondre, ou Bob + Charlie peuvent correspondre,

:x: Alice + Bob + Charlie ne correspondront jamais.

<figure><img src="/files/45490cbc00ba08cf864d44534ed2124a19d62e1f" alt=""><figcaption></figcaption></figure>

</details>

**`intersection`** apparie les joueurs ayant une ou plusieurs valeurs de chaîne qui se chevauchent, en respectant la casse.

<details>

<summary>Exemple de règle : <code>selected_map</code></summary>

`selected_map` règle ci-dessus avec `"overlap": 1`  correspondra :

:white\_check\_mark: Alice + Bob + Charlie peuvent correspondre, ou Alice + Bob + Dave peuvent correspondre,

:x: Alice + Bob + Charlie + Dave ne correspondront jamais.

<figure><img src="/files/1d2ba7cf5bad262f01aff7346d110fb5582cd4d4" alt=""><figcaption></figcaption></figure>

</details>

#### Expansion des règles

Facultativement, **`les expansions`**  modifient les attributs d'une règle après une période passée dans la file afin d'assouplir les contraintes et d'élargir le pool de joueurs qui peuvent être appariés, **ce qui permet des matchs plus rapides**.

<details>

<summary>Scénario d'exemple : expansions</summary>

[Au départ, nous exigeons 1 équipe composée exactement de 4 joueurs (éventuellement répartis en groupes)](/docs.edgegap.com-fr/learn/matchmaking.md#advanced-example) avec :

* un maximum de 125 ms de latence contre le même beacon (n'importe lequel),
* une différence de latence de 125 ms ou moins entre la valeur la plus basse et la plus haute pour le même beacon,
* une différence de classement de compétence de 50 points ou moins entre le joueur le mieux et le moins bien classé,
* le même mode de jeu sélectionné exact (sensible à la casse),
* au moins une sélection de carte correspondante (sensible à la casse) parmi les joueurs,
* au moins une [taille de groupe de backfill](#backfill-match) valeur correspondante parmi les joueurs.

Dans l'exemple ci-dessus, nous **élargissons la recherche en modifiant les attributs** après :

<table data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>30 secondes :</td><td><ul><li>4 joueurs</li><li><strong>plage de classement de compétence de 150</strong></li><li><strong>latence max de 250 ms</strong></li></ul></td></tr><tr><td>60 secondes :</td><td><ul><li>4 joueurs</li><li><strong>plage de 200 points de compétence</strong></li><li>latence maximale de 250 ms</li></ul></td></tr><tr><td>3 minutes (180 s) :</td><td><ul><li><strong>1 à 4 joueurs</strong></li><li>plage de 200 points de compétence</li><li><strong>toute latence</strong></li></ul></td></tr></tbody></table>

</details>

{% hint style="info" %}
Les extensions de l’attribut d’une règle écraseront **les valeurs précédentes** de cet attribut.
{% endhint %}

{% hint style="success" %}
[**Découvrez les pièges courants du matchmaking**](https://edgegap.com/blog/how-session-fill-rate-affects-your-multiplayer-hosting-costs)**, et** [**optimisez votre taux de remplissage des matchs grâce à notre guide**](https://edgegap.com/blog/how-to-optimize-session-fill-rate-in-your-matchmaker)**.**
{% endhint %}

## 📌 Variables injectées

Votre serveur peut avoir besoin de connaître des détails sur ses joueurs. Les attributs des joueurs, les valeurs de match résolues et d’autres valeurs sont injectés dans votre déploiement en plus des valeurs habituelles [Applications et versions](/docs.edgegap.com-fr/learn/orchestration/application-and-versions.md#injected-variables).

Aperçu non formaté **🏁 Variables d’exemple avancées :**

```
MM_MATCH_PROFILE=advanced-example
MM_EXPANSION=initial
MM_TICKET_IDS=["cusfn10msflc73beiik0","cusfn18msflc73beiil0"]
MM_TICKET_cusfn10msflc73beiik0={"id":"cusfn10msflc73beiik0","created_at":"2025-02-21T22:17:42.3886970Z","player_ip":"174.93.233.25","group_id":"b2080c27-19c9-4fb0-8fe7-4bf1e5d285d1","team_id":"cusfn1gmsflc73beiim0","attributes":{"beacons":{"Chicago":12.3,"LosAngeles":145.6,"Tokyo":233.2},"elo_rating":1337,"selected_game_mode":"quickplay","selected_map":["DustII","Airport","BankVault"],"backfill_group_size":["new","1"]}}
MM_TICKET_cusfn18msflc73beiil0={"id":"cusfn18msflc73beiil0","created_at":"2025-02-21T22:17:42.2548390Z","player_ip":"174.93.233.23","group_id":"015d4dc8-6c79-4b5c-bbc6-f309b9787c8f","team_id":"cusfn1gmsflc73beiim0","attributes":{"beacons":{"Chicago":87.3,"LosAngeles":32.4,"Tokyo":253.2},"elo_rating":1339,"selected_game_mode":"quickplay","selected_map":["Island","Airport"],"backfill_group_size":["new","1"]}}
MM_GROUPS={"b2080c27-19c9-4fb0-8fe7-4bf1e5d285d1":["cusfn10msflc73beiik0"],"015d4dc8-6c79-4b5c-bbc6-f309b9787c8f":["cusfn18msflc73beiil0"]}
MM_TEAMS={"cusfn1gmsflc73beiim0":["b2080c27-19c9-4fb0-8fe7-4bf1e5d285d1","015d4dc8-6c79-4b5c-bbc6-f309b9787c8f"]}
MM_MATCH_ID=advanced-example_initial-2025-02-21T22:17:43.3886970Z
MM_INTERSECTION={"selected_map":["Airport"],"backfill_group_size":["new","1"]}
MM_EQUALITY={"selected_game_mode":"quickplay"}
```

{% hint style="info" %}
Les variables d’environnement sont **stockées sous forme de JSON sérialisés en chaîne**, analysez-les à l’aide de notre SDK ou d’une méthode personnalisée.
{% endhint %}

{% hint style="success" %}
**Les serveurs peuvent associer les connexions des joueurs à des groupes et à des attributs** après que le joueur a envoyé son ID de ticket au serveur.
{% endhint %}

## 🧵 Traçage des joueurs

Si vos joueurs rencontrent des problèmes, tracer leur parcours jusqu’aux journaux du serveur peut être utile. Chaque Matchmaker **de déploiement** **sera étiqueté avec les IDs des tickets des joueurs assignés** afin que vous puissiez facilement [Déploiements](/docs.edgegap.com-fr/learn/orchestration/deployments.md#filter-deployments) et trouver [Déploiements](/docs.edgegap.com-fr/learn/orchestration/deployments.md#container-logs) pour vous aider à résoudre les problèmes.

{% hint style="success" %}
**Afficher les IDs des tickets et les IDs de déploiement dans l’interface d’historique des matchs du client** pour tracer les joueurs lors du dépannage.
{% endhint %}

{% hint style="info" %}
Voir [Déploiements](/docs.edgegap.com-fr/learn/orchestration/deployments.md#connection-quality) pour en savoir plus sur le dépannage des déploiements.
{% endhint %}

## 👀 Analyses

Obtenez des informations sur la charge et les performances de votre matchmaker, sans code ni configuration requis.

🌟 [**Passez Matchmaker au niveau Entreprise**](https://app.edgegap.com/matchmaker-management-v2/matchmakers/list) **pour débloquer les métriques et les informations de matchmaking :**

<figure><img src="/files/2d7cce3aaf617dc45f0dc36ef1d77039fe0178be" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/7a6f01aa536d33d8b8ddc3b8115be3414c2c0a91" alt=""><figcaption></figcaption></figure>

## ☁️ Cluster d’hébergement

Matchmaker est hébergé et géré de manière pratique 24 h/24, 7 j/7 par Edgegap.

Choisissez l’option d’hébergement la mieux adaptée à votre objectif :

#### Niveaux de cluster privé

Passez à un cluster privé en un clic. Il est également possible de changer de niveaux de cluster privé après le lancement, sans interruption pour les joueurs, avec [#rolling-updates-and-ab-tests](#rolling-updates-and-ab-tests "mention"). Les clusters gérés fournissent un hébergement de service haute disponibilité maintenu par Edgegap avec une assistance en direct 24 h/24, 7 j/7 pour les jeux publiés publiquement.

Les exigences en ressources de votre instance dépendront de facteurs :

* **nombre de joueurs** - plus il y a de joueurs, plus il y a de tickets et de requêtes API,
* **nombre de requêtes par joueur** - des nouvelles tentatives plus rapides augmentent la charge du service et consomment des ressources,
* **complexité de la configuration** - les règles d’intersection et les extensions sont particulièrement exigeantes,
* **durée moyenne des matchs** - des sessions plus courtes amènent les joueurs à rejoindre le matchmaking plus souvent,
* **périodes d’expiration et de suppression** - les tickets obsolètes s’accumulent au fil du temps et consomment des ressources,
* **logique de repli en cas de nouvelle tentative côté client** - relancer avec un backoff exponentiel avec jitter aide à répartir les pics de trafic.

{% hint style="warning" %}
**Préparez-vous au succès et optimisez après le lancement, afin de ne pas bloquer vos joueurs le jour de la sortie.** Utilisez [Outils pour développeurs](/docs.edgegap.com-fr/unity/developer-tools.md#matchmaking-sdk) ou **mettez en œuvre un backoff exponentiel avec jitter** pour vous remettre d’une charge élevée.
{% endhint %}

### Limites de débit

Pour protéger votre cluster contre le dépassement de sa capacité de pointe et un crash, nous limitons le nombre de requêtes par seconde en fonction de nos tests de charge internes en utilisant [Matchmaking](/docs.edgegap.com-fr/learn/matchmaking.md#advanced-example) la configuration.

<table><thead><tr><th>point de terminaison de l’API</th><th width="130">Niveau gratuit</th><th width="130">Niveau amateur</th><th width="130">Niveau studio</th><th width="130">Niveau Entreprise</th></tr></thead><tbody><tr><td><strong>Limite globale</strong></td><td><strong>100</strong></td><td><strong>200</strong></td><td><strong>750</strong></td><td><strong>2,000</strong></td></tr><tr><td>Créer un déploiement</td><td>5</td><td>10</td><td>30</td><td>30</td></tr><tr><td>Lister les beacons</td><td>10</td><td>20</td><td>75</td><td>200</td></tr><tr><td>Créer un groupe<br>+ Créer un ticket<br>+ Créer un ticket de groupe</td><td>10</td><td>20</td><td>75</td><td>200</td></tr><tr><td>Lire l’adhésion<br>+ Lire le groupe<br>+ Lire le ticket</td><td>10</td><td>120</td><td>450</td><td>1,300</td></tr><tr><td>Créer un backfill</td><td>5</td><td>10</td><td>37</td><td>100</td></tr></tbody></table>

Les limites de débit sont exprimées en **requêtes par seconde combinées pour l’ensemble spécifié de points de terminaison de l’API**.

Si vos clients de jeu ne relancent pas les requêtes après réception de la réponse `429 Trop de requêtes`  **vos déploiements pourraient manquer de joueurs** qui cessent de lire leurs affectations en raison d’une charge élevée.

#### Tests de charge

Le matchmaking et les affectations nécessitent l’utilisation du CPU et de la mémoire, ce qui impose un coût d’hébergement pour chaque matchmaker privé. Voir les ressources et les prix associés à chaque niveau sur [notre page de tarification](https://edgegap.com/resources/pricing#matchmaker).

{% hint style="success" %}
**Utilisez toujours** [**des clusters privés**](#private-cluster-tiers) **pour les tests de charge.** Les matchmakers gratuits sont strictement limités aux tests de développement uniquement.
{% endhint %}

Lors de la conception de votre test de charge, **veuillez prendre en compte des comportements réalistes des joueurs**:

| Scénario réaliste                                                                                                      | Modèle de trafic irréaliste                                                                                  |
| ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| ✅ Les joueurs rejoignent progressivement le matchmaking, augmentant les req/s sur plusieurs heures.                    | ❌ Tous les joueurs se coordonnent et créent leurs tickets exactement à la même seconde.                      |
| ✅ Les joueurs attendent de plus en plus longtemps entre leurs nouvelles tentatives (par ex. 1 s-5 s-10 s-10 s).        | ❌ Tous les joueurs réessaient immédiatement après avoir reçu `429 Trop de requêtes`  la réponse.             |
| ✅ La plupart des joueurs recevront leur affectation dans un court laps de temps (10 à 60 s) et cesseront d’interroger. | ❌ Tous les joueurs continuent d’interroger pendant une durée déterminée même après avoir reçu l’affectation. |
| ✅ La plupart des joueurs terminent leur partie (en prenant du temps) avant de relancer un nouveau matchmaking.         | ❌ Tous les joueurs relancent immédiatement un nouveau matchmaking après avoir reçu leur affectation.         |
| ✅ Le trafic de pointe est maintenu 6 à 8 heures par jour, après quoi certains fuseaux horaires se retirent.            | ❌ Le trafic de pointe est maintenu 24 heures sur 24, avec tous les joueurs jouant jour et nuit.              |

Si un matchmaker subit une charge élevée :

* si le CPU est bridé, le matchmaking peut ralentir,
* si le matchmaker manque de mémoire, il redémarrera sans perdre les informations des tickets, en espérant que les clients implémenteront un backoff exponentiel et que le pic sera réparti sur une plus longue période de temps.

## ⏩ Mises à jour progressives <a href="#rolling-updates-and-ab-tests" id="rolling-updates-and-ab-tests"></a>

Garder une trace de la compatibilité entre les versions serveur et client peut devenir compliqué. Suivez nos conseils pour des mises en production fiables, des mises à jour et la prévention des temps d’arrêt ou des problèmes de compatibilité.

**L’URL de votre Matchmaker et votre jeton d’authentification resteront toujours les mêmes après le redémarrage.**

{% hint style="danger" %}
**Créez des matchmakers distincts pour les environnements** de développement et de production pour expérimenter en toute sécurité.
{% endhint %}

#### ⚠️ **Avant la mise en ligne**

Nous vous recommandons de créer à l’avance plusieurs copies de votre matchmaker : `vert`, `bleu` et `orange`. Vous pouvez faire tourner le matchmaker utilisé au fur et à mesure que vous publiez des mises à jour ([stratégie bleu/vert](https://en.wikipedia.org/wiki/Blue%E2%80%93green_deployment)).

**Choisissez différentes régions pour chaque instance afin d’éviter les interruptions** lors de pannes localisées.

<figure><img src="/files/27a0e8e25ae2523767bcffd11b1a9e4dcb56547c" alt=""><figcaption><p>Exemple d’environnement DevOps bleu/vert</p></figcaption></figure>

#### **🔃 Mise à jour client + serveur**

**Prérequis :** Cette section suppose que vous avez terminé [#before-going-live](#before-going-live "mention").

Afin de **publier les mises à jour du client de jeu + du serveur**, vous pouvez :

1. Préparer une nouvelle version de l’application serveur `v1.2.0-rc` sur Edgegap :
   1. pousser un nouveau tag d’image vers votre registre de conteneurs `t1.2.0`,
   2. créer une nouvelle version de l’application `v1.2.0-rc`,
2. Effectuer tous les tests de développement en [déployant votre nouvelle version de l’application](https://app.edgegap.com/deployment-management/deployments/list) `v1.2.0-rc`:
   1. connecter l’éditeur de votre moteur de jeu à l’URL fournie + au port externe,
3. Mettre à jour le matchmaker inutilisé `bleu` pour le relier à votre nouveau tag d’image `t1.2.0`,
   1. activer la mise en cache pour la nouvelle version de l’application `v1.2.0-rc` , activer le cache pour cette version garantira que l’image est également mise en cache pour la version `v-blue`  puisqu’ils font référence au même tag,
   2. attendre l’indicateur de mise en cache dans la version `v1.2.0-rc`  pour atteindre :green\_circle: vert,
4. Mettez à jour votre nouveau client de jeu `c2` pour utiliser la nouvelle version `v-blue` lors de la création de tickets :
   1. mettez à jour l’URL de base et le jeton d’autorisation dans le client de jeu,
5. Effectuez des tests QA et des vérifications finales de votre nouveau client de jeu `c2`:
   1. si vous trouvez et résolvez des problèmes, recommencez le processus depuis le début,
   2. attendez 3 à 7 jours pour propager les changements DNS du matchmaker aux FAI dans le monde entier, après l’arrêt du matchmaker (un redémarrage rapide ne nécessite pas de mises à jour DNS ni de période d’attente),
6. Publiez la mise à jour de votre nouveau client de jeu `c2` sur les plateformes de distribution de jeux,
7. Laissez le temps au nouveau client de jeu `c2` de se distribuer sur les appareils des joueurs (généralement jusqu’à 3 à 7 jours) :
   1. surveiller les clients de jeu obsolètes `c1`  en utilisant le déploiement [Déploiements](/docs.edgegap.com-fr/learn/orchestration/deployments.md#analytics),
8. Nettoyez les ressources inutilisées de votre compte Edgegap :
   1. supprimer le tag d’image `t1.0.0` pour libérer de la capacité dans le registre de conteneurs,
   2. supprimer le tag d’image `t1.1.0` pour libérer de la capacité dans le registre de conteneurs,
   3. désactivez votre `vert`  matchmaker pour suspendre la facturation jusqu’à votre prochaine mise à jour.

{% hint style="success" %}
**Pour votre prochaine mise à jour**, augmentez les numéros de version et échangez `vert` et `bleu` les mots-clés dans le guide.
{% endhint %}

#### **⚡ Correctif serveur**

**Prérequis :** Cette section suppose que vous avez terminé [#before-going-live](#before-going-live "mention").

Pour **publier un correctif serveur sans nécessiter de mise à jour du client de jeu**, vous pouvez :

1. Préparer une nouvelle version de l’application serveur `v1.2.0-rc` sur Edgegap :
   1. pousser un nouveau tag d’image vers votre registre de conteneurs `t1.2.0`,
   2. créer une nouvelle version de l’application `v1.2.0-rc`,
2. Effectuez les tests et vérifications en [déployant votre nouvelle version de l’application](https://app.edgegap.com/deployment-management/deployments/list) `v1.2.0-rc`:
   1. connecter l’éditeur de votre moteur de jeu à l’URL fournie + au port externe,
   2. si vous trouvez et résolvez des problèmes, recommencez le processus depuis le début,
   3. activer la mise en cache pour la nouvelle version de l’application `v1.2.0-rc` , activer le cache pour cette version garantira que l’image est également mise en cache pour la version `v-green`  plus tard, puisqu’ils feront référence au même tag,
   4. attendre l’indicateur de mise en cache dans la version `v1.2.0-rc`  pour atteindre :green\_circle: vert,
3. Mettre à jour la version `v-green`  pour le relier à votre nouveau tag d’image `t1.2.0`,
   1. les nouveaux matchs lanceront automatiquement l’affectation avec le tag mis à jour `t1.2.0`,
   2. surveiller les clients de jeu obsolètes `c1`  en utilisant le déploiement [Déploiements](/docs.edgegap.com-fr/learn/orchestration/deployments.md#analytics),
4. Nettoyage des ressources inutilisées de votre compte Edgegap :
   1. supprimer le tag d’image `t1.1.0` pour libérer de la capacité dans le registre de conteneurs.

## 📗 API <a href="#matchmaking-api" id="matchmaking-api"></a>

Les clients et les serveurs peuvent appeler l’API directement ou avec les SDK des moteurs de jeu, voir aussi [Matchmaking](/docs.edgegap.com-fr/learn/matchmaking.md).

### Serveur à serveur <a href="#server-to-server-api" id="server-to-server-api"></a>

Ajoutez des contrôles améliorés ou personnalisés sur le flux de matchmaking - implémentez un proxy personnalisé en utilisant notre [Clusters gérés](/docs.edgegap.com-fr/learn/advanced-features/managed-clusters.md) ou tout cloud FaaS[^2] plateforme de calcul, afin d’atteindre l’un des objectifs suivants :

* associer des attributs sensibles des joueurs - tels que des indicateurs de triche, des évaluations de compétence ou similaires,
* fournir du contexte d’équipe et de match en jeu - lister mes coéquipiers et adversaires pendant le chargement,
* restreindre des cas limites spécifiques - par ex. autoriser seulement 1 groupe par joueur à tout moment,
* ajouter de la mise en cache ou une limitation de débit de l’API - réduire le nombre de requêtes et la charge sur le matchmaker,
* personnaliser l’intégration lobby-groupe - créer des lobbies asymétriques / basés sur les rôles avant le matchmaking.

{% hint style="success" %}
**Inclure le paramètre `player_ip`  avec l’adresse IP publique du membre** afin d’assurer la latence la plus faible possible pour le joueur et de tirer parti de [/pages/5d7a2f9e0583a99d78071f1c4b8a7892a518534a#id-1.-server-score-strategy-best-practice](https://docs.edgegap.com/docs.edgegap.com-fr/learn/matchmaking/pages/5d7a2f9e0583a99d78071f1c4b8a7892a518534a#id-1.-server-score-strategy-best-practice "mention").
{% endhint %}

{% hint style="info" %}
Les clients de jeu peuvent utiliser [ipify.org](http://ipify.org/) service gratuit pour trouver leurs IP publiques. Les VPN peuvent masquer l’adresse IP publique.
{% endhint %}

<figure><img src="/files/a1e4a8060cb051104078a1375c254eea1c76aafa" alt=""><figcaption><p>Diagramme d’activité du matchmaking serveur à serveur</p></figcaption></figure>

#### Partage de ressources entre origines (CORS)

Pour les jeux webGL hébergés sur des plateformes de distribution tierces (par ex. [itch.io](http://itch.io/)), l’envoi de toute requête au Matchmaker depuis le client de jeu peut entraîner [le partage de ressources entre origines](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) des violations de politique. La plupart des navigateurs Web modernes envoient une [requête de pré-vérification](https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request) pour vérifier qu’un service backend (le Matchmaker) comprend et accepte la communication depuis votre client de jeu.

L’échec de la vérification préalable (comportement par défaut pour des raisons de sécurité) peut entraîner [l’une de plusieurs erreurs possibles liées au CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin), le plus souvent `en-tête CORS 'Access-Control-Allow-Origin' manquant` .

Pour résoudre cette erreur, ajoutez **`allowed_cors_origin`** paramètre à votre configuration afin de :

* mettre sur liste blanche vos domaines d’hébergement client exacts :

<details>

<summary>🍀 Exemple simple (exemple de domaines spécifiques)</summary>

<pre class="language-json"><code class="lang-json">{
  "version": "3.2.3",
  "allowed_cors_origins": [
    "https://dev.my-game-server.com",
    "https://prod.my-game-server.com"
  ],
  "profiles": {
      <a data-footnote-ref href="#user-content-fn-3">...</a>
  }
}
</code></pre>

</details>

* ou mettre sur liste blanche un domaine générique (y compris tous les sous-domaines) :

<details>

<summary>🍀 Exemple simple (exemple de domaine générique)</summary>

<pre class="language-json"><code class="lang-json">{
  "version": "3.2.3",
  "allowed_cors_origins": ["https://*.my-game-server.com"],
  "profiles": {
      <a data-footnote-ref href="#user-content-fn-3">...</a>
  }
}
</code></pre>

</details>

{% hint style="info" %}
**Aucun identifiant n’est requis pour les requêtes de pré-vérification du Matchmaker**, si les domaines sont correctement configurés.
{% endhint %}

## 🚨 Dépannage

**Votre succès est notre priorité.** Si vous souhaitez envoyer des requêtes personnalisées, demander des fonctionnalités critiques manquantes ou exprimer une opinion, [veuillez nous contacter sur notre Discord communautaire](https://discord.gg/MmJf8fWjnt).

<details>

<summary>Pourquoi est-ce que j’obtiens des erreurs lorsque j’essaie de créer un nouveau matchmaker ?</summary>

* Veuillez lire l’erreur, il est possible que vous ayez mal orthographié un identifiant, une règle ou un opérateur. - Utilisez [JSONLint](https://jsonlint.com/) pour valider le format JSON, il se peut qu’il vous manque une virgule ou un crochet. - Contactez-nous sur [notre Discord communautaire](https://discord.gg/MmJf8fWjnt) pour obtenir de l’aide, nous serons heureux de vous assister. 🙏

</details>

<details>

<summary>Pourquoi mon matchmaker s’est-il éteint automatiquement après 3 heures ?</summary>

* Les matchmakers du niveau gratuit sont destinés aux tests initiaux et s’éteignent automatiquement après 3 heures. Pour continuer à tester, vous pouvez [redémarrer votre matchmaker](https://app.edgegap.com/matchmaker-management-v2/matchmakers/list).
* Envisagez de passer à un niveau payant pour une durée d’exécution illimitée.

</details>

<details>

<summary>Pourquoi ne puis-je pas lancer un second déploiement sur mon compte ?</summary>

* Vous ne pouvez exécuter qu’un seul déploiement simultané dans le niveau gratuit.
* Veuillez envisager de passer à un niveau payant pour des déploiements illimités.

</details>

<details>

<summary>Pourquoi est-ce que j’obtiens des affectations/déploiements à des moments aléatoires, sans tenir compte de <code>player_count</code>?</summary>

* Vous ou un autre membre de l’équipe avez peut-être créé des tickets lors d’une session de test précédente qui n’ont pas été attribués. Veuillez [redémarrer votre matchmaker](https://app.edgegap.com/matchmaker-management-v2/matchmakers/list).

</details>

<details>

<summary>Mon ticket est bloqué en <code>SEARCHING</code> .</summary>

* Veuillez vérifier que vous avez créé suffisamment de tickets compatibles avec votre configuration.

</details>

<details>

<summary>Mon ticket est bloqué en alternance entre <code>MATCH_FOUND</code> et <code>TEAM_FOUND</code> de manière répétée.</summary>

* Les comptes du niveau gratuit sont limités à 1 déploiement à la fois.
* Veuillez envisager de passer à un niveau supérieur ou d’arrêter votre déploiement actuel pour en lancer un nouveau.

</details>

<details>

<summary>Mon ticket passe directement à <code>CANCELLED</code>.</summary>

* Votre ticket a atteint sa date d’expiration. Créez un nouveau ticket ou augmentez la période d’expiration dans votre configuration à des fins de test.

</details>

<details>

<summary>Je reçois <code>HTTP 404 Introuvable</code> lorsque je vérifie mon ticket.</summary>

* Votre ticket a été supprimé soit par une requête DELETE, soit parce qu’il a atteint sa période de suppression (qui commence après l’expiration du ticket, définie dans votre configuration). Recréez un nouveau ticket ou augmentez les périodes d’expiration/suppression dans votre configuration à des fins de test.

</details>

<details>

<summary>Mon matchmaker affiche une erreur, que dois-je faire ?</summary>

* S’il s’agit d’une instance de développement ou de test, essayez d’abord de redémarrer votre matchmaker. - Veuillez signaler tout problème via [notre Discord communautaire](https://discord.gg/MmJf8fWjnt).
* Si ce problème impacte un jeu en direct, créez un [ticket de support urgent](https://edgegap.atlassian.net/servicedesk/customer/portal/3).

</details>

## 🔖 Journal des modifications

Votre fichier de configuration sera validé en fonction de la version du matchmaker utilisée, assurez-vous que vos règles correspondent aux capacités de la version du matchmaker.

{% hint style="info" %}
**La dernière version du matchmaker est `3.2.2`**. Tous les exemples de cette page sont à jour.

Gardez un œil sur [les mises à jour et annonces](/docs.edgegap.com-fr/docs/release-notes.md). Voir aussi [#rolling-updates-and-ab-tests](#rolling-updates-and-ab-tests "mention").
{% endhint %}

{% hint style="warning" %}
**Pour mettre à niveau la version de votre matchmaker - Arrêter, Modifier, Redémarrer.** Le redémarrage rapide n’appliquera pas les changements de version.
{% endhint %}

[^1]: les clients de jeu rejoignent un lobby pour récupérer l'ID du groupe de matchmaking et rejoindre le groupe

[^2]: [Function as a Service](https://www.ibm.com/think/topics/faas)

[^3]: voir d’autres exemples


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.edgegap.com/docs.edgegap.com-fr/learn/matchmaking/matchmaker-in-depth.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
