[RS-MY] Connecter 2 joueurs : Network configuration mismatch.

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Krafter
Messages : 65
Inscription : 11 Fév 2017 17:03

[RS-MY] Connecter 2 joueurs : Network configuration mismatch.

Message par Krafter » 20 Juin 2018 21:19

Bonjour!

Alors voilà j'essaye de faire un petit jeu en multi-joueur avec Unet pour me faire la main, n'ayant jamais touché au multi. Mais depuis 2/3 jours je rencontre un problème que je n'ai toujours pas pu résoudre. Je fais régulièrement des tests en local éditeur + build et mon soucis est que je ne peux plus connecter 2 joueurs en local. Ci-dessous je mets l'host sur le build et le client sur l'éditeur afin d'avoir les messages d'erreurs dans la console, mais j'ai le même soucis si l'éditeur est hôte.

Les tests que j'ai fais : lorsque je connecte un joueur en local qui host : il s'appelle Player 2 (un objet dans la scène à déjà un networkIdentity, si j'enlève cet objet j'ai toujours les mêmes problèmes mais en commençant par Player 1). Si ensuite je fais Stop Puis que je le reco : il s'appelle Player 4, puis Player6 si je continue, etc je ne sais pas pourquoi.... Si je lance un build et que je le rejoins de l'éditeur : j'ai l'erreur Network configuration mismatch detected. The number of networked scripts on the client does not match the number of networked scripts on the server. This could be caused by lazy loading of scripts on the client. This warning can be disabled by the checkbox in NetworkManager Script CRC Check. J'ai essayé de décoché ladite case, cela ne change rien. Coté build (qui host) j'ai le message : There is already a player at that playerControllerId for this connections. Enfin, j'ai mis un debug.log pour vérifier l'id du joueur qui rejoins la partie :

Code : Tout sélectionner

public override void OnStartClient() 
    {
        base.OnStartClient(); 

        string _netID = GetComponent<NetworkIdentity>().netId.ToString();  
        Debug.Log(_netID);
        Player _player = GetComponent<Player>();

        GameManager.RegisterPlayer(_netID, _player);
    }
Quand j'ai déjà un joueur dans un build et que je clique une fois sur Client pour le rejoindre de l'éditeur, le deuxième joueur n'arrive pas à rejoindre et j'ai les messages suivant dans la console :Image.



Toutefois si je fais ensuite Stop pour ce joueur dans l'éditeur et que je re-tente de rejoindre cela fonctionne le joueur rejoint la partie et j'ai alors : Image



La fonction ne m'est pas familière mais je trouve cela étrange que le debug se lise 2 fois depuis OnStartClient?

Voilà sachant que j'ai aussi fais tout ces tests en builds-builds via internet (j'avais mis ça en place avant) avec un ami et j'ai exactement les mêmes erreurs qu'en local. Si quelqu'un peut me sauver je bloque là-dessus depuis 2 jours sans pouvoir avancer dans mon projet.... Désolé du pavé j'ai essayer d'être le plus explicite possible.

Autodidactelife
Messages : 47
Inscription : 21 Fév 2018 23:04
Localisation : France

Re: [RS-MY] Connecter 2 joueurs : Network configuration mismatch.

Message par Autodidactelife » 23 Juin 2018 18:47

Bonjour,

Il faudrait je pense plus de script que ça pour aider, mais après je suis débutant je vais te donner mon avis.

"OnStartClient" >> Appelé sur chaque NetworkBehaviour lorsqu'il est activé sur un client.

Au final je suis sûr que ton jeu doit appeler plusieurs fois les fonctions puisqu'à chaque fois qu'un client spawn c'est appeler sur tout les client. Quand tu as 0 client ça l'appel que sur le client qui spawn, quand tu en as déjà 1 ça l'appel sur le client déjà présent et sur le nouveau, donc niveau joueur ça fait:

0 client = serveur génère player1 = 1 client
1 client = player1 génère player2, serveur génère player3 = 3 clients
2 client =player1 génère player4, player2 génère player5, serveur génère player6 = 6 clients
3 client = player1 génère player7,player2 génère player8,player3 génère player9, serveur génère player10 = 10 clients
etc ...

Je pense que ton soucis est ici, mais je peux dire une connerie ! J'ai définitivement stopper d'utiliser le serveur unity :)

En espérant t'avoir un minimum aider !

Cordialement

Répondre

Revenir vers « (C#) CSharp »