plusieurs scènes multijoueurs
plusieurs scènes multijoueurs
Bonjour,
J'ai créé un jeu solo qui fonctionne très bien, j'ai donc commencer la partie multi, sa fonctionne plutôt bien mais j'ai tout de même un problème :
Ce que je veut faire, c'est des secteurs pour pas entasser une centaine de joueurs sur une map de 10 mètre carré (bon j'exagère un peu ...).
Mais dans mon jeu, le joueur peut jeté des objets a terre qui n'attendent que d'être ramassé pas d'autre joueurs.
ainsi, si je fait un seveur "normal" est ce qu'il peut synchroniser TOUTES les scènes du jeu (puisqu'une scène représente un secteur).
Ou faut il que je mettent tous mes secteurs dans la même scene ? Mais dans ce cas, le serveur ramera a mort puisqu'il faut qu'il synchronise toutes les info joueur + les objets mobile + les objet ramassable et l'inventaire de ceux ci, si c'est des caisses ou autres ...
Que faire ... Je suis perdu, toi là dit moi ou se trouve la tour effeil stp ... XD sérieusement aidez moi svp ...
J'ai créé un jeu solo qui fonctionne très bien, j'ai donc commencer la partie multi, sa fonctionne plutôt bien mais j'ai tout de même un problème :
Ce que je veut faire, c'est des secteurs pour pas entasser une centaine de joueurs sur une map de 10 mètre carré (bon j'exagère un peu ...).
Mais dans mon jeu, le joueur peut jeté des objets a terre qui n'attendent que d'être ramassé pas d'autre joueurs.
ainsi, si je fait un seveur "normal" est ce qu'il peut synchroniser TOUTES les scènes du jeu (puisqu'une scène représente un secteur).
Ou faut il que je mettent tous mes secteurs dans la même scene ? Mais dans ce cas, le serveur ramera a mort puisqu'il faut qu'il synchronise toutes les info joueur + les objets mobile + les objet ramassable et l'inventaire de ceux ci, si c'est des caisses ou autres ...
Que faire ... Je suis perdu, toi là dit moi ou se trouve la tour effeil stp ... XD sérieusement aidez moi svp ...
Merci de vos réponses futures. (au moin j'aurais pas a le retaper a chaque fois ...) :p
Re: plusieurs scènes multijoueurs
Je suis pas sur d'avoir bien compris, mais si tu veux que les joueurs qui rejoignent la scene/server vois les objets qui ont été lâché par terre avant qu'ils rentrent, utilise des RPC Buffered RPCMode.OthersBuffered/RPCMode.AllBuffered
comme ça, le serveur renverra une copie du RPC déjà envoyé auparavant seulement pour le joueur qui viens de rentrer dans le server
http://docs.unity3d.com/ScriptReference ... fered.html
comme ça, le serveur renverra une copie du RPC déjà envoyé auparavant seulement pour le joueur qui viens de rentrer dans le server
http://docs.unity3d.com/ScriptReference ... fered.html
Re: plusieurs scènes multijoueurs
Merci de ta réponse, qui m'a l'air intéressante, je connaissait pas cette fonction, donc merci.
Mais ce n'est pas sa que je cherche, c'est pas trop du code, en faite je sais pas du tous, je vais essayer de réexpliqué étape par étape :
- J'ai un jeux solo,
- je le met en multi sur UNE scène, sa fonctionne.
- dans mon jeu solo, j'ai plusieurs secteur, et chaque secteur est une scène, quand le joueur change de secteur, il change de scène.
- je veut garder ce système de secteur (donc multiscène) dans mon jeu multi.
Déja me vien la question "Comment faire sa".
Donc mon problème est :
Comment depuis un serveur général, que TOUTES les scène présente sur le jeu, soit synchronisé par celui ci.
Par exemple un joueur se connecte a la scène principal, il peut bougé et tous, et là il veut changer de secteur (donc de scène), est-ce qu'il pourra et comment ?
Ai-je été clair cette fois ci ?
Mais ce n'est pas sa que je cherche, c'est pas trop du code, en faite je sais pas du tous, je vais essayer de réexpliqué étape par étape :
- J'ai un jeux solo,
- je le met en multi sur UNE scène, sa fonctionne.
- dans mon jeu solo, j'ai plusieurs secteur, et chaque secteur est une scène, quand le joueur change de secteur, il change de scène.
- je veut garder ce système de secteur (donc multiscène) dans mon jeu multi.
Déja me vien la question "Comment faire sa".
Donc mon problème est :
Comment depuis un serveur général, que TOUTES les scène présente sur le jeu, soit synchronisé par celui ci.
Par exemple un joueur se connecte a la scène principal, il peut bougé et tous, et là il veut changer de secteur (donc de scène), est-ce qu'il pourra et comment ?
Ai-je été clair cette fois ci ?
Merci de vos réponses futures. (au moin j'aurais pas a le retaper a chaque fois ...) :p
Re: plusieurs scènes multijoueurs
je pense que c'est la même facon que pour le solo, avec le Application.loadLevel
Re: plusieurs scènes multijoueurs
Quelques question pour bien comprendre la question.
Quel assets ou techno utilises tu pour ton réseau? natif Unity? Photon? Smartfox? autre chose?
Est-ce que tu as un serveur dédié ou est-ce qu'un des joueur est le serveur?
Est-ce que ton "univers" doit être sauvé quelque part ou est-ce qu'une fois la partie terminé c'est bon on lance un nouvelle partie et les objets par terre ont disparu?
Plus précisément, pendant une partie, si personne n'est dans une de tes zones, est-ce qu'l faut garder les informations sur les objets par terre dans cette zone quand même?
Quel assets ou techno utilises tu pour ton réseau? natif Unity? Photon? Smartfox? autre chose?
Est-ce que tu as un serveur dédié ou est-ce qu'un des joueur est le serveur?
Est-ce que ton "univers" doit être sauvé quelque part ou est-ce qu'une fois la partie terminé c'est bon on lance un nouvelle partie et les objets par terre ont disparu?
Plus précisément, pendant une partie, si personne n'est dans une de tes zones, est-ce qu'l faut garder les informations sur les objets par terre dans cette zone quand même?
Re: plusieurs scènes multijoueurs
Justement, je prendrait le plus optimisé pour ce que je veut faire, j'ai déja utilisé le natif d'unity, et je le connais "parfaitement" sur environ 60% de ses possibilité (enfin je croit ...)NDrew a écrit :Quelques question pour bien comprendre la question.
Quel assets ou techno utilises tu pour ton réseau? natif Unity? Photon? Smartfox? autre chose?
Oui, enfin pour l'instant j'ai qu'un vieux PC qui sert de serveur de test, mais par la suite, je vais me prendre un des serveur dedié (http://www.ovh.com/fr/vps/vps-cloud.xml).NDrew a écrit :Est-ce que tu as un serveur dédié ou est-ce qu'un des joueur est le serveur?
J'avait pensé a utilisé un script pour une communication avec une base de données SQL (je pense que sa sera un MySQL). Après, si il y a un moyen d'optimisé ceci, je peut changer mes idée puisque j'ai a peine commencé mon projet (qui doit être validé en novembre par mon école d'ingénieur qui m'aidera au sein du projet et un suivie du projet comme un client le ferai).NDrew a écrit :Est-ce que ton "univers" doit être sauvé quelque part ou est-ce qu'une fois la partie terminé c'est bon on lance un nouvelle partie et les objets par terre ont disparu?
Le mieux, sa serai que oui, mais après si on peut pas faire autrement, "ba tant pi ..." mais sa serai préférable que toutes les actions du jeu (donc même un cargo laissé par terre) soit sauvegarder.NDrew a écrit :Plus précisément, pendant une partie, si personne n'est dans une de tes zones, est-ce qu'l faut garder les informations sur les objets par terre dans cette zone quand même?
Merci de vos réponses, et excusez moi, j'était pas mal occupé avec un autre projet (rémunéré ;p) qui en ce moment me vampirise tous mon temps ...
Merci de vos réponses futures. (au moin j'aurais pas a le retaper a chaque fois ...) :p
Re: plusieurs scènes multijoueurs
Oki donc je vois un peu plus ce que tu veux faire. Donc encore quelques questions qui pourrait t'aider a bien voir ce qu'il te faut.
Est-ce que ton serveur a besoin d'etre unity. Est-ce que c'est lui qui gere la physique, sur quels sujet est il "autoritaire"
Pour avoir une persistence des objet, il faut qu'ils soient stocké dans une BD. Apres, tu as plusieurs facon de faire tes zones....
-Tu pourrais faire sans serveur dedié en te disant que chaque fois qu'un joueur entre dans une scene, s'il est le 1er il est le serveur et va aller chercher l'etat des objets sur la BD avec un appel WWW genre. les clients suivant se "synchronisent" sur lui. Il faut gérer le fait qu'il peut partir de la zone a un moment et donc un autre devient maitre et il faut que si tout le monde quite la zone, le dernier update la BD sur l'état actuel de la zone. Faut voir aussi que le mec qui va etre choisi comme serveur malgré lui, son pc va peut etre en chier pas mal si la zone est chargé, c'est un gros risque....
-tu porurais aussi faire une archi avec server dédié ou ce serveur lance des unity au besoin pour etre le serveur d'une zone. Quand la zone se vide, il ferme la zone. Ce serveur peut etre autoritaire et informer les clients des positions pour éviter des hack. Faut prévoir ou les gens vont aller pour ne pas trop lancer de "unity" inutile, ca doit etre assez lourd. J'ai aucune idée de la complexité du truc par contre....
-Tu pourrais faire une archi avec un serveur dédié. Si tu fais assez confiance a tes players, tu peux laisser toutes la physique et le jeu être géré par le coté client, le serveur ne fait que gérer les inventaire par exemple. Donc quand un joueur ramasse un objet par terre, il le dit au serveur qui le met dans son inventaire et qui dit a tout le monde que l'objet n'est plus par terre. Cette archi comporte des risque de hacking mais bon faut voir
Donc en fonction de ce que tu veux faire, tu vas pouvoir choisir la techno qui te permet de le faire par la suite.
Perso je fais du jeu tour par tour, donc la validation est simple et j'ai pas besoin d'avoir unity coté serveur. C'est pour ca que smartfoxserver est parfait pour moi. Si jamais tu veux parler de sa mise en place hésite pas a passer sur le chat.
Bonne journée
Est-ce que ton serveur a besoin d'etre unity. Est-ce que c'est lui qui gere la physique, sur quels sujet est il "autoritaire"
Pour avoir une persistence des objet, il faut qu'ils soient stocké dans une BD. Apres, tu as plusieurs facon de faire tes zones....
-Tu pourrais faire sans serveur dedié en te disant que chaque fois qu'un joueur entre dans une scene, s'il est le 1er il est le serveur et va aller chercher l'etat des objets sur la BD avec un appel WWW genre. les clients suivant se "synchronisent" sur lui. Il faut gérer le fait qu'il peut partir de la zone a un moment et donc un autre devient maitre et il faut que si tout le monde quite la zone, le dernier update la BD sur l'état actuel de la zone. Faut voir aussi que le mec qui va etre choisi comme serveur malgré lui, son pc va peut etre en chier pas mal si la zone est chargé, c'est un gros risque....
-tu porurais aussi faire une archi avec server dédié ou ce serveur lance des unity au besoin pour etre le serveur d'une zone. Quand la zone se vide, il ferme la zone. Ce serveur peut etre autoritaire et informer les clients des positions pour éviter des hack. Faut prévoir ou les gens vont aller pour ne pas trop lancer de "unity" inutile, ca doit etre assez lourd. J'ai aucune idée de la complexité du truc par contre....
-Tu pourrais faire une archi avec un serveur dédié. Si tu fais assez confiance a tes players, tu peux laisser toutes la physique et le jeu être géré par le coté client, le serveur ne fait que gérer les inventaire par exemple. Donc quand un joueur ramasse un objet par terre, il le dit au serveur qui le met dans son inventaire et qui dit a tout le monde que l'objet n'est plus par terre. Cette archi comporte des risque de hacking mais bon faut voir
Donc en fonction de ce que tu veux faire, tu vas pouvoir choisir la techno qui te permet de le faire par la suite.
Perso je fais du jeu tour par tour, donc la validation est simple et j'ai pas besoin d'avoir unity coté serveur. C'est pour ca que smartfoxserver est parfait pour moi. Si jamais tu veux parler de sa mise en place hésite pas a passer sur le chat.
Bonne journée
Re: plusieurs scènes multijoueurs
réponse. J'ai essayer le script C mais quand je l'exécute sous unity j'ai un message d'erreur. J'ai essayer aussi avec le code caméra.aspect, mais ce code lui comprime l'image dans sa largeur sans avoir un rendu letterbox........
- TheDreamer
- Messages : 64
- Inscription : 02 Sep 2014 21:14
- Localisation : Suisse
Re: plusieurs scènes multijoueurs
Salut,
Je ne connais pas les autres plugins.
Mais je sais que la méthode standard d'Unity avec les networkviews n'est pas très optimisée pour décider qui partage quelles données avec qui.
Si tu veux l'utiliser, je vois trois possibilités
- Soit tu utilises un serveur persistant, qui partage les données avec tout le monde, chaque joueur indiquant dans quelle pièce il est, si il n'est pas dans la même pièce que toi, tu désactive son networkview(sauf pour le serveur). C'est le plus simple, mais tu générera par contre du traffic réseau inutile.
- Soit tu utilises toujours un serveur persistant, mais tu désactive le state synchronisation de tous les networkviews et tu ne communique qu en utilisant la fonction: void NetworkView.RPC(string name, NetworkPlayer target, params object[] args);
Comme ça tu pourras choisir toi même quel player communique avec quel player.
- Soit tu fais en sorte d'avoir un serveur par room, avec des connections/reconnexions (et créations, si tu crées le serveur chez un client).
Un des soucis du réseau d'Unity, c'est que les données semblent toujours communiquées à tous les clients par le serveur, donc si on veut faire des "groupes" de clients qui ne communiquent entre eux, ça semble impossible à optimiser...
Je ne connais pas les autres plugins.
Mais je sais que la méthode standard d'Unity avec les networkviews n'est pas très optimisée pour décider qui partage quelles données avec qui.
Si tu veux l'utiliser, je vois trois possibilités
- Soit tu utilises un serveur persistant, qui partage les données avec tout le monde, chaque joueur indiquant dans quelle pièce il est, si il n'est pas dans la même pièce que toi, tu désactive son networkview(sauf pour le serveur). C'est le plus simple, mais tu générera par contre du traffic réseau inutile.
- Soit tu utilises toujours un serveur persistant, mais tu désactive le state synchronisation de tous les networkviews et tu ne communique qu en utilisant la fonction: void NetworkView.RPC(string name, NetworkPlayer target, params object[] args);
Comme ça tu pourras choisir toi même quel player communique avec quel player.
- Soit tu fais en sorte d'avoir un serveur par room, avec des connections/reconnexions (et créations, si tu crées le serveur chez un client).
Un des soucis du réseau d'Unity, c'est que les données semblent toujours communiquées à tous les clients par le serveur, donc si on veut faire des "groupes" de clients qui ne communiquent entre eux, ça semble impossible à optimiser...
Mes Jeux: <Angels of Valhalla> et <Harena>
Re: plusieurs scènes multijoueurs
Merci a tous de vos réponse, et je croit que je vait faire comm vous supposez tous les deux : unity natif avec plusieurs serveur dédié (1 serveur par zone), sur un serveur dédier, une dizaine de serveur, sa peut tenir combien de joueurs et pour quelle config (au debut du jeu, seul 5 secteurs seront présent, voir moin, et petit a petit, j'augmenterais le nombre de secteur en fonction du nombre de joueur, en suivant mon histoire-background).
J'avais pensé a faire un serveur par zone, mais j'avait trouvé que le temps de chargement rebuterais les joueurs et que le serveur dédié allait souffrir avec tous ces serveurs ...
Pour faire plusieurs serveur sur un même PC, il faut changer les ports, mais il n'y a pas un autre moyen ?
De toute façon, j'ai le temps, j'ai jusqu’à la fin de mes études pour faire le projet (il me reste donc 4 ans).
Encore merci a tous.
J'avais pensé a faire un serveur par zone, mais j'avait trouvé que le temps de chargement rebuterais les joueurs et que le serveur dédié allait souffrir avec tous ces serveurs ...
Pour faire plusieurs serveur sur un même PC, il faut changer les ports, mais il n'y a pas un autre moyen ?
De toute façon, j'ai le temps, j'ai jusqu’à la fin de mes études pour faire le projet (il me reste donc 4 ans).
Encore merci a tous.
Merci de vos réponses futures. (au moin j'aurais pas a le retaper a chaque fois ...) :p