> 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/unity/matchmaking.md).

# Mise en relation

Ce SDK est un kit de démarrage optionnel pour les utilisateurs de Unity, qui peut être étendu et personnalisé par la suite.

## 💡 Fonctionnalités

{% columns %}
{% column %}

* Exemples complets
* Automatisation du ping
* Tickets, groupes, équipes
  {% endcolumn %}

{% column width="33.33333333333333%" %}

* Variables de match
* Définitions de types (C#)
* Tests de développement local
  {% endcolumn %}

{% column width="33.33333333333333%" %}

* Multiplateforme
* Facile à personnaliser
* Nouvelle tentative automatisée
  {% endcolumn %}
  {% endcolumns %}

## ✔️ Préparation

## 🍀 Démarrage

Ce guide suppose une connaissance de base de [Matchmaking](/docs.edgegap.com-fr/learn/matchmaking.md) des concepts et d'un Matchmaker en cours d'exécution.

{% hint style="success" %}
**Nous recommandons vivement d'importer notre exemple simple** pour suivre le code au fil de votre lecture de ce document. Vous pouvez le faire dans `Unity Package Manager > Edgegap SDK > Samples` .
{% endhint %}

### Aperçu

Ce package comprend :

* Fichiers d'exécution - seront compilés et inclus dans vos builds client et serveur :
  * Utilitaires spécifiques au service :
    * [#client-agent](#client-agent "mention") - une intégration client complète à réutiliser/étendre.
    * Fonctions API - définitions des points de terminaison, gestion des erreurs et automatisations de journalisation.
  * Spécifique au service DTO[^1] - conteneurs de données typés pour l'API de matchmaking.
  * Utilitaires partagés - journalisation, HTTP, ping, observables, etc...
  * Partagés DTO[^1] - utilisés par plusieurs services Edgegap pour faire circuler les données.
* Fichiers d'exemple - regroupés et compilés UNIQUEMENT s'ils sont importés dans votre projet :
  * [#simple-example](#simple-example "mention") - des gestionnaires d'exemple pour un [configuration minimale](/docs.edgegap.com-fr/learn/matchmaking.md#simple-example).
  * [#region-picker](#region-picker "mention") - explorez l'intégration UI avec la sélection manuelle de région.

### Client de groupe

**L'automatisation du ping, la gestion des tickets et la récupération de l'hôte** sont effectuées par le Client de groupe.

Une fois instancié, l' **Monobehaviour parent (gestionnaire) doit initialiser le client** et fournir :

* `onMonitorUpdate`  callback - observer les changements d'état du service,
* `onAssignmentUpdate`  callback - observer et réagir aux changements d'attribution de l'hôte.

Une fois initialisé, ce client fournira automatiquement des validations et connectera les observateurs de journalisation, en terminant par un seul appel au point de terminaison de l'API de surveillance pour indiquer l'état du service.

Le gestionnaire du client est censé prendre le relais et appeler les fonctions du client à partir de ce point :

* `Balises`  pour récupérer une liste des [Balises Ping](/docs.edgegap.com-fr/learn/orchestration/ping-beacons.md),
* `MeasureBeaconsRoundTripTime`  pour fournir des mesures de ping pour un ensemble donné de balises,
* `CreateGroup`  pour que le leader du salon crée un groupe rejoignable, auquel des amis peuvent être invités,
* `JoinGroup`  pour rejoindre un groupe existant à l'aide de l'ID de groupe envoyé via un salon/backend tiers,
* `SetReady`  pour marquer le propriétaire du groupe et les membres comme prêts et commencer la recherche de parties,
* `ResumeMatchmaking`  charger un groupe mis en cache et continuer la recherche en cas de crash du client,
* `StopMatchmaking`  pour supprimer le ticket (s'il n'a pas été apparié) et quitter la file,
* `Statut`  pour vérifier l'état de santé du service Server Browser.

Lorsqu'une nouvelle connexion de joueur est établie, le joueur est censé envoyer son ID de ticket au serveur de jeu à l'aide de votre netcode, afin de corréler les connexions avec [Vue approfondie](/docs.edgegap.com-fr/learn/matchmaking/matchmaker-in-depth.md#injected-variables).

{% hint style="success" %}
Enregistrez les détails de connexion dans le client ou le backend du jeu pour vous reconnecter en cas de crash inattendu.
{% endhint %}

## 🧪 Exemples

Démarrez avec des exemples incluant une intégration complète et fonctionnelle pour le serveur et le client.

### Exemple simple

Inclut une implémentation complète du cycle de vie du joueur avec mesure du ping, gestion des tickets et récupération de l'attribution de l'hôte. Démontre comment lire les variables de match injectées côté serveur.

Modifiez les attributs de matchmaking pour étendre facilement cet exemple et l'adapter à n'importe quelle configuration.

### Sélecteur de région

Certains joueurs (ou groupes) ont des conditions locales particulières (comme FAI[^2] blocage, [blocage à l'échelle du pays](#user-content-fn-3)[^3], ou autres) et peuvent préférer choisir une région manuellement plutôt que sur la base du ping seul.

Examinez notre exemple de sélecteur de région et inspirez-vous-en pour l'implémentation de votre interface de matchmaking.

### Former un groupe

Rejoignez la file de matchmaking avec un groupe d'amis, en exigeant que tous les joueurs confirment avant de lancer la recherche. Commencez avec une implémentation UI minimale, puis personnalisez-la selon la conception de votre jeu.

Explorez l'intégration UI avec le flux de formation de groupe et offrez la meilleure expérience sociale possible.

## ⚙️ Personnalisation

Ce SDK est destiné à être étendu et modifié, bien que certaines modifications puissent être risquées :

✅ Gestionnaire - connecter en toute sécurité les observateurs de l'interface et effectuer de petits ajouts ou modifications,

⚠️ Agent - modifiez la gestion du cycle de vie du joueur à vos propres risques,

⚠️ API - écrivez votre propre intégration à partir de zéro, en utilisant des utilitaires soigneusement sélectionnés.

Les gestionnaires peuvent observer tous les événements émis par les agents Server et Client comme décrit ci-dessous.

{% hint style="warning" %}
Assurez-vous de vous familiariser avec [Matchmaking en profondeur](/docs.edgegap.com-fr/learn/matchmaking/matchmaker-in-depth.md) les concepts avant de procéder à des personnalisations.
{% endhint %}

### Observer les événements

Le Client de groupe émet des événements (actions) que le gestionnaire parent peut observer et consommer.

Aperçu des événements émis par l'observable `Moniteur` :

<table data-full-width="true"><thead><tr><th width="125">Type d'action</th><th width="450">Message de l'événement</th><th>Description</th></tr></thead><tbody><tr><td>🟢 <code>Mise à jour</code> </td><td><code>sain</code></td><td>Tous les systèmes sont opérationnels.</td></tr><tr><td>🟢 <code>Mise à jour</code> </td><td><code>non sain</code></td><td>Problème inattendu.</td></tr><tr><td>🔴 <code>Erreur</code></td><td><code>échec de la récupération du moniteur</code></td><td>Mauvaise configuration ou problème inattendu.</td></tr><tr><td>🔴 <code>Erreur</code></td><td><code>échec de la récupération des balises</code></td><td>Problème inattendu.</td></tr></tbody></table>

Aperçu des événements émis par l'observable `Groupe`:

<table data-full-width="true"><thead><tr><th width="125">Type d'action</th><th width="450">Message de l'événement</th><th>Description</th></tr></thead><tbody><tr><td>🟢 <code>Mise à jour</code> </td><td><code>créé</code></td><td>Groupe créé avec succès.</td></tr><tr><td>🔴 <code>Erreur</code></td><td><code>échec de la création du groupe</code></td><td>Échec de la création du groupe.</td></tr><tr><td>🟢 <code>Mise à jour</code> </td><td><code>rejoint</code></td><td>Groupe rejoint avec succès.</td></tr><tr><td>🔴 <code>Erreur</code></td><td><code>échec de la jonction au groupe</code></td><td>Échec de la jonction au groupe.</td></tr><tr><td>🟢 <code>Mise à jour</code> </td><td><code>repris</code></td><td>Groupe repris avec succès.</td></tr><tr><td>🔴 <code>Erreur</code></td><td><code>groupe introuvable</code></td><td>Pas membre du groupe, ou groupe expiré.</td></tr><tr><td>🔴 <code>Erreur</code></td><td><code>conflit, abandon et redémarrage</code></td><td>Veuillez abandonner le groupe actuel avant d'essayer de créer/rejoindre un nouveau groupe.</td></tr><tr><td>🟢 <code>Mise à jour</code> </td><td><code>membre mis à jour [{ready}]</code></td><td>Membre mis à jour avec la nouvelle valeur Prêt.</td></tr><tr><td>🔴 <code>Erreur</code></td><td><code>échec de la mise à jour du membre</code></td><td>Échec de la mise à jour du membre du groupe. Impossible de passer en non prêt après le début de la recherche de partie.</td></tr><tr><td>🔵 <code>Notification</code></td><td><code>interrogation [{consecutive}/{maximum}]</code></td><td>Le client a lancé l'interrogation de l'état du groupe.</td></tr><tr><td>🔵 <code>Notification</code></td><td><code>interrogation arrêtée</code></td><td>Le client a arrêté d'interroger l'état du ticket.</td></tr><tr><td>🔴 <code>Erreur</code></td><td><code>échec de l'interrogation, nombre maximal de tentatives atteint</code></td><td>Le client a épuisé le nombre maximal de tentatives d'interrogation consécutives. Vérifiez l'état du service.</td></tr><tr><td>🔴 <code>Erreur</code></td><td><code>échec de l'interrogation</code></td><td>Le client a reçu une erreur non réessayable lors de l'interrogation. Vérifiez l'état du service.</td></tr><tr><td>🟢 <code>Mise à jour</code> </td><td><code>groupe mis à jour [{status}]</code></td><td>Changement d'état du groupe détecté pendant l'interrogation.</td></tr><tr><td>🟢 <code>Mise à jour</code> </td><td><code>abandonné</code></td><td>Ticket supprimé avec succès.</td></tr><tr><td>🟢 <code>Mise à jour</code> </td><td><code>échec de l'abandon (introuvable)</code></td><td>Le client n'a pas pu trouver le ticket à supprimer, il a peut-être expiré.</td></tr><tr><td>🟡 <code>Avertissement</code></td><td><code>échec de l'abandon (déjà apparié)</code></td><td>Le client n'a pas pu supprimer un groupe apparié. Désactivez l'abandon ou <a data-mention href="/pages/94dc7141ca8181657ba0af1abea4eab9a70caf0a#backfill-match">/pages/94dc7141ca8181657ba0af1abea4eab9a70caf0a#backfill-match</a> pour remplacer le joueur.</td></tr><tr><td>🔴 <code>Erreur</code></td><td><code>échec de l'abandon</code></td><td>Échec de la suppression du groupe ou de l'adhésion.</td></tr><tr><td>🟢 <code>Mise à jour</code> </td><td><code>supprimé</code></td><td>Le groupe a expiré, la référence locale a été supprimée.</td></tr></tbody></table>

[^1]: Objet de transfert de données

[^2]: [Fournisseur d'accès à Internet](https://en.wikipedia.org/wiki/Internet_service_provider)

[^3]: notamment la Chine ou la Russie


---

# 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/unity/matchmaking.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.
