
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, veuillez vous assurer de vous référer au guide original, car ils sont plus souvent mis à jour.
L'exemple suivant vous aidera à tester le flux de joueurs de base matchmaking , à savoir :
Créer l'instance de matchmaking sur le cluster d'hébergement,
Définir les règles et les paramètres dans la configuration du matchmaking,
Et enfin, tester le flux des joueurs et gérer les tickets des joueurs avec notre API.
Il y a cinq étapes pour mettre en œuvre notre matchmaking dans 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-parcours ! Vous n'auriez qu'à intégrer le matchmaking dans votre jeu (voir l'étape 5).
Maintenant, vous ne devriez jamais suivre aveuglément un exemple JSON trouvé sur Internet, 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 détaille le fonctionnement de chaque règle 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 la conception de votre jeu.
L'étape 4, comme son nom l'indique (“4. Tester l'API des tickets”), concerne le test de vos demandes de matchmaking provenant des joueurs reçues par le matchmaker, appelées tickets.
L'étape 5 (“Intégrer le matchmaking dans votre jeu”) met en évidence comment intégrer le matchmaking dans le projet de votre moteur.
Si vous avez des problèmes de dépannage, notre Centre d'apprentissage approfondi dispose de conseils supplémentaires de dépannage.
1. Configuration du niveau gratuit
Inscrivez-vous pour votre compte gratuit Edgegap, et naviguez vers la page du tableau de bord de matchmaking.
À partir de là, cliquez d’abord sur Créer le matchmaking , puis saisissez :
Un nom pour votre matchmaking – qui est purement pour votre propre référence, par exemple
quickstart-dev
,Ensuite, téléchargez l'exemple simple suivant en tant que configuration JSON ci-dessous pour votre jeu de tir :
(rappel amical pour s'assurer de changer le nom
et la version
de l'application pour correspondre à votre Application et Versions!)
S'il n'y a pas d'erreurs de validation, cliquez sur Créer et démarrer et attendez la fin du processus. Cela entraînera le démarrage d'un nouveau cluster gratuit, avec votre matchmaker Simple Exemple.
Vous pouvez maintenant procéder à l'étape suivante.
2. Explorer la configuration
Règles uniques pour les jeux de tir
Spécifiquement pour les jeux de sport, vous pouvez définir plusieurs Profils de matchmaking pour des règles et des paramètres de modes de jeu spécifiques :
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 des adversaires ayant le même classement pour des jeux classés,
permettre aux joueurs de fournir leurs préférences de carte et de choisir une carte adaptée à tous,
ajouter une interface utilisateur de sélection de hub pour restreindre les adversaires à des balises de ping spécifiées,
restreindre la latence de matchmaking à un seuil maximum pour éviter de jumeler des joueurs éloignés,
restreindre la latence de matchmaking à une différence maximale pour maximiser l'équité de ping,
allouer plus de CPU ou de mémoire en utilisant différentes Versions d'applications lorsque plus de joueurs sont autorisés,
Rejoindre en tant que groupe pour des salons préfabriqués ou pour remplir des équipes sans dépasser les tailles d'équipe.
Commencez avec les conditions idéales, et élargissez les restrictions pour assurer des matchs rapides :
détendez progressivement 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 classements les plus élevés (challengers), car moins de joueurs sont disponibles.
Créez des tickets avec un classement plus élevé pour les matchs de promotion, afin de faire face à des adversaires plus difficiles.
Définissez des profils de tricheurs séparés pour vous assurer que les tricheurs signalés ou les joueurs ayant un grand nombre de rapports de modération n'impactent pas négativement l'expérience des joueurs légitimes dans des 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.mineur.patch
:
majeur
les versions incluent des changements de rupture et nécessitent une révision d'intégration,mineur
les versions incluent des améliorations substantielles et compatibles avec les versions précédentes,patch
les versions incluent des corrections de bogues et des améliorations mineures.
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 garantir que les pannes inattendues du client ou les tickets abandonnés ne persistent pas et n'occupent pas les ressources de votre matchmaking, les tickets seront annulés après ticket_expiration_period
ce qui entraîne un changement de statut en ANNULÉ
et seront ensuite supprimés définitivement 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'applications avec un montant prédéfini 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, chacune définie par trois propriétés :
nom de votre choix, par exemple -
taille de regroupement
,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 de Nombre de Joueurs
C'est une règle spéciale définissant combien de joueurs doivent correspondre pour initier l'attribution :
nombre_d'équipes
fait référence au nombre d'équipes, 1 équipe peut ê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 peut seulement être définie une fois dans vos règles de configuration initiales.
Règle des Latences
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 de parcours aller-retour (ping) contre toutes les balises disponibles, Gen2 ne considérera que les correspondances dans une differente
valeur de ping spécifique, mesurée par rapport à balises de ping. Cela propose une solution "souple" pour scinder votre base de joueurs, permettant de jumeler avec des régions voisines, améliorant particulièrement la vitesse des matchs pour les régions moins peuplées. Utilisez max_latency
pour prévenir le jumelage contre des joueurs situés trop loin.
Vous pouvez maintenant procéder à l'étape suivante.
Notre exemple balises
de règle ci-dessus avec "difference": 50, "max_latency": 200
initialement :
Alice et Bob se jumelleront, car Pékin 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 se jumelleront pas, 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 les "Règles de Latences" peuvent seulement être définies une fois dans vos règles de configuration initiales.
3. Revoir les détails de l'instance
Revoyez 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 à retrouver rapidement votre matchmaking si vous avez besoin d'aide pour le dépannage.
Commencé à peut être utile pour suivre l'heure de la dernière mise à jour.
Taille correspond à l'un de nos Niveaux tarifaires.
API URL sera utilisée par les clients de jeu et les serveurs de jeu pour communiquer avec Gen2.
Swagger URL est une spécification GUI openAPI pratique que nous proposons pour explorer le schéma de l'API.
Token d'authentification est un jeton secret unique utilisé par les clients de jeu et le serveur de jeu pour l'authentification.
Pour tester votre nouveau matchmaking à l'aide de l'API, vous aurez besoin de l'URL Swagger, de l'URL de l'API et du token d'authentification.
Vous pouvez maintenant procéder à 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
du pas précédent :
gardez Postman Collection sélectionné,
séléctionnez Voir les paramètres d'importation et changez les paramètres Génération des 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'authentification - Clé API,
Clé - “Autorisation”
Valeur - insérez votre valeur de token d'authentification ici,
Ajouter à - en-tête.
Pressez (CTRL/CMD+S
) ou 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, ouvrant un nouvel onglet.
Sélectionnez l'onglet Corps pour prévisualiser votre demande de ticket joueur :
notez que player_ip
est défini sur null
- cela entraînera l'utilisation de l'adresse IP automatiquement ajoutée à votre demande (voir Intégration Serveur à Serveur pour des alternatives),
profil
se réfère à vos Profils de matchmaking,attributs
incluent des valeurs pour vos règles de matchmaking, dans ce cas pour la règlelatences
,la règle
nombre_de_joueurs
est la seule règle qui ne nécessite aucun attribut dans les tickets des joueurs.
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 votre ID de ticket de matchmaking unique, gardez-le sauvegardé pour consulter votre ticket plus tard,profil
confirmant le choix des Profils de matchmaking,group_id
est un ID de groupe unique attribué à chaque ticket, un joueur solo est représenté comme un groupe de 1,voir Rejoindre en tant que groupe pour le matchmaking avec vos amis ou des salons,
player_ip
est l'adresse IP publique résolue du joueur, quel que soit le méthode d'identification utilisée,assignment
est défini sur null pour indiquer que le ticket n'a pas encore été jumelé ou attribué à un serveur,created_at
fournit des informations sur le moment où le ticket joueur a été créé pour une utilisation dans l'interface utilisateur du jeu,status
indique le statut actuel du ticket, tous les tickets commencent enRECHERCHE
(voir Processus de matchmaking pour plus de détails).
Créez un deuxième ticket en cliquant à nouveau sur Envoyer pour que nos deux joueurs se jumellent et qu'un serveur soit démarré.
Dans votre collection de matchmaking, sélectionnez {ticketId} et Lire un ticket de matchmaking.
Saisissez l'ID du ticket de la réponse de l'étape précédente et cliquez sur Envoyer.

Revoyez l'attribution mise à jour pour votre ticket joueur :
le statut a changé en
MATCH_FOUND
au départ, tout en maintenantassignment
défini surnull
pour indiquer que les joueurs ont été jumelés et qu'un serveur est en cours d'attribution,

Cliquez à nouveau sur Envoyer pour vérifier votre ticket et revoir l'attribution mise à jour pour votre ticket joueur :
le statut a changé en
HOST_ASSIGNED
avecassignment
contenant les détails du serveur assigné.
Inspectez votre nouveau déploiement dans notre tableau de bord :
notez que chaque déploiement est tagué avec tous les IDs de tickets et le profil pour une traçabilité ajoutée.

Essayez de vous connecter depuis votre client de jeu au serveur assigné.
Une fois que vous vérifiez que vous pouvez vous connecter à votre déploiement sans problèmes et que vous avez fini les tests, arrêtez votre déploiement pour libérer de la capacité dans votre compte pour le prochain build.
Vous pouvez maintenant procéder à l'étape suivante.
5. Intégrer le matchmaking dans votre jeu
Le matchmaking d'Edgegap s'intègre :
avec le client de jeu, pour gérer les tickets des joueurs,
avec le serveur de jeu, pour :
traiter les préférences des joueurs passées par leurs tickets,
optionnellement 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 de ticket tout au long du processus de matchmaking pour les joueurs à l'aide de l'interface utilisateur du jeu pour la meilleure expérience joueur. Voir :
Edgegap - SDK de matchmaking Unity Gen2,
importer l'exemple simple et personnaliser selon vos besoins,
Betide Studio - Kit d'intégration Unreal Engine Edgegap,
télécharger le projet exemple et personnaliser 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 temporaire du service.
Dans le serveur de jeu, traiter les préférences des joueurs et le contexte initial du serveur. Aucune intégration de l'API n'est requise :
Lire les variables d'environnement injectées (Gen2) pour récupérer les données de matchmaking des joueurs initiales.
Lire les variables d'environnement injectées (Versions d'applications) 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 encore.
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 les étapes de synchronisation (par exemple, sélectionner et charger une carte/scène/niveau). Nous recommandons une scène 3D complète, une interface 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 totalement chargés, les joueurs chargent/voyagent vers la scène principale de gameplay.
Optionnellement, le serveur de jeu peut créer et gérer le remplissage et la capacité des joueurs (ajouter ou remplacer des joueurs qui quittent).
Assurez-vous que votre déploiement sera arrêté correctement à l'aide de 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 matchmaker d'Edgegap ! Si vous souhaitez en savoir plus, lisez tout à ce sujet dans notre Centre d'apprentissage.
Écrit par
l'équipe Edgegap
