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 de Matchmaking. Si vous rencontrez des problèmes ou des divergences, assurez-vous de vous référer au guide original, car ils sont plus souvent mis à jour.

L'exemple suivant vous aidera à tester le flux joueur principal de matchmaking, à savoir :

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

  1. La première étape est de créer un compte et d'utiliser notre exemple de jeu sandbox. Voilà, vous avez techniquement fait la moitié du chemin ! Vous devrez seulement 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 « comment lire » qui explique la fonction de chaque fonction de règles de matchmaking (« Explorer la configuration »).

  3. L'Étape 3 (« Réviser les détails de l'instance ») concerne votre matchmaker personnel et spécifique afin de s'assurer qu'il est déployé et fonctionne avec le design de votre jeu.

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

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

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

1. Configurer le Niveau Gratuit

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

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

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

  • Puis, téléchargez l'exemple simple suivant en tant que 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 s'assurer de changer le nom de l'application et la version pour correspondre à vos Applications 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 créera un nouveau cluster gratuit débutant avec votre matchmaker d'Exemple Simple.

Vous pouvez désormais passer à l'étape suivante.

2. Explorer la Configuration

Règles uniques pour les jeux multijoueurs sandbox

Les lobbies personnalisés (lobbies privés, niveaux sandbox) sont une option très populaire pour le multijoueur local mais aussi pour tester de nouvelles fonctionnalités dans les 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 possible, mais visent à s'assurer que les joueurs peuvent Rejoindre en Groupe.

Les tickets de Backfill peuvent utiliser des profils de lobby personnalisés pour inviter des amis de manière fiable, tant que les tickets de Backfill sont valides.

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

Versionnage Sémantique

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

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

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

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

Certaines déploiements peuvent entraîner des Erreurs. Nous tentons de résoudre cela en réessayant le déploiement jusqu'à max_deployment_retry_count fois automatiquement (sans confirmation client).

Pour s'assurer que les plantages inattendus des clients ou les tickets abandonnés ne persistent pas et n'utilisent pas vos ressources de matchmaker, les tickets seront annulés après ticket_expiration_period entraînant un changement de leur statut en ANNULÉ et ensuite supprimés de manière permanente 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 CPU requis et de ressources mémoire (RAM).

Règles de Matchmaking dans l'ensemble de règles initial doit être respecté pour que les joueurs soient regroupés, chacun défini par trois propriétés :

  • nom de votre choix, par exemple - taille du match,

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

  • et enfin, attributs de l'opérateur, par exemple nombre_d’équipes ou taille_d’équipe.

Règle de Nombre de Joueurs

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

  • nombre_d’équipes se réfère au nombre d'équipes, 1 équipe peut être utilisée pour les modes coopératifs ou tous contre tous,

  • taille_d’équipe se réfère au nombre de joueurs par équipe.

Notre exemple simple montre un jeu coopératif avec 2 joueurs.

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

Règles de Latences

Utilisez cette règle pour fournir le ping le plus bas possible pour tous les joueurs. Une fois que les clients mesurent et soumettent leur temps de trajet aller-retour (ping) à tous les balises disponibles, Gen2 ne considérera que les matchs avec une Balises de Ping différence spécifique dans les valeurs de ping. Cela présente une solution « douce » pour diviser votre base de joueurs, permettant une correspondance avec les régions voisines, améliorant surtout la vitesse de match pour les régions moins peuplées. Utilisez latence_max pour éviter de correspondre contre des joueurs situés loin.

Vous pouvez maintenant passer à l'étape suivante.

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

  • Alice et Bob correspondront, 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 correspondront 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 Latences" ne peuvent être définies qu'une seule fois dans vos règles de configuration initiales.

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

Révisez 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 ONLINE, OFFLINE, ou ERROR.

  • 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 la dernière heure de mise à jour.

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

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

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

  • Token d'authentification est un jeton secret unique utilisé par les Clients de Jeu et le Serveur de Jeu pour l'authentification.

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

Vous pouvez maintenant passer à l'étape suivante.

4. Tester l'API des Tickets

Tout d'abord, ouvrez votre URL Swagger pour inspecter votre schéma openAPI dans l'interface Swagger

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

Enregistrez cette page 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ée,

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

Confirmez l'importation, cela entraînera l'apparition d'une nouvelle collection dans la liste des Collections à gauche, intitulée Matchmaker.

Voir plus d'actions, ouvrez l'onglet Autorisation et choisissez :

  • Type d'authentification - API Key,

  • Clé - « Authorization »

  • Valeur - insérez votre valeur AuthToken ici,

  • Ajouter à - Header.

Appuyez sur (CTRL/CMD+S) ou sur l'icône Enregistrer pour enregistrer les modifications. Le point orange dans votre onglet Postman devrait disparaître.

Dans votre collection Matchmaker, sélectionnez tickets et Créer un ticket de matchmaking, ouvrant un nouvel onglet.

Sélectionnez l'onglet Corps pour prévisualiser votre requête de ticket joueur :

notez player_ip défini sur null - cela utilisera l'adresse IP ajoutée automatiquement à votre requête (voir Intégration Serveur à Serveur pour les alternatives),

  • profil réfère à vos Profils de Matchmaking,

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

    • la règle player_count 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 de Swagger de l'exemple. 

Cliquez sur Envoyer et examinez la réponse à votre requête de ticket joueur :

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

  • profil confirmant le choix des Profils de Matchmaking,

  • group_id est un ID de groupe unique attribué à chaque ticket, un joueur solo est représenté comme un groupe de 1,

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

  • assignment est mis à null pour indiquer que le ticket n'a pas encore été assorti ou assigné à un serveur,

  • created_at fournit des informations sur le moment où le ticket 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 appuyant sur Envoyer à nouveau, afin que nos deux joueurs correspondent et qu'un serveur soit démarré.

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

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

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

  • statut changé en MATCH_FOUND d'abord, tout en gardant assignment défini sur null pour indiquer que les joueurs ont été assortis et qu'un serveur est en cours d'assignation,

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

  • statut changé en HOST_ASSIGNED avec assignment contenant les détails du serveur assigné.

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

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

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

Une fois que vous avez vérifié que vous êtes en mesure de vous connecter à votre Déploiement sans problème et que vous avez terminé les tests, Arrêtez votre Déploiement pour libérer de la capacité dans votre compte pour la prochaine construction.

Vous pouvez maintenant passer à l'étape suivante.

5. Intégrez le Matchmaker dans votre Jeu

L'intégration du matchmaking d'Edgegap :

  • avec le Client de Jeu, pour gérer les Tickets Joueurs,

  • avec le Serveur de Jeu, pour :

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

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

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

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

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

  • HTTP 500 Internal Server Error - interruption du 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 de matchmaking initiales des joueurs.

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

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

Une fois que les joueurs sont connectés, Serveur de Jeu et Clients de Jeu commencent une scène de chargement pour effectuer des étapes de synchronisation (par exemple, sélectionner et charger une carte/scène/niveau). Nous recommandons une scène 3D complète, une interface utilisateur sociale de type lobby, ou un écran de chargement avec une barre de progression, pour indiquer que l'initialisation progresse.

Une fois que Les Clients de Jeu sont complètement chargés, les joueurs chargent/voyagent vers la scène de jeu principale.

Optionnellement, Le Serveur de Jeu peut créer et gérer Backfill et la capacité des joueurs (ajouter ou remplacer des joueurs qui partent).

Assurez-vous que votre déploiement sera arrêté correctement en utilisant DELETE_URL Injecté, 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 de l'Edgegap Matchmaker ! 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