
Comment ajouter un matchmaking à un jeu multijoueur PvE
Le matchmaker 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 PvE.
C'est également le seul système de matchmaking (à notre connaissance) avec des règles de matchmaking basées sur la latence pour fournir l'expérience multijoueur en ligne idéale pour votre jeu, quelle que soit la plateforme (Unity, Unreal, etc.) ou les services de jeu (EOS, UGS, PlayFab, Heroic Labs Nakama, Braincloud, etc.).
Comme notre matchmaker 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 besoin, nos guides d'intégration vous accompagnent à chaque étape.
Lorsque votre jeu est en ligne, comme notre système de matchmaking est entièrement géré, vous n'avez pas besoin de vous occuper de l'infrastructure, des bogues, des pannes, de la scalabilité ou de la gestion de la base 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 PvE
-> Cet article est basé sur la documentation sur le matchmaking. Si vous rencontrez des problèmes ou des incohérences, assurez-vous de vous référer au guide original, car il est plus souvent mis à jour.
L'exemple suivant vous aidera à tester le flux de joueurs de base du matchmaking, à savoir :
Créer l'instance du matchmaking sur le cluster d'hébergement partagé,
Définir des règles et paramètres dans votre configuration de matchmaking,
Et enfin, tester le flux de joueurs et gérer les tickets de joueur avec notre API.
Il y a cinq étapes pour implémenter notre matchmaking dans votre jeu :
La première étape consiste à créer un compte et à utiliser notre exemple de jeu PvE. Voilà, vous êtes (techniquement) à mi-chemin ! Vous n’auriez qu’à intégrer le matchmaking dans votre jeu (voir étape 5).
Maintenant, vous ne devez jamais suivre aveuglément un exemple JSON que vous avez 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 explique la fonction de chaque fonction de règles de matchmaking (“Explorer la configuration”).
L'étape 3 (“Revoir les détails de l'instance”) couvre votre matchmaker personnel et spécifique pour s'assurer qu'il est déployé et fonctionne avec le design de votre jeu.
L'étape 4, comme le nom l'indique (“4. Tester l'API des tickets”), concerne le test des demandes de matchmaking de joueurs reçues par le matchmaking, appelées tickets.
L'étape 5 (“Intégrer le matchmaking dans votre jeu”) souligne comment intégrer le matchmaking dans le projet de votre moteur.
Si vous avez des défis de dépannage, notre Centre d'apprentissage approfondi a des conseils supplémentaires de dépannage.
1. Configuration du niveau gratuit
Inscrivez-vous pour votre compte Edgegap gratuit, et naviguez vers la page du tableau de bord du matchmaking.
À partir de là, cliquez d'abord sur Créer un matchmaking , puis saisissez :
Un nom pour votre matchmaking – qui est uniquement pour votre propre référence, par exemple
quickstart-dev
,Ensuite, téléchargez l'exemple simple suivant comme un fichier de configuration JSON ci-dessous pour votre jeu PvE :
(petit rappel pour s'assurer de changer l'application name
et version
pour correspondre à votre Application et Versions!)
S’il n’y a pas d’erreurs de validation, appuyez sur Créer et démarrer et attendez que le processus soit terminé. Cela résultera en un nouveau cluster gratuit démarrant, avec votre exemple simple de matchmaking.
Vous pouvez désormais passer à l'étape suivante.
2. Explorer la configuration
Règles de jeu multijoueur PvE uniques
Spécifiquement pour les jeux PvE, vous pouvez définir plusieurs profils de matchmaking pour les règles et paramètres spécifiques aux modes de jeu :
laisser les joueurs donner leurs préférences de carte et choisir une carte adaptée à tous,
laisser les joueurs choisir une difficulté de jeu particulière pour s'adapter au niveau de compétence de chacun,
restreindre la différence de niveau des joueurs pour aligner les joueurs avec un degré de progression similaire,
Rejoindre en groupe pour des lobbies pré-faits ou pour remplir des équipes sans dépasser les tailles d'équipes,
permettre une latence plus élevée pour préférer des matchs plus rapides avec de meilleures préférences granulaires des joueurs,
allouer plus de CPU ou de mémoire en utilisant différentes 🏷️ Versions d'application lorsque plus de joueurs sont autorisés.
Commencez avec les conditions idéales, et élargissez les restrictions pour assurer des matchs rapides :
relâcher les restrictions de latence au fil du temps pour trouver plus de joueurs,
diminuer lentement la taille de l'équipe pour nécessiter moins de joueurs et commencer le jeu plus tôt,
optionnellement, vous pouvez laisser le serveur remplir les emplacements vides avec des coéquipiers IA,
augmenter lentement la différence de niveau des joueurs autorisée pour trouver plus de joueurs,
si aucun coéquipier n'est trouvé, lancez le jeu en solo et utilisez Backfill pour ajouter des joueurs par la suite.
Versionnement sémantique
Lorsque nous publions des mises à jour pour le matchmaking, chaque nouvelle version utilise le versionnement sémantique pour communiquer clairement l'impact des changements en interprétant le format major.minor.patch
:
les versions
majeures
incluent des changements majeurs et nécessitent une révision d'intégration,les versions
mineures
incluent des améliorations substantielles rétro-compatibles,les versions
patch
incluent des corrections de bugs et des améliorations mineures.
Certaines déploiements peuvent entraîner des erreurs. Nous essayons de résoudre cela en tentant de redéployer jusqu'à max_deployment_retry_count
fois automatiquement (sans confirmation du client).
Pour garantir que les plantages imprévus du client ou les tickets abandonnés nePersistent ne prennent pas de ressources de votre matchmaking, les tickets seront annulés après ticket_expiration_period
ce qui changera leur statut en CANCELLED
et seront ensuite supprimés de manière permanente après ticket_removal_period
.
Le cœur de notre logique de matchmaking est configuré dans profils de matchmaking. Chaque profil est une file d'attente de matchmaking complètement isolée, pointant vers versions d'application avec une quantité prédéfinie de ressources CPU et mémoire nécessaires (RAM).
Les règles de matchmaking dans l'ensemble de règles initiales doivent être respectées pour que les joueurs soient regroupés, chacune définie par trois propriétés :
nom de votre choix, par exemple -
taille d'équipe
,type de règle, également connu sous le nom d'opérateur, par exemple -
nombre_de_joueurs
,et enfin les attributs de l'opérateur, par exemple
nombre_d'équipes
outaille_d'équipe
.
Règle sur le nombre de joueurs
C'est une règle spéciale définissant combien de joueurs doivent correspondre pour initier une assignation :
nombre_d'équipes
fait référence au nombre d'équipes, 1 équipe pouvant être utilisée pour des modes coopératifs ou en free-for-all,taille_d'équipe
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 obligatoire 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) contre tous les beacons disponibles, Gen2 ne considérera que les matchs dans une différence
spécifique dans les valeurs de ping, mesurée par rapport à Ping Beacons. Cela présente une solution “douce” pour diviser votre base de joueurs, permettant le matching avec des régions voisines, améliorant ainsi la vitesse des matchs pour les régions moins peuplées. Utilisez max_latency
pour empêcher le matching avec des joueurs situés loin.
Vous pouvez désormais passer à l'étape suivante.
Notre exemple de règles de beacons
ci-dessus avec "difference": 50, "max_latency": 200
initialement :
Alice et Bob seront associés, puisque Beijing est rejeté (>200) et le reste est dans | A-B | < 50 :
Alice {Montréal: 12.3, Newark: 45.6, Dallas: 59.9, Beijing: 264.4}; et
Bob {Montréal: 27.3, Newark: 32.4, Dallas: 23.1, Beijing: 252.2}.
Charlie et Dave ne seront pas associés, puisque | C-D | > 50 pour le beacon de Dallas :
Alice {Montréal: 5.7 Newark: 44.2, Dallas: 59.5, Beijing: 263.2}; et
Bob {Montréal: 57.8, Newark: 32.0, Dallas: 24.2, Beijing: 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. Revoir les détails de l'instance
Consultez les détails de votre nouveau matchmaking dans notre tableau de bord une fois qu'il est initialisé :

Statut indique la santé du service, peut être EN LIGNE, HORS LIGNE ou ERREUR.
Identifiant aide le personnel d'Edgegap à trouver votre matchmaking rapidement si vous avez besoin d'aide pour le dépannage.
Démarré à peut être utile pour suivre la dernière heure de mise à jour.
Taille correspond à l'une de nos gammes de prix.
URL de l'API sera utilisée par les clients de jeu et les serveurs de jeu pour communiquer avec Gen2.
URL Swagger est une interface utilisateur de spécification openAPI pratique que nous fournissons pour explorer le schéma de l'API.
Token d'authentification est un token secret unique utilisé par les clients de jeu et les serveurs de jeu pour l'authentification.
Pour tester votre nouveau matchmaking en utilisant l'API, vous aurez besoin de l'URL Swagger, de l'URL de l'API et du token d'authentification.
Vous pouvez désormais passer à l'étape suivante.
4. Tester l'API des tickets
Tout d'abord, ouvrez votre URL Swagger pour inspecter 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 Collection Postman séléctionnée,
séléctionnez Afficher les paramètres d'importation et changez le paramètre Génération de paramètres en Exemple.
Confirmez l'import, cela résulta en une nouvelle collection apparaissant 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 ici votre AuthToken valeur,
Ajouter à - En-tête.
Appuyez sur (CTRL/CMD+S
) ou sur l'icône de sauvegarde pour sauvegarder les modifications. Le point orange dans votre onglet Postman devrait disparaître.
Dans votre collection de matchmaking, sélectionnez tickets et Créer un ticket de matchmaking, en ouvrant un nouvel onglet.
Sélectionnez l'onglet Corps pour prévisualiser votre demande de ticket de joueur :
remarquez que player_ip
est défini sur null
- cela fera en sorte que l'adresse IP soit automatiquement ajoutée à votre demande (voir L'intégration serveur à serveur pour les alternatives),
profile
fait référence à vos profils de matchmaking,attributes
inclut des valeurs pour vos règles de matchmaking, dans ce cas pour la règlelatences
,la règle
player_count
est la seule règle qui ne nécessite aucun attribut dans les tickets de joueur.
NOTE: Assurez-vous de vous référer à la configuration d'importation d'exemple de Swagger.
Cliquez sur Envoyer et examinez la réponse à votre demande de ticket de joueur :
id
est votre ID de ticket de matchmaking unique, conservez-le pour vérifier votre ticket plus tard,profile
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 un matchmaking avec vos amis ou des lobbies,
player_ip
est l'adresse IP publique résolue du joueur, quel que soit le mode d'identification utilisé,assignment
est défini sur null pour indiquer que le ticket n'a pas encore été associé ou attribué à un serveur,created_at
fournit des informations sur quand le ticket de joueur a été créé pour l'utilisation dans l'interface de jeu,status
indique l'état actuel du ticket, tous les tickets commencent enRECHERCHE
(voir Processus de matchmaking pour plus de détails).
Créez un second ticket en appuyant à nouveau sur Envoyer, de sorte que nos deux joueurs s'associent et qu'un serveur soit démarré.
Dans votre collection de matchmaking, sélectionnez {ticketId} et Lire un ticket de matchmaking.
Entrez l'ID de ticket de la réponse à l'étape précédente et cliquez sur Envoyer.

Examinez l'assignation mise à jour pour votre ticket de joueur :
le statut est passé à
MATCH_FOUND
au départ, tout en maintenantassignment
défini surnull
pour indiquer que les joueurs ont été associés et qu'un serveur est en cours d'assignation,

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

Essayez de vous connecter depuis votre client de jeu au serveur attribué.
Une fois que vous vérifiez que vous pouvez vous connecter à votre déploiement sans problèmes et que vous avez terminé les tests, Arrêtez votre déploiement pour libérer de la capacité dans votre compte pour la prochaine construction.
Vous pouvez désormais passer à l'étape suivante.
5. Intégrer le matchmaking dans votre jeu
Le matchmaking d'Edgegap s'intègre :
avec Client de jeu, pour gérer les tickets de joueur,
avec Serveur de jeu, pour :
traiter les préférences des joueurs transmises par leurs tickets,
optionnellement pour prendre en charge Backfill pour ajouter ou remplacer des joueurs après le démarrage.
Pour le Client de jeu, nous recommandons de fournir des mises à jour sur l'état des tickets tout au long du processus de matchmaking aux joueurs en utilisant l'interface utilisateur dans le jeu pour la meilleure expérience des joueurs. Voir :
Edgegap - SDK de matchmaking Unity Gen2,
importez un exemple simple et personnalisez-le selon vos besoins,
Betide Studio - Kit d'intégration Unreal Engine Edgegap,
téléchargez le projet exemple et personnalisez-le selon vos besoins.
Dans le 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 de service temporaire.
Dans le 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 à la version, les réglages (capacité des joueurs) et les secrets.
Lire les variables d'environnement injectées (déploiement) pour des informations de 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émarrent une scène de chargement pour effectuer des étapes de synchronisation (par exemple sélectionner et charger une carte/scène/niveau). Nous recommandons une scène 3D complète, 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 que les clients de jeu sont complètement chargés, les joueurs chargent/voyagent vers la scène de jeu principale.
Optionnellement, le serveur de jeu peut créer et gérer Backfill et la capacité des joueurs (ajouter ou remplacer les joueurs qui quittent).
Assurez-vous que votre déploiement sera arrêté correctement en utilisant Injected DELETE_URL, 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 matchmaking d'Edgegap ! Si vous souhaitez en savoir plus, lisez tout à ce sujet dans notre Centre d'apprentissage.
Écrit par
l'équipe Edgegap
