Accueil > Forum > > > > [UDP] temps-réel dans un jeu - stratégie à adopter ?
[UDP] temps-réel dans un jeu - stratégie à adopter ?
dimanche 12 mars 2006 à 11:20:35 |
[UDP] temps-réel dans un jeu - stratégie à adopter ?

docteur_re
|
bonjour a tous, imaginons le cas de figure suivant : j'ai 2 programmes, client et serveur. - le premier écoute les evenements d'un joystick et envoie les coordonées des axes par UDP au second - le second les reçoit et les utilise. l'udp est utilisé afin de garantir une transmission temps réèl (comme dans les jeux en réseau style FPS) mon seul probème est de savoir quelle stratégie adopter pour envoyer ces paquets. Voici celles que j'ai envisagées : 1 - Les envoyer simplement avec un sento() à la suite les unes des autres, à chaque réception d'un evenement joystick. Mais cela ne permet pas de garantir que la dernière coordonnée est arrivée. 2 - Envoyer en permanence avec un sleep de 5 millisecondes les coordonnées joystick. Un peu bourrin et surtout pourquoi 5 millisecondes et pas un autre nombre, cela dépendrait de la qualité du réseau. 3 - Envoyer les coordonées avec un identificateur unique, puis attendre une réponse avec ce meme identificateur pour en renvoyer un autre. Oui mais si la réponse ne reviens jamais, le programme se bloque. On peut alors penser à un timeout à partir duquel les coordonnées sont réémise. Et encore une fois, quelle valeur pour ce timeout ? voilà, j'ai pas d'autres idées pour le moment. En fait jaimerais bien m'inspirer des jeux existant genre counter-strike, ou ceux open-source pour aller voir comment ils procèdent. Si certain ont déjà eu l'occasion de travailler sur le problème.... Merci bye
|
|
dimanche 12 mars 2006 à 11:36:59 |
Re : [UDP] temps-réel dans un jeu - stratégie à adopter ?

luhtor
|
C'est pour ca que a mon avis, envoyant les coordonnées des axes n'est pas suffisant. Tu peux pas plutot directement envoyer une position ou une donnée mieux définie de facon à ce que meme si une trame disparait, la suivante permet un rafraichissement correcte.
|
|
dimanche 12 mars 2006 à 11:42:26 |
Re : [UDP] temps-réel dans un jeu - stratégie à adopter ?
|
dimanche 12 mars 2006 à 14:41:05 |
Re : [UDP] temps-réel dans un jeu - stratégie à adopter ?

docteur_re
|
luhtor : dans ce cas je peux très bien renvoyer à intervale régulier les coordonnées des axes, ca reviens au même qu'une position. 2ème choix dans ce que j'ai écris.
Gendal67 : Je connais bien TCP et j'ai d'ailleurs commencé par implémenter ce protocole pour faire ça, mais le problème est que c'est super lent. En fait oui les paquets non-reçus sont automatiquement re-transmis et remis dans l'ordre, de façon transparente. Mais celà implique une entete beaucoup plus longue qu'en UDP, ainsi que de devoir attendre les données pour les classer (et en gros plein d'autres trucs couteux en temps).
J'ai fait des tests là, et en UDP c'est vraiment plus rapide. En fait je dois utiliser un réseau tout pourri (GSM), c'est pourquoi je ne peux pas utiliser TCP pour du temps-réel. Et pour counter-strike les developpeurs ont surement eu le même raisonnement. Enfin de toute façon en règle générale TCP n'est pas prévu pour du temps réel c'est à dire streaming vidéo, audio, jeux temps-réel, etc... Pour info le DNS fonctionne en UDP car TCP serait bien trop lourd et surchargerait les serveurs.
En tout cas merci pour le lien, jvai lire ça bien à fond et jte tiens au courant de l'évolution, pas de souci ;)
bybye
|
|
dimanche 12 mars 2006 à 15:38:48 |
Re : [UDP] temps-réel dans un jeu - stratégie à adopter ?

docteur_re
|
bon après une lecture assidu de cet article, super interressant d'ailleurs, j'en ai conclu qu'il faut utiliser la méthode 2, c'est à dire envoyer en permanence toutes les x millisecondes. Cette valeur devant être determinée en fonction de : 1 - la taille de chacun des paquets 2 - la bande passante de façon a éviter le 'choke' (voir article) c'est à dire qu'un nouveau paquet commence à être envoyé tandis que le précédent n'a pas encore fini d'etre envoyé. (ce qui crée un retard dans les envois qui augmente à chaque fois)
je ne pense pas utiliser la numérotation étant donnée qu'elle ne sais qu'à calculer le nombre de paquets perdus, information peut utile dans mon cas. Quoique ça peut servir si en réception 2 paquets sont inversés, on prend en compte que le premier et on laisse tomber le 2ème.
je part en phase testing ;)
|
|
Cette discussion est classée dans : temps, envoyer, stratégie, udp, adopter
Répondre à ce message
Sujets en rapport avec ce message
transfert d'une structure en C/C++ avec UDP [ par banjo12 ]
Je vous explique mon petit probleme : Pour notre projet d'IUT, on voudrait envoyer grace au protocole UDP une structure d'image (IPLimage d'intel) pa
plusieur reception UDP en meme temps [ par sena ]
Bonjour a tous,je fais une reception en UDp.Ce que je voudrais savoir c'est ce qui se passe quand plusieurs trames arrivent en même temps.Est-ce que
UDP et Win98 [ par sena ]
Bonjourvoila j'ai fait 2 prog en langage:un client et un serveur en UDP, ceux ci communiquent entre eux et sont sur la meme machine.J'avais un pb de r
probleme heure en temps reel [ par nazca ]
Le Zero de la programmationNazca[blue]J ai un petit probleme,j ai afficher dans plusieurs edit box l'heure du systeme grace a se code:CTime TimeObject
faire une boucle avec un temps d'attente ? [ par andrealphus ]
4ndr&@lphu$slt encore...voila cette fois ci je voudrais récupérer des données, via une fonction que je connais déja, tous les X temps...j'envisage dc
recuper les log dans un fichier [ par ben01n ]
salut tout le monde je prog un client-serveur sous linux qui devrait envoyer le contenu d'un fichier log et je me galère gravepour ce qui est d'envoye
Impossible d'envoyer le fichier ZIP(195 ko) [ par bergou ]
Nous venons d'inscrire un nouveau logiciel Freeware/opensource de compression de fichier. mais l'option d'envoi du fichier zip ne fonctionne pas.Merci
Pourkoi ki marche pas mon temps?? [ par MoDDiB ]
voila j'ai un client et un serveur sur directplay .. mon client est win32 alors ke le serveru est une appli console..J'utilise timegettime() pour chop
PB de scrollbar avec une CListCtrl [ par isnotgood ]
Bonjour ,J'utilise une CListeCtrl, je suis connecté sur une base de donnée.Ce qui m'oblige à faire des rafraîchissements de temps en temps.Est-ce que
Client/Serveur en C++ [ par nephilik ]
Hello !Je souhaite développer sur une même machine deux terminaux communiquant, en même temps en mode client/serveur...Le problème est que, avec des s
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|