Comment ajouter le matchmaking à un jeu multijoueur sur Unity Engine

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

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 Unity Engine

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

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

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

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

  3. L'étape 3 (« Revoir les Détails de l'Instance ») concerne votre matchmaker personnel et spécifique afin de vous assurer qu'il est déployé et fonctionne avec le design de votre jeu.

  4. L'étape 4, comme son nom l'indique (« 4. Tester l'API des Tickets »), concerne le test de vos demandes de matchmaking des joueurs qui sont reçues par le matchmaking, appelées tickets.

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

Si vous avez des défis de dépannage, notre Centre d'Apprentissage approfondi a des conseils de dépannage supplémentaires.

Tutoriel Unreal - Ajout du Matchmaking d'Edgegap

Si cela paraît écrasant, nous avons ce qu'il vous faut - regardez la vidéo d'intégration étape par étape :

1. Configuration de la Tier Gratuite

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

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

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

  • Ensuite, téléchargez le simple exemple suivant en tant que configuration JSON ci-dessous pour votre jeu Unity 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": {}
      }
    }
  }
}

(petit rappel de s'assurer de changer le nom de l'application et version pour correspondre à votre Application et Versions!)

Si aucune erreur de validation n'apparaît, cliquez sur Créer et Démarrer et attendez la fin du processus. Cela produira un nouveau cluster gratuit démarrant, avec votre simple exemple de matchmaking.

Vous pouvez maintenant passer à l'étape suivante.

2. Explorer la Configuration

Versionage Sémantique

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

  • major les versions comprennent des changements de rupture et nécessitent une révision d'intégration,

  • minor les versions comprennent des améliorations substantielles rétrocompatibles,

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

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

Pour s'assurer que les plantages inattendus du client ou les tickets abandonnés ne persistent pas et ne consomment pas vos ressources de matchmaking, les tickets seront annulés après ticket_expiration_period modifiant leur statut en CANCELLED et seront ensuite 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 Versions dApp avec une quantité prédéfinie de ressources CPU et mémoire (RAM) requises.

Les 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_joueurs,

  • et enfin les attributs de l'opérateur, par exemple nombre_equipes ou taille_equipe.

Règle de Compte des Joueurs

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

  • nombre_equipes fait référence au nombre d'équipes, 1 équipe peut être utilisée pour des modes coopératifs ou en free-for-all,

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

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

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

Règle 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 ping aller-retour (ping) par rapport à tous les balises disponibles, Gen2 ne considérera que les correspondances dans une différence spécifique de valeurs de ping, mesurées par rapport aux Balises de Ping. Cela présente une solution « douce » pour diviser votre base de joueurs, permettant un matching avec des régions voisines, surtout en améliorant la rapidité des matchs pour des régions moins peuplées. Utilisez max_latencypour empêcher le matchmaking avec des joueurs situés loin.

Vous pouvez maintenant passer à l'étape suivante.

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

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

3. Revoir les Détails de l'Instance

Revoir les détails de votre nouveau matchmaking 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 votre matchmaking rapidement si vous avez besoin d'aide pour le dépannage.

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

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

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

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

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

Pour tester votre nouveau matchmaking à l'aide de l'API, vous aurez besoin de l'URL Swagger, de l'URL API et du Token Auth.

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 depuis l'étape précédente :

  • gardez Postman Collection sélectionné,

  • séléctionnez Afficher les Paramètres d'Import 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 Auth - Clé API,

  • Clé - “Autorisation

  • Valeur - insérez ici votre AuthToken valeur,

  • Ajouter à - Entête.

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

Dans votre collection de 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 billet de joueur :

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

  • profil 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 des latences,

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

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

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

  • id est votre identifiant unique de ticket de matchmaking, gardez-le enregistré pour vérifier 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, peu importe la méthode d'identification utilisée,

  • assignment est défini sur null pour indiquer que le ticket n'a pas encore été associé ou attribué à un serveur,

  • created_at fournit des informations sur le moment où le billet du 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 des détails).

Créez un deuxième ticket en cliquant sur Envoyer pour que nos deux joueurs se correspondent et qu'un serveur soit démarré.

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

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

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

  • le statut est passé à MATCH_FOUND au début, tout en gardant assignment défini sur null pour indiquer que les joueurs se sont correspondus et qu'un serveur est en train d'être attribué,

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

  • le statut est passé à 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 identifiants de tickets 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èmes et que vous avez terminé les tests, Arrêtez votre Déploiement pour libérer de la capacité dans votre compte pour la prochaine version.

Vous pouvez maintenant passer à l'étape suivante.

5. Intégrer le Matchmaker dans votre Jeu

Le matchmaking d'Edgegap s'intègre :

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

  • avec Serveur de Jeu, pour :

    • traiter les préférences des joueurs transmises par 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 sur l'état des tickets tout au long du Processus de Matchmaking aux joueurs en utilisant l'interface utilisateur dans le jeu pour la meilleure expérience possible. Voir :

Dans le Client de Jeu, veillez à gérer les erreurs non réessayables :

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

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

Dans le Serveur de Jeu, traitez les préférences des joueurs et le contexte initial du serveur. Une intégration API n'est pas 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 paramètres (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 se connectent, le Serveur de Jeu et les Clients de Jeu entament 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 entièrement chargés, les joueurs chargent/se déplacent vers la scène principale de gameplay.

Facultativement, 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 à l'aide de Injected DELETE_URL, 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 à ce sujet dans notre Centre d'Apprentissage.

Écrit par

l'équipe Edgegap