Créateur d’appariements Unity
Ce guide vous aidera à créer un projet Unity en utilisant le système Advanced Matchmaker d'Edgegap pour automatiser les déploiements et les connexions entre joueurs.
Ce guide utilisera le projet d'exemple open-source Tanks, disponible dans le Mirror exemple sous Assets/Mirror/Examples/Tanks. L'exemple final se trouve sur notre GitHub.
configuration du Matchmaker
Créer les composants
Pour commencer, vous devrez créer vos 3 composants Matchmaker. Pour ce projet, vous pouvez suivre notre tutoriel de composant de base ici.
Gardez à l'esprit que les composants et la configuration YAML créés avec ce tutoriel ne sont pas destinés à être utilisés en production.
Release
Local
Si vous voulez tester votre Matchmaker dans un environnement local, appliquez simplement vos paramètres Kubernetes comme mentionné à la fin du tutoriel de composant de base. Vous pouvez ensuite passer directement à la configuration du projet.
Avec Edgegap
Si vous souhaitez plutôt tester le Matchmaker dans un environnement en ligne avec Edgegap, vous devrez légèrement modifier vos composants du tutoriel précédent. Vous utiliserez les variables injectées qui sont ajoutées lors de la release au lieu de certaines valeurs codées en dur. Les changements doivent être les suivants :
Director
...
using System;
namespace director
{
public static class Constant
{
static Constant()
{
OpenMatchMatchFunctionHost = Environment.GetEnvironmentVariable("OM_MMF_HOST");
OpenMatchMatchFunctionPort = Int32.Parse(Environment.GetEnvironmentVariable("OM_MMF_HTTP_PORT"));
OpenMatchBackendService = Environment.GetEnvironmentVariable("OM_BACKEND_HOST") + ':' + Int32.Parse(Environment.GetEnvironmentVariable("OM_BACKEND_HTTP_PORT"));
}
public static readonly string OpenMatchMatchFunctionHost;
public static readonly int OpenMatchMatchFunctionPort;
public static readonly string OpenMatchBackendService;
...
}
...
}Frontend
Match Function
Une fois cela fait, téléversez-les sur Edgegap, puis créez et publiez votre Matchmaker sur le tableau de bord Edgegap.
Configuration du projet
Ensuite, nous voulons modifier le projet de base Tank afin que le Matchmaker soit utilisé pour connecter les joueurs entre eux. Pour les besoins de cet exemple, nous voulons que nos joueurs choisissent le mode de match qu'ils souhaitent jouer avant de créer un ticket Matchmaker, afin que le Matchmaker connecte automatiquement 2 joueurs ayant choisi le même mode.
Avec les composants Matchmaker de base créés dans le tutoriel précédent, les modes disponibles sont mode.casual, mode.ranked, et mode.private.
Dans le projet, ouvrez la scène située sous Assets/Mirror/Examples/Tanks/Scenes. Désactivez le Network Manager HUD composant du NetworkManager gameObject, puis créez votre propre HUD pour permettre aux joueurs d'entrer un mode de jeu, de créer et supprimer un ticket lorsqu'ils ne sont pas en match, et de quitter leur match actuel lorsqu'ils le sont.
HUD hors ligne

HUD en ligne

Ensuite, vous devrez créer de nouveaux scripts dans votre projet pour gérer les requêtes envoyées au Matchmaker selon le bouton cliqué par le joueur. Votre code pour gérer les requêtes elles-mêmes devrait avoir une structure similaire à celle-ci :
Fonctions
Classes
Quelle que soit la façon dont vous choisissez de gérer votre HUD, assurez-vous de créer votre MatchmakerManager instance dans votre Start() fonction pour garantir que le code fonctionne correctement.
Une fois que le joueur a créé un ticket, vous devrez vérifier périodiquement son statut afin d'obtenir les réelle informations dès que 2 tickets ont été appariés, car le ticket sera supprimé quelques minutes après la définition de cette valeur. Une fois que vous avez le réelle, vous pouvez connecter le joueur au match.
Construire le serveur de jeu et conteneuriser
Une fois que vous avez terminé d'ajouter les modifications de l'étape précédente au projet, vous devrez construire votre serveur de jeu et le containeriser. Tout d'abord, assurez-vous que le NetworkManager gameObject a les réglages suivants :
Activer
Auto Start Server Builddans leNetworkManagercomposant ;Définissez le
portduKcpTransportcomposant à la même valeur que celle que vous avez utilisée pour leGameServerPortdans le composant Director.
Dans cet exemple, nous avons utilisé `7777` pour les deux valeurs.

Une fois cela fait, rendez-vous sur le Construction de l'éditeur Unity, sous Fichier -> Paramètres de compilation dans les menus supérieurs. Assurez-vous de sélectionner les bons préréglages selon votre version d'Unity.
Avant la version 2021.2 :
Définir
Plateforme cibleversLinux;Définir
Architectureversx86_64;Cochez la
Server Build.
Sinon :
Définir
PlateformeversServeur dédié;Définir
Plateforme cibleversLinux.
Puis appuyez sur construire et sélectionnez un nouveau dossier vide nommé linux_server comme destination de fichier. Transférez le linux_server dossier dans un second dossier vide, qui sera appelé [BUILD DU SERVEUR] dossier mentionné dans ce document. Ajoutez le fichier suivant Dockerfile et boot.sh au dossier [BUILD DU SERVEUR] dossier :
Dockerfile
Assurez-vous de remplacer les [PORT_JEU] remplissez les espaces réservés avec la même port valeur qu'avant.
boot.sh
Assurez-vous de remplacer les [VOTRE JEU] espace réservé avec le nom du fichier généré.
Ensuite, lancez une invite de commandes dans le [BUILD DU SERVEUR] dossier ; Exécutez les commandes Docker suivantes pour créer une image de votre build et la pousser vers un registre privé. Voir ce doc si vous souhaitez utiliser le registre privé d'Edgegap.
Utilisation de Linux
Utilisation de cmd
Utilisation de Powershell
Déploiement sur Edgegap
Créez une nouvelle application sur le tableau de bord Edgegap avec les paramètres suivants :
Nom de l'application : Assurez-vous qu'il s'agit du même nom que celui que vous avez utilisé pour le
AppNamedans le composant Director de votre Matchmaker. Doit être en minuscules.Image : Peut être n'importe quelle image spécifique que vous souhaitez utiliser pour reconnaître facilement votre application parmi d'autres.
Nom de la version : Assurez-vous qu'il s'agit de la même version que celle que vous avez utilisée pour le
AppVersiondans le composant Director de votre Matchmaker. Des exemples peuvent être « demo », « production », « v1 », « v2 »Conteneur :
Registre : « [URL] », où [URL] est la valeur des identifiants affichables sur la page du dépôt de conteneurs.
Répertoire d'image : « [PROJET]/[VOTRE JEU] », où [PROJET] et [VOTRE JEU] sont les valeurs que vous avez utilisées précédemment lors de la poussée de l'image docker.
Tag : « [TAG] », où [TAG] est la valeur que vous avez utilisée précédemment lors de la poussée de l'image docker.
Cochez « Utiliser un dépôt privé »
Nom d'utilisateur du registre privé : « [NOM_UTILISATEUR] », où [NOM_UTILISATEUR] est la valeur de vos identifiants.
Jeton du registre privé : « [TOKEN] », où [TOKEN] est la valeur de vos identifiants.
Exigences : Laisser tel quel.
Ports :
Cliquez sur le
+ Ajouter un portlien pour ajouter un nouveau port, et ajoutez les entrées suivantes :[PORT_JEU]- TCP/UDP - désactiver les vérifications3389 - TCP - désactiver les Vérifications
Nous recommandons de définir un Durée maximale de jeu dans votre application également, afin que vos déploiements s'autoterminant après quelques minutes puisque le Matchmaker créera automatiquement de nouveaux déploiements lors de l'appariement des tickets.
Ceci afin de vous assurer de ne pas avoir de déploiements vides en fonctionnement trop longtemps.
Tests avec des builds client
Pour vérifier si le Matchmaker fonctionne comme prévu, vous devrez lancer le jeu sur 2 instances clientes séparées et avoir également votre release Matchmaker en cours d'exécution.
Avant de créer une build client du jeu, assurez-vous de décocher l'option Auto Start Server Build de l' NetworkManager gameObject. Ensuite, selon le type de release Matchmaker que vous testez, changez la MATCHMAKER_URL comme suit :
Local: changez-la en "http://localhost:51504"Avec Edgegap: changez-la en la valeur affichée sur le tableau de bord Edgegap après avoir activé la release. Vous n'avez pas besoin de spécifier le port dans ce cas.
Ensuite, retournez dans le Construction de l'éditeur Unity, sous Fichier -> Paramètres de compilation dans les menus supérieurs. Sélectionnez la Windows, Mac, Linux plateforme et la plateforme cible correcte pour votre environnement. Ensuite, appuyez sur build et sélectionnez un nouveau dossier vide nommé client_build comme destination de fichier.
Une fois que vous lancez les deux clients (soit deux fenêtres de votre build client, soit une fenêtre de build et l'éditeur Unity), faites-les sélectionner tous les deux le même mode de jeu et créer leurs tickets. Après un court instant, les deux clients seront connectés à un serveur nouvellement déployé, dont vous pouvez voir le statut sur le tableau de bord Edgegap.
Si vous testez avec la release en ligne de votre Matchmaker, il existe actuellement un problème lié aux certificats si vous activez et désactivez votre release Matchmaker plusieurs fois par semaine ; cela empêchera les requêtes vers votre Matchmaker de fonctionner avec Unity.
Pour résoudre cela, désactivez simplement votre release, mettez-la à jour avec un nom différent, puis republiez-la. Assurez-vous ensuite que l'URL dans votre code est la bonne.
Mis à jour
Ce contenu vous a-t-il été utile ?

