A Lire Débat - Une gestion "mathématique" des addons pour éviter une surcharge client

  • Initiateur de la discussion
Diablos26

Diablos26

Psychopathe
Messages
951
Score réaction
326
Points
315
Bonjour,
Avant de commencer ce sujet, je tenais à préciser que je ne sais pas s'il est posté au bon endroit, car il servira grandement pour Garry's Mod. J'éditerais ce sujet s'il le faut avec vos précisions éventuelles.
Ce n'est ni un tutoriel mais bel et bien un débat pour qu'on discute de la meilleure solution pour optimiser son serveur et éviter les surcharges clients. Avec vos futurs avis, il y'aura un récapitulatif des étapes à faire pour optimiser au maximum.
Commençons.

Qu'est ce qu'une surcharge client ?

Combien de serveurs se sont arrêtés ? Maintenant, combien ont vraiment fermés et combien avaient simplement une optimisation tellement nulle, jusqu'à même dire une surcharge client (définition plus bas), qu'aucun joueur ne pouvait y accéder ? Je pense qu'il y'en a bon nombre, car je fais parti des personnes qui avaient un serveur tellement mal optimisé qu'aucun joueur ne pouvait accéder au serveur, et provoque donc une .... faillite ...
Une surcharge client est tout simplement provoqué par une masse énorme d'addons qui sont sur votre serveur et qui empêchent au joueur d'aller au-delà de l'écran de chargement.. Le joueur ne peut pas donc accéder au serveur car trop de fichiers doivent être chargés...
Alors pour pallier à ce problème, il faut optimiser le serveur, et ici je parlerais d'une hypothèse purement mathématique mais sachez qu'il y'a aussi d'autres hypothèses dont, je l'espère, vous parlerez.

La surcharge client, c'est pour tout le monde ?

Bien sûr que non. Déjà, principalement les serveurs DarkRP, car il faut une centaine d'addons pour avoir un serveur qui serait "confortable" pour les joueurs... Je sais que je ne veux pas que vous vous inquiétez tout de suite et que vous en devenez fou (comme moi), mais il faut y faire un minimum attention car quand les joueurs viendront sur votre serveur en réclamant tel addon, puis encore un autre, vous vous retrouverez avec une centaine d'addons à charger, et là, ça commence à devenir le drame..
Avant de passer à mes hypothèses, sachez qu'il est inutile de commenter pour me sortir un "N'IMPORTE QUOI !! LE SERVEUR VA TRÈS BIEN MÊME AVEC UNE CENTAINE D'ADDONS !!".. Il est important de savoir que Garry's Mod fonctionne sous trois formes : le côté serveur, le côté client et le côté partagé (les deux). Nous parlons ici d'une surcharge client, c'est pour cela que nous voyons pas forcément de problèmes sur le serveur car c'est le client (joueur) qui rencontre un problème, qui le fait crasher ou le fait trop patienter (et donc quitter)...
Penser aux ordinateurs ayant une configuration minimale, assez pour pouvoir jouer en DarkRP mais à 15 FPS et qui ne peuvent pas aller sur les serveurs dont ils rêvent car leurs ordinateurs ne leur permettent pas.. Ces joueurs vous auront peut être permis d'avoir un serveur magnifique, mais à cause d'un serveur non optimisé, ils ne pourront pas venir...

Bon, tu nous la sors ton hypothèse ?

J'aimerais bien, j'aimerais bien.. Avant je pense à répéter pour la énième fois qu'ici, il va s'agir d'une pure hypothèse qui sera étoffée prochainement, ne prenez pas tout ce que je dis pour véritable et donc ne commencez pas à modifier vos fichiers de serveur(s) sans que nous en parlons avec la communauté mTx Serv afin d'établir à la fin de ce post un récapitulatif pour créer un serveur stable et fonctionnel. Également bon à savoir : Les serveurs DarkRP étant les serveurs qui ont le plus de surcharge client car ils nécessitent une centaine d'addons (environ), ici l'hypothèse sera sur un serveur DarkRP.

HYPOTHÈSE :

Commencez par ouvrir ce lien :
Lien supprimé, la collection est obsolète.
Cette collection contient donc tous ces addons et la collection était liée au serveur avec des resource.AddWorkshop visant à "FastDL" les addons.
107 addons, et sur chacun d'eux j'ai regardé leurs poids en MB, pour les rajouter en commentaire, puis j'ai additionné...
1449,082 MB (les poids pourront changer d'ici là en fonction d'une mise à jour, les calculs datant du 28/01/16), mille quatre cents quarante-neuf virgule quatre-vingt-deux mégabits !
En sachant qu'un Go fait 1024 Mo, nous pouvons donc dire que cela représente environ 1,4 Go d'addons à charger, ce qui est énorme quand on pense que certains prennent des ressources énormes (les véhicules ...) !

J'ai donc calculé le poids de mes véhicules TDM que vous pouvez voir dans la collection, et nous arrivons à.... 463,326 MB !! Quasiment un demi-gigaoctet pour les véhicules uniquement, et nous arrivons à 554,976 MB avec tous les véhicules compris...

J'ai ensuite calculé le poids de tous les skins, et nous arrivons à 346,98 MB !
Je ne parle même pas des armes ou encore de la map qui est à plus de 250 MB (mais ça, c'est primordial) !

Oui, ça fait beaucoup mais c'est primordial, alors on fait comment ?


C'est pas faux, pour avoir une bonne expérience RP c'est toujours bien d'avoir de la diversité, plein de véhicules, plein de skins pour plein de jobs...
Maintenant, il est temps d'avoir des propositions pour mathématiquement avoir un serveur qui fonctionnera à merveille.. Je comprends bien que certaines propositions pour optimiser le serveur peuvent paraître longues et énervantes, et que c'est de la très faible optimisation pour un travail de titan, mais il faut bien prendre des choix.. Voici les solutions de la meilleure optimisation à l'optimisation la plus minime :

- LIER LA COLLECTION AU SERVEUR MAIS NE PAS FAIRE TOUT INSTALLER : Imaginez, vous avez 100 addons+ dans la collection de votre serveur comme sur la mienne, sauf que sur tous ces addons, combien nécessitent que le client les installe ? L'ARCBank Content ou encore le VCMod Content pourquoi les faire installer alors qu'il faut s'abonner (pour les faire installer "directement") et que toute la journée on vous dit "Passe moi la collection STP".. Dans ce cas, inutile de les faire installer, c'est de l'encombrement inutile si ça ne s'installe pas vraiment.. Alors autant mettre que les resource.AddWorkshop comme bon vous semble avec les addons qui nécessitent d'être sur le serveur et les addons optionnels pour éviter les ERROR (notamment les skins), vous les mettez dans la collection sans la lier directement au serveur (et donc sans faire installer tous les addons aux clients)... Au final, moins d'encombrements car les joueurs installeront leurs addons dans leurs coins. Certes ils demanderont la collection, mais bon la majorité des joueurs la demande d'un point de vue général.
Il faut cependant penser à bien gérer quels addons vont être mis dans la collection et lesquels seront mis en resource.AddWorkshop car certains addons doivent obligatoirement être installés sur le serveur pour éviter de les transpercer ; en effet ils ne seront pas forcément reconnus par le serveur et vous passerez donc à travers certains modèles en fonction de l'addon que vous "évitez" de mettre sur le serveur. Pour résumer ces dernières phrases, si jamais vous passez à travers certains modèles, dites-vous simplement que c'est à cause du fait que l'addon n'est pas mis "directement" (c'est-à-dire en resource.AddWorkshop) dans le serveur.
(Sachez que cette première "technique" reste la moins compréhensive, la moins testée et la moins vérifiée, mais aussi la plus influente).

- PRENDRE UNIQUEMENT CE QU'ON VEUT / PRIVILÉGIER LE FASTDL : Cette technique est assez spéciale, je vous l'accorde... Admettons vous voulez le pack Ford de TDM mais vous ne souhaitez que la Ford Taxi, alors pourquoi ne pas extraire juste le taxi dans votre serveur ? Ensuite, vous mettez l'addon dans la collection pour ceux qui ne l'ont pas installés et vous faites comme le premier conseil, c'est-à-dire que vous ne liez pas la collection.. Au résultat, vous aurez les joueurs qui installeront tous les véhicules mais seul le taxi sera sur le serveur. Et si vous ne souhaitez pas la mettre sur la collection, alors vous mettez juste le taxi en FastDL, au moins le joueur installera le taxi très rapidement et n'installera pas les autres véhicules que vous ne souhaitez pas (mieux vaut le FastDL que la collection pour la rapidité d'installation).

- GÉRER SON TICKRATE :
Le tickrate est le taux de rafraîchissement par seconde de certains facteurs (positions, angles) sur certains éléments (personnages, props). En termes plus faciles à comprendre, un tickrate de 1 signifie que le serveur enregistre la position des props et des personnages 1 fois par seconde, donc vous verrez bouger le prop au bout de 1 seconde (ce qui est énorme, 1 de tickrate serait injouable...). Il est important de gérer le tickrate en fonction du gamemode et du nombre de joueurs que vous pouvez atteindre (car plus il y'a de joueurs, plus il y'a de props et de calculs à effectuer). Le tutoriel de Seb pourra vous aider à ce propos, mais ne négligez surtout pas ce paramètre qu'est le tickrate car il vous permettra d'avoir une stabilité pour tout le monde si vous le gérez bien.
Tutoriel de Seb : https://mtxserv.com/forums/threads/mon-serveur-lag-que-faire.361/

- VÉRIFIER SON CODE AU DÉMARRAGE DU SERVEUR : Vérifier son code quand vous démarrez votre serveur fait parti des priorités. Quand vous le lancez, de nombreuses lignes de démarrages se lancent avec peut être des lignes [ERROR]. Dans ces lignes s'affichent le chemin d'accès de l'erreur qui est dû soit à un addon que vous avez leaké (la solution est alors d'acheter l'addon), soit à une modification de votre part (regardez le numéro de ligne et pensez à vos précédentes actions), soit à une collision avec un autre addon (là, il faut procéder par élimination) ou encore à un addon qui n'est tout simplement pas fonctionnel et qui est à bannir. Garder un addon contenant des [ERROR] peut être une source potentielle de gros problèmes sur votre serveur, surtout sur des objets beaucoup utilisés comme des imprimantes d'argent car si une erreur se produit sur ces dernières, alors à chaque fois qu'un joueur achètera une imprimante, l'erreur se reproduira certainement en fond et causera une instabilité du serveur. L'ampleur des problèmes potentiels du serveur par rapport à l'ERROR est très variable mais un serveur stable et fonctionnel ne devrait pas en avoir.

- ÉCONOMISER LES RESSOURCES : La diversité c'est bien, mais sérieusement vous avez vu ma collection ? Plus d'une quinzaine d'addons pour les véhicules juste TDM ? Il ne vaudrait pas mieux en enlever pour se limiter moralement à 7,8 addons de véhicules TDM par exemple ? Cela sera mieux pour le joueur, et pour le serveur.. C'est parfois compliqué de "trancher" car les véhicules sont parfois très intéressants mais un moment, c'est soit les addons soit les joueurs...

- ÉCONOMISER LES FICHIERS LUA : Là par contre, c'est un travail de titan. Juste pour les vrais, ou aussi peut-on dire les fous. Les serveurs ayant une limite de fichier Lua (je ne sais plus le nombre), autant les économiser également ? C'est très simple mais pas forcément pour les débutants ; vous pouvez avoir des soucis si vous collez tous les fichiers (ex : Un AddCSLuaFile("XXX/XXX") sur un fichier qui n'existera plus). Tout simplement, vous avez 10 fichiers qui sont dans lua -> client, vous prenez un fichier et vous collez tous les codes des 9 autres fichiers dedans... Il y a énormément de chances pour que ça plante, car dans un autre fichier lua vous aurez forcément une erreur comme quoi le fichier n'a pas été reconnu (normal car les 9 fichiers seront vides), alors partant de là il faudra simplement modifier la ligne qui pointe sur le fichier qui n'existera plus et remplacer par le nom du fichier qui fait office de "fourre-tout" (il faut me suivre et c'est minime et complexe, je le sais bien).


J'ai probablement d'autres solutions que je vous proposerais plus tard. Certaines techniques peuvent être notées "pas forcément utile". Vous pouvez donner vos avis, je vais éditer ce message en conséquence des solutions bonnes à faire afin de créer un topic pour optimiser son serveur d'un niveau maximal.
Merci d'avoir lu,
Diablos
 
Dernière édition:
  • J'aime
Réactions: Taink, Pure Code, tictaczep et 2 autres
  • Initiateur de la discussion
Diablos26

Diablos26

Psychopathe
Messages
951
Score réaction
326
Points
315
Merci beaucoup, si tu as des propositions à me faire parvenir n'hésite pas. Quant à moi, je vais de ce pas modifier le statut pour rajouter encore plus d'éléments !

EDIT : si @Snk passe par là, tu pourrais pas me glisser un deuxième message avant celui de samgaze ? On peut pas faire plus de 10 000 caractères, j'ai passé 1h à modifier un texte qui au final ne verra pas le jour, il faut tout réecrire rooooh :(
 
Dernière édition:
  • Administration
Snk

Snk

El Dictator
Membre du Staff
Messages
3 813
Score réaction
2 391
Points
790
Limite repoussée à 15k ;)
 
Z3k4

Z3k4

Helpeur Divin
Messages
4 495
Score réaction
1 513
Points
580
Ta fais un bon résumé des problèmes, mais je veux juste revenir sur une de tes parties celle "Ne pas lier la collection au serveur" alors, honnêtement, c'est sûr que ça peut faire ramer le serveur sur certains addons, mais le mieux est quand même de lié au moins les modèles parce que sinon sur le serveur tu traversera les props (Les materials sont inutile puisque de tout façon, c'est surtout pour le serveur) après pour les maps, le fait de ne pas installer les materials peut créer quelques erreurs, mais elles ne sont pas grave ^^
 
  • Initiateur de la discussion
Diablos26

Diablos26

Psychopathe
Messages
951
Score réaction
326
Points
315
Merci @Snk et merci encore plus pour l'avoir mis dans les sujets "A lire", je ne pensais pas qu'il y serait :)
@Z3k4 J'ai rajouté une petite "description" par rapport aux modèles où on passe à travers :)

MàJ : J'ai donc rajouté la gérance de tickrate et la vérification du code au démarrage du serveur en "conseil". J'ai également corrigé certaines fautes d'orthographe et certains passages que j'ai jugé mal décrit, ça devrait être encore mieux !

J'attends vos avis, et si vous avez d'autres idées d'éléments qui peuvent être utiles comme l'optimisation du serveur, je suis preneur pour étaler mes connaissances avec la communauté mTx.
 
Dernière édition:
Z3k4

Z3k4

Helpeur Divin
Messages
4 495
Score réaction
1 513
Points
580
Ce que je vais dire c'est pas de l'optimisation, mais jute un conseil, pour les darkrp les addons qui font plus de 40-60 mo, faut les laisser dans le workshop, genre les tdm ou les textures de rockford
 
  • Initiateur de la discussion
Diablos26

Diablos26

Psychopathe
Messages
951
Score réaction
326
Points
315
Pourrais-tu m'indiquer les raisons ? :)
 
Z3k4

Z3k4

Helpeur Divin
Messages
4 495
Score réaction
1 513
Points
580
Ah bah c'est assez simple, c'est juste que les addons les plus utilisés (modèles voitures, maps, etc..) sont la plus part du temps (voir toujours) sur d'autres serveurs et que les personnes qui ce sont déjà connecté dessus auront au moins déjà ça et ainsi le chargement sera plus rapide.
En gros, les personnes n'aiment pas attendre et laisser des addons du workshop qu'ils ont déjà leur évitera qu'ils téléchargent les mêmes choses mais d'une façon différente (je sais pas trop si tu ma compris)
 
  • Administration
Snk

Snk

El Dictator
Membre du Staff
Messages
3 813
Score réaction
2 391
Points
790
Je suis tombé sur un addon pour faire du "profiling", apparemment ce n'est plus maintenu mais je suppose que reprendre le code doit être possible :
https://github.com/oubliette32/DBugR

Si quelqu'un est motivé pour le forker :)
 
Z3k4

Z3k4

Helpeur Divin
Messages
4 495
Score réaction
1 513
Points
580
Faut que j'essaye, mais déjà je vais regarder les erreurs xD
 
  • Initiateur de la discussion
Diablos26

Diablos26

Psychopathe
Messages
951
Score réaction
326
Points
315
J'ai déjà testé... Bon pas grand chose à dire, beaucoup de bugs à des moments irréguliers. Et je vois pas comment savoir où en est mon profiling, rien dans data,... Après j'ai vraiment pas cherché non plus, si quelqu'un arrive à le corriger je suis preneur pour voir en quoi ça consiste mais là c'est vraiment un addon bugué... J'ai pas le temps de le corriger personnellement mais bon qui sait autant quelqu'un y arrivera et on dira tous que c'est un addon génial ;)
 
Discord d'entraide
Rejoignz-nous sur Discord