Comment ajouter un matchmaking à un jeu multijoueur décontracté

Principales informations

Principales informations

Principales informations

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 décontracté.

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, quel que soit le moteur (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 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 bogues, les pannes, l'évolutivité ou la gestion de 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 dans votre jeu multijoueur occasionnel

-> Cet article est basé sur la documentation de Matchmaking. Si vous rencontrez des problèmes ou des divergences, assurez-vous de vous référer au guide original, car il est plus fréquemment mis à jour.

L'exemple suivant vous aidera à tester le flux de joueurs de base de matchmaking , à savoir :

Il y a cinq étapes pour implémenter notre matchmaker dans votre jeu :

  1. La première étape consiste à créer un compte et utiliser notre exemple de jeu occasionnel. Voilà, vous avez (techniquement) fait la moitié du chemin ! Il ne vous reste qu'à intégrer le matchmaker dans votre jeu (voir l'étape 5).

  2. 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 « guide de lecture » qui explique la fonction de chaque fonction de règles de matchmaking (« Explorer la Configuration »).

  3. L'étape 3 (« Examiner les Détails de l'Instance ») couvre votre matchmaker personnel et spécifique pour s'assurer qu'il a bien été déployé et fonctionne avec la conception de votre jeu.

  4. L'étape 4, comme son nom l'indique (« 4. Tester l'API des Tickets »), concerne le test de vos demandes de matchmaking reçues par le matchmaker, appelés tickets.

  5. L'étape 5 (« Intégrer le Matchmaking dans votre Jeu ») met en avant comment intégrer le matchmaker dans le projet de votre moteur de jeu.

Si vous rencontrez des difficultés de dépannage, notre Centre d'Apprentissage en profondeur propose des conseils supplémentaires.

1. Configuration de l'Aperçu Gratuit

Inscrivez-vous pour votre compte gratuit Edgegap, et naviguez vers la page du tableau de bord du Matchmaker.

De là, cliquez d'abord sur Créer un Matchmaker puis saisissez :

  • Un nom pour votre matchmaker – qui est purement pour votre propre référence, par exemple quickstart-dev,

  • Ensuite, téléchargez l'exemple simple suivant comme configuration JSON ci-dessous pour votre jeu occasionnel :

{
  "version": "2.1.0",
  "inspect": true,
  "max_deployment_retry_count": 3,
  "ticket_expiration_period": "5m",
  "ticket_removal_period": "1m",
  "profiles": {
    "social-example": {
      "application": {
        "name": "my-game-server==>CHANGE-THIS",
        "version": "2024.01.30-16.23.00-UTC==>CHANGE-THIS"
      },
      "rules": {
        "initial": {
          "match_size": {
            "attributes": {
              "team_count": 1,
              "team_size": 30
            },
            "type": "player_count"
          },
          "beacons": {
            "attributes": {
              "difference": 80,
              "max_latency": 80
            },
            "type": "latencies"
          },
          "selected_region": {
            "type": "string_equality",
            "attributes": {
              "overlap": 1
            }
          },
          "selected_mode": {
            "type": "intersection",
            "attributes": {
              "overlap": 1
            }
          }
        },
        "expansions": {
          "10": {
            "beacons": {
              "difference": 100,
              "max_latency": 100
            },
            "match_size": {
              "team_count": 1,
              "team_size": 20
            }
          },
          "15": {
            "beacons": {
              "difference": 120,
              "max_latency": 120
            },
            "match_size": {
              "team_count": 1,
              "team_size": 10
            }
          },
          "25": {
            "match_size": {
              "team_count": 1,
              "team_size": 4
            }
          },
          "30": {
            "match_size": {
              "team_count": 1,
              "team_size": 1
            }
          }
        }
      }
    }
  }
}

(rappel amical de bien vouloir vous assurer de changer le  nom de l'application et version pour qu'ils correspondent à votre Application et Versions!)

S'il n'y a pas d'erreurs de validation, appuyez 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 d'exemple simple.

Vous pouvez maintenant passer à l'étape suivante.

2. Explorer la Configuration

Règles uniques pour les jeux multijoueurs occasionnels

Avec une équipe de 1 et une taille d'équipe de 50, 50 joueurs par jeu sont requis (tous les joueurs sont dans la même équipe).

Spécifiquement pour les jeux sociaux, vous pouvez définir des Profils de Matchmaking pour les règles et paramètres spécifiques aux modes de jeu :

  • permettre aux joueurs de donner leurs préférences de mode de jeu et choisir un mode convenable pour tous,

  • Rejoindre en Groupe pour des lobbies préfabriquées ou pour remplir les équipes sans dépasser les tailles d'équipe,

  • ajouter une 🗺️ Interface de Sélection de Région pour restreindre les adversaires aux régions spécifiées,

  • permettre des latences plus élevées pour préférer des matchs plus rapides avec plus de joueurs,

  • allouer plus de CPU ou de mémoire en utilisant différentes 🏷️ Versions de l'App lorsque plus de joueurs sont autorisés.

Étendre les restrictions pour garantir des matchs rapides :

  • détendre rapidement les restrictions de latence pour trouver plus de joueurs,

  • réduire lentement la taille des équipes pour exiger moins de joueurs et commencer le jeu plus tôt,

    • optionnellement, vous pouvez laisser le serveur remplir les emplacements vides avec des joueurs IA,

  • si aucun coéquipier n'est trouvé, lancez le jeu en solo et utilisez le Backfill pour ajouter des joueurs plus tard,

    • cela permettra aux joueurs de rejoindre des matchs existants plutôt que de nouveaux pour maximiser l'interaction sociale.

Versionnage Sémantique

À mesure que nous publions des mises à jour pour le Matchmaker, chaque nouvelle version utilise le Versionnage Sémantique pour communiquer clairement l'impact des changements en interprétant le format major.minor.patch:

  • major les versions majeures incluent des changements incompatibles et nécessitent un examen d'intégration,

  • minor les versions mineures incluent des améliorations importantes rétrocompatibles,

  • patch les versions de correctif incluent des corrections de bogues et des améliorations mineures.

Certaines configurations 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 vous assurer que les plantages inattendus du client ou les tickets abandonnés ne s'attardent pas et n'occupent pas les ressources de votre matchmaker, les tickets seront annulés après ticket_expiration_period ce qui changera leur statut en ANNULÉ puis supprimés définitivement après ticket_removal_period.

Le noyau de notre logique de matchmaking est configuré dans les Profils de Matchmaking. Chaque profil est une file d'attente de matchmaking totalement isolée, pointant vers Versions de l'App avec une quantité prédéfinie de ressources CPU et mémoire (RAM).

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_d'équipes ou taille_d'équipe.

Règle du Nombre de Joueurs

C'est une règle spéciale définissant combien de joueurs doivent correspondre pour initier l'attribution :

  • nombre_d'équipes se réfère au nombre d'équipes, une équipe peut être utilisée pour les modes coopératifs ou chacun pour soi,

  • taille_d'équipe se 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 seule fois dans vos règles de configuration initiales.

Règles de Latences

Utilisez cette règle pour fournir le ping le plus faible possible pour tous les joueurs. Une fois que les clients mesurent et soumettent leur temps de trajet aller-retour (ping) par rapport à tous les beacons disponibles, Gen2 ne considérera que les matchs avec une différence de valeurs de ping spécifique, mesurée par rapport aux Beacons de Ping. Cela présente une solution « souple » pour diviser votre base de joueurs, permettant des correspondances avec les régions voisines, améliorant surtout la vitesse des matches pour les régions moins peuplées. Utilisez latence_maxpour empêcher les matchs contre les joueurs situés loin.

Vous pouvez maintenant passer à l'étape suivante.

Notre exemple beacons de règle ci-dessus avec "différence": 50, "latence_max": 200 initialement :

  • Alice et Bob seront appariés, puisque Pékin est exclu (>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 seront pas appariés, puisque | C-D | > 50 pour le Beacon 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" 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 sur 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 rapidement votre matchmaker 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'un de nos Niveaux de Tarification.

  • 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 graphique 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 le Serveur 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 sous forme de 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électionnée,

  • sélectionnez 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 Auth. et choisissez :

  • Type d'Auth - Clé API,

  • Clé - «Authorization»

  • Valeur - insérez votre valeur AuthToken ici,

  • Ajouter à - En-tête.

Appuyez sur (CTRL/CMD+S) ou sur l'icône Enregistrer 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:

notez player_ip défini sur null- cela entraînera une utilisation de l'adresse IP automatiquement ajoutée à votre demande (voir Intégration Serveur à Serveur pour des alternatives),

  • profil fait référence à vos Profils de Matchmaking,

  • attributs comprennent les valeurs de vos règles de matchmaker, dans ce cas pour la règle latances,

    • la règle nombre_de_joueurs est la seule règle qui ne nécessite aucun attribut dans les tickets joueurs.

REMARQUE: Assurez-vous de vous référer à la configuration d'importation du Swaggerde l'échantillon. 

Cliquez sur Envoyer et examinez la réponse à votre demande de ticket joueur :

  • id est votre identifiant unique de ticket de matchmaking, gardez-le enregistré pour vérifier votre ticket plus tard,

  • profil confirmant le choix de Profils de Matchmaking,

  • group_id est un identifiant de groupe unique attribué à chaque ticket, un joueur solo est représenté en tant que groupe de 1,

  • player_ip est l'adresse IP publique résolue du joueur, quelle que soit la méthode d'identification utilisée,

  • assignment est défini sur null pour indiquer que le ticket n'a pas encore été mis en correspondance 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 en EN RECHERCHE (voir Processus de Matchmaking pour plus de détails).

Créez un deuxième ticket en appuyant à nouveau sur Envoyer, pour que nos deux joueurs se corresponent et qu'un serveur soit démarré.

Dans votre collection Matchmaker, sélectionnez {ticketId} et Lire un ticket de matchmaking.

Saisissez l'identifiant de ticket de la réponse de l'étape précédente et cliquez sur Envoyer.

Examinez l'affectation mise à jour pour votre ticket joueur :

  • le statut est passé à MATCH_TROUVÉ d'abord, tout en gardant assignment défini sur null pour indiquer que les joueurs ont matché et qu'un serveur est en cours d'attribution,

Cliquez sur Envoyer de nouveau pour vérifier votre ticket, et examinez l'affectation mise à jour pour votre ticket joueur :

  • le statut est passé à HÔTE_ATTRIBUÉ avec assignment contenant les détails du serveur attribué.

 Inspectez votre nouveau déploiement sur notre tableau de bord:

  • remarquez que chaque déploiement est étiqueté avec tous les identifiants de ticket et le profil pour plus de traçabilité.

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ème et que vous avez terminé vos 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 le Client de Jeu, pour gérer les Tickets Joueurs,

  • avec le Serveur de Jeu, pour :

    • traiter les préférences des joueurs passées par leurs tickets,

    • facultativement pour supporter le Backfill pour ajouter ou remplacer des joueurs après le démarrage.

Pour le Client de Jeu, nous recommandons de fournir des mises à jour d'état de ticket tout au long du Processus de Matchmaking aux joueurs à l'aide de l'UI en jeu pour la meilleure expérience joueur. Voir :

Dans le Client de Jeu, assurez-vous de gérer les erreurs non réessayables :

  • HTTP 404 Non Trouvé - le ticket a été supprimé,

  • HTTP 500 Erreur interne du serveur - interruption temporaire du service.

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 :

  1. Lisez les Variables d'Environnement Injectées (Gen2) pour récupérer les données initiales de matchmaking des joueurs.

  2. Lisez les Variables d'Environnement Injectées (Versions de l'App) pour les paramètres spécifiques à la version, les réglages (capacité des joueurs), et les secrets.

  3. Lisez les Variables d'Environnement Injectées (Déploiement) pour les informations de déploiement, telles que l'adresse IP, l'emplacement, ou plus.

Une fois les joueurs connectés, le Serveur de Jeu et les Clients de Jeu commencent 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 sociale de type lobby, 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 se chargent/voyagent vers la scène de jeu principale.

Facultativement, le Serveur de Jeu peut créer et gérer le Backfill et la capacité des joueurs (ajouter ou remplacer des joueurs qui quittent).

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 complété 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

Intégrer Edgegap facilement en quelques minutes

Intégrer Edgegap facilement en quelques minutes

Intégrer Edgegap facilement en quelques minutes