Découvrez comment fonctionne Edgegap

Découvrez comment fonctionne Edgegap

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

Publié

Publié

Publié

Points Clés

Points Clés

Points Clés

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 grand public (Casual)

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

L'exemple suivant vous aidera à tester le flux de joueurs principal du 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 grand public. Et voilà, vous avez (techniquement) fait la moitié du chemin ! Il ne vous reste 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 ; 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 détaille la fonction de chaque règle de matchmaking (« Explorer la configuration »).

  3. L'étape 3 (« Examiner les détails de l'instance ») concerne votre matchmaker spécifique et personnel, afin de 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 l'API des tickets »), consiste à vérifier que vos demandes de matchmaking provenant des joueurs, appelées tickets, sont bien reçues par le matchmaker.

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

Si vous rencontrez des difficultés de dépannage, notre Centre d'apprentissage détaillé contient des conseils de dépannage supplémentaires.

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 d'abord sur Create Matchmaker (Créer un matchmaker), puis saisissez :

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

  • Ensuite, téléversez l'exemple simple suivant sous forme de configuration JSON ci-dessous pour votre jeu Casual :

{
  "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 : assurez-vous de modifier le name et la version de l'application pour qu'ils correspondent à vos Applications et Versions !)

Si aucune erreur de validation n'apparaît, cliquez sur Create and Start (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 Example.

Vous pouvez maintenant passer à l'étape suivante.

2. Explorer la configuration​

Règles uniques pour jeu grand public multijoueur

Avec un nombre d'équipes de 1 et une taille d'équipe de 50, 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 renseigner leurs préférences de mode de jeu et choisir un mode adapté à tous,

  • Rejoindre en tant que groupe pour des salons prédéfinis ou pour remplir des équipes sans dépasser la taille limite de l'équipe,

  • ajouter l'🗺️ Interface de sélection de région pour restreindre les adversaires aux régions spécifiées,

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

  • allouer plus de processeur ou de mémoire en utilisant différentes 🏷️ Versions d'application lorsque davantage de joueurs sont autorisés.

Élargir les restrictions pour garantir des parties rapides :

  • assouplir rapidement les restrictions de latence pour trouver plus de joueurs,

  • réduire progressivement la taille de l'équipe pour nécessiter moins de joueurs et lancer la partie plus tôt,

    • éventuellement, vous pouvez faire en sorte que le serveur comble les emplacements vides avec des joueurs IA,

  • si aucun coéquipier n'est trouvé, lancer la partie en solo et utiliser le Remplissage (Backfill) pour ajouter des joueurs par la suite,

    • cela permettra aux joueurs de rejoindre des parties existantes plutôt que de nouvelles, afin de maximiser l'interaction sociale.

Gestion sémantique des versions

À mesure que nous publions des mises à jour pour Matchmaker, chaque nouvelle version utilise le Versionnage sémantique pour communiquer clairement l'impact des modifications en interprétant le format majeur.mineur.correctif :

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

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

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

Certains déploiements peuvent entraîner des erreurs. Nous tentons de résoudre ce problème en réessayant le déploiement automatiquement jusqu'à max_deployment_retry_count fois (sans confirmation du client).

Pour vous assurer que les pannes inattendues de clients ou les tickets abandonnés ne persistent pas et ne consomment pas les ressources de votre matchmaker, les tickets seront annulés après ticket_expiration_period, ce qui fera passer leur statut à CANCELLED, puis seront 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 des Versions d'application avec une quantité prédéfinie de ressources CPU et mémoire (RAM) requises.

Les Règles de Matchmaking de l'ensemble initial doivent être satisfaites pour que les joueurs soient regroupés, chacune étant définie par trois propriétés :

  • le nom de votre choix, par ex. - match size,

  • le type de règle, également appelé opérateur, par ex. - player_count,

  • et enfin les attributs de l'opérateur, par ex. team_count ou team_size.

Règle de nombre de joueurs (Player Count)

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

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

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

Notre exemple simple illustre une partie coopérative à 2 joueurs.

Veuillez noter que la règle « Player Count » est requise et ne peut être définie qu'une seule fois dans vos règles de configuration initiales.

Règle de latences (Latencies)

Utilisez cette règle pour offrir le ping le plus bas possible à tous les joueurs. Une fois que les clients mesurent et transmettent leur temps d'aller-retour (ping) par rapport à toutes les balises disponibles, Gen2 ne considérera que les correspondances situées dans une limite de difference spécifique des valeurs de ping, mesurées par rapport aux Balises de ping. Cela offre une solution « souple » pour fractionner votre base de joueurs, en permettant les correspondances avec les régions voisines, ce qui améliore notamment la rapidité des matchs pour les régions moins peuplées. Utilisez max_latency pour éviter les correspondances avec des joueurs situés trop loin.

Vous pouvez maintenant passer à l'étape suivante.

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

  • Alice et Bob seront mis en correspondance, car Pékin est écarté (>200) et le reste respecte | 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 mis en correspondance, 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 la règle « Latencies Rules » ne peut être définie qu'une seule fois dans vos règles de configuration initiales.

3. Examiner les détails de l'instance​

Consultez les détails de votre nouveau matchmaker dans notre tableau de bord une fois qu'il est initialisé :

Status indique l'état du service ; il peut être ONLINE, OFFLINE ou ERROR.

  • Identifier aide l'équipe d'Edgegap à retrouver rapidement votre matchmaker si vous avez besoin d'aide pour le dépannage.

  • Started at peut être utile pour déterminer l'heure de la dernière mise à jour.

  • Size correspond à l'un de nos Niveaux tarifaires.

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

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

  • Auth Token est un jeton secret unique utilisé par les clients de 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 de l'API et de l'Auth Token.

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 graphique 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 :

  • laissez Postman Collection sélectionné,

  • sélectionnez View Import Settings et modifiez le paramètre Parameter generation en Example.

Confirmez l'importation ; une nouvelle collection intitulée Matchmaker apparaîtra alors dans la liste des collections sur la gauche.

Affichez plus d'actions, ouvrez l'onglet Authorization et choisissez :

  • Auth Type - API Key,

  • Key - « Authorization »

  • Value - insérez votre valeur AuthToken ici,

  • Add to - Header.

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 puis Create a matchmaking ticket, ce qui ouvrira un nouvel onglet.

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

remarquez que player_ip est défini sur null ; cela entraînera l'utilisation de l'adresse IP automatiquement ajoutée à votre requête (voir Intégration de serveur à serveur pour d'autres solutions),

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

  • attributes inclut les valeurs pour les règles de votre matchmaker, dans ce cas pour la règle latencies,

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

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

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

  • id est votre identifiant unique de ticket de matchmaking, conservez-le pour vérifier votre ticket ultérieurement,

  • profile confirme le choix des Profils de Matchmaking,

  • group_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é mis en correspondance ou affecté à un serveur,

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

  • status indique le statut actuel du ticket ; tous les tickets commencent en SEARCHING (voir Processus de Matchmaking pour plus de détails).

Créez un deuxième ticket en cliquant à nouveau sur Send, afin que nos deux joueurs soient mis en correspondance et qu'un serveur soit démarré.

Dans votre collection Matchmaker, sélectionnez {ticketId} puis Read a matchmaking ticket.

Saisissez l'ID du ticket obtenu dans la réponse de l'étape précédente et cliquez sur Send.

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

  • le statut passe d'abord à MATCH_FOUND, tout en conservant assignment défini sur null pour indiquer que les joueurs ont été appariés et qu'un serveur est en cours d'attribution,

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

  • le statut passe à HOST_ASSIGNED avec assignment contenant les détails du serveur attribué.

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

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

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

Une fois que vous avez vérifié que vous pouvez vous connecter à votre déploiement sans problème et que vos tests sont terminés, arrêtez votre déploiement afin de libérer de la capacité sur votre compte pour la version suivante.

Vous pouvez maintenant passer à l'étape suivante.

5. Intégrer le Matchmaker dans votre jeu​

Le matchmaking d'Edgegap s'intègre :

  • au Client de jeu, pour gérer les Tickets de joueurs,

  • au Serveur de jeu, pour :

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

    • prendre en charge de manière optionnelle le Remplissage (Backfill) pour ajouter ou remplacer des joueurs après le démarrage.

Dans le Client de jeu, nous recommandons de fournir aux joueurs des mises à jour sur l'état des tickets tout au long du Processus de Matchmaking via l'interface utilisateur en jeu afin d'offrir la meilleure expérience possible. Consultez :

Dans le Client de jeu, veillez à gérer les erreurs non récupérables :

  • HTTP 404 Not Found - le 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 d'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 (App Versions) pour obtenir les paramètres spécifiques à la version, la configuration (capacité de joueurs) et les secrets.

  3. Lisez les Variables d'environnement injectées (Déploiement) pour obtenir les informations de déploiement, telles que l'adresse IP, l'emplacement, etc.

Une fois que les joueurs se connectent, le Serveur de jeu et les Clients de jeu lancent une scène de chargement pour exécuter 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 salon ou un écran de chargement avec une barre de progression, pour indiquer que l'initialisation progresse.

Une fois que les Clients de jeu ont fini de charger, les joueurs chargent/basculent vers la scène de jeu principale.

En option, le Serveur de jeu peut créer et gérer le Remplissage (Backfill) et la capacité de joueurs (ajouter ou remplacer les joueurs qui quittent la partie).

Assurez-vous que votre déploiement sera arrêté correctement à l'aide de l'URL DELETE injectée, si :

  • aucun joueur ne rejoint la partie,

  • tous les joueurs ont quitté la partie,

  • la partie se termine correctement.

Félicitations, vous avez terminé l'intégration d'Edgegap Matchmaker ! Si vous souhaitez en savoir plus, découvrez tous les détails dans notre Centre d'apprentissage.

Comment intégrer le matchmaking à votre jeu multijoueur grand public (Casual)

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

L'exemple suivant vous aidera à tester le flux de joueurs principal du 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 grand public. Et voilà, vous avez (techniquement) fait la moitié du chemin ! Il ne vous reste 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 ; 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 détaille la fonction de chaque règle de matchmaking (« Explorer la configuration »).

  3. L'étape 3 (« Examiner les détails de l'instance ») concerne votre matchmaker spécifique et personnel, afin de 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 l'API des tickets »), consiste à vérifier que vos demandes de matchmaking provenant des joueurs, appelées tickets, sont bien reçues par le matchmaker.

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

Si vous rencontrez des difficultés de dépannage, notre Centre d'apprentissage détaillé contient des conseils de dépannage supplémentaires.

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 d'abord sur Create Matchmaker (Créer un matchmaker), puis saisissez :

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

  • Ensuite, téléversez l'exemple simple suivant sous forme de configuration JSON ci-dessous pour votre jeu Casual :

{
  "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 : assurez-vous de modifier le name et la version de l'application pour qu'ils correspondent à vos Applications et Versions !)

Si aucune erreur de validation n'apparaît, cliquez sur Create and Start (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 Example.

Vous pouvez maintenant passer à l'étape suivante.

2. Explorer la configuration​

Règles uniques pour jeu grand public multijoueur

Avec un nombre d'équipes de 1 et une taille d'équipe de 50, 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 renseigner leurs préférences de mode de jeu et choisir un mode adapté à tous,

  • Rejoindre en tant que groupe pour des salons prédéfinis ou pour remplir des équipes sans dépasser la taille limite de l'équipe,

  • ajouter l'🗺️ Interface de sélection de région pour restreindre les adversaires aux régions spécifiées,

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

  • allouer plus de processeur ou de mémoire en utilisant différentes 🏷️ Versions d'application lorsque davantage de joueurs sont autorisés.

Élargir les restrictions pour garantir des parties rapides :

  • assouplir rapidement les restrictions de latence pour trouver plus de joueurs,

  • réduire progressivement la taille de l'équipe pour nécessiter moins de joueurs et lancer la partie plus tôt,

    • éventuellement, vous pouvez faire en sorte que le serveur comble les emplacements vides avec des joueurs IA,

  • si aucun coéquipier n'est trouvé, lancer la partie en solo et utiliser le Remplissage (Backfill) pour ajouter des joueurs par la suite,

    • cela permettra aux joueurs de rejoindre des parties existantes plutôt que de nouvelles, afin de maximiser l'interaction sociale.

Gestion sémantique des versions

À mesure que nous publions des mises à jour pour Matchmaker, chaque nouvelle version utilise le Versionnage sémantique pour communiquer clairement l'impact des modifications en interprétant le format majeur.mineur.correctif :

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

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

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

Certains déploiements peuvent entraîner des erreurs. Nous tentons de résoudre ce problème en réessayant le déploiement automatiquement jusqu'à max_deployment_retry_count fois (sans confirmation du client).

Pour vous assurer que les pannes inattendues de clients ou les tickets abandonnés ne persistent pas et ne consomment pas les ressources de votre matchmaker, les tickets seront annulés après ticket_expiration_period, ce qui fera passer leur statut à CANCELLED, puis seront 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 des Versions d'application avec une quantité prédéfinie de ressources CPU et mémoire (RAM) requises.

Les Règles de Matchmaking de l'ensemble initial doivent être satisfaites pour que les joueurs soient regroupés, chacune étant définie par trois propriétés :

  • le nom de votre choix, par ex. - match size,

  • le type de règle, également appelé opérateur, par ex. - player_count,

  • et enfin les attributs de l'opérateur, par ex. team_count ou team_size.

Règle de nombre de joueurs (Player Count)

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

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

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

Notre exemple simple illustre une partie coopérative à 2 joueurs.

Veuillez noter que la règle « Player Count » est requise et ne peut être définie qu'une seule fois dans vos règles de configuration initiales.

Règle de latences (Latencies)

Utilisez cette règle pour offrir le ping le plus bas possible à tous les joueurs. Une fois que les clients mesurent et transmettent leur temps d'aller-retour (ping) par rapport à toutes les balises disponibles, Gen2 ne considérera que les correspondances situées dans une limite de difference spécifique des valeurs de ping, mesurées par rapport aux Balises de ping. Cela offre une solution « souple » pour fractionner votre base de joueurs, en permettant les correspondances avec les régions voisines, ce qui améliore notamment la rapidité des matchs pour les régions moins peuplées. Utilisez max_latency pour éviter les correspondances avec des joueurs situés trop loin.

Vous pouvez maintenant passer à l'étape suivante.

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

  • Alice et Bob seront mis en correspondance, car Pékin est écarté (>200) et le reste respecte | 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 mis en correspondance, 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 la règle « Latencies Rules » ne peut être définie qu'une seule fois dans vos règles de configuration initiales.

3. Examiner les détails de l'instance​

Consultez les détails de votre nouveau matchmaker dans notre tableau de bord une fois qu'il est initialisé :

Status indique l'état du service ; il peut être ONLINE, OFFLINE ou ERROR.

  • Identifier aide l'équipe d'Edgegap à retrouver rapidement votre matchmaker si vous avez besoin d'aide pour le dépannage.

  • Started at peut être utile pour déterminer l'heure de la dernière mise à jour.

  • Size correspond à l'un de nos Niveaux tarifaires.

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

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

  • Auth Token est un jeton secret unique utilisé par les clients de 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 de l'API et de l'Auth Token.

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 graphique 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 :

  • laissez Postman Collection sélectionné,

  • sélectionnez View Import Settings et modifiez le paramètre Parameter generation en Example.

Confirmez l'importation ; une nouvelle collection intitulée Matchmaker apparaîtra alors dans la liste des collections sur la gauche.

Affichez plus d'actions, ouvrez l'onglet Authorization et choisissez :

  • Auth Type - API Key,

  • Key - « Authorization »

  • Value - insérez votre valeur AuthToken ici,

  • Add to - Header.

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 puis Create a matchmaking ticket, ce qui ouvrira un nouvel onglet.

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

remarquez que player_ip est défini sur null ; cela entraînera l'utilisation de l'adresse IP automatiquement ajoutée à votre requête (voir Intégration de serveur à serveur pour d'autres solutions),

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

  • attributes inclut les valeurs pour les règles de votre matchmaker, dans ce cas pour la règle latencies,

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

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

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

  • id est votre identifiant unique de ticket de matchmaking, conservez-le pour vérifier votre ticket ultérieurement,

  • profile confirme le choix des Profils de Matchmaking,

  • group_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é mis en correspondance ou affecté à un serveur,

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

  • status indique le statut actuel du ticket ; tous les tickets commencent en SEARCHING (voir Processus de Matchmaking pour plus de détails).

Créez un deuxième ticket en cliquant à nouveau sur Send, afin que nos deux joueurs soient mis en correspondance et qu'un serveur soit démarré.

Dans votre collection Matchmaker, sélectionnez {ticketId} puis Read a matchmaking ticket.

Saisissez l'ID du ticket obtenu dans la réponse de l'étape précédente et cliquez sur Send.

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

  • le statut passe d'abord à MATCH_FOUND, tout en conservant assignment défini sur null pour indiquer que les joueurs ont été appariés et qu'un serveur est en cours d'attribution,

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

  • le statut passe à HOST_ASSIGNED avec assignment contenant les détails du serveur attribué.

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

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

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

Une fois que vous avez vérifié que vous pouvez vous connecter à votre déploiement sans problème et que vos tests sont terminés, arrêtez votre déploiement afin de libérer de la capacité sur votre compte pour la version suivante.

Vous pouvez maintenant passer à l'étape suivante.

5. Intégrer le Matchmaker dans votre jeu​

Le matchmaking d'Edgegap s'intègre :

  • au Client de jeu, pour gérer les Tickets de joueurs,

  • au Serveur de jeu, pour :

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

    • prendre en charge de manière optionnelle le Remplissage (Backfill) pour ajouter ou remplacer des joueurs après le démarrage.

Dans le Client de jeu, nous recommandons de fournir aux joueurs des mises à jour sur l'état des tickets tout au long du Processus de Matchmaking via l'interface utilisateur en jeu afin d'offrir la meilleure expérience possible. Consultez :

Dans le Client de jeu, veillez à gérer les erreurs non récupérables :

  • HTTP 404 Not Found - le 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 d'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 (App Versions) pour obtenir les paramètres spécifiques à la version, la configuration (capacité de joueurs) et les secrets.

  3. Lisez les Variables d'environnement injectées (Déploiement) pour obtenir les informations de déploiement, telles que l'adresse IP, l'emplacement, etc.

Une fois que les joueurs se connectent, le Serveur de jeu et les Clients de jeu lancent une scène de chargement pour exécuter 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 salon ou un écran de chargement avec une barre de progression, pour indiquer que l'initialisation progresse.

Une fois que les Clients de jeu ont fini de charger, les joueurs chargent/basculent vers la scène de jeu principale.

En option, le Serveur de jeu peut créer et gérer le Remplissage (Backfill) et la capacité de joueurs (ajouter ou remplacer les joueurs qui quittent la partie).

Assurez-vous que votre déploiement sera arrêté correctement à l'aide de l'URL DELETE injectée, si :

  • aucun joueur ne rejoint la partie,

  • tous les joueurs ont quitté la partie,

  • la partie se termine correctement.

Félicitations, vous avez terminé l'intégration d'Edgegap Matchmaker ! Si vous souhaitez en savoir plus, découvrez tous les détails dans notre Centre d'apprentissage.

Comment intégrer le matchmaking à votre jeu multijoueur grand public (Casual)

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

L'exemple suivant vous aidera à tester le flux de joueurs principal du 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 grand public. Et voilà, vous avez (techniquement) fait la moitié du chemin ! Il ne vous reste 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 ; 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 détaille la fonction de chaque règle de matchmaking (« Explorer la configuration »).

  3. L'étape 3 (« Examiner les détails de l'instance ») concerne votre matchmaker spécifique et personnel, afin de 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 l'API des tickets »), consiste à vérifier que vos demandes de matchmaking provenant des joueurs, appelées tickets, sont bien reçues par le matchmaker.

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

Si vous rencontrez des difficultés de dépannage, notre Centre d'apprentissage détaillé contient des conseils de dépannage supplémentaires.

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 d'abord sur Create Matchmaker (Créer un matchmaker), puis saisissez :

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

  • Ensuite, téléversez l'exemple simple suivant sous forme de configuration JSON ci-dessous pour votre jeu Casual :

{
  "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 : assurez-vous de modifier le name et la version de l'application pour qu'ils correspondent à vos Applications et Versions !)

Si aucune erreur de validation n'apparaît, cliquez sur Create and Start (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 Example.

Vous pouvez maintenant passer à l'étape suivante.

2. Explorer la configuration​

Règles uniques pour jeu grand public multijoueur

Avec un nombre d'équipes de 1 et une taille d'équipe de 50, 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 renseigner leurs préférences de mode de jeu et choisir un mode adapté à tous,

  • Rejoindre en tant que groupe pour des salons prédéfinis ou pour remplir des équipes sans dépasser la taille limite de l'équipe,

  • ajouter l'🗺️ Interface de sélection de région pour restreindre les adversaires aux régions spécifiées,

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

  • allouer plus de processeur ou de mémoire en utilisant différentes 🏷️ Versions d'application lorsque davantage de joueurs sont autorisés.

Élargir les restrictions pour garantir des parties rapides :

  • assouplir rapidement les restrictions de latence pour trouver plus de joueurs,

  • réduire progressivement la taille de l'équipe pour nécessiter moins de joueurs et lancer la partie plus tôt,

    • éventuellement, vous pouvez faire en sorte que le serveur comble les emplacements vides avec des joueurs IA,

  • si aucun coéquipier n'est trouvé, lancer la partie en solo et utiliser le Remplissage (Backfill) pour ajouter des joueurs par la suite,

    • cela permettra aux joueurs de rejoindre des parties existantes plutôt que de nouvelles, afin de maximiser l'interaction sociale.

Gestion sémantique des versions

À mesure que nous publions des mises à jour pour Matchmaker, chaque nouvelle version utilise le Versionnage sémantique pour communiquer clairement l'impact des modifications en interprétant le format majeur.mineur.correctif :

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

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

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

Certains déploiements peuvent entraîner des erreurs. Nous tentons de résoudre ce problème en réessayant le déploiement automatiquement jusqu'à max_deployment_retry_count fois (sans confirmation du client).

Pour vous assurer que les pannes inattendues de clients ou les tickets abandonnés ne persistent pas et ne consomment pas les ressources de votre matchmaker, les tickets seront annulés après ticket_expiration_period, ce qui fera passer leur statut à CANCELLED, puis seront 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 des Versions d'application avec une quantité prédéfinie de ressources CPU et mémoire (RAM) requises.

Les Règles de Matchmaking de l'ensemble initial doivent être satisfaites pour que les joueurs soient regroupés, chacune étant définie par trois propriétés :

  • le nom de votre choix, par ex. - match size,

  • le type de règle, également appelé opérateur, par ex. - player_count,

  • et enfin les attributs de l'opérateur, par ex. team_count ou team_size.

Règle de nombre de joueurs (Player Count)

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

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

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

Notre exemple simple illustre une partie coopérative à 2 joueurs.

Veuillez noter que la règle « Player Count » est requise et ne peut être définie qu'une seule fois dans vos règles de configuration initiales.

Règle de latences (Latencies)

Utilisez cette règle pour offrir le ping le plus bas possible à tous les joueurs. Une fois que les clients mesurent et transmettent leur temps d'aller-retour (ping) par rapport à toutes les balises disponibles, Gen2 ne considérera que les correspondances situées dans une limite de difference spécifique des valeurs de ping, mesurées par rapport aux Balises de ping. Cela offre une solution « souple » pour fractionner votre base de joueurs, en permettant les correspondances avec les régions voisines, ce qui améliore notamment la rapidité des matchs pour les régions moins peuplées. Utilisez max_latency pour éviter les correspondances avec des joueurs situés trop loin.

Vous pouvez maintenant passer à l'étape suivante.

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

  • Alice et Bob seront mis en correspondance, car Pékin est écarté (>200) et le reste respecte | 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 mis en correspondance, 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 la règle « Latencies Rules » ne peut être définie qu'une seule fois dans vos règles de configuration initiales.

3. Examiner les détails de l'instance​

Consultez les détails de votre nouveau matchmaker dans notre tableau de bord une fois qu'il est initialisé :

Status indique l'état du service ; il peut être ONLINE, OFFLINE ou ERROR.

  • Identifier aide l'équipe d'Edgegap à retrouver rapidement votre matchmaker si vous avez besoin d'aide pour le dépannage.

  • Started at peut être utile pour déterminer l'heure de la dernière mise à jour.

  • Size correspond à l'un de nos Niveaux tarifaires.

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

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

  • Auth Token est un jeton secret unique utilisé par les clients de 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 de l'API et de l'Auth Token.

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 graphique 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 :

  • laissez Postman Collection sélectionné,

  • sélectionnez View Import Settings et modifiez le paramètre Parameter generation en Example.

Confirmez l'importation ; une nouvelle collection intitulée Matchmaker apparaîtra alors dans la liste des collections sur la gauche.

Affichez plus d'actions, ouvrez l'onglet Authorization et choisissez :

  • Auth Type - API Key,

  • Key - « Authorization »

  • Value - insérez votre valeur AuthToken ici,

  • Add to - Header.

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 puis Create a matchmaking ticket, ce qui ouvrira un nouvel onglet.

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

remarquez que player_ip est défini sur null ; cela entraînera l'utilisation de l'adresse IP automatiquement ajoutée à votre requête (voir Intégration de serveur à serveur pour d'autres solutions),

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

  • attributes inclut les valeurs pour les règles de votre matchmaker, dans ce cas pour la règle latencies,

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

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

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

  • id est votre identifiant unique de ticket de matchmaking, conservez-le pour vérifier votre ticket ultérieurement,

  • profile confirme le choix des Profils de Matchmaking,

  • group_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é mis en correspondance ou affecté à un serveur,

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

  • status indique le statut actuel du ticket ; tous les tickets commencent en SEARCHING (voir Processus de Matchmaking pour plus de détails).

Créez un deuxième ticket en cliquant à nouveau sur Send, afin que nos deux joueurs soient mis en correspondance et qu'un serveur soit démarré.

Dans votre collection Matchmaker, sélectionnez {ticketId} puis Read a matchmaking ticket.

Saisissez l'ID du ticket obtenu dans la réponse de l'étape précédente et cliquez sur Send.

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

  • le statut passe d'abord à MATCH_FOUND, tout en conservant assignment défini sur null pour indiquer que les joueurs ont été appariés et qu'un serveur est en cours d'attribution,

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

  • le statut passe à HOST_ASSIGNED avec assignment contenant les détails du serveur attribué.

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

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

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

Une fois que vous avez vérifié que vous pouvez vous connecter à votre déploiement sans problème et que vos tests sont terminés, arrêtez votre déploiement afin de libérer de la capacité sur votre compte pour la version suivante.

Vous pouvez maintenant passer à l'étape suivante.

5. Intégrer le Matchmaker dans votre jeu​

Le matchmaking d'Edgegap s'intègre :

  • au Client de jeu, pour gérer les Tickets de joueurs,

  • au Serveur de jeu, pour :

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

    • prendre en charge de manière optionnelle le Remplissage (Backfill) pour ajouter ou remplacer des joueurs après le démarrage.

Dans le Client de jeu, nous recommandons de fournir aux joueurs des mises à jour sur l'état des tickets tout au long du Processus de Matchmaking via l'interface utilisateur en jeu afin d'offrir la meilleure expérience possible. Consultez :

Dans le Client de jeu, veillez à gérer les erreurs non récupérables :

  • HTTP 404 Not Found - le 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 d'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 (App Versions) pour obtenir les paramètres spécifiques à la version, la configuration (capacité de joueurs) et les secrets.

  3. Lisez les Variables d'environnement injectées (Déploiement) pour obtenir les informations de déploiement, telles que l'adresse IP, l'emplacement, etc.

Une fois que les joueurs se connectent, le Serveur de jeu et les Clients de jeu lancent une scène de chargement pour exécuter 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 salon ou un écran de chargement avec une barre de progression, pour indiquer que l'initialisation progresse.

Une fois que les Clients de jeu ont fini de charger, les joueurs chargent/basculent vers la scène de jeu principale.

En option, le Serveur de jeu peut créer et gérer le Remplissage (Backfill) et la capacité de joueurs (ajouter ou remplacer les joueurs qui quittent la partie).

Assurez-vous que votre déploiement sera arrêté correctement à l'aide de l'URL DELETE injectée, si :

  • aucun joueur ne rejoint la partie,

  • tous les joueurs ont quitté la partie,

  • la partie se termine correctement.

Félicitations, vous avez terminé l'intégration d'Edgegap Matchmaker ! Si vous souhaitez en savoir plus, découvrez tous les détails dans notre Centre d'apprentissage.

Comment intégrer le matchmaking à votre jeu multijoueur grand public (Casual)

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

L'exemple suivant vous aidera à tester le flux de joueurs principal du 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 grand public. Et voilà, vous avez (techniquement) fait la moitié du chemin ! Il ne vous reste 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 ; 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 détaille la fonction de chaque règle de matchmaking (« Explorer la configuration »).

  3. L'étape 3 (« Examiner les détails de l'instance ») concerne votre matchmaker spécifique et personnel, afin de 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 l'API des tickets »), consiste à vérifier que vos demandes de matchmaking provenant des joueurs, appelées tickets, sont bien reçues par le matchmaker.

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

Si vous rencontrez des difficultés de dépannage, notre Centre d'apprentissage détaillé contient des conseils de dépannage supplémentaires.

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 d'abord sur Create Matchmaker (Créer un matchmaker), puis saisissez :

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

  • Ensuite, téléversez l'exemple simple suivant sous forme de configuration JSON ci-dessous pour votre jeu Casual :

{
  "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 : assurez-vous de modifier le name et la version de l'application pour qu'ils correspondent à vos Applications et Versions !)

Si aucune erreur de validation n'apparaît, cliquez sur Create and Start (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 Example.

Vous pouvez maintenant passer à l'étape suivante.

2. Explorer la configuration​

Règles uniques pour jeu grand public multijoueur

Avec un nombre d'équipes de 1 et une taille d'équipe de 50, 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 renseigner leurs préférences de mode de jeu et choisir un mode adapté à tous,

  • Rejoindre en tant que groupe pour des salons prédéfinis ou pour remplir des équipes sans dépasser la taille limite de l'équipe,

  • ajouter l'🗺️ Interface de sélection de région pour restreindre les adversaires aux régions spécifiées,

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

  • allouer plus de processeur ou de mémoire en utilisant différentes 🏷️ Versions d'application lorsque davantage de joueurs sont autorisés.

Élargir les restrictions pour garantir des parties rapides :

  • assouplir rapidement les restrictions de latence pour trouver plus de joueurs,

  • réduire progressivement la taille de l'équipe pour nécessiter moins de joueurs et lancer la partie plus tôt,

    • éventuellement, vous pouvez faire en sorte que le serveur comble les emplacements vides avec des joueurs IA,

  • si aucun coéquipier n'est trouvé, lancer la partie en solo et utiliser le Remplissage (Backfill) pour ajouter des joueurs par la suite,

    • cela permettra aux joueurs de rejoindre des parties existantes plutôt que de nouvelles, afin de maximiser l'interaction sociale.

Gestion sémantique des versions

À mesure que nous publions des mises à jour pour Matchmaker, chaque nouvelle version utilise le Versionnage sémantique pour communiquer clairement l'impact des modifications en interprétant le format majeur.mineur.correctif :

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

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

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

Certains déploiements peuvent entraîner des erreurs. Nous tentons de résoudre ce problème en réessayant le déploiement automatiquement jusqu'à max_deployment_retry_count fois (sans confirmation du client).

Pour vous assurer que les pannes inattendues de clients ou les tickets abandonnés ne persistent pas et ne consomment pas les ressources de votre matchmaker, les tickets seront annulés après ticket_expiration_period, ce qui fera passer leur statut à CANCELLED, puis seront 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 des Versions d'application avec une quantité prédéfinie de ressources CPU et mémoire (RAM) requises.

Les Règles de Matchmaking de l'ensemble initial doivent être satisfaites pour que les joueurs soient regroupés, chacune étant définie par trois propriétés :

  • le nom de votre choix, par ex. - match size,

  • le type de règle, également appelé opérateur, par ex. - player_count,

  • et enfin les attributs de l'opérateur, par ex. team_count ou team_size.

Règle de nombre de joueurs (Player Count)

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

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

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

Notre exemple simple illustre une partie coopérative à 2 joueurs.

Veuillez noter que la règle « Player Count » est requise et ne peut être définie qu'une seule fois dans vos règles de configuration initiales.

Règle de latences (Latencies)

Utilisez cette règle pour offrir le ping le plus bas possible à tous les joueurs. Une fois que les clients mesurent et transmettent leur temps d'aller-retour (ping) par rapport à toutes les balises disponibles, Gen2 ne considérera que les correspondances situées dans une limite de difference spécifique des valeurs de ping, mesurées par rapport aux Balises de ping. Cela offre une solution « souple » pour fractionner votre base de joueurs, en permettant les correspondances avec les régions voisines, ce qui améliore notamment la rapidité des matchs pour les régions moins peuplées. Utilisez max_latency pour éviter les correspondances avec des joueurs situés trop loin.

Vous pouvez maintenant passer à l'étape suivante.

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

  • Alice et Bob seront mis en correspondance, car Pékin est écarté (>200) et le reste respecte | 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 mis en correspondance, 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 la règle « Latencies Rules » ne peut être définie qu'une seule fois dans vos règles de configuration initiales.

3. Examiner les détails de l'instance​

Consultez les détails de votre nouveau matchmaker dans notre tableau de bord une fois qu'il est initialisé :

Status indique l'état du service ; il peut être ONLINE, OFFLINE ou ERROR.

  • Identifier aide l'équipe d'Edgegap à retrouver rapidement votre matchmaker si vous avez besoin d'aide pour le dépannage.

  • Started at peut être utile pour déterminer l'heure de la dernière mise à jour.

  • Size correspond à l'un de nos Niveaux tarifaires.

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

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

  • Auth Token est un jeton secret unique utilisé par les clients de 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 de l'API et de l'Auth Token.

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 graphique 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 :

  • laissez Postman Collection sélectionné,

  • sélectionnez View Import Settings et modifiez le paramètre Parameter generation en Example.

Confirmez l'importation ; une nouvelle collection intitulée Matchmaker apparaîtra alors dans la liste des collections sur la gauche.

Affichez plus d'actions, ouvrez l'onglet Authorization et choisissez :

  • Auth Type - API Key,

  • Key - « Authorization »

  • Value - insérez votre valeur AuthToken ici,

  • Add to - Header.

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 puis Create a matchmaking ticket, ce qui ouvrira un nouvel onglet.

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

remarquez que player_ip est défini sur null ; cela entraînera l'utilisation de l'adresse IP automatiquement ajoutée à votre requête (voir Intégration de serveur à serveur pour d'autres solutions),

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

  • attributes inclut les valeurs pour les règles de votre matchmaker, dans ce cas pour la règle latencies,

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

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

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

  • id est votre identifiant unique de ticket de matchmaking, conservez-le pour vérifier votre ticket ultérieurement,

  • profile confirme le choix des Profils de Matchmaking,

  • group_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é mis en correspondance ou affecté à un serveur,

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

  • status indique le statut actuel du ticket ; tous les tickets commencent en SEARCHING (voir Processus de Matchmaking pour plus de détails).

Créez un deuxième ticket en cliquant à nouveau sur Send, afin que nos deux joueurs soient mis en correspondance et qu'un serveur soit démarré.

Dans votre collection Matchmaker, sélectionnez {ticketId} puis Read a matchmaking ticket.

Saisissez l'ID du ticket obtenu dans la réponse de l'étape précédente et cliquez sur Send.

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

  • le statut passe d'abord à MATCH_FOUND, tout en conservant assignment défini sur null pour indiquer que les joueurs ont été appariés et qu'un serveur est en cours d'attribution,

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

  • le statut passe à HOST_ASSIGNED avec assignment contenant les détails du serveur attribué.

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

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

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

Une fois que vous avez vérifié que vous pouvez vous connecter à votre déploiement sans problème et que vos tests sont terminés, arrêtez votre déploiement afin de libérer de la capacité sur votre compte pour la version suivante.

Vous pouvez maintenant passer à l'étape suivante.

5. Intégrer le Matchmaker dans votre jeu​

Le matchmaking d'Edgegap s'intègre :

  • au Client de jeu, pour gérer les Tickets de joueurs,

  • au Serveur de jeu, pour :

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

    • prendre en charge de manière optionnelle le Remplissage (Backfill) pour ajouter ou remplacer des joueurs après le démarrage.

Dans le Client de jeu, nous recommandons de fournir aux joueurs des mises à jour sur l'état des tickets tout au long du Processus de Matchmaking via l'interface utilisateur en jeu afin d'offrir la meilleure expérience possible. Consultez :

Dans le Client de jeu, veillez à gérer les erreurs non récupérables :

  • HTTP 404 Not Found - le 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 d'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 (App Versions) pour obtenir les paramètres spécifiques à la version, la configuration (capacité de joueurs) et les secrets.

  3. Lisez les Variables d'environnement injectées (Déploiement) pour obtenir les informations de déploiement, telles que l'adresse IP, l'emplacement, etc.

Une fois que les joueurs se connectent, le Serveur de jeu et les Clients de jeu lancent une scène de chargement pour exécuter 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 salon ou un écran de chargement avec une barre de progression, pour indiquer que l'initialisation progresse.

Une fois que les Clients de jeu ont fini de charger, les joueurs chargent/basculent vers la scène de jeu principale.

En option, le Serveur de jeu peut créer et gérer le Remplissage (Backfill) et la capacité de joueurs (ajouter ou remplacer les joueurs qui quittent la partie).

Assurez-vous que votre déploiement sera arrêté correctement à l'aide de l'URL DELETE injectée, si :

  • aucun joueur ne rejoint la partie,

  • tous les joueurs ont quitté la partie,

  • la partie se termine correctement.

Félicitations, vous avez terminé l'intégration d'Edgegap Matchmaker ! Si vous souhaitez en savoir plus, découvrez tous les détails dans notre Centre d'apprentissage.

Écrit par

l'équipe Edgegap

Intégrer Edgegap facilement en quelques minutes

Commencez l'intégration maintenant!

Mettez votre jeu en ligne facilement
& en quelques minutes

Intégrer Edgegap facilement en quelques minutes

Commencez l'intégration maintenant!