IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Unity Discussion :

Problème affichage gameobject sur server


Sujet :

Unity

  1. #21
    Membre actif
    Profil pro
    Programmeur Audio
    Inscrit en
    Décembre 2010
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur Audio
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 127
    Points : 221
    Points
    221
    Par défaut
    mmmh là je suis a cours d'idée. Pourrais tu essayé d'utiliser un RPC pour voir si le serveur le reçois bien et suffisamment rapidement.

    Est ce que le client reçoit bien la confirmation de la connexion ? Il n'y a pas de time out ? Je ne connais pas l'ancienne API réseau je vais avoir du mal a t'aider :/

  2. #22
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2015
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Le RPC passe très bien dans le sens serveur-->client et l'inverse également. Le client reçoit bien la confirmation de connexion et pas de time out. Le problème ne vient pas de la connexion c'est sûr et certain car sur le serveur j'applique un compteur avec un nombre de connexion donné par la fonction OnPlayerConnected() et comme je te le dit, c'est quasi instantané pour l'incrémentation du compteur. Je vois que deux clients sont connectés par exemple mais leur gameObject n'est pas instancié en même temps que leur connexion alors qu'il le devrait :/

  3. #23
    Membre actif
    Profil pro
    Programmeur Audio
    Inscrit en
    Décembre 2010
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur Audio
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 127
    Points : 221
    Points
    221
    Par défaut
    Est ce que tu charges un level au moment de la connexion ?
    C'est possible que ton go soit instancié dans l'ancienne scène.

    Sinon tu pourrais essayer un truc dans le genre pour voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    public class GameManager: MonoBehaviour
    {
        public GameObject playerPrefab;
        public NetworkView networkView;
     
        void OnConnectedToServer()
        {
            networkView.RPC ("SpawnPlayer", RPCMode.Server);
        }
     
        [RPC]
        void SpawnPlayer()
        {
            Network.Instantiate(playerPrefab, Vector3.zero, Quaternion.identity, 0);
        }
    }
    Si ça ne fonctionne toujours pas je te conseillerais fortement d'essayer avec la nouvelle version de l'API réseau et d'utiliser la même version de unity.

    Bon courage.

  4. #24
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2015
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Bon, quelques nouvelles des avancées. Apparemment, en local tout fonctionne plutôt bien avec un temps de latence entre la connexion au serveur et l'instance du joueur sur le serveur quasi nul. En revanche sur mon vps il y a un temps de latence assez exceptionnel, c'est pourquoi je vais essayer sur un autre pc qui n'est pas sur mon réseau pour voir si ça ne viendrai pas de la sécurité ou des ports du VPS. J'éditerai ce message quand j'aurai des résultats.

  5. #25
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2015
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Voici quelques résultats qui pourront aider.
    Je viens de tester en local en compilant le projet server et ça ne fonctionne pas ! Le gameObject ne se génère que lorsque le projet est ouvert dans Unity Editor.

  6. #26
    Membre actif
    Profil pro
    Programmeur Audio
    Inscrit en
    Décembre 2010
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur Audio
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 127
    Points : 221
    Points
    221
    Par défaut
    C'est compliqué de t'aider a partir de supposition il faudrait que tu montres le code serveur et client.

    Est-ce que tu as une seul scène ou plusieurs ? Est-ce que tu es dans la bonne scène ?

    Le gameObject ne se génère que lorsque le projet est ouvert dans Unity Editor.
    C'est à dire ? Tu as le serveur de lancé dans unity et un build du client ?

  7. #27
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2015
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Je ne peux pas me permettre de mettre tout le code en publique malheureusement c'est pour ça que j'essaye d'être le plus précis possible.
    Je vais tout redétailler.
    Nous avons deux projets différents, l'un est le client et l'autre le serveur.
    Le client est l'application sur la quelle le joueur effectue une connexion sur le serveur et le serveur s'occupe de synchroniser tout ce petit monde.
    Lorsque l'on effectue un Network.Instantiate depuis le client, cela créer le gameobject Joueur sur le client ET sur le serveur pour synchroniser avec les éventuels autres joueurs.
    Le problème initiale est que lorsque le gameObject Joueur se créer sur le client il y a un trop grand temps de latence entre le moment où il se créer sur le client et sur le serveur.
    Autrement dit les instances sur le client et sur le serveur doivent être faîte pratiquement en même temps, mais ce n'est pas le cas.
    Depuis le début je travail exclusivement sur deux pc, l'un simule la connexion d'un client et l'autre émule la partie (serveur). Je lance mon serveur depuis l'interface Unity et non depuis le projet compilé et en local cette technique fonctionne mais lorsque (toujours en local) je compile le projet serveur et que je me connecte, les gameObject Joueur ne se créent plus sur le serveur, mais alors plus du tout (j'ai fait un test pour voir et il n'est pas apparut au bout de 15 minutes, j'en ai déduis qu'il n’apparaîtrai pas.
    Pour m'en convaincre j'ai donc installer un GUI sur le serveur avec deux compteurs, l'un qui s'incrémente lorsqu'une connexion est effectué entre le serveur et un client et le deuxième, lui, s'incrémente lorsqu'un gameObject avec le tag player apparaît (GameObject.FindGameObjectsWithTag("Player")).
    C'est pourquoi je peux vérifier si le deuxième compteur s'incrémente et pour faire simple, lorsque le projet serveur n'est pas compilé et est sur l'éditeur Unity et qu'il y a une connexion d'effectuée, le compteur s'incremente presque instantanément (j'ai calculé le temps de latence entre la connexion et la création de l'objet et c'est de l'ordre de 10/20ms soit quasiment nul) alors que lorsque je compile le serveur, le compteur ne s'incrémente pas du tout, ce qui montre que le gameObject Joueur n'est pas créé.

  8. #28
    Membre actif
    Profil pro
    Programmeur Audio
    Inscrit en
    Décembre 2010
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur Audio
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 127
    Points : 221
    Points
    221
    Par défaut
    Par hasard ton script ne se trouve pas dans un dossier editor ?

    Si y a une différence entre la version éditeur et build il faudrait vérifier que tu n'as pas de code spécifique.
    A par ça je ne vois vraiment pas comment je pourrais t'aider d'avantage :/

    Si tu commences avec le code réseau je te conseil de jeter un oeil sur la nouvelle API.

    Bon courage.

  9. #29
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2015
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Je suis de retour !
    J'ai finallement décidé de passer sur la nouvelle API uNet qui semble pour le moment assez simple à prendre en main. J'ai cependant pris la décision de ne pas utiliser le NetworkManagerHUD et de me faire mon propre affichage. J'arrive à créer un serveur (matchMaker.CreateMatch...) le soucis maintenant et de faire spawn mon joueur (décidemment j'ai un problème avec le spawning...). Il s'avère que sur mon client j'affiche les parties disponibles à l'aide de cette fonction : matchMaker.ListMatches et lorsque je clique sur mon bouton de connexion, la connexion s'effectue correctement mais le spawn ne se fait pas suite à cette erreur que j'ai essayé de résoudre en ratissant le web mais sans succès :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Failed to spawn server object, assetId=1634f971fce73841b6f56a741768655 netId=1
    UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()
    A savoir, sur mon prefab Player j'ai attribué un NetworkIdentity et check Local Player Authority.
    La scene "Selection de la partie" possède le NetworkManager où je met mon Prefab Joueur et où je coche Auto Create Player.
    Et dans la partie Offline Scene je met "Selection de la partie" et dans Online Scene je met "Scene du jeu".

    Dîtes moi si cette erreur vous parle car je stagne :/

  10. #30
    Membre actif
    Profil pro
    Programmeur Audio
    Inscrit en
    Décembre 2010
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur Audio
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 127
    Points : 221
    Points
    221
    Par défaut
    Est-ce que tu as coché "Dont Destroy On Load" dans le component NetworkManager ?
    Est-ce que ton serveur et client sont le même projet ? L'assetId ne sera probablement pas la même d'un projet a un autre. Tu dois avoir le même projet unity pour les 2.

  11. #31
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2015
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Oui j'ai bien coché
    Ce ne sont pas le même projet en effet, cela pourrait être la cause ?

  12. #32
    Membre actif
    Profil pro
    Programmeur Audio
    Inscrit en
    Décembre 2010
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur Audio
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 127
    Points : 221
    Points
    221
    Par défaut
    C'est même certain que c'est le problème ! Si tu es en texte pour les metadata il suffit de jeter un œil dedans.
    Tu ne vas pas avoir le choix que de créer ton build serveur et client avec le même projet mais ça ne devrait pas être trop compliqué.

    Ou sinon tu pourrais modifier à la main (ou via un tools) que tes assets client on le même ID que tes assets serveur. Je ne garanti pas que ça fonctionnerait a 100% mais ça devrait.

Discussions similaires

  1. Problème de déploiement sur server 2003
    Par Jb_One73 dans le forum WebDev
    Réponses: 0
    Dernier message: 23/04/2009, 19h14
  2. Problème affichage image sur N95
    Par dams95190 dans le forum Développement Mobile en Java
    Réponses: 6
    Dernier message: 10/09/2008, 15h38
  3. SQL Server : problème de requête sur server lié oracle
    Par stever50 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/03/2008, 12h06
  4. problème affichage souris sur media center
    Par rotor25 dans le forum Windows Vista
    Réponses: 3
    Dernier message: 08/10/2007, 12h24
  5. [XHTML] Problème affichage différent sur Internet Explorer et FireFox
    Par espaladito dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 22/09/2006, 18h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo