
Comment ajouter un système de matchmaking à un jeu multijoueur compétitif au tour par tour
Le service de matchmaking d'Edgegap est un système de matchmaking entièrement géré et infiniment personnalisable qui regroupe de manière optimale les joueurs du monde entier - et son utilisation est gratuite pendant le développement de votre jeu multijoueur au tour par tour.
C'est également le seul système de matchmaking (à notre connaissance) avec des règles de matchmaking basées sur la latence pour offrir l'expérience multijoueur en ligne idéale pour votre jeu, quel que soit le moteur (Unity, Unreal, etc.) ou les services de jeu (EOS, UGS, PlayFab, Heroic Labs Nakama, Braincloud, etc.).
Comme notre service de matchmaking est basé sur des paramètres, il n'est pas nécessaire d'écrire du code. L'intégration est donc très facile et si nécessaire, nos guides d'intégration vous accompagnent à chaque étape.
Lorsque votre jeu est en ligne, étant donné que notre système de matchmaking est entièrement géré, vous n'avez pas besoin de gérer l'infrastructure, les bugs, les pannes, l'évolutivité ou la gestion des bases de données. Nous nous occupons de tout pour vous, réduisant ainsi votre charge de travail DevOps à presque zéro.
Comment intégrer le matchmaking à votre jeu multijoueur au tour par tour
-> Cet article est basé sur la documentation sur le matchmaking. Si vous rencontrez des problèmes ou des incohérences, veuillez vous assurer de vous référer au guide original, car il est mis à jour plus fréquemment.
L'exemple suivant vous aidera à tester le flux principal des joueurs du matchmaking, à savoir :
Créer l'instance du matchmaking sur le Cluster d'Hébergement partagé,
Définir les règles et paramètres dans votre Configuration de matchmaking,
Et enfin, tester le flux des joueurs et gérer les Tickets de Joueur avec notre API.
Il y a cinq étapes pour intégrer notre matchmaking à votre jeu :
La première étape consiste à créer un compte et à utiliser notre exemple de jeu de stratégie. Voilà, vous êtes (techniquement) à mi-chemin ! Il ne vous resterait qu'à intégrer le matchmaking dans votre jeu (voir étape 5).
Maintenant, vous ne devriez jamais suivre aveuglément un exemple JSON trouvé sur internet, et il est donc fortement recommandé d'adapter les règles ci-dessus à votre jeu au tour par tour. L'étape 2 (“Explorer la Configuration”) est notre “comment lire” qui aborde la fonction de chacune des règles de matchmaking (“Explorer la Configuration”).
L'étape 3 (“Examiner les Détails de l'Instance”) couvre votre matchmaker personnel et spécifique afin de vous assurer qu'il est déployé et fonctionne avec le design de votre jeu.
L'étape 4, comme son nom l'indique (“4. Tester l'API des Tickets”), concerne le test de la réception de vos demandes de matchmaking par le matchmaker, appelées tickets.
L'étape 5 (“Intégrer le Matchmaking dans votre Jeu”) souligne comment intégrer le matchmaker dans le projet de votre moteur.
Si vous avez des problèmes de dépannage, notre Centre d'Apprentissage approfondi contient des conseils supplémentaires pour le dépannage.
1. Configurer le Niveau Gratuit
Inscrivez-vous pour obtenir votre compte Edgegap gratuit, et naviguez jusqu'à la page du tableau de bord du Matchmaker.
À partir de là, cliquez d'abord sur Créer un Matchmaker ensuite, saisissez :
Un nom pour votre matchmaker – qui est purement pour votre propre référence, par exemple
quickstart-dev
,Puis, téléchargez l'exemple simple suivant en tant que configuration JSON ci-dessous pour votre jeu au tour par tour :
(rappel amical de vous assurer de changer le nom
de l'application et le version
pour qu'ils correspondent à votre Application et Versions!)
S'il n'y a pas d'erreurs de validation, cliquez sur Créer et Démarrer et attendez que le processus se termine. Cela entraînera le démarrage d'un nouveau cluster gratuit, avec votre matchmaker d'exemple simple.
Vous pouvez maintenant passer à l'étape suivante.
2. Explorer la Configuration
Règles de jeu au tour par tour compétitif uniques
Spécifiquement pour les jeux au tour par tour, vous pouvez définir plusieurs Profils de Matchmaking pour des règles et paramètres spécifiques aux modes de jeu :
restreindre le rang à une différence entre deux joueurs pour des jeux plus décontractés,
restreindre la différence de rang pour n'autoriser que les adversaires du même rang pour les jeux classés,
laisser les joueurs fournir leurs préférences de carte et choisir une carte adaptée à tout le monde,
ajouter une interface de sélection de Hub pour restreindre les adversaires à des Balises de Ping spécifiées,
restreindre la latence du matchmaking à un seuil maximum pour éviter de regrouper des joueurs éloignés,
restreindre la latence du matchmaking à une différence maximale pour maximiser l'équité des pings,
allouer plus de CPU ou de mémoire en utilisant différentes Versions de l'Application quand plus de joueurs sont autorisés,
Rejoindre en Groupe pour des salons préétablis ou combler des équipes sans dépasser les tailles d'équipe.
Commencez par les conditions idéales, et élargissez les restrictions pour garantir des matchs rapides :
relâcher lentement les restrictions de latence au fil du temps pour trouver plus de joueurs,
augmenter lentement la différence de rang autorisée pour trouver plus de joueurs,
augmenter le temps entre les expansions pour les rangs les plus élevés (challengers), car moins de joueurs sont disponibles.
Créez des tickets avec un rang plus élevé pour les matchs de promotion, afin de rencontrer des adversaires plus coriaces.
Définissez des profils de tricheurs séparés pour s'assurer que les tricheurs signalés ou les joueurs avec un grand nombre de rapports de modération n'impactent pas négativement l'expérience des joueurs légitimes dans les matchs classés.
Versionnage Sémantique
Chaque nouvelle version utilise le versionnage sémantique pour communiquer clairement l'impact des changements en interprétant le format majeur.minor.patch
:
les versions
majeures
incluent des changements majeurs et nécessitent un examen de l'intégration,les versions
mineures
incluent d'importantes améliorations compatibles dans le temps,les versions
patch
incluent des corrections de bugs et de petites améliorations.
Certaines déploiements peuvent entraîner des erreurs. Nous tentons de résoudre cela en réessayant le déploiement jusqu'à max_deployment_retry_count
fois automatiquement (sans confirmation du client).
Pour s'assurer que les pannes inopinées des clients ou les tickets abandonnés ne persistent pas et ne monopolisent pas vos ressources de matchmaking, les tickets seront annulés après ticket_expiration_period
ce qui fait changer leur statut en CANCELLED
et ensuite définitivement supprimés après ticket_removal_period
.
Le cœur de notre logique de matchmaking est configuré dans Profils de Matchmaking. Chaque profil est une file de matchmaking complètement isolée, pointant vers Versions d'Application avec une quantité prédéfinie de ressources CPU et mémoire (RAM) requises.
Les Règles de Matchmaking dans l'ensemble de règles initiales doivent être respectées pour que les joueurs soient regroupés ensemble, chacune définie par trois propriétés :
nom de votre choix, par ex. -
taille de match
,type de règle, également connu sous le nom d'opérateur, par ex. -
nombre_de_joueurs
,et enfin les attributs de l'opérateur, par ex.
nombre_de_tim
outaille_de_team
.
Règle de Nombre de Joueurs
C'est une règle spéciale définissant combien de joueurs doivent s'apparier pour initier l'attribution :
nombre_de_tim
fait référence au nombre d'équipes, 1 équipe peut être utilisée pour des modes coopératifs ou de chacun pour soi,taille_de_team
fait référence au nombre de joueurs par équipe.
Notre exemple simple démontre un jeu coopératif avec 2 joueurs.
Veuillez noter que la règle "Nombre de Joueurs" est requise et ne peut être définie qu'une seule fois dans vos règles de configuration initiales.
Règle de Latence
Utilisez cette règle pour fournir le ping le plus bas possible pour tous les joueurs. Une fois que les clients mesurent et soumettent leur temps aller-retour (ping) par rapport à toutes les balises disponibles, Gen2 ne considérera que les correspondances avec une différence
spécifique dans les valeurs de ping, mesurées par rapport aux Balises de Ping. Cela présente une solution "douce" pour diviser votre base de joueurs, permettant de s'apparier avec des régions voisines, améliorant ainsi la vitesse des matchs pour les régions moins peuplées. Utilisez max_latency
pour éviter de s'apparier contre des joueurs situés loin.
Vous pouvez maintenant passer à l'étape suivante.
Notre exemple de règle balises
ci-dessus avec "difference": 50, "max_latency": 200
initialement :
Alice et Bob vont s'apparier, puisque Beijing est rejeté (>200) et le reste est dans | A-B | < 50 :
Alice {Montréal: 12.3, Newark: 45.6, Dallas: 59.9, Pékin: 264.4}; et
Bob {Montréal: 27.3, Newark: 32.4, Dallas: 23.1, Pékin: 252.2}.
Charlie et Dave ne vont pas s'apparier, puisque | C-D | > 50 pour la Balise de Dallas :
Alice {Montréal: 5.7 Newark: 44.2, Dallas: 59.5, Pékin: 263.2}; et
Bob {Montréal: 57.8, Newark: 32.0, Dallas: 24.2, Pékin: 272.3}.
Veuillez noter que les "Règles de Latence" ne peuvent être définies qu'une seule fois dans vos règles de configuration initiales.
3. Examiner les Détails de l'Instance
Examinez les détails de votre nouveau matchmaker dans notre tableau de bord une fois qu'il est initialisé :

État indique la santé du service, peut être EN LIGNE, HORS LIGNE ou ERREUR.
Identifiant aide le personnel d'Edgegap à trouver rapidement votre matchmaker si vous avez besoin d'aide pour le dépannage.
Commencé à peut être utile pour suivre le dernier temps de mise à jour.
Taille correspond à l'un de nos Niveaux de Tarification.
URL de l'API sera utilisée par les Clients de Jeu et Serveurs de Jeu pour communiquer avec Gen2.
URL Swagger est une interface GUI openAPI pratique que nous fournissons pour explorer le schéma de l'API.
Jeton d'Auth est un jeton secret unique utilisé par les Clients de Jeu et Serveurs de Jeu pour l'authentification.
Pour tester votre nouveau matchmaker à l'aide de l'API, vous aurez besoin de l'URL Swagger, de l'URL de l'API et du Jeton d'Auth.
Vous pouvez maintenant passer à l'étape suivante.
4. Tester l'API des Tickets
Tout d'abord, ouvrez votre URL Swagger pour examiner votre schéma openAPI dans l'interface Swagger
Cliquez sur l'URL /...swagger.json
sous le titre “Matchmaker” pour ouvrir le schéma JSON brut :

Enregistrez cette page en tant que fichier sur votre disque (CTRL/CMD+S
).
Ouvrez votre application Postman et connectez-vous à votre compte gratuit.
Importez votre fichier swagger.json
de l'étape précédente :
gardez Postman Collection sélectionné,
séléctionnez Voir les Paramètres d'Importation et changez le paramètre Génération de Paramètres en Exemple.
Confirmez l'importation, cela entraînera l'apparition d'une nouvelle collection dans la liste des Collections à gauche, intitulée Matchmaker.

Voir plus d'actions, ouvrez l'onglet Autorisation et choisissez :
Type d'Auth - Clé API,
Clé - “Autorisation”
Valeur - insérez votre valeur AuthToken ici,
Ajouter à - En-tête.
Appuyez sur (CTRL/CMD+S
) ou sur l'icône de Sauvegarder pour enregistrer les modifications. Le point orange dans votre onglet Postman devrait disparaître.
Dans votre collection Matchmaker, sélectionnez tickets et Créez un ticket de matchmaking, en ouvrant un nouvel onglet.
Sélectionnez l'onglet Corps pour prévisualiser votre demande de ticket joueur :
remarquez que player_ip
est réglé sur null
- cela va causer l'utilisation de l'adresse IP automatiquement ajoutée à votre demande (voir Intégration Serveur à Serveur pour les alternatives),
profil
fait référence à vos Profils de Matchmaking,attributs
incluent des valeurs pour vos règles de matchmaker, dans ce cas pour larègle de latence
,la règle
nombre_de_joueurs
est la seule règle qui ne nécessite aucun attribut dans les tickets de joueur.
REMARQUE: Assurez-vous de vous référer à la configuration d'importation de l'exemple Swagger.
Cliquez sur Envoyer et examinez la réponse à votre demande de ticket joueur :
id
est l'identifiant unique de votre ticket de matchmaking, conservez-le pour vérifier votre ticket plus tard,profil
confirmant le choix des Profils de Matchmaking,group_id
est un identifiant de groupe unique attribué à chaque ticket, un joueur solo est représenté comme un groupe de 1,voir Rejoindre en Groupe pour le matchmaking avec vos amis ou salons,
player_ip
est l'adresse IP publique résolue du joueur, quelle que soit la méthode d'identification utilisée,assignment
est réglé sur null pour indiquer que le ticket n'a pas encore été apparié ou affecté à un serveur,created_at
fournit des informations sur le moment où le ticket joueur a été créé pour l'utilisation de l'interface utilisateur du jeu,status
indique le statut actuel du ticket, tous les tickets commencent enSEARCHING
(voir Processus de Matchmaking pour les détails).
Créez un second ticket en cliquant à nouveau sur Envoyer, afin que nos deux joueurs s'apparentent et qu'un serveur soit démarré.
Dans votre collection Matchmaker, sélectionnez {ticketId} et Lisez un ticket de matchmaking.
Entrez l'ID du ticket de la réponse dans l'étape précédente et cliquez sur Envoyer.

Examinez l'attribution mise à jour de votre ticket joueur :
le statut est passé à
MATCH_FOUND
au début, tout en gardantassignment
réglé surnull
pour indiquer que les joueurs ont été appariés et qu'un serveur est en cours d'attribution,

Cliquez à nouveau sur Envoyer pour vérifier votre ticket et examinez l'attribution mise à jour de votre ticket joueur :
le statut est passé à
HOST_ASSIGNED
avecassignment
contenant des détails du serveur assigné.
Inspectez votre nouveau déploiement dans notre tableau de bord :
remarquez que chaque déploiement est étiqueté avec tous les IDs de tickets et profils pour une traçabilité accrue.

Essayez de vous connecter depuis votre client de jeu au serveur assigné.
Une fois que vous avez vérifié que vous pouvez vous connecter à votre Déploiement sans problème et que vous avez terminé les tests, Arrêtez votre Déploiement pour libérer de la capacité dans votre compte pour la prochaine version.
Vous pouvez maintenant passer à l'étape suivante.
5. Intégrer le Matchmaker dans votre Jeu
Le matchmaking d'Edgegap s'intègre :
avec Client de Jeu, pour gérer Tickets de Joueur,
avec Serveur de Jeu, pour :
traiter les préférences des joueurs passées via leurs tickets,
en option pour soutenir le Backfill pour ajouter ou remplacer des joueurs après le démarrage.
Pour dans Client de Jeu, nous recommandons de fournir des mises à jour du statut des tickets tout au long du Processus de Matchmaking aux joueurs en utilisant l'interface utilisateur en jeu pour la meilleure expérience. Voir :
Edgegap - SDK de Matchmaking Unity Gen2,
importer l'exemple simple et le personnaliser selon vos besoins,
Betide Studio - Kit d'Intégration Unreal Engine Edgegap,
télécharger le projet exemple et le personnaliser selon vos besoins.
Dans Client de Jeu, assurez-vous de gérer les erreurs non récupérables :
HTTP 404 Not Found
- le ticket a été supprimé,HTTP 500 Internal Server Error
- panne temporaire du service.
Dans Serveur de Jeu, traitez les préférences des joueurs et le contexte initial du serveur. Aucune intégration API n'est requise :
Lire les Variables d'Environnement Injectées (Gen2) pour récupérer les données de matchmaking initiales des joueurs.
Lire les Variables d'Environnement Injectées (Versions d'Application) pour les paramètres spécifiques aux versions, les paramètres (capacité des joueurs), et les secrets.
Lire les Variables d'Environnement Injectées (Déploiement) pour des informations sur le déploiement, telles que l'adresse IP, l'emplacement, ou plus.
Une fois que les joueurs se connectent, le Serveur de Jeu et les Clients de Jeu débutent une scène de chargement pour effectuer les étapes de synchronisation (par exemple, sélectionner et charger une carte/scène/niveau). Nous recommandons une scène 3D entièrement développée, une interface utilisateur sociale de type hall, ou un écran de chargement avec une barre de progression, pour indiquer que l'initialisation est en cours.
Une fois les Clients de Jeu complètement chargés, les joueurs chargent/voyagent vers la scène de gameplay principale.
En option, le Serveur de Jeu peut créer et gérer le Backfill et la capacité des joueurs (ajouter ou remplacer des joueurs qui partent).
Assurez-vous que votre déploiement sera arrêté correctement en utilisant l'URL DELETE_INJECTED, si :
aucun joueur ne rejoint le match,
tous les joueurs ont quitté le match,
le match se termine correctement.
Félicitations, vous avez terminé l'intégration du Matchmaker Edgegap ! Si vous souhaitez en savoir plus, lisez tout à ce sujet dans notre Centre d'Apprentissage.
Écrit par
l'équipe Edgegap
