Nope, envois plutôt des informations moins précieuse que si l'envois échou ça foute pas bordel, et aussi fais ta connection en UDP plutôt que TCP.
Tu envois via sf::packet les informations, par exemple le numéro 1 sera "mettre à jour x & y" et un ID par client.
a chaque fois qu'un client se connecte, le serveur lui attribut un numéro, et le stocke dans une pile (dans ce cas je prendrais un vector<string> qui contient les addresses IP des clients, mais je pense qu'une map serait plus justifié) et le client s'en sert lorsqu'il renvoit les informations
Du coups (pour le traitement des messages côté serveur ) :
Code :
- sf::uint8 message_code;
- sf::uint8 id;
- p>>message_code>>id;
- if (message_code==1)
- {
- int x,y;
- p>>x>>y;
- // Ici tu mets à jour les coordonnés x&y du bon client
- // On prépare le nouveau packet à envoyer
- sf::packet toSend;
- toSend<<(sf::uint8)1<<id<<x<<y;
- // On renvoit à tous les autre clients :
- for (unsigned char i=0;i<clientList.size();i++)
- {
- if (i!=id)
- SocketUDP.Send(toSend,clientList.at(i));
- }
- }
|
Et côté client (p est le packet reçu) :
Code :
- sf::uint8 message_code;
- sf::uint8 clientID;
- p>>message_code>>clientID;
- if (message_code==1)
- {
- int x,y;
- p>>x>>y;
- // Tu mets à jour le bon personnage, tu connais le numéro du client à mettre à jour
- }
|
Et à chaque fin de boucle du jeu, tu envois les informations x & y, avec ton clientID et ton code "1" pour dire "mettre à jour x&y"
J'espère que c'est pas trop flou
---------------
Perhaps you don't deserve to breathe