[CF-RS] Serveur - Client UDP

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
alexr1221
Messages : 35
Inscription : 21 Avr 2016 16:21

[CF-RS] Serveur - Client UDP

Message par alexr1221 » 12 Mai 2017 16:51

Salut à tous,
Ça fait pas mal de temps que je planche pour créer une architecture réseau. Je rencontre pas mal de difficultés, notamment au niveau des "concepts".

Je vous résume brièvement ce que j'essaye de faire. J'essaye de créer une architecture réseau super optimisée afin de pouvoir monter à environ 150 joueurs par session. Les joueurs enverront des message de 50 - 100 bytes 20 fois par seconde (contenant leur position etc.) et recevront des gros paquets de ~1000 bytes environ 30 fois par seconde. J'ai fait des tests et ça a l'air de bien fonctionner. Par contre je me suis rendu compte que ça ne fonctionnait pas comme je l'avais imaginé. Au début je croyais que la relation Client / Serveur en UDP c'était un peu comme une relation Satellite / Télévision. De ce que j'ai vu, le serveur envoie un message seulement au client qui a été le dernier à envoyer un message.

Du coup comment pourrais-je faire pour que le serveur envoie un message à tous les clients connectés?
Je me pose aussi une autre question qui n'a rien à voir: Pour les messages importants (par ex. un perso est mort), est-il mieux d'utiliser le protocole TCP ou une sorte de RUDP?

Merci d'avance

Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

Re: [CF-RS] Serveur - Client UDP

Message par ZJP » 12 Mai 2017 17:06

alexr1221 a écrit : Du coup comment pourrais-je faire pour que le serveur envoie un message à tous les clients connectés? ...
Broadcast?!

alexr1221
Messages : 35
Inscription : 21 Avr 2016 16:21

Re: [CF-RS] Serveur - Client UDP

Message par alexr1221 » 12 Mai 2017 17:22

Merci pour la réponse courte et précise! Je pensais plutôt à des listes de remote enfin bref un truc assez relou.
J'en profite pour glisser une dernière question: Comment avertir les joueurs de la deconnection d'un autre joueur. S'il quitte et que sa connexion internet est encore bonne on pourrait simplement envoyé un message spécial mais admettons qu'il ait quitté à cause d'un problème de connexion?

Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

Re: [CF-RS] Serveur - Client UDP

Message par ZJP » 12 Mai 2017 21:31

alexr1221 a écrit :Comment avertir les joueurs de la deconnection d'un autre joueur. S'il quitte et que sa connexion internet est encore bonne on pourrait simplement envoyé un message spécial mais admettons qu'il ait quitté à cause d'un problème de connexion?
Peut importe la raison de la déconnexion du joueur (volontaire ou souci technique) le serveur est au "courant" de son absence. Il suffira alors de prévenir les autres joueurs (protocole a mettre en place).
Idem quand un nouveau joueur entre en scène : on en informe les autres.
alexr1221 a écrit :Pour les messages importants (par ex. un perso est mort), est-il mieux d'utiliser le protocole TCP ou une sorte de RUDP?
Généralement le TCP est privilégié : délivrance garantie. On peut aussi en restant sous UDP utiliser un Port différent pour les échanges "administratifs". Chacun sa méthode. J'imagine que cela dépend du nombre de connections voulues.

Sous mon projet principal avec seulement quatre joueurs en simultanés je me suis autorisé une approche plus originale (dev réseau 100% maison en TCP/UDP - Socket- natif) : 5 Ports utilisés, 1 par joueur et 1 pour l'administration. Chaque Port est géré par un Thread. Méthode bien sur inenvisageable avec un MMO. :mrgreen:
Dernière édition par ZJP le 22 Mai 2017 18:21, édité 2 fois.

alexr1221
Messages : 35
Inscription : 21 Avr 2016 16:21

Re: [CF-RS] Serveur - Client UDP

Message par alexr1221 » 12 Mai 2017 22:59

ZJP a écrit : le serveur est au "courant" de son absence
Même avec le protocole UDP? De ce que j'ai lu, le broadcast en UDP me fait un peu penser à relation satellite / télévision. Dans le peu d'exemples que j'ai voir, il n'y a pas de sorte de liste de clients connectés, du coup à qui faire un test de connexion?

Edit: Je crois avoir écrit n'importe quoi mais bon...

Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

Re: [CF-RS] Serveur - Client UDP

Message par ZJP » 13 Mai 2017 16:23

alexr1221 a écrit :Edit: Je crois avoir écrit n'importe quoi mais bon...
Oui. ;-)
Le Broadcast est du serveur vers les clients. La déconnexion d'un client toujours (?) perçu par l'API de réseau.

alexr1221
Messages : 35
Inscription : 21 Avr 2016 16:21

Re: [CF-RS] Serveur - Client UDP

Message par alexr1221 » 15 Mai 2017 17:51

Bon bah je vais approfondir tout ça. Si je n'y arrive pas je ferai un mix avec UNet. Merci pour les réponses!

Répondre

Revenir vers « (C#) CSharp »