Aide : deplacement du joueur => client serveur
Re: Aide : deplacement du joueur => client serveur [non réso
autre chose , utilise l'udp pour un jeu en réseau.
Re: Aide : deplacement du joueur => client serveur [non réso
@cederavic
Merci beaucoup, cela corrige bien le problème. Merci beaucoup
@G-Rom
Non, mini jeu sans prétention, je ne veux pas de paquet perdu. L'UDP est bien pour certains type de jeu, le TCP est mieu pour d'autres.
Je ne cherche pas à faite un super mmo : juste à corriger le bout de code que j'ai posté pour qu'il fonctionne, afin que je puisse l'améliorer par la suite
j'ai nettoyé et corrigé mon script sur mon 1er topic. En l'essayant, vous verrez que je ne suis plus très loin, mais j'ai vraiment toujours besoin d'un petit coup de main
Un aide sur mon code serait vraiment super sympa, ça fait des jours (et nuits) que je suis la dessus.
Merci beaucoup, cela corrige bien le problème. Merci beaucoup

@G-Rom
Non, mini jeu sans prétention, je ne veux pas de paquet perdu. L'UDP est bien pour certains type de jeu, le TCP est mieu pour d'autres.
Je ne cherche pas à faite un super mmo : juste à corriger le bout de code que j'ai posté pour qu'il fonctionne, afin que je puisse l'améliorer par la suite

j'ai nettoyé et corrigé mon script sur mon 1er topic. En l'essayant, vous verrez que je ne suis plus très loin, mais j'ai vraiment toujours besoin d'un petit coup de main

Re: Aide : deplacement du joueur => client serveur [non réso
bon... tu as l'air de savoir alors... 

Re: Aide : deplacement du joueur => client serveur [non réso
Oui, je connais la différence entre le TCP et l'UDP et j'ai fait mon choix par rapport au jeu que je souhaite faire 
Après, loin de moi la prétention de tout connaitre, sinon je n'aurais pas demandé de l'aide. Mais je demande de l'aide par rapport à mon code, pas par rapport aux autres possibilités qui s'offrent à moi.
Je te remerci néanmoins d'avoir pris le temps de me répondre, et espère que tu pourras m'aider à résoudre mon problème (rendre fonctionnel mon code, il l'est presque en plus. Ou a défaut m'aider à comprendre ce qui ne va pas et à m'aider à le corriger éventuelement)

Après, loin de moi la prétention de tout connaitre, sinon je n'aurais pas demandé de l'aide. Mais je demande de l'aide par rapport à mon code, pas par rapport aux autres possibilités qui s'offrent à moi.
Je te remerci néanmoins d'avoir pris le temps de me répondre, et espère que tu pourras m'aider à résoudre mon problème (rendre fonctionnel mon code, il l'est presque en plus. Ou a défaut m'aider à comprendre ce qui ne va pas et à m'aider à le corriger éventuelement)

Re: Aide : deplacement du joueur => client serveur [non réso
en fait le mieux c'est d'utilisercederavic a écrit :Utilise WindowEvent() plutot que WaitWindowEvent() qui est bloquant. Ca resoudra ton probleme de focus sur le serveur pour que celui-ci envois les données.
Code : Tout sélectionner
WaitWindowEvent(10)
car dans l'etat si tu n'utilises QUE WindowEvent() regarde le gestionnaire des taches ton prg prends du temps machine pour rien ;
lorsqu'on utilise "WindowEvent()" il faut faire suivre d'un Delay(xx)
c'est pourquoi la fonction WaitWindowEvent(xx) a un paramètre de temps

de la sorte ton prg ne prends plus de temps machine pour rien
pour l'envoi de tes messages
Code : Tout sélectionner
Macro SendMove(type) ;Formation des paquet et envoie
TaillePaquet=8
*SenderMemory=AllocateMemory(TaillePaquet+5)
PokeB(*SenderMemory,type)
PokeL(*SenderMemory+1,TaillePaquet)
PokeL(*SenderMemory+5,Player(PlayerID)\x)
PokeL(*SenderMemory+9,Player(PlayerID)\y)
SendNetworkData(ConnectionID,*SenderMemory,TaillePaquet+5)
EndMacro
Macro SendText(type,message) ;Formation des paquet et envoie
TailleMessage=Len(message)
TaillePaquet=TailleMessage
*SenderMemory=AllocateMemory(TaillePaquet+5)
PokeB(*SenderMemory,type)
PokeL(*SenderMemory+1,TaillePaquet)
PokeS(*SenderMemory+5,message,TailleMessage)
SendNetworkData(ConnectionID,*SenderMemory,TaillePaquet+5)
Debug message
EndMacro
envoie un message avec un format different de SendText .. c'est normal ?
chez moi le SendText plante ..
pourquoi tu ne fais pas qu'une seule (procedure/macro) pour l'envoi ??
une structure pour recuperer toutes les données (x,y,idclient,massage.s ) et tu n'utilise qu'une seule Macro (procedure)
pour envoyer le tout ...
Re: Aide : deplacement du joueur => client serveur [non réso
Et ben bien vu, merci beaucoupWaitWindowEvent(10)

Sendmove envoi un message de format différent exprès :
Sendmove envoi la position du joueur, donc j'y met le minimum 1Bool, 3Long
le serveur lit le bool, et grâce à ça, sait quel type de message il va recevoir. On fait transiter ainsi le minimum de donnée
Ca évite de faire un genre de string split par la suite
Sendtext est différent car on ne peu pas le prédéfinir à l'avance, vu que c'est un genre de tchat.
Etonnant que le SendText ne marche pas chez toi, alors qu'il fonctionne correctement chez moi...
Bon si tu veux chercher à m'aider, ça ne sera pas génant, le bug est surtout sur l'arrivée d'un nouveau joueur et son déplacement

Je pense que c'est dans AddNewPlayerToAllClient(ClientID) qu'il faut que je refasse une boucle dans la boucle pour bien prévenir tout le monde, mais j'en suis pas sur car j'y arrive toujours pas ^^
Re: Aide : deplacement du joueur => client serveur [non réso
heu , tu fais comment pour ajouter un client ?
car si je relance le client ça va pas lfaire ...
(au fait les massages marchent chez moi
)
car si je relance le client ça va pas lfaire ...
(au fait les massages marchent chez moi

Dernière modification par Backup le dim. 07/avr./2013 18:13, modifié 1 fois.
Re: Aide : deplacement du joueur => client serveur [non réso
Coté serveur, la fonction AddNewPlayerToAllClient(ClientID) gère ça, mais mal apparement ^^
Il suffit de relancer justement un second client pour le voir. J'ai l'impression que les nouveaux joueurs se superposent (sans certitude)
Il suffit de relancer justement un second client pour le voir. J'ai l'impression que les nouveaux joueurs se superposent (sans certitude)
Re: Aide : deplacement du joueur => client serveur [non réso
chez moi l'ajout d'un client en relaçant une deuxieme fois le Client ne marche pas car ....
conflit de Directx .. le fait d'ouvrir 2 fois un Screen pose probleme ...
faudrait tester a partir d'un autre ordinateur ...
voici l'erreur obtenu :

conflit de Directx .. le fait d'ouvrir 2 fois un Screen pose probleme ...
faudrait tester a partir d'un autre ordinateur ...
voici l'erreur obtenu :

Re: Aide : deplacement du joueur => client serveur [non réso
ok , en fait ça marche tres bien 
pour coder j'utilise mon EPB (editeur Purebasic Perso )
et celui-ci ne recreer pas un fichier temporaire different a chaque lancement ...
ceux qui empeche tout nouveau lancement ...
d'ou l'erreur POLINK typique d'un prg deja present en RAM
en utilisant JAPBE (un autre Editeur voir Site de Gnozal) ton prg marche parfaitement ...
je supose que l'editeur Officiel doit avoir le meme defaut que mon EPB ( a propos du fichier temporaire )
donc, avec JAPBE ton prg affiche bien l'arrivé de plusieurs Client , et la disparition de ceux ci en cas d'arret ...

pour coder j'utilise mon EPB (editeur Purebasic Perso )
et celui-ci ne recreer pas un fichier temporaire different a chaque lancement ...
ceux qui empeche tout nouveau lancement ...
d'ou l'erreur POLINK typique d'un prg deja present en RAM
en utilisant JAPBE (un autre Editeur voir Site de Gnozal) ton prg marche parfaitement ...
je supose que l'editeur Officiel doit avoir le meme defaut que mon EPB ( a propos du fichier temporaire )
donc, avec JAPBE ton prg affiche bien l'arrivé de plusieurs Client , et la disparition de ceux ci en cas d'arret ...

Re: Aide : deplacement du joueur => client serveur [non réso
Etrange car fonctionnel chez moi, mais tu utilise une ancienne version de PB :
peut-être que de passer à la version 5.x resoudrerai ton problème (pas forcément pour m'aider mais pour toi pour la suite également).
Sinon, merci d'avoir essayé de m'aider , c'est sympa
Edito : tu viens de reposter en même temps, je n'avais pas vu : Heureux que ça marche !
Attends quelques minutes, je crois avoir réussi a corrigé une partie du probleme
Reédito :
Voila, une petite avancée dans mon probleme, reste le petit bug lié aux déplacements.
J'ai édité le code du 1er poste.
Les nouveaux persos sont désormais créés au bon endroit, je suis bien content
Reste plus qu'a corrigé un bug lié aux déplacements, et je comprend pas d'ou ça vient, pourtant je suis pas loin...
peut-être que de passer à la version 5.x resoudrerai ton problème (pas forcément pour m'aider mais pour toi pour la suite également).
Sinon, merci d'avoir essayé de m'aider , c'est sympa

Edito : tu viens de reposter en même temps, je n'avais pas vu : Heureux que ça marche !

Attends quelques minutes, je crois avoir réussi a corrigé une partie du probleme

Reédito :
Voila, une petite avancée dans mon probleme, reste le petit bug lié aux déplacements.
J'ai édité le code du 1er poste.
Les nouveaux persos sont désormais créés au bon endroit, je suis bien content

Reste plus qu'a corrigé un bug lié aux déplacements, et je comprend pas d'ou ça vient, pourtant je suis pas loin...
Re: Aide : deplacement du joueur => client serveur [non réso
Ca y est, j'ai enfin trouvé :
La fonction corrigée (serveur) :
Il fallait rajouter
cl=ClientID X=XX Y=YY
en début de fonction. je comprend néanmoins pas encore bien pourquoi...

La fonction corrigée (serveur) :
Il fallait rajouter
cl=ClientID X=XX Y=YY
en début de fonction. je comprend néanmoins pas encore bien pourquoi...
Code : Tout sélectionner
Macro MovePlayerToAllClient(ClientID,XX,YY) ;Formation des paquet et envoie
cl=ClientID
X=XX
Y=YY
For a=0 To ListSize(Player())-1
SelectElement(Player(),a)
.....

Re: Aide : deplacement du joueur => client serveur
oui je confirme ceci marche
c'est peut etre simplement parcequ'une MACRO n'est pas une Procedure !!
les variable ne sont donc pas Locale a la Macro
si tu avait utilisé une Procedure a la place, tu n'aurai peut etre pas eu ce probleme
en tout cas ton histoire m'a aidé a me debugger mon éditeur qui en mode Run+Debugger
ne pouvais pas lancer plusieurs instance d'un meme programme
Code : Tout sélectionner
Macro MovePlayerToAllClient(ClientID,Xx,Yy) ;Formation des paquet et envoie
cl=ClientID
X=XX
Y=YY
For a=0 To ListSize(Player())-1
SelectElement(Player(),a)
TaillePaquet=12
*SenderMemory=AllocateMemory(TaillePaquet+5)
PokeB(*SenderMemory,#MovePlayer)
PokeL(*SenderMemory+1,TaillePaquet)
PokeL(*SenderMemory+5,Cl)
PokeL(*SenderMemory+9,X)
PokeL(*SenderMemory+13,Y)
SendNetworkData(Player()\id,*SenderMemory,TaillePaquet+5)
Debug "On envoi a "+Str(Player()\id)+" que "+Str(Cl)+" a bougé en "+Str(X)+"/"+Str(Y)
Next
EndMacro
les variable ne sont donc pas Locale a la Macro
si tu avait utilisé une Procedure a la place, tu n'aurai peut etre pas eu ce probleme

en tout cas ton histoire m'a aidé a me debugger mon éditeur qui en mode Run+Debugger
ne pouvais pas lancer plusieurs instance d'un meme programme
