Qt 4.7.4 : Aide complémentaire création serveur de jeu

Qt 4.7.4 : Aide complémentaire création serveur de jeu - C++ - Programmation

Marsh Posté le 30-10-2011 à 18:38:28    

Bonsoir bonsoir !
 
Etant étudiant en dernière année d'informatique de gestion, nous devons faire un projet en c++.
En gros, il consistera en un run and gun à la metal slug avec une prise en charge du réseau.
 
N'ayant jamais codé de serveur ,eh bien,je suis un peu dérouté  :D [:nobody-home] !
 
Pour info on utilise : SFML & Qt.
 
J'aimerais quelques précisions quant aux envois d'actions vers le serveur.
Je me suis inspiré du chat proposé sur le site du zéro pour débuter. Autant l'envoi de string c'est encore passable , autant l'envoi d'action je sèche.
 
Première chose , est-ce bien l'action d'appui sur une touche que l'on envoie au serveur ?
Bref, ce genre de code : App.GetInput().IsKeyDown(sf::Key::Right))
 
Merci d'avance
 

Reply

Marsh Posté le 30-10-2011 à 18:38:28   

Reply

Marsh Posté le 20-11-2011 à 15:07:27    

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 :
  1. sf::uint8 message_code;
  2. sf::uint8 id;
  3. p>>message_code>>id;
  4. if (message_code==1)
  5. {
  6. int x,y;
  7. p>>x>>y;
  8. // Ici tu mets à jour les coordonnés x&y du bon client
  9. // On prépare le nouveau packet à envoyer
  10. sf::packet toSend;
  11. toSend<<(sf::uint8)1<<id<<x<<y;
  12. // On renvoit à tous les autre clients :
  13. for (unsigned char i=0;i<clientList.size();i++)
  14. {
  15.   if (i!=id)
  16.   SocketUDP.Send(toSend,clientList.at(i));
  17. }
  18. }


 
Et côté client (p est le packet reçu) :  
 

Code :
  1. sf::uint8 message_code;
  2. sf::uint8 clientID;
  3. p>>message_code>>clientID;
  4. if (message_code==1)
  5. {
  6. int x,y;
  7. p>>x>>y;
  8. // Tu mets à jour le bon personnage, tu connais le numéro du client à mettre à jour
  9. }


 
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 :D


---------------
Perhaps you don't deserve to breathe
Reply

Marsh Posté le 22-11-2011 à 00:16:54    

bonsoir
cette année j'étudie ce langage mais malheureusement  j'ai un  retard d'un  mois  je me sens que je suis null par rapport a mes camarads de classe par ce que ils sont trop avancé  pouvez vous m'aides (avec un professeur qui explique a la vitesse de la lumiére )
Bonne fin de soirée

Reply

Marsh Posté le 23-11-2011 à 11:00:16    

Ben google, tu cherches les tutos de base en C++ (si c'est bien ça que tu veux apprendre :??:), manipulation des types de variables (int,float,double,char), références & pointeurs, la librairie std (std::cout pour afficher sur la console, cin pour demander une valeur par exemple), bref t'as une tonne de tutos, tu peux y arriver par toi-même [:bank]


---------------
Perhaps you don't deserve to breathe
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed