Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1641 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Protocole de Jeu en reso : messages court ou long ??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Protocole de Jeu en reso : messages court ou long ??

n°665428
Profil sup​primé
Posté le 06-03-2004 à 17:26:56  answer
 

bonjour,
 
pour notre projet Reseau, on doit faire un RPG multijoueur (type MUD..) avec un protocol original
alors voilà on a pensé a des messages par balises style html ...
 
genre
 
<connexion><joueur ip=0.0.0.0 port=1600></connexion>
 
ce genre de message passera dans la port de controle et permettra au serveur de comprendre ce que veut le message
 
est-ce inutile ? quand on voit les messages FTP, qui sont bcp plus simple...c que c suffisant.
 
sinon, en fouillant un pe, on se rend compte que les MUDS n'ont pas vraiment de protocole, ils utilisent telnet... mais notre porf VEUT un protocole... quelquun aurai dejà fait ca ? comment ca se passe ?
 
on pense pas avoir de probleme au niveau programmation tout ca, mais là on a du mal a demarrer paske on arrive pas a faire de choix pour le protocole ....
 
 
merci !

mood
Publicité
Posté le 06-03-2004 à 17:26:56  profilanswer
 

n°665432
Taz
bisounours-codeur
Posté le 06-03-2004 à 17:30:08  profilanswer
 

qui du protocole Jabber ?
 
ton prof veut un protocole ou un protocole applicatif, c'est à dire que vos communications obéissent à certaines règles et ont un format spécial, compréhensible par ton application ?

n°665440
docmaboul
Posté le 06-03-2004 à 17:38:59  profilanswer
 

Bonjour,
 
à votre place, je transmettrais les données en binaire.
 
Pour le protocole, je ferais quelque chose comme ce qui suit.
 
un header pour chaque message avec les champs suivants:
- IDMSG, identifiant unique de message
- TYPE, type de message
- HEADER_LENGTH, longueur des données du header (en cas de changement de protocole)
- DATA_LENGTH, longueur des données hors header
 
Après, selon le type de chaque message, un format particulier, toujours en binaire. Par exemple, pour envoyer "<connexion><joueur ip=0.0.0.0 port=1600></connexion>"
 
Un entier sur quatre octets pour l'ip
Un entier sur deux octets pour le port
 
C'est pas très compliqué à écrire, c'est maintenable et performant.

n°665464
Profil sup​primé
Posté le 06-03-2004 à 18:34:29  answer
 

merci de vos réponse c donc ce que j'ai pensé en lisant la doc sur le protocole de quake2.
 
notre prof n'arrete pas nous dire de differencier les fonctions
- du protocole
- du jeu
 
j'ai pensé un truc genre ftp encore
commande protocoles : DECCONECT, USER ...
et des commandes realtives au jeu (et donc qui peuvent evoluer) du genre
GAME nouvelle commande ...
 
comme les commandes SITE de ftp ...
_______________________________________
 
sinon en lisant la doc de quake 2, ils parlent des frames, en gros, toutes les n fractions de secondes le serveur envoi a tout les joueur l'état du monde ....
 
le protocole devra donc le faire ....
TCP ? UDP ?
si j'ai bien compris avec l'UDP on pe envoyer a TOUT le monde plus facilement que avec du TCP ...

n°665558
Kristoph
Posté le 06-03-2004 à 20:35:49  profilanswer
 

DocMaboul a écrit :

Bonjour,
 
à votre place, je transmettrais les données en binaire.
 
Pour le protocole, je ferais quelque chose comme ce qui suit.
 
un header pour chaque message avec les champs suivants:
- IDMSG, identifiant unique de message
- TYPE, type de message
- HEADER_LENGTH, longueur des données du header (en cas de changement de protocole)
- DATA_LENGTH, longueur des données hors header
 
Après, selon le type de chaque message, un format particulier, toujours en binaire. Par exemple, pour envoyer "<connexion><joueur ip=0.0.0.0 port=1600></connexion>"
 
Un entier sur quatre octets pour l'ip
Un entier sur deux octets pour le port
 
C'est pas très compliqué à écrire, c'est maintenable et performant.


 
Pas la peine de s'embeter avec un protocole binaire pour un petit jeu comme le leur. Il suffit de compresser le flux de données avec gzip par exemple.

n°665562
docmaboul
Posté le 06-03-2004 à 20:39:00  profilanswer
 

Kristoph a écrit :


 
Pas la peine de s'embeter avec un protocole binaire pour un petit jeu comme le leur. Il suffit de compresser le flux de données avec gzip par exemple.


 
Certes, mais avec la solution proposée initiallement, il va falloir qu'ils se programment un parser ce qui, à mon sens, n'est pas nécessairement plus simple que de lire du binaire. Qu'en penses-tu?

n°665565
docmaboul
Posté le 06-03-2004 à 20:44:35  profilanswer
 

4XL_ROSE a écrit :


TCP ? UDP ?
si j'ai bien compris avec l'UDP on pe envoyer a TOUT le monde plus facilement que avec du TCP ...


 
C'est tout à fait exact. L'avantage du TCP est qu'on est sûr que les données arrivent ou qu'on peut gérer les erreurs le cas échéant. Souvent on fait et du TCP et de l'UDP. UDP pour envoyer les données ; TCP pour contrôler que ça se passe bien avec l'UDP.

n°665606
blackgodde​ss
vive le troll !
Posté le 06-03-2004 à 21:21:35  profilanswer
 

L'udp permet la multidiffusion, pas le tcp


---------------
-( BlackGoddess )-
n°665685
Kristoph
Posté le 06-03-2004 à 23:02:14  profilanswer
 

DocMaboul a écrit :


 
Certes, mais avec la solution proposée initiallement, il va falloir qu'ils se programment un parser ce qui, à mon sens, n'est pas nécessairement plus simple que de lire du binaire. Qu'en penses-tu?


 
On trouve des parseurs XML a tous les coins de rue aussi.

n°665764
xterminhat​e
Si vis pacem, para bellum.
Posté le 07-03-2004 à 01:40:36  profilanswer
 

+1 par rapport à Doc : le protocole binaire du genre TLV est assez courant. Réaliser un parser pour ce type de protocole parrait vraiment trop luxueux et pénalisant pour les perfs. Une trame (Type,Taille,Données). Eventuellement réaliser plusieurs niveau d'encapsulation, toujours en TLV.
 
Pour le type des connexions :  
  - UDP dans le sens serveur vers clients.
  - TCP dans le sens clients vers serveur.
 
C'est une question de performances surtout. La fiabilité de TCP pénalise les performances, on l'utilise pour les connexions bas débit (clients vers serveur). A l'inverse UDP est efficace pour envoyer de grandes quantités de données sans trop pénaliser les performances (serveur vers clients) au risque de perdre qq trames.
 
Cordialemet,
   XteR.
 

mood
Publicité
Posté le 07-03-2004 à 01:40:36  profilanswer
 

n°665767
Kristoph
Posté le 07-03-2004 à 01:54:40  profilanswer
 

xterminhate a écrit :

+1 par rapport à Doc : le protocole binaire du genre TLV est assez courant. Réaliser un parser pour ce type de protocole parrait vraiment trop luxueux et pénalisant pour les perfs. Une trame (Type,Taille,Données). Eventuellement réaliser plusieurs niveau d'encapsulation, toujours en TLV.
 
Pour le type des connexions :  
  - UDP dans le sens serveur vers clients.
  - TCP dans le sens clients vers serveur.
 
C'est une question de performances surtout. La fiabilité de TCP pénalise les performances, on l'utilise pour les connexions bas débit (clients vers serveur). A l'inverse UDP est efficace pour envoyer de grandes quantités de données sans trop pénaliser les performances (serveur vers clients) au risque de perdre qq trames.
 
Cordialemet,
   XteR.


 
Oui mais non quand même. Le TCP est rarement la bonne solution pour le protocole reseau d'un jeu, mais ce n'est certainement pas pour une question de débit. Je rappelle que le TCP est utilisé courrament pour les serveurs HTTP et FTP et que ceux ci n'ont aucun mal à remplir notre bande passante s'il le faut.
 
La vrai faiblaisse du TCP viens justement de sa fiabilité. Dans le protocole reseau d'un jeu, il arrive très souvent que certaines données n'aient pas besoin d'etre transferées avec fiabilité et dans cette situation le protocole TCP va causer un bloquage du jeu le temps que le paquet perdu soit renvoyé.

n°665796
xterminhat​e
Si vis pacem, para bellum.
Posté le 07-03-2004 à 10:09:25  profilanswer
 

Effectivement, la fiabilité n'est pas absolument nécessaire pour un jeu, surtout lorsque les données sont transmisses régulièrement.  
 
Lorsque le trafic TCP augmente la charge du serveur augmente dans des proportions nettement plus importantes que pour UDP. UDP peut donc s'avérer un meilleur choix pour optimiser la gestion de nombreux clients simultanément.
 
Cordialement,
   xter.

n°665868
Profil sup​primé
Posté le 07-03-2004 à 11:32:29  answer
 

merci pour toutes ces reponses.
on va don cessayer d'ouvrir deux connec : une TCP, une UDP
a ce que j'ai compris dans la doc de IP, on peut ouvrir une connection TCP et une UDP sur un meme port en meme temps ...
 
mais par exemple en UDP ...disons je ve envoyer le meme message a toute le monde connecté :
je fais comment? ya pas d'adresse destination ...
 
peace

n°666103
xterminhat​e
Si vis pacem, para bellum.
Posté le 07-03-2004 à 15:30:01  profilanswer
 

Reserve un port par type de trafic. Vu le nombre de ports TCP ou UDP disponibles, tu n'as pas besoin de tout multiplexer sur le même port.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Protocole de Jeu en reso : messages court ou long ??

 

Sujets relatifs
sql/access-messages d'erreurs[Delphi 7] Récupérer tous les messages arrvant au niveau d'un Tbutton
protocole SOAP lite installation[MFC] Classes pouvant recevoir et traiter des messages??
ASP-ORACLE "string literal too long"[c#]protocole RMI dispo en c# ?
java : etat actuel du marché et developpement a court/moyen termes?long?
lien pour signification des messages d'erreurs[résolu] Problème de reconnaissance des nouveaux messages ...
Plus de sujets relatifs à : Protocole de Jeu en reso : messages court ou long ??


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR