Gestion serveur multijoueur Falcon 4.0 BMS
Publié : ven. nov. 04, 2016 4:06 pm
J'ai pas la prétention de "coder le MP" Mais j'ai une idée de comment ca fonctionne quand même.PePe a écrit :ceux qui codent le mode MP de BMS sont on ne peut plus accessibles pour répondre aux questions...
A mon sens, voila ce qu'il y a à savoir sur le MP. Je fais un grand récapitulatif, donc il est possible qu'il y ait de la redite par rapport a ce que vous savez déja.
1/ Le serveur gèrera les IAs,
Donc ce sera a lui d'envoyer le trafic correspondant aux autres joueurs. Du coup, plus il y a d'IA, plus le serveur a intérêt à avoir un gros upload.
2/ Pour avoir le trafic typique par joueur ou par IA, et en situation de TE ou de campagne typique, cf BMS-Manual, section finale.
3/ Il y a 2 modes de connections possibles. P2P et CS.
En P2P, chaque joueur est chargé d'envoyer son propre trafic réseau a chaque autre joueur en P2P. Ca implique les choses suivantes :
- les ports des joueurs en P2P doivent être correctement routés. C'est indispensable pour que les autres joueur P2P puisse établir une connection sur vous, pour qu'ils puissent vous envoyer leur trafic directement.
- si il y a N joueurs en P2P (serveur compris), il faut que chaque joueur ait, en upload, (N-1)*trafic requis par joueur. S'il y a un grand nombre de joueurs en P2P, ca peut aisément dépasser les capacités d'un ADSL typique.
C'est le mode par défaut.
En CS, les joueurs ne se connectent qu'au serveur. Ca implique :
- pas nécessairement besoin de router les ports. Et c'est aussi un bon mode "secours" si jamais votre box fait chier, ouvre mal les ports, ou les redirigent arbitrairement (cf connection douteuse plus haut).
- demande d'upload réduite coté joueur CS, mais augmentée d'autant coté serveur. Normal, vous ne vous chargez plus de votre trafic vous-même, vous l'envoyez au serveur qui est chargé de le propager au reste.
Ce mode peut être mis via la ligne suivante a mettre dans [Install]User/Config/"falcon bms.cfg" :
set g_bClientServerConnection 1
Pas le plus pratique, je vous l'accorde, mais zut :p
Je précise également qu'il est possible que 2 joueurs se connectent en P2P, mais se voient mutuellement en CS sur le chat - et voient les autres correctement en P2P. Ca veut simplement dire que vous n'avez pas pu établir de connection entre vous 2 parce que... reasons. (Port mal routé, firewall qui fait chier, un lutin sur la ligne, que sait-je). Auquel cas le trafic allant de l'un vers l'autre passera par le serveur. La connection avec les autres joueurs que vous voyez en P2P normalement n'est pas affectée.
Ces généralités dites, il en découle les pratiques suivantes :
1/ Si vous envisagez de vous connecter a une partie quelconque en tant que joueur, posez vous la question : est ce que, vu le nombre de joueurs attendus, mon upload me le permet en P2P ? Ou est il plus sage de passer CS si le serveur peut le supporter ?
2/ Coté serveur, posez vous la question : est ce que mon upload me permet de gérer le traffic IA a envoyer a tout le monde, + ceux qui se connecteront en CS ?
Pour mettre des chiffres la dessus, allez voir dans le BMS - Manual En utilisation normale, pour le joueur, avoir 60-100 kbits par joueur P2P est une bonne valeur a prendre. Pour l'IA, c'est dans les 15 kbits par truc qui bouge (avion, char) . Les véhicules immobiles ont très peu de traffic.
En règle générale, pour des petits TEs et qq joueurs, les connections ADSL tiennent sans aucun souci. Si vous avez plein de joueurs, ou un gros TE/campagne, la ca vaut le coup de se poser la question.
Concernant le réglage Bandwidth, il faut savoir que s'il faut la renseigner, et que c'est une valeur unique, parce que F4 de l'époque se faisait sur des connections symmétriques (ie : pas ADSL) et que les librairies réseaux de l'époque était pas aussi perfectionnées que maintenant. Et que F4 (et BMS) bouffe pas mal de réseau :p
Du coup ce réglage est employé chez chaque joueur pour limiter ce qu'il envoie, et coté serveur pour limiter ce qu'il envoie a chaque joueur. Et je suis d'accord, atuellement, c'est pas un système optimal du tout du tout.
Du coup, je vous conseille d'adopter la pratique suivante :
- regardez votre upload en kbits. Valeur U.
- regardez ce que le serveur risque de vous envoyer, compte tenu de la situation. En gros, pour un TE sans trop d'unité au sol qui bougent, comptez 500. Pour une campagne standard ou un TE chargé, comptez 1000. Pour une grosse campagne ou un TE vraiment chargé, comptez 2000. Valeur N.
- renseignez le max entre U et N.