Como calcular los rates (en inglés)

AticAtac

He encontrado este post en los foros de Steam. Es del creador del programa HLTooLz y da una serie de indicaciones sobre como ajustar los rates de la conexión.

Especialmente interesante la 2ª parte donde dice como variar los rates en función a los del servidor.

Este es el link: http://steampowered.com/forums/showthread.php?s=&threadid=61312&perpage=15&pagenumber=1

Y este es el texto (si alguien se marca el punto de traducirlo cojonudo)

Hi,

Im the guy you know as "the HLTooLz creator"

Anyway, I thought I'd write this because all other Netcode guides miss one important bit in tweaking the netcode.

[rate]

This is your download speed in bYtes / second.
If you know your advertised speed in kbIps (like a 56k is actually 56kbIps), then all you have to do is divide your speed by 8 and multiply it by 1024.
Like this:

56 / 8 = 7 kbYtes/sec (1 byte = 8 bits)
7 * 1024 = 7168 bYtes/sec (1 kbyte = 1024 bytes)

Your rate would be:

rate 7168

You should know you will never download @7168, because thats the maximum theoretical limit. Instead, you should be realistic and take 90% of the theoretical limit to get the download speed you would get on most servers.

90% of 7168 = 7168 * 0.9 = 6451

rate 6451

That's about right, and should work best if you have a 56k dialup modem.

[cl_rate]

This is your upload speed in bYtes / second. It's how fast you send the things you do to a server. But your upload speed is usually not as fast as your download speed, so you need to make different calculations for "cl_rate" than for "rate".

Let imagine you have DSL, with 128k upload speed.
128k is an advertised speed, so it is in kbIts/sec.

128 / 8 = 16 kbYtes/sec
16 * 1024 = 16384 bYtes/sec

Again, you wont upload at that speed, instead your max upload speed will be about 90% of the advertised speed.

16384 * 0.9 = 14746 bYtes/sec

So your cl_rate will be:

cl_rate 14746

[cl_updaterate]

This is the amount of times you receive updates from the server per second.

In a heavy firefight the largest packets can be up to 180 bytes. (A packet is a bit of information that you receive).

If we divide our rate by the largest packet size, we'll get our cl_updaterate.

6451 / 180 = 36

cl_updaterate 36

We dont need to take 90% of the updaterate, because we've already done that in the rate calculation.

[cl_cmdrate]

This is like cl_updaterate only that it's the amount of times you send updates to the server. The largest packet size that you (the client) send to the server is something like 30 bytes.

So we should divide cl_rate by the largest packet size we send through:

14746 / 30 = 491

Now, you can't send 491 updates per second to the server . It's almost impossible for the server to handle all those packets. What Half-Life has done, is limit cl_cmdrate to 100
So if you calculate cl_cmdrate and its bigger than 100, change it to 100

cl_cmdrate 100

That's more than fast enough for most ppl.

=============================================

That was the first part, I think all I said there has been said before, and perhaps better than I explained it.

But now comes the bit everyone forgot to mention!

The server you connect to has maximum and minimum rates. What the fu*k does that mean? It means that your specially calculated rates wont work properly and youll get choke and loss.

How should you fix this?

Well, currently you can only do this by looking up the max rates of the server, and recalculating rates after youve got the servers max rates.

Ill explain how:

1/ First connect to a server
2/ Open console with ""
3/ Type: sv_maxrate
4/ Press enter
5/ You should see a message in console displaying sv_maxrate xxxx

Now that you've got the servers max rate, you know your own max rate aswell, the server limits your rate to his own max rate.

So now we have to adjust our own rates.

Lets say sv_maxrate was 10000

sv_maxrate 10000

Our rate should then also be 10000 (if your rate is less than sv_maxrate, you dont need to do any more calculations, you have the best rates for your connection). What we need to change is our cl_updaterate to avoid choke.

So we need to calculate cl_updaterate based on a rate of 10000

10000 / 180 = 56

cl_updaterate 56

That will be our new cl_updaterate.
After you've done that, you have calculated the best possible rates for the server you are on. All you have to do is type "cl_updaterate 56" in console.

If you still experience choke or loss, lower your cl_update and cl_cmdrate, not your rate/cl_rate.

Soon, I'm making a program in which you paste (ctrl+v) a server IP address and it calculates the best possible rates for that server and then it connects to the server for you. Look for it @ hltoolz.com (i havent made it yet though)

Cya
Laurent

Last edited by Starlyght on


Editado por Moderador:
Cuestiones sobre comandos/CFG en el foro CS-Config. Movido.

Hybrid

Pues esta muy bien el articulo la verdad . Yo vi hace tiempo uno sobre el CS alla por la 1.4 en summerblue.net que te explicaban el tema este de los rates tb y ya me cosque del tema . La teorica que dice este esta muy bien para las conexiones normales , solo que como sabreis , aqui somos españoles y nuestras conexiones apestan :D Por tanto eso de el 90% de nuestra conexion aprovechada id bajandolo al 60% y tendreis algo aproximado . Yo lo hago asi y en servers guiris va de puta madre , en cambio en españa , un update de mas de 60 es inviable e imposible de que tire medianamente bien si no tienes ADSL 2mb. Basicamente os aconsejo como ese tio de la web , que os pongais el sv_maxrate del server como rate o menos y que ajusteis el update y cmdrate posteriormente , sino balas y recoil al carajo ...de todas maneras con ADSL hay veces que ni por esas .

GL Spain Laggors.

Sn0oZe

y eso va bien? entonces si tiendes adsl 256 te

256 / 8 = 32 ; 32 x 1024 = 32768

90% --> 29491

Y si eso lo dividimos por 180, como pone tenemos un cl_updaterate de 164 O_o

AticAtac

Lo importante es la segunda parte, donde te dice como calcular los rates en función a lo que te deja el servidor.

Iré probando a ver si va bien.