Comment ajouter le matchmaking à un jeu multijoueur social

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 social.

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 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 l'évolutivité ou de la gestion de la base de données. Nous nous occupons de tout pour vous. Réduisant votre charge de travail DevOps à presque zéro.

Comment intégrer le matchmaking à votre jeu multijoueur social

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

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

Il y a cinq étapes pour intégrer notre matchmaker à votre jeu :

  1. La première étape est de créer un compte et d'utiliser notre exemple de jeu social. Voilà, vous avez (techniquement) fait la moitié du chemin ! Vous n'auriez plus qu'à intégrer le matchmaker dans votre jeu (voir é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 (« Explorez la configuration ») est notre « guide de lecture » qui entre dans la fonction de chaque fonction de règles de matchmaking (« Explorez la configuration »).

  3. L'étape 3 (« Examiner les détails de l'instance ») couvre votre matchmaker personnel, afin de s'assurer qu'il est déployé et fonctionne avec le design de votre jeu.

  4. L'étape 4, comme son nom l'indique (« 4. Tester l'API des tickets »), consiste à tester que vos demandes de matchmaking des joueurs sont reçues par le matchmaker, appelées tickets.

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

Si vous rencontrez des problèmes de dépannage, notre Centre d'apprentissage propose des conseils supplémentaires de dépannage.

1. Configuration du niveau gratuit

Inscrivez-vous à votre compte Edgegap gratuit, et accédez à la page du tableau de bord de Matchmaker.

À partir 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 en tant que configuration JSON ci-dessous pour votre jeu multijoueur social :

{
  "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
            }
          }
        }
      }
    }
  }
}

(petit rappel amical de bien vouloir vous assurer de modifier le nom de l'application et la version pour correspondre à votre application et versions !)

Si aucune erreur de validation n'apparaît, appuyez 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 Simple Example.

Vous pouvez maintenant passer à l'étape suivante.

2. Explorez la Configuration

Règles uniques pour un jeu social multijoueur

Avec 1 équipe et 50 joueurs par équipe, exigez 50 joueurs par partie (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 fournir leurs préférences de mode de jeu et de choisir un mode adapté à tous,

  • Rejoindre en groupe pour les lobbies préfabriqués ou pour remplir les équipes sans dépasser les tailles d'équipe,

  • ajouter une UI de sélection de la région 🗺️ pour restreindre les adversaires aux régions spécifiées,

  • autoriser une latence plus élevée pour privilégier des matchs plus rapides avec plus de joueurs,

  • allouer plus de CPU ou de mémoire à l'aide de différentes versions d'app 🏷️ lorsque plus de joueurs sont autorisés.

Étendre les restrictions pour assurer des matchs rapides :

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

  • réduire lentement la taille de l'équipe pour nécessiter moins de joueurs et commencer le jeu plus tôt,

    • facultativement, vous pouvez faire remplir les emplacements vides par le serveur avec des joueurs IA,

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

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

Versionnage sémantique

Lorsque nous publions des mises à jour de Matchmaker, chaque nouvelle version utilise le versionnage sémantique pour communiquer clairement l'impact des modifications en interprétant le format majeure.mineure.patch :

  • les versions majeures incluent des changements incompatibles et nécessitent une révision de l'intégration,

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

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

Certaines implantations peuvent entraîner des erreurs. Nous essayons 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 restent pas en suspens et ne consomment pas les ressources de votre matchmaker, les tickets seront annulés après ticket_expiration_period provoquant le changement de leur statut à ANNULÉ et ensuite définitivement supprimés après ticket_removal_period.

Le cœur de notre logique de matchmaking est configuré dans les profils de matchmaking. Chaque profil est une file d'attente de matchmaking complètement isolée, pointant vers les versions d'app avec la quantité de ressources pré-définie en CPU et mémoire (RAM) requise.

Les règles de matchmaking dans l'ensemble de règles initial doivent être respectées pour que les joueurs soient regroupés, chacune définie par trois propriétés :

  • nom de votre choix, par ex. - taille de l'équipe,

  • type de règle, également connu sous le nom d'opérateur, par ex. - nombre_de_joueurs,

  • et enfin attributs de l'opérateur, par ex. nombre_d'équipes ou taille_de_l'équipe.

Règle de nombre de joueurs

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

  • nombre_d'équipes fait référence au nombre d'équipes, 1 équipe peut être utilisée pour des modes coopératifs ou chacun pour soi,

  • taille_de_l'équipe 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 initiale.

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 ont mesuré et soumis leur temps aller-retour (ping) contre toutes les balises disponibles, Gen2 ne prendra en compte que les matchs dans une différence de valeurs de ping, mesurée par rapport aux balises de ping. Cela présente une solution « douce » pour diviser votre base de joueurs, permettant des matchs avec des régions voisines, améliorant notamment la vitesse des matchs pour les régions moins peuplées. Utilisez max_latency pour éviter de matcher contre des joueurs situés trop loin.

Vous pouvez maintenant passer à l'étape suivante.

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

  • Alice et Bob vont se synchroniser, car Pékin est éliminé (>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 synchroniseront pas, car | C-D | > 50 pour la balise 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 latence » ne peuvent être définies qu'une seule fois dans vos règles de configuration initiale.

3. Révisez les détails de l'instance

Revoyez 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 d'Edgegap à trouver votre matchmaker rapidement si vous avez besoin d'aide pour le dépannage.

  • Démarré à peut être utile pour suivre le dernier temps de mise à jour.

  • Taille correspond à l'un de nos paliers de tarification.

  • URL d'API sera utilisée par les clients du jeu et les serveurs de jeu pour communiquer avec Gen2.

  • URL Swagger est une interface utilisateur pratique de spécification openAPI que nous fournissons pour explorer le schéma de l'API.

  • Jeton d'authentification est un jeton secret unique utilisé par les clients du jeu et le serveur de jeu pour l'authentification.

Pour tester votre nouveau matchmaker à l'aide de l'API, vous aurez besoin de l'URL Swagger, de l'URL d'API et du jeton d'authentification.

Vous pouvez maintenant passer à l'étape suivante.

4. Testez 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électionné,

  • sélectionnez Voir les paramètres d'importation et changez le paramètre 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 AuthToken ici,

  • Ajouter à - En-tête.

Appuyez sur (CTRL/CMD+S) ou sur 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éez un ticket de matchmaking, ouvrant un nouvel onglet.

Sélectionnez l'onglet Corps pour prévisualiser votre demande de ticket de joueur :

remarquez player_ip défini sur null - cela utilisera 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 incluent des valeurs pour vos règles de matchmaker, dans ce cas pour la règle latencies,

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

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 de joueur :

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

  • profil confirmant le choix des profils de matchmaking,

  • groupe_id est un identifiant 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, 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é jumelé ou affecté à un serveur,

  • created_at fournit des informations sur le moment où le ticket de joueur a été créé pour l'utilisation de l'interface utilisateur du jeu,

  • statut indique l'état actuel du ticket, tous les tickets commencent à RECHERCHE (voir Processus de matchmaking pour les détails).

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

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

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

Examinez l'assignation mise à jour pour votre ticket de joueur :

  • le statut a changé pour JUMELLEMENT_TROUVÉ d'abord, tout en maintenant assignment à null 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 examinez l'assignation mise à jour pour votre ticket de joueur :

  • le statut a changé pour HÔTE_ATTRIBUÉ avec assignment contenant les détails du serveur attribué.

 Inspecter votre nouveau déploiement dans notre tableau de bord :

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

Essayez de vous connecter à partir de 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é vos tests, arrêtez votre déploiement pour libérer la capacité de votre compte pour la prochaine version.

Vous pouvez maintenant passer à l'étape suivante.

5. Intégrer le Matchmaker dans votre jeu

L'intégration de matchmaking d'Edgegap fonctionne :

  • 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 transmises à travers leurs tickets,

    • en option pour supporter le remplissage pour ajouter ou remplacer des joueurs après le démarrage.

Pour dans le client de jeu, nous recommandons de fournir des mises à jour du statut du ticket tout au long du processus de matchmaking aux joueurs en utilisant l'interface utilisateur intégrée au 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 - 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 :

  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 d'app) pour les paramètres spécifiques aux versions, les paramètres (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 encore.

Une fois que les joueurs sont connectés, serveur de jeu et 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 type lobby, ou un écran de chargement avec une barre de progression, pour indiquer que l'initialisation est en cours.

Une fois que clients de jeu ont complètement chargé, les joueurs passent à la scène principale du jeu.

Optionnellement, serveur de jeu peut créer et gérer le remplissage et la capacité des joueurs (ajouter ou remplacer les joueurs qui partent).

Assurez-vous que votre déploiement sera correctement arrêté en utilisant l'URL DELETE 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 d'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