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
[CF-RS] Serveur - Client UDP
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
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
Re: [CF-RS] Serveur - Client UDP
Broadcast?!alexr1221 a écrit : Du coup comment pourrais-je faire pour que le serveur envoie un message à tous les clients connectés? ...
Re: [CF-RS] Serveur - Client UDP
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?
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?
Re: [CF-RS] Serveur - Client UDP
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).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?
Idem quand un nouveau joueur entre en scène : on en informe les autres.
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.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?
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.
Dernière édition par ZJP le 22 Mai 2017 18:21, édité 2 fois.
Re: [CF-RS] Serveur - Client UDP
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?ZJP a écrit : le serveur est au "courant" de son absence
Edit: Je crois avoir écrit n'importe quoi mais bon...
Re: [CF-RS] Serveur - Client UDP
Oui.alexr1221 a écrit :Edit: Je crois avoir écrit n'importe quoi mais bon...
Le Broadcast est du serveur vers les clients. La déconnexion d'un client toujours (?) perçu par l'API de réseau.
Re: [CF-RS] Serveur - Client UDP
Bon bah je vais approfondir tout ça. Si je n'y arrive pas je ferai un mix avec UNet. Merci pour les réponses!