online faq recherche accueil
 

Il y a 172 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

Séparation des joueurs en cours de partie

 
n°4588498
Maximaxou
rejoignez les fidèles du JASS
Posté le 23-03-2007 à 12:50:23  profilanswer
 

   Voila. Au début de certains niveaux (quand beaucoup d'actions sont exécutées en même temps), les joueurs se retrouvent séparés : ceux qui peuvent hoster restent en jeu, ce qui ne le peuvent pas restent soient avec un host soient sont "kickées". Je ne sais pas exactement ce qui se passe j'ai essayé à trois joueurs et on dirait que c'est le dernier des trois qui se retrouvait éjecté (le premier étant celui qui peut host). Bref on dirait que c'est le fait qu'il y ait de nombreuses actions à faire en même temps qui provoque ceci. Je crois que ce sont les ordinateurs qui n'ont pas la même puissance et se retrouve à exécuter certaines actions à des moments différents (il me semble que c'est ce qu'on appelle des désynchronisations). Dans ce cas le fait que les joueurs soient séparés n'aurait rien d'étonnant puisque qu'ils se retrouvaient dans une même partie avec des positions d'unités différentes etc. J'aimerais donc savoir si c'est bien de ça qu'il s'agit, et comment pallier à ce problème. Merci de votre aide.


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588561
Maximaxou
rejoignez les fidèles du JASS
Posté le 25-03-2007 à 21:51:13  profilanswer
 

.......est-ce que des wait seraient utiles ?


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588566
Yukitan
Naga Stormstrike
Posté le 26-03-2007 à 05:44:24  profilanswer
 

En général, un script trop long peu désynchroniser des joueurs. Certaines fonctions désynchronise également des joueurs. Par exemple, le fais d'utilise la fonction "Joueur Local" pour désigner un joueur, causera 99% du temp une désynchronisation.
 
Le fait par exemple de créer un texte volant ou autre seulement pour tel ou tel joueur, causera une désynchronisation. Il y a pleins de petits trucs comme ça.

n°4588567
Maximaxou
rejoignez les fidèles du JASS
Posté le 26-03-2007 à 13:40:46  profilanswer
 

Et comment on les évite ?


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588578
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 26-03-2007 à 17:38:09  profilanswer
 

Yukitan a écrit :

En général, un script trop long peu désynchroniser des joueurs. Certaines fonctions désynchronise également des joueurs. Par exemple, le fais d'utilise la fonction "Joueur Local" pour désigner un joueur, causera 99% du temp une désynchronisation.
 
Le fait par exemple de créer un texte volant ou autre seulement pour tel ou tel joueur, causera une désynchronisation. Il y a pleins de petits trucs comme ça.


 
tu peux set ton paramètre valide pour le joueur concerné,  set ton paramètre nul pour les autres joueurs
 
 
Par exemple pour afficher une animation seulement pour le joueur rouge :
 

Code :
  1. local string S=null
  2.   if GetLocalPlayer()==Player(0) then
  3.    set S="work"
  4.   endif
  5. call SetUnitAnimation( gg_unit_hpea_0000, S )


 
 
 
Par contre pour tout ce qui est interactif sur le jeu telle une unité c'est bien sûr impossible


Message édité par Troll-Brain le 26-03-2007 à 17:41:34

---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4588580
Yukitan
Naga Stormstrike
Posté le 26-03-2007 à 18:20:51  profilanswer
 

Je le sais déjà, aussi! :)

n°4588581
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 26-03-2007 à 18:43:14  profilanswer
 

et ca désynchronise aussi dans ces cas là ?


---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4588583
Yukitan
Naga Stormstrike
Posté le 26-03-2007 à 18:54:23  profilanswer
 
n°4588585
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 26-03-2007 à 19:09:57  profilanswer
 


Je vois tu voulais faire mijoter notre ami Maximaxou spa gentil  :D  
 


---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4588601
Maximaxou
rejoignez les fidèles du JASS
Posté le 26-03-2007 à 20:52:55  profilanswer
 

Elle sert à quoi votre fonction joueur local ? Bon bah merci mais c un gars de mon clan ki ma donné la solution. Je lui explique mon problème, il me dit "tu as un 'pan caméra' ds ton déclo ?" Jdis que oui et lui imdi d'essayer sans... Et paf ça marche. Cette action crée bocou de désynchro m'a-t-il dit.


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588603
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 26-03-2007 à 20:56:22  profilanswer
 

GetLocalPlayer() revoie un joueur mais cette valeur est propre pour chaque ordinateur.
Celui du joueur rouge renverra Player(0), le bleu Player(1), etc.
 
c'est donc utile pour créer des fonctions initialement prévues pour tous les joueurs à un joueur en particulier


---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4588627
Maximaxou
rejoignez les fidèles du JASS
Posté le 27-03-2007 à 20:00:06  profilanswer
 

Code :
  1. function PanCameraToTimedForPlayer takes player whichPlayer, real x, real y, real duration returns nothing
  2.     if (GetLocalPlayer() == whichPlayer) then
  3.         // Use only local code (no net traffic) within this block to avoid desyncs.
  4.         call PanCameraToTimed(x, y, duration)
  5.     endif
  6. endfunction


Tiens c'est bizarre je vois un 'GetLocalPlayer'... xD


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588628
Maximaxou
rejoignez les fidèles du JASS
Posté le 27-03-2007 à 20:00:57  profilanswer
 

Je ne comprends pas ce qu'ils veulent dire par là :
"Use only local code (no net traffic) within this block to avoid desyncs."


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588639
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 27-03-2007 à 21:13:52  profilanswer
 

en gros n'utilisez pas cette fonction en réseau, sous peine de vous retrouver tout seul  :D


Message édité par Troll-Brain le 27-03-2007 à 21:14:11

---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4588646
Ayane
Posté le 28-03-2007 à 01:51:34  profilanswer
 

Citation :

Use only local code (no net traffic) within this block to avoid desyncs.


C'est le contraire:
Utilise seulement du code local (pas d'échanges internet), donc ce bloc de code ne provoque pas de désynchronisations.


---------------
http://acathla.com
http://worldedit.free.fr/
n°4588649
Maximaxou
rejoignez les fidèles du JASS
Posté le 28-03-2007 à 02:03:21  profilanswer
 

local code, pas local area network xD
Merci pour cette précision Ayane :)


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588660
Ayane
Posté le 28-03-2007 à 09:52:26  profilanswer
 

Blizzard a dut mettre à jour PanCameraToTimed en la synchronisant.
 
Le mieux dans ces cas là c'est de ne modifier que les valeurs:

Code :
  1. function PanCameraToTimedForPlayer takes player whichPlayer, real x, real y, real duration returns nothing
  2.     if (GetLocalPlayer() != whichPlayer) then
  3.         set x = GetCameraTargetPositionX()
  4.         set y = GetCameraTargetPositionY()
  5.         set duration = 0.
  6.     endif
  7.     call PanCameraToTimed(x, y, duration)
  8. endfunction


Comme cela on est sûr d'executer la fonction pour tous.


---------------
http://acathla.com
http://worldedit.free.fr/
n°4588689
Maximaxou
rejoignez les fidèles du JASS
Posté le 28-03-2007 à 17:42:01  profilanswer
 

Ah je viens de comprendre... c'est vraiment pas bête ça !
Mais tu peux modifier les fonctions de blizzou comme ça ?


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588690
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 28-03-2007 à 17:46:40  profilanswer
 

si tu changes et importe les librairies oui, il existe aussi des éditeurs non officiels qui permettent d'utiliser des common.j et blizzard.j en dehors du war3patch.mpq sans devoir les importer dans ta map


---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 
n°4588693
Maximaxou
rejoignez les fidèles du JASS
Posté le 28-03-2007 à 18:01:20  profilanswer
 

k


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588694
Maximaxou
rejoignez les fidèles du JASS
Posté le 28-03-2007 à 18:01:26  profilanswer
 

dommage


---------------
Dota c'est bien, le slide c'est encore mieux !
n°4588696
Troll-Brai​n
http://worldedit.free.fr/forum
Posté le 28-03-2007 à 18:44:23  profilanswer
 


Les editeurs dont je parle sont d'une autre génération que la bouse weu  :D  
Il y a grimoire que je n'ai pas testé mais moi j'utilise we helper, il est trés fonctionnel et axé sur l'utilisation du jass, va faire un tour sur wc3campaigns.net, il permet ausi de lancer warcraft en mode fenêtre.
Le debugger de script est sans comparaison par rapport à l'original etc.


---------------
Je ne prends que sur rendez vous.
Assurez vous d'avoir un moyen de paiement conséquent, et de préférence en liquide, avant de me quémander la moindre question.
 

Aller à :
Ajouter une réponse