Comment ajouter le matchmaking à un jeu multijoueur en sandbox

Comment ajouter le matchmaking à un jeu multijoueur en sandbox
Comment ajouter le matchmaking à un jeu multijoueur en sandbox
Comment ajouter le matchmaking à un jeu multijoueur en sandbox

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 à votre jeu multijoueur Sandbox

-> 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 joueurs du matchmaking, à 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 sandbox. Voilà, vous êtes (techniquement) à mi-chemin ! Vous n'avez qu'à intégrer le matchmaker dans votre jeu (voir étape 5).

  2. Maintenant, vous ne devez 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 “comment lire” qui explique le fonctionnement de chaque fonction des 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 le design de votre jeu.

  4. L'étape 4, comme son nom l'indique (“4. Tester l'API des tickets”), concerne le test de vos requêtes de matchmaking provenant des joueurs qui sont reçues par le matchmaker, appelées tickets.

  5. L'étape 5 (“Intégrer le matchmaking dans votre jeu”) met en lumière comment intégrer le matchmaker dans le projet de votre moteur.

Si vous avez des défis de dépannage, notre Centre d'apprentissage en profondeur propose des conseils supplémentaires pour le dépannage.

1. Configuration du niveau gratuit

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

À partir de là, cliquez sur Créer un matchmaker en premier lieu, 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 une configuration JSON ci-dessous pour votre jeu Sandbox :

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

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

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

Vous pouvez maintenant passer à l'étape suivante.

2. Explorer la configuration

Règles uniques de jeu multijoueur sandbox

Les salles personnalisées (salles privées, niveaux sandbox) 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 à s'assurer que les joueurs peuvent Rejoindre en groupe.

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

  • Astuce : Ajoutez le profil custom-lobby-example à votre configuration en plus de vos autres profils pour soutenir les salles personnalisées.

Versioning 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 modifications en interprétant le format major.minor.patch :

  • Les versions majeures incluent des changements majeurs et nécessitent un examen d'intégration,

  • Les versions mineures incluent des améliorations substantielles compatibles avec les versions précédentes,

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

Certains 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 vous assurer que les plantages inattendus du client ou les tickets abandonnés ne persistent pas et n'occupent pas les ressources de votre matchmaker, les tickets seront annulés après ticket_expiration_period ce qui fait que leur statut changera 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 les profils de matchmaking. Chaque profil est une file d'attente de matchmaking complètement isolée, pointant vers les versions d'application avec une quantité prédéfinie de ressources CPU et de mémoire (RAM) requises.

Les règles de matchmaking dans l'ensemble de règles initial doit ê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 du match,

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

Règle du nombre de joueurs

C'est une règle spéciale qui définit combien de joueurs doivent être jumelés pour initier l'attribution :

  • nombre_de_equipes se réfère au nombre d'équipes, 1 équipe peut être utilisée pour les modes coopératifs ou free-for-all,

  • taille_de_l'équipe se réfère 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 des latences

Utilisez cette règle pour fournir le ping le plus bas possible à tous les joueurs. Une fois que les clients mesurent et soumettent leur temps de réponse aller-retour (ping) contre tous les points de balisage disponibles, Gen2 ne considérera que les matchs dans une certaine différence de valeurs ping, mesurées contre les points de balisage de ping. Cela présente une solution “douce” pour diviser votre base de joueurs, permettant le matching avec des régions voisines, améliorant particulièrement la vitesse du match pour les régions moins peuplées. Utilisez max_latencypour éviter le matchmaking avec des joueurs situés loin.

Vous pouvez maintenant passer à l'étape suivante.

Notre règle de points de balisage ci-dessus avec "difference": 50, "max_latency": 200 initialement :

  • Alice et Bob seront jumelés, puisque Pékin est écarté (>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 jumelés, puisque | C-D | > 50 pour le point de balisage 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 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é :

État indique la santé du service, peut être EN LIGNE, HORS LIGNE ou ERREUR.

  • Identifiant help Edgegap staff à trouver votre matchmaker rapidement si vous avez besoin d'aide pour le dépannage.

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

  • Taille correspond à l'une de nos catégories de prix.

  • URL API sera utilisé par les clients de jeux et les serveurs de jeux pour communiquer avec Gen2.

  • URL Swagger est une interface GUI 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 jeux et le serveur de jeux pour l'authentification.

Pour tester votre nouveau matchmaker à l'aide de l'API, vous aurez besoin de l'URL Swagger, de l'URL 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 le /...swagger.json URL en dessous du 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 swagger.json fichier de l'étape précédente :

  • gardez Postman Collection séléctionné,

  • séléctionnez Voir les paramètres d'importation et changez le paramètre Génération de paramètres en Exemple.

Confirmez l'import, 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é - “Authorization

  • Valeur - insérez ici votre valeur AuthToken,

  • 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éer un ticket de matchmaking, ouvrant un nouvel onglet.

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

remarquez que player_ip est défini sur null - cela fera en sorte d'utiliser l'adresse IP automatiquement ajoutée à votre demande (voir Intégration Serveur à Serveur pour des alternatives),

  • profile se réfère à vos profils de matchmaking,

  • attributes incluent des valeurs pour vos règles de matchmaker, dans ce cas pour la règle des latences,

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

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

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 enregistré pour vérifier votre ticket plus tard,

  • profile confirmant le choix des profils de matchmaking,

  • group_id est un identifiant de groupe unique attribué à chaque ticket, un joueur solo est représenté par 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,

  • assignment est défini sur null pour indiquer que le ticket n'a pas été jumelé ou attribué à 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,

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

Créez un second ticket en cliquant sur Envoyer à nouveau, afin que nos deux joueurs se jumellent et qu'un serveur soit lancé.

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

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

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

  • le statut a changé en MATCH_FOUND en premier, tout en maintenant assignment défini sur null pour indiquer que les joueurs ont été jumelés et qu'un serveur est en cours d'attribution,

Cliquez sur Envoyer à nouveau pour vérifier votre ticket et examiner l'attribution mise à jour pour votre ticket de joueur :

  • le statut a changé en HOST_ASSIGNED avec assignment contenant les détails du serveur attribué.

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

  • remarque chaque déploiement est étiqueté avec tous les IDs de tickets et le profil pour une traceabilité accrue.

Essayez de vous connecter depuis votre client de jeu au serveur attribué.

Une fois que vous vérifiez que vous êtes capable de vous connecter à votre déploiement sans problèmes et que vous avez terminé les 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 Client de jeu, pour gérer les tickets de joueurs,

  • avec Serveur de jeu, pour :

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

    • optionnellement pour soutenir Backfill afin d'ajouter ou de remplacer des joueurs après le début.

Pour le Client de jeu, nous recommandons de fournir des mises à jour sur le statut des tickets tout au long du processus de matchmaking aux joueurs en utilisant l'interface utilisateur du jeu pour la meilleure expérience des joueurs. Voir :

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

  • HTTP 404 Not Found  - ticket a été supprimé,

  • HTTP 500 Internal Server Error  - 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 nécessaire :

  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'application) 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 des informations sur le 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 exécuter 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 chargent/voyagent vers la scène de jeu principal.

Optionnellement, 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 s'arrête correctement 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 terminé 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