Dans ce tutoriel vous allez apprendre qu'est-ce qu'un NetCode ou sur comment le configurer.
Vous trouverez ici plusieurs réponse à vos questions, et si vous en avez d'autre, vous pourrez les poster à la fin du tutoriel.
Qu'est-ce que le NetCode ?
Un NetCode est une partie d'une configuration client ou serveur (souvent appelé « autoexec ») qui contient des CVars concernant le réseau.
Voici une liste non exhaustive de CVars NetCode:
- Code:
rate
cl_updaterate
cl_cmdrate
cl_interp
cl_interp_all
cl_interp_ratio
cl_smooth
cl_smoothtime
net_splitrate
net_splitpacket_maxrate
Explication de CVars NetCode
La CVar rate permet de brider la connexion utilisée par le jeu.
Comme exemple, à la valeur 60000, le jeu n'utilisera pas plus de 60Kios/s de bande passante.
Si le jeu doit en utiliser plus, on aura ce qu'on appelle du Choke.
La CVar cl_updaterate définit le nombre de fois que le client (vous) ira demander au serveur l'état du monde.
La position des joueurs, les tires, etc...
Plus la valeur de cette CVar est grande, plus votre vision du jeu sera similaire à celle du serveur.
La CVar cl_cmdrate définit le nombre de fois que le client (vous) enverra des informations de son état au serveur.
Votre postion, vos tires, etc...
Plus la valeur de cette CVar est grande, plus le serveur aura une vision similaire de votre jeu.
La CVar cl_interp permet de définir la durée en seconde pendant laquelle se fera l'interpolation sans tenir compte de l'updaterate du serveur.
La CVar cl_interp_all définit si le client ajoute toutes les entités à la liste d'interpolation.
La CVar cl_interp_ratio permet de définir la durée en seconde pendant laquelle se fera l'interpolation en tenant compte de l'updaterate du serveur.
La CVar cl_smooth définit si on veut activer la correction des erreurs de prédiction.
La CVar cl_smoothtime définit combien de seconde à le droit le client pour corriger les erreurs de prédiction.
La CVar net_splitrate définit le nombre de morceaux de paquet (pour les paquets coupés) qui peuvent être envoyé par trame.
La CVar net_splitpacket_maxrate définit le rate qui sera appliqué si il y a des paquets coupés à envoyer.
Configuration des CVars NetCode
Maintenant que vous savez à quoi servent ces CVars, vous pouvez déjà vous faire une idée de la valeur que nous allons leur donner.
Pour allouer un maximum de bande passante au jeu, il faut mettre la CVar rate à sa valeur maximum, soit 1048576.
Cette valeur va permettre au jeu d'utiliser au maximum 1Mo/s de votre connexion.
Pour ce qui est de cl_updaterate & cl_cmdrate, il faut éviter tout décalage avec le serveur, il faut donc les réglé à la valeur maximum des serveurs, soit 66 pour la plus part des serveurs.
Pour comprendre comment réglé les CVars concernant interpolation (cl_interp & cl_interp_ratio), il vous faut déjà savoir ce que c'est que le lerp (Temps en ms que le client met en cache pour éviter des saccades en cas de mini lag).
Le délais obtenu pour le lerp permet aussi d'attendre les paquets nécessaires pour interpoler des paquets manquants.
Le mieux est d'avoir un lerp bas.
Vous avez deux moyens de réglé de réglé votre lerp, le premier est à l'aide de la CVar cl_interp, pour la « désactiver » il vous suffit de lui donner la valeur 0.
Le deuxième moyen calcul le lerp à l'aide de l'updaterate du serveur, c'est avec la CVar cl_interp_ratio.
Le calcul effectué est : cl_interp_ratio / cl_updaterate
- Code:
player->m_fLerpTime = max( flLerpAmount, flLerpRatio / player->m_nUpdateRate );
- A savoir que vous pouvez obtenir un vrai lerp à 0 (le lerp affiché dans le NetGraph est faux), mais seulement en forçant les règlages clients depuis les CVars serveur.
- Code:
sv_client_min_interp_ratio "0"
sv_client_max_interp_ratio "0"
Pour avoir un lerp à 0, vous devez forcer les paramètres client à l'aide de ces deux CVars:
La valeur défaut reste donc la meilleur, soit 0.
La prochaine CVar que je vais expliqué change énormément le gameplay, la CVar cl_smooth prend son sens lors des erreurs de calcul (variation du lerp jaune/orange/jaune ...).
Il vous arrive surement souvent de constater le phénomène du « tir transparent », cette CVar permet de diminuer ce phénomène à condition de parfaitement régler la CVar associée, soit cl_smoothtime.
Comme vous l'avez surement compris, la CVar net_splitpacket_maxrate doit être à la même valeur que votre CVar rate.
Vous l'aurez remarqué, je n'ai pas expliqué la configuration de la CVar net_splitrate car elle est encore en test de mon côté, il vous faudra essayer par vous même différent réglages.
Recommandation
Voici le NetCode que je recommande:
- Code:
rate "1048576"
cl_updaterate "66"
cl_cmdrate "66"
cl_smooth "1"
cl_smoothtime "0.01"
cl_interp "0"
cl_interp_all "0"
cl_interp_ratio "1"
net_splitpacket_maxrate "1048576"
** Ce tutoriel peut évoluer en fonction des MAJs et/ou remarques.
Questions, remarques, suggestions, corrections ?
C'est à vous


























