Ajoutez des relais aux jeux de réseau pair-à-pair dans Unity - Tutoriel vidéo (Mirror Networking Netcode)

Veuillez noter que cette vidéo spécifique utilise Mirror Networking comme exemple. Les vidéos NGO et Fish-Net devraient être disponibles bientôt, cependant, en dehors du dossier et de l'emplacement de certains fichiers, rien dans le processus ne change.

Nous allons couvrir la façon d'ajouter et de configurer les relais distribués d'Edgegap pour le réseau peer-to-peer dans votre jeu multijoueur en quelques minutes.

Les relais servent de connexion intermédiaire entre les joueurs sans avoir à utiliser un serveur dédié. De plus, les relais aident à contourner les restrictions liées à la connexion directe des joueurs, telles que les paramètres de pare-feu stricts ou de NAT, et améliorent les performances en gérant le trafic réseau tout en faisant fonctionner le jeu. Pour plus d'informations, consultez notre blog lié dans la description.

Allons directement au but !

Chapitre 1 : Configuration

Avant de mettre en œuvre des relais dans votre jeu, vous avez d'abord besoin d'un jeton qui permet au jeu d'interagir avec l'API de session de relais d'Edgegap.

Pour en obtenir un, créez un compte Edgegap ou connectez-vous directement à votre compte.

Depuis le tableau de bord, accédez à la page des relais en utilisant la barre latérale gauche. Faites défiler jusqu'à la section “Profils de relais”. Ici, cliquez sur “Créer un profil de relais.” Donnez un surnom à votre jeton, puis cliquez sur “Soumettre.” Votre jeton API de relais est désormais visible.

Ce jeton est utilisé dans votre projet pour gérer vos requêtes API ; à savoir, créer de nouvelles sessions de relais, obtenir des informations sur celles existantes et les terminer.

Bien que facultatif pendant le développement, nous recommandons fortement de combiner les relais avec des salons. Car cela regroupe les joueurs et crée une session pour eux. Les avantages sont nombreux, y compris l'amélioration de la confidentialité, comme la protection de l'adresse IP des joueurs, l'automatisation et la prévention des tricheurs et des hackers, et bien plus encore. Notre guide simple sur les salons est lié.

Nous utiliserons une connexion manuelle dans ce tutoriel, mais nous mettrons en évidence où se trouveraient les requêtes de salons dans le code.

Quelle que soit la méthode de regroupement utilisée, une fois les joueurs sélectionnés pour être dans la session de relais, cela nécessite une connexion. Ce transport peut être n'importe quelle solution netcode, comme Mirror Networking, Fish-Networking, ou Unity Netcode for GameObjects. La documentation d'Edgegap, ainsi que notre exemple sur GitHub, couvre chaque application pour ces netcodes.

Chapitre 2 : Gestionnaire de Réseau

À présent, au travail !

Tout d'abord, nous allons ajouter l'exemple d'Edgegap à votre projet de jeu.

Depuis votre gestionnaire de fichiers, accédez au dossier d'exemples d'Edgegap, puis allez dans le sous-dossier où trois exemples de netcode sont disponibles. Sélectionnez votre netcode, dans cet exemple spécifique, nous sélectionnons “Mirror”.

Copiez le dossier appelé “Edgegap”.

Changez pour le dossier de votre projet. Sélectionnez “Asset”, puis votre netcode qui, encore une fois, est “Mirror”. Ensuite, cliquez sur “Transport”, et maintenant collez le dossier du projet d'exemple d'Edgegap.

Maintenant, ouvrez votre projet dans Unity.

La première étape consiste à échanger votre composant de transport avec le nouveau provenant de l'exemple. Pour cela, depuis l'éditeur, sélectionnez d'abord “Gestionnaire de Réseau”.

Ensuite, retirez votre composant de transport actuel, dans cet exemple nommé “KCP Transport”.

Deuxièmement, ouvrez l'exemple d'Edgegap dans les assets. Le chemin dans notre exemple commence par sélectionner le projet, ici nommé “Mirror”, puis cliquez sur “transport”, sélectionnez “Edgegap”, suivi de “Edgegap Relay”. Le fichier est nommé “Edgegap KCP Transport dot CS”. Faites un glisser-déposer vers le Gestionnaire de Réseau dans l'éditeur.

La troisième étape consiste à ouvrir à nouveau le Gestionnaire de Réseau, puis à sélectionner “Transport” pour ajouter le nouveau transport KCP d'Edgegap.

Enfin, assurez-vous de désactiver le “Relay GUI” dans l'inspecteur du transport.

Chapitre 3 : Script - Envoyer des requêtes à l'API d'Edgegap

Comme nous manquons d'un système de salon, l'étape suivante consiste à créer un script pour envoyer des requêtes à l'API d'Edgegap. Trois fonctions doivent être ajoutées.

La première est de créer une nouvelle session de relais, la seconde d'obtenir des données sur une session de relais spécifique, et la troisième d'avoir d'autres joueurs rejoignant une session de relais existante. Chaque requête doit inclure le jeton “API de Profil de Relais” dans les en-têtes d'authentification, en utilisant “Token” comme son “schéma” et le jeton que nous avons généré d'Edgegap comme sa “valeur”. 

Pour créer une nouvelle session de relais, incluez une liste avec l'adresse IP individuelle de chaque joueur du groupe dans le corps de la requête. Si vous utilisez un salon, cela viendra de ce composant, mais étant donné que notre exemple est pour un regroupement manuel de joueurs, nous pouvons utiliser la même IP pour chacun d'eux à des fins de test. Pour que cet exemple soit aussi simple que possible, sélectionnons seulement deux joueurs. Une fois la session créée, son ID unique sera inclus dans la réponse de l'API.

Nous utilisons l'ID de session unique provenant de la réponse pour envoyer une “requête GET” pour les informations de cette session de relais spécifique, qui utilise l'ID comme paramètre de chemin. Cette fonction continuera d'envoyer la même requête dans une boucle jusqu'à ce que la réponse indique que le relais est prêt à accepter des connexions.

Une fois que le relais est prêt, nous renvoyons le contenu de la dernière réponse à utiliser plus tard.

Nous utilisons notre troisième fonction pour permettre à l'autre joueur de rejoindre le relais, dont nous connaissons déjà l'ID. Cela envoie également une requête GET avec l'ID de session de relais unique pour obtenir des informations mais saute la vérification, puisque nous appelons manuellement cette fonction lorsque nous savons déjà que le relais est prêt. Nous renvoyons le contenu de la réponse à utiliser plus tard.

Ces fonctions nous permettent de tester manuellement le relais sans avoir à utiliser un salon. Normalement, à la fois l'hôte et les autres joueurs attendraient que le relais soit prêt en même temps, puis rejoindraient tous en même temps lorsque les données deviennent disponibles.

À partir de là, créez un nouveau script pour orchestrer ce processus avec les entrées des joueurs. Dans notre exemple, nous créons une UI de base avec un champ de saisie et deux boutons et attachons le script à un objet de jeu.

Le bouton “Créer” appelle notre fonction de requête de création, tandis que le bouton “Rejoindre” utilise la valeur du champ de saisie comme l'ID de la session à rejoindre et appelle la fonction de requête de rejoindre.

Une fois les données retournées, utilisez-les pour définir les valeurs du transport. Les valeurs requises sont le “jeton d'autorisation de session”, qui est partagé entre chaque joueur dans la session, le “jeton d'autorisation utilisateur” qui est unique pour chaque joueur, l'“adresse IP” du relais, le “port serveur” utilisé par le joueur hébergeant le match qui a demandé la création de la session, et le “port client” utilisé par les autres joueurs.

Dans cet exemple, le jeton unique du joueur hôte est le premier dans la liste des réponses, tandis que le jeton du joueur rejoignant est le deuxième.

Une fois les valeurs définies, utilisez la fonction de transport appropriée pour initier la connexion, selon que le joueur est l'hôte ou non. À partir de là, les joueurs peuvent maintenant jouer à votre jeu !

Il y a cependant une dernière chose à faire. Vous devez inclure un système pour envoyer une requête API pour terminer la session de relais une fois le match terminé. Cela met fin à la connexion des joueurs au relais. 

Chapitre 4 : Conclusion  

Voilà tout pour ce tutoriel sur l'ajout de relais à votre jeu !

La prochaine étape de votre développement est probablement d'aller au-delà du peer-to-peer avec des serveurs autoritaires. Assurez-vous de consulter notre tutoriel vidéo pour Unity.

Pour des questions et de l'aide, vous êtes le bienvenu pour rejoindre la communauté Discord d'Edgegap.

Merci d'avoir regardé !