RLBDC
Messages postés7Date d'inscriptiondimanche 28 mars 2004StatutMembreDernière intervention27 mars 2007
-
21 mai 2005 à 04:22
RLBDC
Messages postés7Date d'inscriptiondimanche 28 mars 2004StatutMembreDernière intervention27 mars 2007
-
22 mai 2005 à 18:47
YopYop tlm !
Bien, voilà , étant encore un peu "newbie" dans le C++ , je me suis lancé dans la programmation d'un jeu de pong basique en réseau .
Mon programme fonctionne comme sur des roulettes , sauf qu'il est d'une extrème lenteur .
Le fonctionnement est simple :
C'est le PC serveur qui effectue les calculs de trajectoire de la balle, puis envoie 3 données au PC client :
1) La position du curseur du PC serveur
2) & 3) Les valeurs X et Y de la position de la balle sur l'écran .
Le PC client quant à lui ne fait que lire ces valeurs, affiche la balle et le curseur du PC serveur, et envoie au PC serveur, la position de son curseur.
Comme vous pouvez-le constater, programme "tout simple" .
Le problème c'est qu'il est d'une lenteur apeurante !
Au fur et à mesure que j'ai effectué des tests , je me suis rendu compte que si le PC client coupait la connection, le programme du PC serveur reprenait alors une vitesse digne d'un Athlon XP 2200+
J'en ai donc déduis que les communications serveur / client étaient la cause directe de la lenteur .
Pour tester, j'ai enlevé tous les envoies de données du Serveur vers le Client .. et là le programme serveur plante , alors que je ne vois ABSOLUMENT pas pourquoi .
Conclusion : soit j'ai rien compris au fonctionnement des socket , soit le code de mon prog est à ch**r .
minet03
Messages postés415Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention 2 décembre 20053 21 mai 2005 à 11:32
J'ai jeté un oeil sur le code du serveur, et j'en deduit qu'il manque plein de lignes de codes.
Je vais quand même tenter de t'aider. Pour ton serveur, utilise les
threads (un pour les calculs, un autre pour l'affichage, et un autre
pour envoyer les données).
Ensuite, trouve une période suffisante pour envoyer tes données (genre
200ms). en attendant coupe le threads d'envoi (genre sleep()). Pour le
reste je ne vois pas comment d'aider plus pour le moment.
minet03
Messages postés415Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention 2 décembre 20053 21 mai 2005 à 11:33
Aussi pour l'envoi des données, essay de le mettre en un seul send(),
tu mets dansune structure que tu envoi (se sera même plus propre au
niveau du code).
RLBDC
Messages postés7Date d'inscriptiondimanche 28 mars 2004StatutMembreDernière intervention27 mars 2007 21 mai 2005 à 12:18
Merci , tu m'as fais découvrir les threads !
Je ne connaissais pas, et après une petite google-recherche, j'ai vu ce que c'est .
En effet , ça peut améliorer la vitesse du jeu
Ceci dit , maintenant il me faut en comprendre le fonctionnement et l'utilisation
Je vais regarder tout ça , thx d'avoir pris un peu de temps pour moi