Comment ajouter le matchmaking à un jeu multijoueur Unreal Engine

Comment ajouter le matchmaking à un jeu multijoueur Unreal
Comment ajouter le matchmaking à un jeu multijoueur Unreal
Comment ajouter le matchmaking à un jeu multijoueur Unreal

Principales informations

Principales informations

Principales informations

Le matchmaker d'Edgegap est un système de matchmaking entièrement géré et infiniment personnalisable qui regroupe de manière optimale les joueurs du monde entier – et son utilisation est gratuite pendant le développement de votre jeu multijoueur décontracté.

C'est également le seul système de matchmaking (à notre connaissance) avec des règles de matchmaking basées sur la latence pour fournir l'expérience multijoueur en ligne idéale pour votre jeu, quel que soit le moteur (Unity, Unreal, etc.) ou les services de jeu (EOS, UGS, PlayFab, Heroic Labs Nakama, Braincloud, etc.).

Comme notre matchmaker est basé sur des paramètres, il n'est pas nécessaire d'écrire du code. L'intégration est donc très facile et si nécessaire, nos guides d'intégration vous accompagnent à chaque étape.

Lorsque votre jeu est en ligne, étant donné que notre système de matchmaking est entièrement géré, vous n'avez pas besoin de gérer l'infrastructure, les bogues, les pannes, l'évolutivité ou la gestion de base de données. Nous nous occupons de tout pour vous. Réduisant ainsi votre charge de travail DevOps à presque zéro.

Comment intégrer le matchmaking dans votre jeu multijoueur Unreal Engine

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

L'exemple suivant vous aidera à tester le flux principal des joueurs de matchmaking pour un jeu multijoueur Unreal Engine, à savoir :

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

  1. La première étape consiste à créer un compte et à utiliser notre exemple de jeu simple. Voilà, vous avez (techniquement) fait la moitié du chemin ! Vous n'avez plus qu'à intégrer le matchmaking dans votre jeu (voir étape 5).

  2. Maintenant, vous ne devez jamais suivre aveuglément un exemple JSON que vous avez trouvé sur Internet, et il est donc fortement recommandé d'adapter les règles ci-dessus à votre jeu à tour de rôle. L'étape 2 (“Explorer la Configuration”) est notre « comment lire » qui traite de la fonction de chaque règle de matchmaking (“Explorer la Configuration”).

  3. L'étape 3 (“Vérifier les Détails de l'Instance”) couvre votre matchmaker personnel et spécifique pour vous assurer qu'il soit 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 des demandes de matchmaking des joueurs qui 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 difficultés de dépannage, notre Centre d'Apprentissage propose des conseils supplémentaires pour le dépannage.

Tutoriel Unreal - Ajout du Matchmaking d'Edgegap

Si cela semble intimidant, nous avons ce qu'il vous faut - regardez la vidéo d'intégration étape par étape :

1. Configurer le Niveau Gratuit

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

De là, cliquez d'abord sur Créer un Matchmaker ensuite, saisissez :

  • Un nom pour votre matchmaker – qui est uniquement 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 Unreal Engine :

{
  "version": "2.1.0",
  "inspect": true,
  "max_deployment_retry_count": 3,
  "ticket_expiration_period": "5m",
  "ticket_removal_period": "1m",
  "profiles": {
    "simple-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": 2
            }
          },
          "beacons": {
            "type": "latencies",
            "attributes": {
              "difference": 50,
              "max_latency": 200
            }
          }
        },
        "expansions": {}
      }
    }
  }
}

(rappelez-vous aimablement de changer le nom de l'application et version pour correspondre à vos Applications et Versions!)

S'il n'y a pas d'erreurs de validation, cliquez sur Créer et Démarrer et attendez que le processus se termine. 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

Versioning Sémantique

Au fur et à mesure que nous publions des mises à jour pour le Matchmaker, chaque nouvelle version utilise le versioning sémantique pour communiquer clairement l'impact des changements en interprétant le format majeur.minor.patch :

  • majeur versions incluent des changements majeurs et nécessitent une révision de l'intégration,

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

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

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

Pour garantir que les plantages inattendus des clients ou les tickets abandonnés ne s'accumulent pas et n'occupent pas les ressources de votre matchmaker, les tickets seront annulés après un ticket_expiration_period ce qui fera changer leur statut en CANCELLED et ensuite seront définitivement supprimés après ticket_removal_period.

Le cœur de notre logique de matchmaking est configuré dans Profils de Matchmaking. Chaque profil est une file d'attente de matchmaking complètement isolée, pointant vers Versions d'Application avec un nombre prédéfini de ressources CPU et mémoire (RAM) nécessaires.

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 de 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_votre_equipe.

Règle du Nombre de Joueurs

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

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

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

Notre exemple simple dé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ègle des 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 réponse aller-retour (ping) par rapport à tous les faros disponibles, Gen2 ne prendra en compte que les correspondances dans une différence spécifique dans les valeurs de ping, mesurées par rapport aux Ping Beacons. Cela présente une solution « douce » pour diviser votre base de joueurs, permettant un appariement avec des régions voisines, améliorant notamment la vitesse des matchs pour des régions moins peuplées. Utilisez max_latency pour éviter de correspondre à des joueurs situés loin.

Vous pouvez maintenant passer à l'étape suivante.

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

  • Alice et Bob vont se correspondre, car Pékin est écarté (>200) et le reste est à l'intérieur de | 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 s'apparieront pas, car | C-D | > 50 pour le Faro 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" peuvent seulement être définies une fois dans vos règles de configuration initiales.

3. Vérifier les Détails de l'Instance

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

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

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

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

  • Taille correspond à l'un de nos Échelons de Tarification.

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

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

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

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

Vous pouvez maintenant passer à l'étape suivante.

4. Tester l'API des Tickets

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

Cliquez sur le /...swagger.json URL 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 swagger.json fichier de l'étape précédente :

  • gardez Postman Collection sélectionné,

  • séléctionnez Afficher 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'Auth - Clé API,

  • Clé - “Autorisation

  • Valeur - insérez votre valeur d'AuthToken ici,

  • Ajouter à - En-tête.

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

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

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

notez que player_ip est défini sur null- cela va entraîner l'utilisation de l'adresse IP automatiquement ajoutée à votre demande (voir Intégration Serveur à Serveur pour des alternatives),

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

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

    • la règle nombre_de_joueurs est la seule règle qui ne nécessite pas d'attributs dans les tickets joueurs.

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

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

  • id est votre ID de ticket de matchmaking unique, gardez cela 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é 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é apparié ou attribué à un serveur,

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

  • status indique le statut actuel du ticket, tous les tickets commencent dans SEARCHING (voir processus de matchmaking pour les détails).

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

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

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

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

  • le statut a changé en MATCH_FOUND d'abord, tout en gardant assignment défini sur null pour indiquer que les joueurs ont correspondu et qu'un serveur est en train d'être attribué,

Cliquez à nouveau sur Envoyer pour vérifier votre ticket, et examinez l'attribution mise à jour de votre ticket 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 :

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

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

Une fois que vous avez vérifié que vous pouvez vous connecter à votre Déploiement sans problèmes et que vous avez terminé 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 Tickets de Joueurs,

  • avec Serveur de Jeu, pour :

    • traiter les préférences des joueurs passées à travers leurs tickets,

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

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

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

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

  • HTTP 500 Internal Server Error - panne temporaire du service.

Dans 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 Variables Environnementales Injectées (Gen2) pour récupérer les données de matchmaking initiales des joueurs.

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

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

Une fois que les joueurs se connectent, le Serveur de Jeu et les Clients de Jeu démarrent une scène de chargement pour effectuer des étapes de synchronisation (par exemple, sélectionner et charger une carte/scène/niveau). Nous recommandons une scène 3D complète, une interface utilisateur sociale de type hall d'attente, 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 complètement chargés, les joueurs chargent/voyagent vers la scène principale de gameplay.

En option, 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 du Matchmaker d'Edgegap ! Si vous souhaitez en savoir plus, lisez-en tout sur notre Centre d'Apprentissage.

Écrit par

l'équipe Edgegap