> 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/fr/docs/tools-and-integrations/deployer-depuis-ugs.md).

# Déployer depuis UGS

Suivez ce guide si vous préférez conserver votre Unity Matchmaker et déployer des serveurs sur Edgegap.

{% hint style="success" %}
Vous cherchez des alternatives ? Découvrez notre solution gérée [Matchmaking](/fr/learn/matchmaking.md) avec [intégration du SDK et exemples](/fr/unity/matchmaking.md).
{% endhint %}

### Premiers pas

{% embed url="<https://youtu.be/IwgOm2nmD9s>" %}

Ce guide se concentre sur l'ajout de l'hébergement de serveurs Edgegap en tant que fournisseur d'hébergement, en supposant :

* que vous disposez d'une configuration Unity Matchmaking fonctionnelle,
* que vous vous êtes inscrit sur Edgegap et [que vous avez téléversé votre build de serveur Unity](/fr/unity.md).

Veuillez consulter [la documentation de matchmaking de Unity](https://docs.unity.com/en-us/matchmaker) pour les sujets liés au matchmaking.

{% hint style="info" %}
Voir [Passer de Multiplay](/fr/docs/tools-and-integrations/passer-de-multiplay.md) pour comparer et faire correspondre les concepts de Multiplay à l'hébergement Edgegap.
{% endhint %}

[Choisir le bon emplacement pour votre serveur peut réduire la latence jusqu'à 58 % en moyenne !](/fr/learn/orchestration/deployments.md#server-placement)

Dans ce guide, nous couvrirons :

* la création et le déploiement `EdgegapAllocator` du module de script cloud pour votre Matchmaker,
* la récupération des adresses IP publiques des joueurs utilisées pour un placement optimal du serveur,
* la mise en œuvre d'un écouteur webhook dans le script cloud UGS et la récupération de l'attribution du serveur.

### Allocateur Edgegap

Commencez par [télécharger le code source du dépôt des fournisseurs d'hébergement](https://github.com/Unity-Technologies/matchmaker-hosting-providers/tree/main) avec `EdgegapAllocator` .

Il s'agit de [notre script cloud](https://github.com/Unity-Technologies/matchmaker-hosting-providers/blob/main/modules/EdgegapAllocator/CONFIGURATION.md) utilisé pour démarrer de nouveaux serveurs, lancé par Unity matchmaker une fois la partie constituée. Il s'agit d'une intégration officielle approuvée par Unity.

#### Secrets requis

Tout d'abord, ajoutez ces secrets dans le [tableau de bord Unity](https://cloud.unity.com/) sous **Administration** > **Secrets**:

* `EDGEGAP_API_TOKEN` - Votre jeton API Edgegap.

Trouvez votre jeton dans le [tableau de bord Edgegap](https://app.edgegap.com/user-settings?tab=tokens).

#### Modifications de code requises

Modifiez `Project/EdgegapAllocator.cs` et mettez à jour ces constantes :

Remplacez par le nom de votre application Edgegap depuis la [liste des applications](https://app.edgegap.com/application-management/applications/list).

{% code title="ApplicationName (ligne 34)" %}

```csharp
private const string ApplicationName = "MyApp"; // TODO: Remplacez par le nom réel de l'application
```

{% endcode %}

Remplacez par le nom de version de votre application Edgegap que vous souhaitez utiliser.

{% code title="VersionName (ligne 35)" %}

```csharp
private const string VersionName = "MyVersion"; // TODO: Remplacez par le nom réel de la version
```

{% endcode %}

Remplacez par le nom du port de la version de votre application Edgegap qui sera utilisé pour la connexion des joueurs.

{% code title="PortName (ligne 36)" %}

```csharp
private const string PortName = "gameport"; // TODO: Remplacez par le nom réel du port
```

{% endcode %}

#### Déployez le module

[Suivez les instructions officielles de Unity pour déployer votre module personnalisé à l'aide de la CLI ou de l'éditeur.](https://github.com/Unity-Technologies/matchmaker-hosting-providers/tree/main#deploy-the-module)

### Récupérer l'adresse IP du joueur

{% hint style="warning" %}
**Si aucune adresse IP du joueur n'est fournie, vos déploiements reviennent à l'emplacement de Los Alamos.**
{% endhint %}

Pour fournir à la demande l'emplacement optimal du serveur pour chaque partie, Edgegap exige que vous fournissiez les adresses IP des joueurs lors d'un déploiement. Bien que Unity ne propose pas cette fonctionnalité, vous pouvez utiliser notre extrait C# pour l'implémenter dans vos clients de jeu à l'aide du service gratuit [ipify](https://ipify.org):

{% code title="PlayerNetworkBehaviour.cs" %}

```csharp
public class PlayerNetworkBehaviour : MonoBehaviour {
    public IEnumerator GetPublicIP(Action<string> callback)
    {
        UnityWebRequest request = UnityWebRequest.Get("https://api.ipify.org?format=json");
        yield return request.SendWebRequest();
    
        if (request.result == UnityWebRequest.Result.Success)
        {
            string responseText = request.downloadHandler.text;
            string clientIp = JObject.Parse(responseText)["ip"].ToString();
            callback(clientIp);
        }
        else
        {
            Debug.LogError("Échec de la récupération de l'adresse IP publique.");
        }
        request.Dispose();
    }
}
```

{% endcode %}

Chaque joueur est censé fournir son adresse IP publique à l'aide de données personnalisées dans ses tickets :

```csharp
CreateTicketOptions ticketOptions = new CreateTicketOptions(
    queueName: "my-queue", 
    attributes: new Dictionary<string, object>
    {
        { "player_ip": "<insert-ip>" },
    }
);
```

### Réception de l'attribution

L'attribution peut être récupérée à l'aide des méthodes standard de matchmaking de Unity.

Notre exemple gérera les attributions pour vous en utilisant [**l'API Status, limitée à 20 requêtes/s**](https://docs.edgegap.com/docs/api/dedicated-servers#get-v1-status-deployment_id)**.**

Cela suffit pour la plupart des jeux. Si vous prévoyez plus de 50 000 CCU, envisagez d'autres méthodes.

#### Attribution alternative

{% hint style="info" %}
Pour les lancements mondiaux à grande échelle, une alternative plus évolutive utilisant [Webhooks](/fr/learn/orchestration/deployments.md#webhooks) est disponible.
{% endhint %}

Une fois la partie créée et votre script cloud demandant un nouveau déploiement, votre réponse n'inclura pas encore les détails de connexion. À la place, vous recevrez une sorte de reçu - un ID de déploiement.

Votre fonction d'allocateur doit stocker cet ID de déploiement dans vos données de jeu UGS, avec les ID des joueurs appariés, afin que vous puissiez retrouver les joueurs et fournir les détails de connexion plus tard.

Vous devrez maintenant créer une autre fonction de script cloud `AssignmentProcessor`  avec une URL publique. Cette URL doit être incluse dans la requête de déploiement de votre Allocator sous forme de `webhook_on_ready` .

Une fois qu'Edgegap déploie votre serveur de jeu, il enverra à votre nouveau script cloud un événement HTTP webhook incluant tous les détails de connexion, tels que le FQDN (URL) et le port externe pour les connexions client. Votre `AssignmentProcessor`  devra rechercher l'ID de déploiement et stocker les détails de connexion avec celui-ci.

Vos clients de jeu doivent interroger ces données de jeu et tenter une connexion dès que le FQDN et le port externe sont récupérés.

<figure><img src="/files/75d65b8050d781e0f1a1069c687c7d6d86ad1b73" alt=""><figcaption></figcaption></figure>
