Comment ajouter un système de matchmaking à un jeu Roguelike multijoueur

Comment ajouter un système de matchmaking à un jeu Roguelike multijoueur
Comment ajouter un système de matchmaking à un jeu Roguelike multijoueur
Comment ajouter un système de matchmaking à un jeu Roguelike multijoueur

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 roguelike multijoueur

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

L'exemple suivant vous aidera à tester le flux de base de matchmaking joueur, à 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 roguelike. Voilà, vous êtes (techniquement) à mi-chemin ! Il vous suffirait d'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 fortement recommandé d'adapter les règles ci-dessus à votre jeu au tour par tour. L'étape 2 (« Explorer la Configuration ») est notre « comment lire » qui explique la fonction de chaque fonction des règles de matchmaking (« Explorer la Configuration »).

  3. L'étape 3 (« Révision des détails de l'Instance ») couvre votre matchmaker personnel 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. Tester l'API de Tickets »), consiste à tester que vos demandes de matchmaking des joueurs sont reçues par le matchmaker, appelées 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 avez des défis de dépannage, notre Centre d'Apprentissage approfondi a des conseils supplémentaires pour le dépannage.

1. Configurer le palier gratuit

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

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

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

  • Puis, téléchargez l'exemple simple suivant comme configuration JSON ci-dessous pour votre jeu roguelike :

{
  "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": {}
      }
    }
  }
}

(gentil rappel de bien vouloir 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 Créer et Démarrer et attendez que le processus soit terminé. 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

Règles de jeu roguelike multijoueur uniques

Les lobbies personnalisés (lobbies privés, niveaux sandbox) sont une option très populaire pour le multijoueur en canapé, mais aussi pour tester de nouvelles fonctionnalités dans des jeux compétitifs ou coopératifs avant qu'elles n'entrent dans les modes de jeu principaux. Ces jeux nécessitent généralement le moins de restrictions possible, mais visent à assurer que les joueurs peuvent Rejoindre en Groupe.

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

  • Astuce : 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

Lorsque nous publions des mises à jour pour le 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 significatifs et nécessitent une révision de l'intégration,

  • les versions minor incluent des améliorations importantes compatibles vers l'arrière,

  • les versions patch incluent des corrections de bugs 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 fois automatiquement (sans confirmation du client).

Pour s'assurer que les plantages clients inattendus ou les tickets abandonnés ne perdurent pas et n'occupent pas vos ressources de matchmaker, les tickets seront annulés après ticket_expiration_period conduisant leur statut à changer en ANNULÉ puis à être définitivement supprimé 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 Versions App avec un montant prédéfini de ressources CPU et mémoire (RAM) requises.

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

  • un 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_d'équipes ou taille_équipe.

Règle de Nombre de Joueurs

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

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

  • taille_é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 fois dans vos règles de configuration initiales.

Règle de Latences

Utilisez cette règle pour offrir le ping le plus bas possible pour 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 spécifique de valeurs de ping, mesurée contre Balises de Ping. Cela présente une solution « douce » pour diviser votre base de joueurs, permettant le matchmaking avec des régions voisines, améliorant particulièrement la vitesse de correspondance pour les régions moins peuplées. Utilisez max_latency pour éviter la correspondance avec des joueurs situés loin.

Vous pouvez maintenant passer à l'étape suivante.

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

  • Alice et Bob vont correspondre, puisque Beijing est écarté (>200) et le reste est dans | A-B | < 50 :

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

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

  • Charlie et Dave ne vont pas correspondre, car | C-D | > 50 pour la Balise Dallas :

    • Charlie {Montréal : 5.7, Newark : 44.2, Dallas : 59.5, Beijing : 263.2} ; et

    • Dave {Montréal : 57.8, Newark : 32.0, Dallas : 24.2, Beijing : 272.3}.

Veuillez noter que les « Règles de Latences » ne peuvent être définies qu'une fois dans vos règles de configuration initiales.

3. Révision des 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 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 retrouver l'heure de la dernière mise à jour.

  • Taille correspond à l'un de nos Paliers 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 UI openAPI pratique que nous proposons pour explorer le schéma API.

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

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

Vous pouvez maintenant passer à l'étape suivante.

4. Tester l'API de Tickets

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 comme 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é,

  • séléctionnez Voir les Paramètres d'Importation et changez le paramètre Génération de paramètre en Exemple.

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

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

  • Type d'Auth - Clé API,

  • Clé - « Autorisation »

  • Valeur - insérez ici votre valeur de AuthToken,

  • Ajouter à - En-tête.

Appuyez sur (CTRL/CMD+S) ou l'icône de sauvegarde pour enregistrer les changements. 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 player_ip réglé à null - cela entraînera l'utilisation de l'adresse IP ajoutée automatiquement à votre demande (voir Intégration Serveur à Serveur pour des alternatives),

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

  • attributs incluent des valeurs pour vos règles de matchmaker, 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 des joueurs.

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

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

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

  • profil confirmant le choix de Profils de Matchmaking,

  • group_id est un identifiant de groupe unique émis pour 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 réglé à null pour indiquer que le ticket n'a pas été associé ou assigné à un serveur pour le moment,

  • created_at fournit des informations sur la date de création du ticket du joueur pour l'usage de l'interface du jeu,

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

Créez un deuxième ticket en appuyant à nouveau sur Envoyer, ainsi nos deux joueurs s'apparieront et un serveur sera lancé.

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

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

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

  • le statut a changé en CONCORDANCE TROUVÉE d'abord, tout en gardant assignment réglé à null pour indiquer que les joueurs ont été appariés et qu'un serveur est en cours d'attribution,

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

  • le statut a changé en HÔTE ATTRIBUÉ avec assignment contenant des détails sur le serveur attribué.

 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 capable de vous connecter à votre déploiement sans problème et que vous avez terminé le test, Arrêtez votre Déploiement pour libérer la capacité dans votre compte pour la prochaine construction.

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 Tickets Joueurs,

  • avec Serveur de Jeu, pour :

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

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

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 en utilisant l'interface de jeu pour une meilleure expérience joueur. Voir :

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

  • HTTP 404 Non Trouvé - le ticket a été supprimé,

  • HTTP 500 Erreur Interne du Serveur - panne temporaire du service.

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 initiales de matchmaking des joueurs.

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

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

Une fois que les joueurs se connectent, 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 sociale 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 principale du jeu.

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

Assurez-vous que votre déploiement sera correctement arrêté en utilisant l'URL de SUPPRESSION Injectée, si :

  • aucun joueur ne rejoint le match,

  • tous les joueurs ont quitté le match,

  • le match se termine correctement.

Félicitations, vous avez complété l'intégration du Matchmaker Edgegap ! 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