Comment ajouter un système de matchmaking à un jeu Metaverse

Comment ajouter un système de matchmaking à un jeu Metaverse
Comment ajouter un système de matchmaking à un jeu Metaverse
Comment ajouter un système de matchmaking à un jeu Metaverse

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 Metaverse

-> 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 de matchmaking pour les joueurs, à savoir :

Il y a cinq étapes pour intégrer notre matchmaking dans votre jeu :

  1. La première étape consiste à créer un compte et à utiliser notre exemple de jeu Metaverse. Voilà, vous êtes (techniquement) à mi-chemin ! Il vous suffira d'intégrer le matchmaking dans votre jeu (voir étape 5).

  2. 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 au tour par tour. L'étape 2 (« Explorer la Configuration ») est notre « comment lire » qui traite de 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 est déployé et fonctionne avec la conception de votre jeu.

  4. L'étape 4, comme son nom l'indique (« 4. Tester les API des Tickets »), concerne le test de vos requêtes de matchmaking provenant des joueurs reçues par le matchmaking, appelées tickets.

  5. L'étape 5 (« Intégrer le Matchmaking dans votre Jeu ») souligne comment intégrer le matchmaking dans le projet de votre moteur.

Si vous rencontrez des difficultés, notre Centre d'Apprentissage propose des conseils supplémentaires pour le dépannage.

1. Configurer le Niveau Gratuit

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

À partir de là, cliquez d'abord sur Créer Matchmaker , puis saisissez :

  • Un nom pour votre matchmaker – qui est uniquement pour votre propre référence, par ex.  quickstart-dev,

  • Ensuite, téléchargez l'exemple simple suivant en tant que configuration JSON ci-dessous pour votre jeu Metaverse :

{
  "version": "2.1.0",
  "inspect": true,
  "max_deployment_retry_count": 3,
  "ticket_expiration_period": "5m",
  "ticket_removal_period": "1m",
  "profiles": {
    "custom-lobby-example": {
      "application": {
        "name": "my-game-server",
        "version": "2024.01.30-16.23.00-UTC"
      },
      "rules": {
        "initial": {
          "match_size": {
            "type": "player_count",
            "attributes": {
              "team_count": 1,
              "team_size": 4
            }
          },
          "lobby_id": {
            "type": "string_equality"
          }
        },
        "expansions": {}
      }
    }
  }
}

(rappel amical de vous assurer de changer le nom de 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 se termine. Cela résultera en un nouveau cluster gratuit démarrant, avec votre Matchmaker d'Exemple Simple.

Vous pouvez maintenant passer à l'étape suivante.

2. Explorer la Configuration

Règles uniques de jeu multijoueur dans le metaverse

Les lobbies personnalisés (lobbies privés, niveaux de sable) sont une option très populaire pour le multijoueur sur canapé mais aussi pour tester de nouvelles fonctionnalités dans des jeux compétitifs ou coopératifs avant qu'ils n'entrent dans les modes de jeu principaux. Ces jeux nécessitent généralement le moins de restrictions, mais visent à garantir que les joueurs peuvent Rejoindre en Groupe.

Les tickets de Backfill peuvent utiliser des profils de Lobby Personnalisé pour soutenir l'invitation fiable d'amis, tant que les tickets de Backfill sont valides.

  • Conseil : Ajoutez le profil custom-lobby-example à votre configuration en plus de vos autres profils pour supporter les lobbies personnalisés.

Versionnage Sémantique

Lorsque nous publions des mises à jour pour le Matchmaker, chaque nouvelle version utilise le Versionnage Sémantique pour communiquer clairement l'impact des changements en utilisant le format majeur.minor.patch :

  • les versions majeur incluent des changements importants et nécessitent une révision d'intégration,

  • les versions mineur incluent des améliorations rétrocompatibles substantielles,

  • les versions patch incluent des corrections de bugs 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 des clients ou les tickets abandonnés ne persistent pas et n'occupent pas vos ressources de matchmaking, les tickets seront annulés après ticket_expiration_period ce qui entraînera leur statut à changer en CANCELLED et seront 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 d'attente de matchmaking complètement isolée, pointant vers Versions d'App avec une quantité pré-définie de ressources CPU et de mémoire (RAM) requises.

Règles de Matchmaking dans l'ensemble de règles initial doit être respecté pour que les joueurs soient regroupés, chacun défini 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_de_vanstiqués ou taille_de_van.

Règle de Nombre de Joueurs

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

  • nombre_de_vans fait référence au nombre d'équipes, 1 équipe peut être utilisée pour les modes coopératifs ou de libre pour tous,

  • taille_de_vande fait référence au nombre de joueurs par équipe.

Notre exemple simple illustre 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 sur les 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 trajet aller-retour (ping) par rapport à tous les repères disponibles, Gen2 ne considérera des correspondances qu'à l'intérieur d'une différence spécifique dans les valeurs de ping, mesurées par rapport aux Repères de Ping. Cela présente une solution « douce » pour diviser votre base de joueurs, permettant le matchmaking avec les régions voisines, améliorant notamment la vitesse de matchmaking pour les régions moins peuplées. Utilisez max_latencypour éviter le matchmaking contre des joueurs situés très loin.

Vous pouvez maintenant passer à l'étape suivante.

Notre exemple repères de règle ci-dessus avec "difference": 50, "max_latency": 200 initialement :

  • Alice et Bob feront match, puisque 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 feront pas match, puisque | C-D | > 50 pour le Repère 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 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 aidant le personnel d'Edgegap à trouver rapidement votre matchmaker si vous avez besoin d'aide pour le dépannage.

  • Démarré à peut être utile pour retrouver la dernière heure de mise à jour.

  • Taille correspond à l'un de nos Niveaux de Prix.

  • URL de l'API sera utilisée par les Clients de Jeu et les Serveurs de Jeu pour communiquer avec Gen2.

  • Swagger URL est une interface graphique de spécification 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 le Serveur de Jeu pour l'authentification.

Pour tester votre nouveau matchmaker en utilisant l'API, vous aurez besoin de l'URL de 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 graphique swagger

Cliquez sur l'URL /...swagger.json sous le titre « Matchmaker » pour ouvrir le schéma JSON brut :

Enregistrez cette page comme un fichier sur votre lecteur (CTRL/CMD+S).

Ouvrez votre application Postman et connectez-vous à votre compte gratuit.

Importez votre fichier swagger.json issu de l'étape précédente :

  • gardez Collection Postman séléctionnée,

  • sélectionnez Voir Paramètres d'Importation et changez le paramètre Génération de paramètres en Exemple.

Confirmez l'importation, cela résultera 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 Auth - Clé API,

  • Clé - “Authorization

  • Valeur - insérez ici votre valeur AuthToken,

  • Ajouter à - En-tête.

Appuyez sur (CTRL/CMD+S) ou sur l'icône Enregistrer pour sauvegarder 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 que player_ip est réglé sur null- cela va entraîner l'utilisation de l'adresse IP automatiquement ajoutée à votre requête (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 matchmaking, dans ce cas pour la règle latences,

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

NOTE : Assurez-vous de vous référer à la configuration d'importation de l'échantillon de Swagger

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

  • id est votre ID de ticket de matchmaking unique, gardez cela sauvegardé pour vérifier 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,

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

  • attribution est réglé sur null pour indiquer que le ticket n'a pas encore été apparié 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 RECHERCHE (voir Processus de Matchmaking pour plus de détails).

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

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

Entrez l'ID du ticket de la réponse de l'étape précédente et cliquez sur Envoyer.

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

  • le statut est devenu MATCH_FOUND en premier, tout en gardant attribution réglé sur null pour indiquer que les joueurs ont été associé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 pour votre ticket joueur :

  • le statut est devenu HOST_ASSIGNED avec attribution contenant des détails sur le 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è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 construction.

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 les Tickets Joueurs,

  • avec Serveur de Jeu, pour :

    • traiter les préférences des joueurs transmises par le biais de leurs tickets,

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

Pour le 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 du jeu pour une meilleure expérience joueur. Voir :

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

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

  • HTTP 500 Erreur Interne du Serveur - panne 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 de matchmaking initiales des joueurs.

  2. Lisez les Variables d'Environnement Injectées (Versions d'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 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émarrent une scène de chargement pour effectuer des étapes de synchronisation (par exemple, choisir 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 peuvent charger/voyager vers la scène principale de jeu.

Optionnellement, Serveur de Jeu peut créer et gérer 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 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