cs_emmanuel9
Messages postés903Date d'inscriptionmercredi 23 février 2005StatutMembreDernière intervention16 juin 2010
-
10 août 2009 à 06:40
cs_emmanuel9
Messages postés903Date d'inscriptionmercredi 23 février 2005StatutMembreDernière intervention16 juin 2010
-
11 août 2009 à 15:09
Bonjour à tous,
J'ai une question technique concernant les jeux réalisés en réseaux :
Si l'on imagine un jeux en réseau de ping pong avec deux raquettes et une balle, on a deux ordinateurs représentant chacun un joueur et échangeant des informations via un serveur se trouvant sur internet et qui retransmet les informations aux deux ordinateurs.
Pour le mouvement des raquettes cela ne pose pas de problème :
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 10 août 2009 à 09:59
Salut,
Je pense que tout comme l'information de la raquette, l'information de la balle doit être envoyée par le client (sous forme de direction et force), et le serveur ne fait que transmettre l'information au deuxième client qui se chargera de calculer la position de la balle, sinon, si tu as un message à chaque nouvelle position de la balle, tu va consommer énormément de bande passante pour rien !
______________________________________
DarK Sidious
Kotomine
Messages postés112Date d'inscriptionlundi 29 juin 2009StatutMembreDernière intervention 5 novembre 2009 11 août 2009 à 14:01
Je te conseille également d'envoyer dans ton message la position de la balle le "TEMPS" !
Ce message devra être transmis à chaque changement de direction de la balle, ou périodiquement.
Imaginons qu'un packet se traine dans le réseau pour 500ms (ça peut arriver), voire que 2 packets arrivent dans un sens inverse (Cas fréquent en UDP)
Il faut garantir pour un "moteur physique" qui va faire des intégrations, que le bruit généré par l'aléa du réseau est corrigible.
Je te conseille de faire un packet ballEvent du type
class ballEvent ... {
int noBallEvent;
Point ballP;
int vX;
int vY;
}
le serveur va calculer les changements de vitesse , et la position.
Lorsque la vitesse change, il emmet aux clients le packet ballEvent.
Ce packet permet aux clients de savoir :
* la position actuelle de la balle
* les nouvelles vitesses
Si on perd un packet : pas grave, vu que le nouveau va nous renseigner sur l'état de la balle (Au bout d'un temps déterminé par le lag)
Si un packet arrive dans le mauvais ordre:
tu l'ignore: (on peut le savoir si jamais on recoit un packet aveec noBallEvent plus petit qu'un précédent)
Bonne chance !
; I'm just keeping the hopeless cross to increase the meaninglessness