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 :

UNET créer un lobby


Sujet :

Unity

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 59
    Points : 50
    Points
    50
    Par défaut UNET créer un lobby
    Bonjour

    Je galère un peu avec le network manager et le lobby manager du moins pour les fonctionner ensemble je n'arrive pas à trouver un bon tuto qui rassemble le tout.

    J'ai 3 scenes, une scene "Menu", une scene "Lobby" et une scene "InGame".

    J'ai mon network manager qui est set avec dans scène offline, la scene Menu (la scene menu possède des GUI pour afficher les boutons pour créer un lobby ou pour en rejoindre un) et dans la scene online j'ai mis ma scene lobby.

    Jusque là ca marche, des joueurs peuvent se connecter et apparaissent dans la scene lobby.

    mais voila j'aimerai bien intégrer le lobby manager avec tout ca et donc je voulais savoir :

    - comment set les deux éléments (network manager et lobby manager) ? dois je avoir mes deux gameobject directement dans ma scene menu ?
    - dans le lobby manager apriori il faut mettre ma scene lobby pour le lobby et ma scene ingame pour la game mais ca ne fonctionne plus avec mon networkmanager désormais, je ne peux plus créer de parties.
    - quelle différences entre le player prefab et le player lobby prefab ? comme j'ai en tout premier mon networkmanager qui crée déjà un prefab player dans ma scene lobby cela crée des conflits.


    en gros dans quel ordre et où je dois préparer mes objets network manager et lobby manager pour pouvoir créer/me connecter à un lobby que je puisse voir dans ce lobby la liste des joueurs connectés et que je puisse charger la scene ingame avec tout mes joueurs de connecter dedans ?

    Merci beaucoup pour votre aide

  2. #2
    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
    Salut,

    Comme indiqué dans la doc (http://docs.unity3d.com/Manual/UNetLobby.html) le lobby manager est un network manager spécialisé.
    Tu ne peux donc pas mixer les 2. Il faut que tu remplaces ton network manager par le lobby manager.

    Les callbacks sont différent. En gros ça donne:
    => Connexion au lobby
    => Démarrage de partie et création du joueur (comme quand tu te connectais avec le network manager).
    => Déroulement du jeu
    => Retour au lobby
    ou
    => déconnexion (comme quand tu quittais une partie avec le network manager)


    Dans la doc tu as un sample tout en bas. ça devrait pouvoir t'aider

    Bon courage !

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    Merci pour ta réponse, en effet ca marche. (désolé pour ma réponse tardive, je me repenche sur ce projet que récemment)

    Maintenant je m'attaque à faire un LobbyManager et un LobbyPlayer custom afin de faire mon propre affichage de lobby (liste des joueurs et afficher s'ils sont ready ou pas)

    J'aurai voulu savoir quel est la meilleur facon pour faire ca, par exemple, un LobbyManager qui, coté server va get chaque nouvelle connection et qui va passer par un gameobject tierce avec un network identity qui va faire un ClientRpc pour dire à tout les clients qu'un nouveau joueur s'est connecté. Et pour le bouton ready, pareil, j'override OnClientReady dans le lobbyPlayer custom pour indiquer que tel ou tel est ready ou non en faissant un ClientRpc avec le meme gameobject ?

    Mais est-ce la meilleur façon de faire ?

    Merci pour votre aide.

  4. #4
    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
    Salut !

    Tu peux jeter un œil dans le code source pour t’inspirer
    https://bitbucket.org/Unity-Technolo...e-view-default

    un LobbyManager qui, coté server va get chaque nouvelle connection et qui va passer par un gameobject tierce avec un network identity qui va faire un ClientRpc pour dire à tout les clients qu'un nouveau joueur s'est connecté.
    Le game object est instancié par le serveur !? Il est donc automatiquement répliqué chez les autres joueurs et donc tu n'as pas besoin d'un RPC pour ça ?
    Tu devrais ajouter le client créé dans la liste de tes clients connectés dans la fonction OnStartClient() je pense.

    Et pour le bouton ready, pareil, j'override OnClientReady dans le lobbyPlayer custom pour indiquer que tel ou tel est ready ou non en faissant un ClientRpc avec le meme gameobject ?
    OnClientReady est appelé quand un client signal qu'il est prêt. Tu peux te servir de ce callback pour faire un truc spécial par exemple jouer un son.
    J'imagine que tu as un bouton pour dire "je suis prêt". Ce bouton devrait envoyer un message au serveur (CmdSendReady) qui va transmettre aux joueurs que le joueur en question est prêt (RpcReady).

    En gros tu peux reprendre ce qu'a fait Unity est l'arranger à ta sauce !

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    Merci pour ta réponse mais comment récupérer la liste des joueurs et leur état sur chaque client ? Et si un nouveau client se connecte entre temps il faut rafraîchir la liste pareil si un joueur switch de ready à not ready ou vice versa.

    OnStartClient() est appelée quand ? La doc dit "Called on every NetworkBehaviour when it is activated on a client." Ca signifie à chaque connexion ? à chaque manifestation réseau du client ?

    Le LobbyManager est-il automatiquement sync entre les sessions ? Avec justement la liste des joueurs et leur état ?

  6. #6
    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
    Merci pour ta réponse mais comment récupérer la liste des joueurs et leur état sur chaque client ?
    Tu as ta liste client dans le lobby manager

    Et si un nouveau client se connecte entre temps il faut rafraîchir la liste pareil si un joueur switch de ready à not ready ou vice versa.
    Tu peux utiliser les callback pour avertir le UI qu'il y a du changement et utiliser la liste de client pour régénérer ta liste.

    OnStartClient() est appelée quand ?
    Comme indiqué ça veut dire quand le script est activé et que tu es un client.
    Il faudrait mettre un break point pour vérifier et activer/désactiver le script sur le game object. Si ça passe dedans a chaque activation c'est que c'est le cas.

    Le LobbyManager est-il automatiquement sync entre les sessions ? Avec justement la liste des joueurs et leur état ?
    Aucune idée il faudrait fouiller le code

Discussions similaires

  1. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 15h22
  2. Créer un interpréteur de langage inspiré du Basic
    Par Picasso dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 11/05/2002, 17h10
  3. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41
  4. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20

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