
Comment ajouter un système de matchmaking à un jeu de tir multijoueur
Le moteur 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 de tir multijoueur.
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 idéale de multijoueur en ligne pour votre jeu, quelle que soit l'interface (Unity, Unreal, etc.) ou les services de jeu (EOS, UGS, PlayFab, Heroic Labs Nakama, Braincloud, etc.).
Comme notre moteur 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 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 gérer l'infrastructure, les bogues, les pannes, la scalabilité ou 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 de tir multijoueur
-> Cet article est basé sur la documentation de Matchmaking. Si vous rencontrez des problèmes ou des incohérences, assurez-vous de vous référer au guide original, car ils sont plus fréquemment mis à jour.
L'exemple suivant vous aidera à tester le flux principal de joueur matchmaking , à savoir :
Créer l'instance du matchmaker sur le Cluster d'Hébergement partagé,
Définir les règles et paramètres dans votre Configuration du matchmaker,
Et enfin, tester le flux de joueurs et gérer les Tickets Joueur avec notre API.
Il y a cinq étapes pour implémenter notre matchmaker dans votre jeu :
La première étape est de créer un compte et d'utiliser notre exemple de jeu de stratégie. Voilà, vous êtes (techniquement) à mi-chemin ! Vous n'auriez qu'à intégrer le matchmaker dans votre jeu (voir étape 5).
Maintenant, vous ne devriez 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 de tir. 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 (« Examiner les Détails de l'Instance ») concerne votre matchmaker personnel et spécifique pour s'assurer qu'il soit déployé et fonctionne avec le design de votre jeu.
L'étape 4, comme son nom l'indique (« 4. Tester l'API des Tickets »), est entièrement axée sur le test de vos demandes de matchmaking reçues 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 défis de dépannage, notre Centre d'Apprentissage approfondi contient des conseils supplémentaires de dépannage.
1. Configuration du Niveau Gratuit
Inscrivez-vous pour votre compte gratuit Edgegap et accédez à la page Tableau de Bord du Matchmaker.
À partir de là, cliquez d'abord sur Créer un Matchmaker, puis saisissez :
Un nom pour votre matchmaker – qui est uniquement pour votre référence personnelle, par exemple
quickstart-dev,Ensuite, téléchargez l'exemple simple suivant en tant que configuration JSON ci-dessous pour votre jeu de tir :
(gentil rappel de bien vouloir modifier le nom de l'application et version pour correspondre à vos Applications et Versions!)
Si aucune erreur de validation n'apparaît, cliquez sur Créer et Démarrer et attendez que le processus soit terminé. Cela entraînera le démarrage d'un nouveau cluster gratuit, avec votre matchmaker Exemple Simple.
Vous pouvez maintenant passer à l'étape suivante.
2. Explorer la Configuration
Règles Uniques de Jeu de Tir
Spécifiquement pour les jeux de sport, vous pouvez définir plusieurs profils de matchmaking pour des règles et paramètres spécifiques aux modes de jeu :
restreindre le classement à une différence entre deux joueurs pour des jeux plus décontractés,
restreindre la différence de classement 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 à desbalises de ping spécifiées,
restreindre la latence du matchmaking à un seuil maximal pour éviter de faire correspondre les joueurs éloignés,
restreindre la latence du matchmaking à une différence maximale pour maximiser l'équité du ping,
allouer plus de CPU ou de mémoire en utilisant différentes versions d'applications lorsqu'un plus grand nombre de joueurs est autorisé,
Rejoindre en Groupe pour des lobbies préfabriqués ou pour remplir des équipes sans dépasser les tailles d'équipe.
Commencez avec les conditions idéales, et développer des restrictions pour garantir des correspondances rapides :
desserrez lentement les restrictions de latence avec le temps pour trouver plus de joueurs,
augmentez progressivement la différence de classement autorisée pour trouver plus de joueurs,
augmentez le temps entre les expansions pour les classes les plus élevées (défis), car moins de joueurs sont disponibles.
Créez des tickets avec un rang plus élevé pour des promotions, pour correspondre à des adversaires plus coriaces.
Définir des profils de tricheurs séparés pour s'assurer que les tricheurs signalés ou les joueurs avec une grande quantité de rapports de modération n'impactent pas négativement l'expérience des joueurs légitimes dans les matches classés.
Gestion Sémantique des Versions
Chaque nouvelle version utilise la Gestion Sémantique des Versions pour clairement communiquer l'impact des changements en interprétant le format major.minor.patch :
majorversions incluent des changements importants qui nécessitent un examen de l'intégration,minorversions incluent des améliorations importantes compatibles avec l'arrière,patchversions incluent des corrections de bugs et des améliorations mineures.
Certainesdéploiements peuvent entraîner des erreurs. Nous tentons de résoudre ce problème en réessayant le déploiement jusqu'à max_deployment_retry_countfois automatiquement (sans confirmation du client).
Pour garantir que les crashs clients inattendus ou les tickets abandonnés ne persistent pas et n'occupent pas vos ressources de matchmaker, les tickets seront annulés après ticket_expiration_period provoquant leur statut à changer en CANCELLED et ensuite être définitivement supprimé après ticket_removal_period.
Le cœur de notre logique de matchmaking est configuré dansProfils de Matchmaking. Chaque profil est une file d'attente de matchmaking complètement isolée, pointant versVersions d'Applications avec un montant prédéfini de ressources CPU et mémoire (RAM) requises.
Règles de Matchmaking dans l'ensemble de règles initiales doivent être remplies pour que les joueurs soient regroupés ensemble, chaque règle définie par trois propriétés :
nom de votre choix, par ex. -
taille du 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_d'équipesoutaille_d'équipe.
Règle de Nombre de Joueurs
Ceci est une règle spéciale définissant combien de joueurs doivent correspondre pour initier l'attribution :
nombre_d'équipesse réfère au nombre d'équipes, une équipe peut être utilisée pour les modes coopératifs ou chacun pour soi,taille_d'équipese réfère 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 fois dans vos règles de configuration initiales.
Règle de Latences
Utilisez cette règle pour fournir le plus bas ping possible à tous les joueurs. Une fois que les clients mesurent et soumettent leur temps de voyage aller-retour (ping) contre toutes les balises disponibles, Gen2 ne considérera que les matchs à l'intérieur d'une différence spécifique dans les valeurs de ping, mesurée contreBalises de Ping. Cela présente une solution « douce » pour diviser votre base de joueurs, permettant de faire correspondre les régions voisines, en améliorant surtout la vitesse du match pour les régions moins peuplées. Utilisezmax_latency pour éviter de faire correspondre des joueurs situés loin.
Vous pouvez maintenant passer à l'étape suivante.
Notre exemple de règle balises ci-dessus avec "différence": 50, "max_latency": 200initialement :
200) et le reste est à l'intérieur | A-B | >Alice et Bob seront appariés, puisque Pékin est écarté (>200) et le reste est à l'intérieur | 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}.
200) et le reste est à l'intérieur | A-B | >
Charlie et Dave ne seront pas appariés, car | 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 "Règles de Latences "ne peuvent être définies qu'une 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é :

Statut indique la santé du service, peut être EN LIGNE, HORS LIGNE, ou ERREUR.
Identifiant aide le personnel de Edgegap à trouver votre matchmaker rapidement si vous avez besoin d'aide pour le dépannage.
Commencé à peut être utile pour suivre le temps de mise à jour le plus récent.
Taille correspond à l'un de nospaliers 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.
Jeton d'Authentification est un jeton secret unique utilisé par les Clients de Jeu et les Serveurs de Jeu pour l'authentification.
Pour tester votre nouveau matchmaker en utilisant l'API, vous aurez besoin de l'URL Swagger, de l'URL de l'API et du Jeton d'Authentification.
Vous pouvez maintenant 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 :
garder Collection Postman sélectionnée,
séléctionnez Afficher les Paramètres d'Importation et modifiez le paramètre Génération de paramètre en Exemple.
Confirmez l'importation, cela entraînera l'apparition d'une nouvelle collection dans la liste des Collections sur la gauche, intitulée Matchmaker.

Voir plus d'actions, ouvrez l'onglet Autorisation et choisissez :
Type d'authentification - Clé API,
Clé - “Autorisation”
Valeur - insérez ici votre valeur de AuthToken,
Ajouter à - En-tête.
Appuyez sur (CTRL/CMD+S) ou l'icône de sauvegarde pour enregistrer les modifications. Le point orange dans votre onglet Postman devrait disparaître.
Dans votre collection Matchmaker, sélectionnez tickets et Créer un ticket de matchmaking, ouvrant un nouvel onglet.
Sélectionnez l'onglet Corps pour prévisualiser votre demande de ticket joueur :
remarquez player_ip défini sur null - cela utilisera l'adresse IP automatiquement ajoutée à votre demande (voir Intégration Serveur à Serveur pour les alternatives),
profilse réfère à votre Profils de Matchmaking,attributsincluent des valeurs pour vos règles de matchmaker, dans ce cas pour la règlelatences,la règle
nombre_de_joueursest la seule règle qui ne nécessite aucun attribut dans les tickets joueur.
REMARQUE : Assurez-vous de vous référer à la configuration d'importation du Swagger de l'exemple.
Cliquez sur Envoyer et examinez la réponse à votre demande de ticket joueur :
idest votre ID de ticket de matchmaking unique, gardez-le enregistré pour vérifier votre ticket plus tard,profilconfirmant le choix de Profils de Matchmaking,group_idest un ID de groupe unique émis pour chaque ticket, un joueur solo est représenté comme un groupe de 1,voir Rejoindre en Groupe pour le matchmaking avec vos amis ou les lobbies,
player_ipest l'adresse IP publique résolue du joueur, quelle que soit la méthode d'identification utilisée,assignmentest défini à null pour indiquer que le ticket n'a pas encore été apparié ou attribué à un serveur,created_atfournit des informations sur quand le ticket joueur a été créé pour l'usage de l'interface utilisateur du jeu,statusindique l'état actuel du ticket, tous les tickets commencent àCHERCHANT(voir Processus de Matchmaking pour les détails).
Créez un deuxième ticket en cliquant sur Envoyer à nouveau, afin que nos deux joueurs s'associent et qu'un serveur soit démarré.
Dans votre collection Matchmaker, 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 joueur :
le statut est passé à
MATCH_TROUVÉd'abord, tout en gardantassignmentdéfini ànullpour indiquer que les joueurs ont été appariés et qu'un serveur est en cours d'attribution,

Cliquez sur Envoyer à nouveau pour vérifier votre ticket, et examinez l'assignation mise à jour pour votre ticket joueur :
statut changé à
HÔTE_ATTRIBUÉavecassignmentcontenant les détails du serveur attribué.
Examinez votre nouveau déploiement dans notre tableau de bord :
notez que chaque déploiement est étiqueté avec tous les IDs de tickets et profil pour une traçabilité accrue.

Essayez de vous connecter depuis votre client de jeu au serveur attribué.
Une fois que vous avez vérifié 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 des capacités sur votre compte pour la prochaine version.
Vous pouvez maintenant passer à l'étape suivante.
5. Intégrer le Matchmaker dans votre Jeu
L'intégration du matchmaking d'Edgegap :
avec Client de Jeu, pour gérer les Tickets Joueur,
avec Serveur de Jeu, pour :
traiter les préférences des joueurs transmises via leurs tickets,
facultativement pour prendre en charge le Remplissage pour ajouter ou remplacer des joueurs après le démarrage.
Pour le Client de Jeu, nous recommandons de fournir des mises à jour de statut des tickets tout au long du Processus de Matchmaking aux joueurs en utilisant l'interface utilisateur en jeu pour la meilleure expérience possible. Voir :
Edgegap - SDK Unity Gen2 Matchmaking,
importer un exemple simple et personnaliser selon vos besoins,
Betide Studio - Kit d'Intégration d'Unreal Engine Edgegap,
télécharger un projet exemple et le personnaliser selon vos besoins.
Dans le Client de Jeu, assurez-vous de gérer les erreurs non admissibles :
HTTP 404 Pas Trouvé- le ticket a été supprimé,HTTP 500 Erreur Interne du Serveur- panne de service temporaire.
Dans le Serveur de Jeu, traiter les préférences des joueurs et le contexte initial du serveur. Aucune intégration API requise :
Lisez les Variables d'Environnement Injectées (Gen2) pour récupérer les données de matchmaking initiales des joueurs.
Lisez les Variables d'Environnement Injectées (Versions d'Applications) pour les paramètres spécifiques à la version, les paramètres (capacité des joueurs) et les secrets.
Lisez les Variables d'Environnement Injectées (Déploiement) pour obtenir des informations de déploiement, telles que l'adresse IP, l'emplacement, ou plus.
Une fois que les joueurs se connectent, Serveur de Jeu et Clients de Jeu commencent une scène de chargement pour effectuer des étapes de synchronisation (par ex. sélectionner et charger une carte/scène/niveau). Nous recommandons une scène 3D complète, une interface utilisateur sociale de type lobby, 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 entièrement chargés, les joueurs chargent/voyagent vers la scène principale du jeu.
Optionnellement, le Serveur de Jeu peut créer et gérer le Remplissage 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 de SUPPRESSION Injectée, 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 d'Edgegap Matchmaker! Si vous souhaitez en savoir plus, lisez tout à ce sujet dans notre Centre d'Apprentissage.
Écrit par
l'équipe Edgegap








