Pour un client, j’ai développé une méthode fiable et peu couteuse pour pouvoir personnaliser les joueurs AVANT le lancement de la partie et que ça se répercute en cours de partie.
Je vois pas mal de jeux faire un fake lobby où la partie est lancé par l’hôte et les autres joueurs rejoignent et personnalisent leur avatar. C’est une approche maladroite qui peut venir d’un manque de recul et de connaissance sur un service très utile avec Netcode For GameObjects : le lobby service.
Ce que ce lobby fait, c’est vous permettre de rejoindre, quitter et modifier un lobby (et de donner des datas aux joueurs 😉). En effet, on peut être sur une scène pour le lancement du jeu et sur une autre scène pour le jeu lui-même. Le lobby permet de faire la liaison.
Problème : c’est un service externe qui n’aime pas être harcelé. Pas question de le requêter plus d’une fois par seconde. Or vos joueurs vont peut être tous se connecter en même temps. Il n’est donc pas question d’aller query directement les informations.
Ce que vous voulez faire :
- au moment de lancer la partie, sauvez une instance du lobby que vous utilisé dans la home scene dans une classe qui va voyager entre vos scènes (pourquoi pas par exemple sur votre network manager).
- Les joueurs doivent demander au serveur, via un RPC, LEURS informations en fournissant leur authID (qui sert de fil d’ariane car il sert justement à identifier les joueurs dans les datas players du lobby).
- Le serveur met à jour les network variables correspondantes si l’authID correspond bien au joueur dans la liste des data players 🙂
Avec cette solution, on a un vrai lobby, pas de problème de reached query rate et les données sont fiables car le serveur s’occupe de tout 👍
En schéma, ça donne ça :
Leave a Reply