Rebonjour à tous et à toutes
je cherche une réponse à ma petite question :
Je gère mes clients séparés par map dans le jeu. Chaque carte a un thread pour la réception des données des clients sur cette carte.
Lorsque je reçois un déplacement, comment devrais-je gérer les heartbeats (on se téléporte pas, ça prends du temps avant de se rendre à l'endroit désiré) ?
Je pensais créer une classe instanciée pour chaque map.
voici le header (+la méthode run):
Donc, dès qu'un déplacement est créé, on l'envoie au vecteur de HeartBeat qui va se charger de faire tous les calculs de déplacements (pas de collision).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 class HeartBeat{ public: HeartBeat(); run(); addHeartBeat(); deleteHeatBeat(); private: std::vector<userData> HeartBeatList; }; HeartBeat::run(){ //run = thread while(true){ //Timer 500ms (gère les donc les déplacements 2 fois par seconde) //Prends chaque HeartBeat //Calcul le déplacement //Enregistre le déplacement //Informe les joueurs qui doivent l'être du déplacement } }
Si, entre temps, le joueur change de direction, on supprime le heartBeat, puis on en remet un novueau avec les nouvelles coordonnées. Si le joueur atteint le point voulu, l'instance supprimera automatiquement le heart beat (puisque posactuelle == posfin).
Croyez-vous que c'est une bonne idée ?? SInon qu'avez-vous de mieux à me proposer ?
Partager