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

L'exemple suivant vous aidera à tester le flux principal de joueurs matchmaking pour un jeu multijoueur Unreal Engine, à 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 simple. Voilà, vous avez (techniquement) à moitié terminé ! Il vous suffira d'intégrer le matchmaker dans votre jeu (voir étape 5).

  2. Maintenant, vous ne devriez jamais suivre aveuglément un exemple de 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 détaille la fonction de chaque fonction Matchmaking. Fonctions de règles (« Explorer la configuration »).

  3. L'étape 3 (« Réviser les détails de l'instance ») couvre 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 son nom l'indique (« 4. Test du Ticket API »), consiste à tester vos demandes de matchmaking joueurs sont reçues par le matchmaker, appelé tickets.

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

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

Tutoriel Unreal - Ajouter le Matchmaking d'Edgegap

Si cela semble intimidant, nous vous couvrons - regardez la vidéo d'intégration étape par étape :

1. Configuration du niveau gratuit

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

De là, cliquez d'abord sur Create Matchmaker, puis entrez :

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

  • Ensuite, téléchargez l'exemple simple suivant comme 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": {}
      }
    }
  }
}

(rappel amical de bien vouloir vous assurer de changer le nom de l'application et la version pour correspondre à votre Application et Versions !)

Si aucune erreur de validation n'apparaît, appuyez sur Create and Start et attendez que le processus soit terminé. Cela créera un nouveau cluster gratuit démarrant, avec votre matchmaker Simple Example.

Vous pouvez maintenant passer à l'étape suivante.

2. Explorer la configuration

Versionnage sémantique

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

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

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

  • les versions corrections 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 garantir que les crashs clients inattendus ou les tickets abandonnés ne traînent pas et n'occupent pas les ressources de votre matchmaker, les tickets seront annulés après ticket_expiration_period entraînant un changement de statut à ANNULÉ et supprimés définitivement 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 des Versions d'application avec une quantité prédéfinie de ressources CPU et mémoire (RAM) nécessaires.

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

  • nom de votre choix, par ex. - taille du match,

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

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

Règle de Nombre de Joueurs

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

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

  • taille_d'équipe réfère 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 de Latence

Utilisez cette règle pour fournir le ping le plus faible possible à tous les joueurs. Une fois que les clients mesurent et soumettent leur temps aller-retour (ping) contre tous les balises disponibles, Gen2 ne considérera que les correspondances dans une différence de valeurs de ping spécifiques, mesurée par rapport aux Balises de Ping. Cela présente une solution « douce » pour diviser votre base de joueurs, permettant une correspondance avec les régions voisines, en particulier en améliorant la vitesse de match pour les régions moins peuplées. Utilisez latence_max pour éviter de se jumeler avec des joueurs éloignés.

Vous pouvez maintenant passer à l'étape suivante.

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

  • Alice et Bob correspondent, puisque Pékin est rejeté (>200) et le reste est dans | A-B | < 50 :

    • Alice {Montréal : 12.3, Newark : 45.6, Dallas : 59.9, Pékin : 264.4} ; et

    • Bob {Montréal : 27.3, Newark : 32.4, Dallas : 23.1, Pékin : 252.2}.

  • Charlie et Dave ne se 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 "Latence" ne peuvent être définies qu'une seule fois dans vos règles de configuration initiales.

3. Examiner les détails de l'instance

Examinez les détails de votre nouvelle matchmaker dans notre tableau de bord une fois son initialisation terminée :

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

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

  • Démarré le 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é par les clients de jeu et les serveurs de jeu pour communiquer avec Gen2.

  • URL Swagger est une interface graphique openAPI utile que nous fournissons pour explorer le schéma API.

  • Jeton 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 à l'aide de l'API, vous aurez besoin de l'URL Swagger, de l'URL API et du Jeton d'authentification.

Vous pouvez maintenant passer à l'étape suivante.

4. Tester l'API des tickets

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

Cliquez sur 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 :

  • gardez Collection Postman sélectionnée,

  • s'lectionnez Afficher les paramètres d'importation et changez le réglage 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 - Clé API,

  • Clé - “Autorisation

  • Valeur - insérez votre valeur AuthToken ici,

  • Ajouter à - En-tête.

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

remarquez que player_ip est défini sur null - cela entraînera l'utilisation de l'adresse IP ajoutée automatiquement à votre demande (voir Intégration de serveur à serveur pour les alternatives),

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

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

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

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

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

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

  • profil 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, quel que soit le mode d'identification utilisé,

  • assignment est mis à null pour indiquer que le ticket n'a pas encore été apparié ni attribué à un serveur,

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

  • status indique le statut actuel du ticket, tous les tickets commencent par RECHERCHE (voir Processus de matchmaking pour les détails).

Créez un deuxième ticket en cliquant à nouveau sur Envoyer, afin que nos deux joueurs correspondent et qu'un serveur soit lancé.

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

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

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

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

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

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

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

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

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

Une fois que vous avez vérifié que vous pouvez 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 build.

Vous pouvez maintenant passer à l'étape suivante.

5. Intégrer le Matchmaker dans votre jeu

L'intégration du matchmaking d'Edgegap :

  • avec le Client de jeu, pour gérer les tickets des joueurs,

  • avec le Serveur de jeu, pour :

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

    • facultativement pour prendre en charge le Backfill afin d'ajouter ou de remplacer des joueurs après le début.

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

Dans le Client de jeu, assurez-vous de traiter les erreurs non réessayables :

  • HTTP 404 Introuvable - le ticket a été supprimé,

  • HTTP 500 Erreur interne du serveur - panne temporaire de service.

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 (Versions d'application) pour les paramètres et paramètres spécifiques à la version (capacité des joueurs), et secrets.

  3. Lisez les variables d'environnement injectées (Déploiement) pour obtenir des informations sur le déploiement, telles que l'adresse IP, la localisation ou plus encore.

Une fois les joueurs connectés, Serveur de Jeu et Clients de Jeu démarrent une scène de chargement pour effectuer les étapes de synchronisation (par ex. 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 est en cours.

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

Facultativement, le Serveur de jeu peut créer et gérer le Backfill et la capacité des joueurs (ajouter ou remplacer des joueurs qui quittent).

Assurez-vous que votre déploiement 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 tout cela 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