> 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/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 les serveurs sur Edgegap.

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

### Premiers pas

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

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

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

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

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

Dans ce guide, nous aborderons :

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

### Allocateur Edgegap

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

Il s'agit de [notre cloud script](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: Replace with actual application name
```

{% 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: Replace with actual version name
```

{% 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: Replace with actual port name
```

{% endcode %}

#### Déployez le module

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

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

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

Afin de fournir à la demande l'emplacement de serveur optimal pour chaque partie, Edgegap exige que vous fournissiez les adresses IP des joueurs lors de la création 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("Failed to fetch public IP address.");
        }
        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 Unity Matchmaking.

Notre exemple gérera les attributions pour vous à l'aide de [**API de statut, 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](/docs.edgegap.com-fr/learn/orchestration/deployments.md#webhooks) est disponible.
{% endhint %}

Une fois la partie créée et votre cloud script ayant demandé 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 allocatrice doit stocker cet ID de déploiement dans vos données de jeu UGS, en même temps que les ID des joueurs appariés, afin de pouvoir retrouver les joueurs et fournir ultérieurement les détails de connexion.

À présent, vous devrez créer une autre fonction de cloud script `AssignmentProcessor`  avec une URL publique. Cette URL doit être incluse dans la requête de déploiement de votre Allocator en tant que `webhook_on_ready` .

Une fois qu'Edgegap déploie votre serveur de jeu, il enverra à votre nouveau cloud script un événement HTTP webhook incluant tous les détails de connexion tels que le FQDN (URL) et le port externe pour les connexions des clients. Votre `AssignmentProcessor`  devra retrouver 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 de se connecter dès que le FQDN et le port externe sont récupérés.

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