Bloquer les publicités empêche Esportsfrance de se développer. Les publicités sont non intrusives et non génantes sur notre site.

KabaL

32 publications | 524 participations

CS: Comment progresser ? - [MAJ] Le net code

18 Mai 2006


CS: Comment progresser ? - Le Net Code

J'ai mis ce blog dans les "Comment Progresser" uniquement pour les personnes qui ont leur config Internet très mal réglée. En effet, passer de rate 1 500 à rate 20 000 est significatif en terme de résultat (frag, etc...). Pour les autres, (qui sont déjà en '101/101/25000'), c'est juste un blog à titre informatif sur le net code.

=== VOCABULAIRE ===
Diverses commandes entrent en jeu, et nous allons les énumérer et les décrire.
(CLIENT) signifie que ces commandes peuvent être configurées sur vos postes.
(SERVER) signifie que ces commandes sont configurées uniquement côtés serveur.

a) rate (CLIENT): Le débit maximal en octets par seconde que le client peut demander au server. Par défaut, le rate est à 2 500, ce qui veut donc dire 2 500 octets par secondes.
2500/1024 = 2.44kb/sec. La valeur maximum autorisée est de 25 000. Si vous avez une bonne connexion Internet (de type ADSL), je vous conseille de mettre la valeur au maximum, c'est à dire 25 000. Si vous parcourez votre config.cfg, vous allez trouver une commande similaire (cl_rate) mais cette dernière est dépréciée.

b) sv_minrate et sv_maxrate (SERVER): Ces 2 commandes spécifient le débit minimal en octets par seconde et le débit maximal en octets par seconde que le serveur peut envoyer à un client.
Ces valeurs sont prioritaires à la votre. Par exemple, si le sv_minrate est à 5 000 et que vous avez un rate de 2 500, vous serez réellement en rate 5 000. A contrario, si le sv_maxrate est à 20 000 et que vous avez un rate de 25 000, vous serez réellement en rate 20 000.
Pour la configuration serveur, un sv_minrate de 2 500 et un sv_maxrate de 25 000 sont à proscrire.

c) cl_cmdrate (CLIENT): Le nombre de fois par seconde que le client émet des paquets vers le serveur. Si vous avez une connexion de type ADSL, je vous conseille un cl_cmdrate de 100.

d) cl_updaterate (CLIENT): Le nombre de fois par seconde que le client demande des paquets du serveur. Si vous avez une connexion de type ADSL, je vous conseille un cl_updaterate de 100.

e) sv_minupdaterate et sv_maxupdaterate (SERVER). Ces 2 commandes spécifient le nombre de fois par seconde (minimal et maximal) de transfert du serveur vers le client. Ces valeurs sont prioritaires à la votre. Par exemple, si le sv_minupdaterate est à 66 et que vous avez un cl_updaterate à 20, vous serez réellement en cl_updaterate 66. A contrario, si le sv_maxupdaterate est à 80 et que vous avez un cl_updaterate à 100, vous serez réellement en cl_updaterate 80. Pour la configuration serveur, un sv_minupdaterate de 20 et un sv_maxupdaterate de 100 sont à proscrire.

f) tickrate (SERVER): Le nombre de fois que le serveur rafraîchit le monde. Le serveur récupère toutes les données émises par les clients, recalcule de nouveau monde au moment T à partir de l'ancien monde du moment T-(1000/tickrate) en prenant en considération les règles physiques, des dégâts, etc... puis décide ou non d'envoyer une copie de ce monde à un client. Cette commande ne peut pas être changé si le serveur est allumé. Elle s'ajoute dans les commandes de démarrage en ajoutant un "-tickrate X". Un tickrate de 100 est conseillé sur une bonne machine.
PS: Je ne sais pas depuis quand mais la variable du tickrate est sys_ticrate maintenant.
Un 'tickrate 66' est à peu près égal à un 'sys_ticrate 300', et un 'tickrate 100' à un 'sys_ticrate 1000' (illimité).
Vous devez donc mettre un sys_ticrate de 1000.

g) fps_max (CLIENT - SERVER): Côté client, le fps_max détermine le nombre d'image par secondes. La valeur a mettre est de 100. Quand vous créez un serveur et que vous jouez dessus, les tickrate sont encapsulés dans vos fps_max.
Il se passe la même chose sur un serveur dédié. Comme pour le tickrate, la commande ne peut pas être changée si le serveur est allumé. Elle s'ajoute dans les commandes de démarrage en ajoutant un "-fps_max X". Un fps_max de 100 est conseillé sur une bonne machine.

=== COMMENT CA MARCHE ===
Le client et le serveur sont configurés comme je l'ai expliqué plus haut.
Vous avez un cl_cmdrate de "100" => vous envoyez les données toutes les 10ms (1000/100).
Vous avez un cl_updaterate de "100" => vous recevez les informations du serveur toutes les 10ms (1000/100).

Prenons un cas (extrème au niveau des délais) où vous tirez une balle dans un mur.
A l'instant T, vous cliquez sur la souris
A T+10ms, les données sont envoyées au serveur.
A T+XX+10ms, les données sont reçues par le serveur
A T+XX+20ms, le serveur calcul le nouveau monde et décide de vous envoyer les données.
A T+XX+30ms, vous recevez les données du serveur et vous voyez la balle dans le mur.
Si vous pinger le serveur à 20ms, il s'est passé 50ms entre le moment où vous avez tirés et le moment où vous voyez la balle dans le mur.

Heureusement, Valve a introduit le Lag Compensation.
Quand vous visez une personne à une coordonnée X,Y,Z à un moment T, cette personne au même moment, du point de vue du serveur, a certainement déjà bouger. Le serveur est capable alors de remonter le temps pour savoir si vous l'avez bel et bien touché.

Parlons de l'ex_interp maintenant.
ex_interp pour interpolation.
Prenons le cas où vous avez 100fps et que vous envoyez et recevez des informations toutes les 10ms et que le serveur a un sys_ticrate de 1000 (calcule le monde toutes les10ms). Vous jouez avec une personne qui elle envoie et reçoit des informations toutes les 50ms (cl_cmdrate de "20" et cl_updaterate de "20"). Lorsque le serveur vous envoie des informations, vous ne recevez la position du joueur adverse qu'1 fois sur 5. L'interpolation permet à votre ordinateur d'inventer" les positions manquantes du joueur adverse. En gros, dans vos 100fps par secondes, il y a 80fps dans lesquels le joueur adverse n'a pas une vraie position mais une position interpolée. Le problème c'est que par défaut (ex_interp à 0.1 pour 100ms), votre CS prend 100ms de temps pour calculer toutes les interpolations. Par conséquent, au moment où vous voyez un adversaire qui court de gauche à droite, il faut tirer légèrement devant lui car sa position réelle (notament les HITBOXS) à 100ms d’avance sur la position (MODEL GRAPHIQUE) que vous voyez réellement à l'écran. Si vous régler l'ex_interp à 0.05, les HITBOXS n'auront que 50ms d'avance sur le personnage. Si le serveur pouvait prendre en compte la valeur ex_interp des clients, il serait à même capable de compenser le temps de l'interpolation mais ce n'est pas le cas dans HL. Par conséquent, si vous interpolez par défaut et qu'un ennemi va de gauche à droite, et que vous tirez sur la partie la plus à gauche du model, vous verrez que çà touche pas. A 0.05, votre moteur de jeu interpole un peu moins par conséquent au lieu d'avoir 80fps inventé, vous en aurez plus que 40fps interpolée, les 40 autres étant la copie des interpolée. Vous verrez donc la personne avancée en saccadant mais les HITBOXS colleront mieux au personnage.
Vous pouvez alors feinter le système. En jouant avec un cl_cmdrate de 10 et un cl_upderate de 100 vous n'envoyez vos positions que toutes les 100ms mais vous recevez les données toutes les 10ms.
Les joueurs qui jouent à 100fps avec une valeur d'ex_interp à défaut doivent interpoler vos positions 90fps sur 100. Et donc par conséquent, 9fois sur 10, vos HITBOXS sont en avance sur votre corps.
En contre partie, vous ne toucherez pas non plus en envoyant très peu de données :p
En mettant ex_interp encore plus bas (ex_interp 0.01), le moteur du jeu n'a plus assez de temps pour calculer l'interpolation correctement et il place le model légèrement devant les HITBOXS cette fois ci.
Donc si vous jouez contre un adversaire qui a ex_interp à 0.1 et qui a un cl_updaterate et cl_cmdrate plus bas que le sys_tickrate du server, il devra inventer des points (car il a moins d’information que le serveur sur votre position) et, vous allez le voir avant que lui ne vous voit (vous interpolez car son cl_cmdrate est trop bas). Mais pour le toucher, cette fois ci il faudra toucher légèrement derrière lui.
La bonne valeur sur Internet est de jouer avec une ex_interp de 0.05.

Pour tester le tout, allez sur votre server, demandez à un coéquipier de se mettre en
cl_cmdrate "20", cl_updaterate "20" et mettez la pause, et changez les valeurs de ex_interp.
Vous verrez le model bougé. Répéter les mêmes opérations avec le même joueur mais qui cette fois ci joue en cl_updaterate "100" et cl_cmdrate "100".
Voila pourquoi sur le net, on attend souvent: "ça touche pas!". C'est à la fois du à la configuration du serveur (les commandes vus plus hautes) mais aussi les commandes de tous les joueurs présents sur le serveur.
En LAN, vu que tout le monde joue en 25000/100/100, il n'y a pas besoin d'interpolation. En LAN entre ex_interp 0.1 et 0.05, il n'y a aucune différence puisque l'interpolation n'est pas sollicitée.

 

26 commentaires (1 à 15)


  • TarmoK

    18-05-2006 @ 16:09
    #1

    =) coucou Kab

    bj pour tes différents blogs.

    1  

  • Hicks^^

    18-05-2006 @ 16:21
    #2

    On sait tous que ta cfg est plus grosse qu'eric cartman

    1  

  • PoRCo

    18-05-2006 @ 16:25
    #3

    Ca serait cool que tu donne des conseils en manipulation d'admin now

    1  

  • Jacut

    18-05-2006 @ 17:19
    #4

    sys_ticrate?

    1  

  • bdg

    18-05-2006 @ 17:30
    #5

    ouais tickrate, la commande actuelle est sys_ticrate ( c'etait surement tickrate au temps des dinosaures, je n'ai connu que sys_ticrate )

    Et pour que ca touche sys_ticrate 1000

    Sur le net les serveurs qui ont un sys_ticrate a 1000 c'est GOOD. Mais comme dit plus haut, c'est un attribut au lancement du serv, une valeur qu'on ne peut pas modifier une fois le serveur lancé.


    Edité le 20-05-2006 à 16:51:48 par bdg

    1  

  • KabaL

    18-05-2006 @ 17:32
    #6

    Merci #6, Update du blog


    Edité le 18-05-2006 à 17:36:57 par KabaL

    1  

  • zyarKounet

    18-05-2006 @ 19:34
    #7

    CharL enmerd... de service ? ( 24/24 7/7 ? )

    1  

  • Ishiro

    18-05-2006 @ 21:07
    #8

    "La valeur maximum autorisée est de 25 000. Si vous avez une bonne connexion Internet (de type ADSL), je vous conseille de mettre la valeur au maximum..."

    Enfin, si on est en 512 vaut mieux pas mettre 25000. Peut-être que tu ne classes pas le 512 dans la catégorie "bonne connexion", mais ça peut preter à confusion. xD

    Et puis pareil pour les cmdrate et updaterate. Un truc du genre 14000/70/70 et préférable pour du 512, non ?

    1  

  • esports`manuuu

    19-05-2006 @ 02:37
    #9

    l'interp en plus, c'est tout simple à expliquer :)

    1  

  • maiwai

    19-05-2006 @ 05:06
    #10

    manque l'extrap aussi :
    et quant au sys_ticrate, si tu le mets à 10k, jpeux te garantir que ton fournisseur va venir te gueuler dessus :o)

    1  

  • YoRLiN

    19-05-2006 @ 11:39
    #11

    #9 ca doit bien faire 4 ans que j ai une 512 et je suis en 25000 100/100

    1  

  • KabaL

    19-05-2006 @ 12:05
    #12

    sys_ticarate "10000" est USELESS, car les joueurs ne peuvent pas avoir de cl_updaterate de 1000. Le server calcule pour rien, ca monopolise l'équivalent de 10 instances de serveur CS, le proc et la mémoire sont over sollictés/floodés => apparition de LAG


    25000 = 24kb/sec donc c'est bon pour du 512.

    1  

  • BaKouneT

    19-05-2006 @ 13:47
    #13

    Toujours pas décidé à nous apprendre quelque chose?

    1  

  • KabaL

    19-05-2006 @ 13:57
    #14

    #15: Je ne dévoilerai pas du concret au niveau stratégies/tactiques/positions and co si c'est à çà que tu pense

    Et sinon, je ne pense pas que tous le monde ait les mêmes connaissances que toi sur CS (donc certains doivent quand même apprendre quelque chose :) )

    1  

  • dafunk

    19-05-2006 @ 16:46
    #15

    yep 512 depuis 3 ans et toujours au max en rate.

    1  

26 commentaires (1 à 15)


retour en haut

ESFR sur Facebook
Fermer

Créer un compte ?

Mot de passe oublié ?

Oxent Esportsfrance.com est édité par Oxent / Gaming Oriented Agency
Déclaration CNIL #1556825

Fermer
Entrez le pseudo et l'email de votre compte pour recevoir un nouveau mot de passe.



Oxent Esportsfrance.com est édité par Oxent / Gaming Oriented Agency
Déclaration CNIL #1556825

Fermer




Oxent Esportsfrance.com est édité par Oxent / Gaming Oriented Agency
Déclaration CNIL #1556825

Fermer


Votre email a bien été validé !



Oxent Esportsfrance.com est édité par Oxent / Gaming Oriented Agency
Déclaration CNIL #1556825