Los misterios del cl_interpolate

cabron

Bueno, como veo que la discusión del cl_nterpolate está por varios threads y no voy a explicar lo mismo una y otra vez cada vez que salga el tema, voy a intentar aclararlo aquí.

Primero empiezo por explicar que es la interpolación, como ya lo hice en otro post, solo pegaré lo que escribí en él:

Interpolación

Si un jugador que está delante de ti pasa por los puntos A, B, y C, hasta que el servidor no te diga: "Está en A, ahora en B, ahora en C", tú no le verás en esos puntos.

El servidor tiene la información de todo lo que está pasando, y sabe que el jugador ha pasado por los puntos A, B, y C, sin embargo, el servidor no informa a los clientes de lo que ocurre constantemente, si no que lo hace cada cierto tiempo (cada 50 ms si el servidor está configurado por defecto)

Como solo recibes información de lo que está pasando cada 50 ms, tienes la sensación de que el contrario se mueve a tirones. El interpolate simplemente rellena un movimiento apróximado de lo que está ocurriendo en esos 50ms que pasan hasta que recibes una nueva información del servidor, ni más ni menos.

Bien, de esa explicación, se deduce que quitar la interpolación (cl_interpolate 0), no es nada malo, ni te da ninguna ventaja. Entonces viene la gran pregunta, ¿por qué pasan cosas raras cuando la gente lo pone a 0? Pues eso también tiene su expliación.

Imaginemos que la interpolación está activa (cl_interpoalte 1). Como he explicado, la itnerpolación no es más que un movimiento de relleno, sin embargo ese movimiento no se obtiene al azar, si no que se basa en un cálculo que tiene en cuenta el valor de otra variable, cl_interp.

Para no liar el tema, no voy a entrar en detalles de como se hace el cálculo, solo diré que cl_interp está por defecto a 0.1, lo cual significa que los cálculos se basan en en valores de 100 ms.

Pues bien, el problema está, en que al desactivar la interpolación no se desactiva el cálculo de cl_interp, es algo que hay que hacer manualmente.

Si mantienes cl_interp con el valor de 100ms, lo que ocurre es que si disparas al jugador y no le das, si 100ms atrás estaba donde has disparado, el servidor cuenta que le has dado, por eso aciertas los tiros en madera de dust2.

Poner otros valores en cl_interp con el cl_interpolate a 0, provoca todo tipo de comportamientos extraños.

Por tanto, si queréis desactivar la interpolación, debéis poner el cl_interpolate a 0, y el cl_interp a 0, si no se desactiva cl_intep manualmente es entonces cuando aparecen las "cosas raras".

Pansman

Entonces estaremos de acuerdo en que si desactivas una cosa pero no la otra estás jugando con ventaja, no?

Chispas-Elek

Espero que ésto sirva de ayuda.

-->http://www.valve-erc.com/srcsdk/general/multiplayer_networking.html

-->http://forums.steampowered.com/forums/showthread.php?s=da5e69b21a2d625015647eaa75df8008&threadid=347082

-->http://forums.steampowered.com/forums/showthread.php?s=&threadid=347082&perpage=15&pagenumber=6#post3578438

RaDiaTioN

entonces lo k dice ese post, el q tiene el cl_interp a 0.01 y mas reflejos tendria 10ms de disparar al muñeko y un tio kon pokos reflejos se lo tendria k poner a 0.1 para k tuviera 100ms de ventaja (el tio vé al enemigo...y tiene 100ms de espera mientras k se asusta de verlo etc...) para matar a su enemigo... no ? kontestenme por favor...a poder ser cabron k parece q entiende del tema. Gracias

PD: todo esto con el cl_interpolate a 1.0
PD2: osea k seria legal (kuando digo legal, no digo oficialmente) tener el interp a 0.01 no ?

Chispas-Elek

El interp consiste en el ajuste de los hitboxes del muñeco para conpensar el lag.

El comando es "cl_interp x.xx".

Normalmente el valor default es "0.1", valor que viene preparado para pings de unos 100 ms.

Para hacer un ajuste perfecto de los hitboxes al muñeko y que no se produzcan balas perdidas, has de poner el interp en valor al ping k posees en el servidor.

De esta manera siempre que dispares, al jugador contrario tu pc mandará información al servidor maestro (evidentemente aqui es donde tus ms entran en juego y envia con "x" velocidad los datos del servidor). El servidor lee tu cl_interp y "retrocede en el tiempo", para hacer los calculos de la trayectoria de la bala y dar la respuesta conveniente.

Ejemplo: Si tienes una media de 50 de ping tienes que ponerte el valor de cl_interp a "0.05". Si tienes 60 pues a "0.06" etc.

RaDiaTioN

muchas gracias, estaba jugando kon un comando a un valor erroneo, ahora mismo m pongo el cl_interp a 0.04 ya k mi ping de media es de 40ms...a probarlo toka :D

Aphex

Para completar lo q han dicho chispas y cabron (chispas perri, q eres un perri, anda q vayas a decir nada xD) tambien hay un comando muy interesante que es cl_lagcomp_errorcheck que debe estar a 1, lo q hace dicho comando es comprobar la posicion del jugador al que disparas, para que la trayectoria de la bala sea correcta. Saludos!

E

osea q si tengo pin de 60 tendria q usar: cl_interp 0.06 y cl_lagcomp_errorcheck 1, no? esto afectara demasiado al juego o no me dare cuenta casi??

un saludo

santox

lo maximo del cl_interp es 0.1 o si alguien quieres se lo pude poner a 2.0 para tener mas tiempo de reaccion? contestar por favor

Lrk

default.

Bok3

Komo dice Lrk, default rules.

Pq no jugar con la unika desventaja de tener un pc de mierda ?

O

No kiero matar a 1 Disparando 2 metros atras...

Fenix-1

Entonces no ai nada de malo en desactivar la interpolacion y poner el cl_interp con el valor medio de tu ping ?

PD: No kiero conbertirme en un lamer k dispara donde sea y mata a to kiski

ItNaS

entonces si t matan cuando ya t as escondido y al morirte caes mas atras de donde estabas es xq el otro llevab interpolate?

Amedo

Perfectamente puede deberse a eso, pero tambien puede significar que el servidor te ha devuelto tarde la información de que habias muerto. Eso ke comentas es lo más jodido ke me pasa a mi.

Entonces, cuando muero, miro rapidamente el net_graph para ver ke choke o loss tenía y generalmente veo numeritos ke descienden al medio segundo, a 0.

Muchas veces estás jugando y no te fijas en el choke y loss, porke cuando ha comenzado la ronda estaba a 0, u oscilaba entre 0 y 1,
pero a medida ke la ronda se complika, estos datos cambian, y como estamos muy metidos en la partida no nos fijamos en ke esta oscilando... luego cuando vuelves a morir se pone misteriosamente a 0, rapidamente.

Si la recepcion/envio de paketes (datos) no es óptima entre el server y cliente (jugador) efectos como el de 'morir tarde' pueden darse perfectamente.

Creo ke cable tiene una conexión mejor en el sentido de ke distribuye y asigna una temporalidad mas continua en el envio/recepcion de paketes, mientras ke el ritmo al ke se van enviando los paketes en ADSL xmegas es más discontinuo, es decir

si en 10 segundos te ha de enviar 100 paketes, cable te va a enviar 10 paketes cada 01 segundos, lo mismo para recibirlos, 10 en 0.1, 10 en 0.2, 10 en 0.3..etc

y ADSL es posible ke esta 'temporalidad' no sea tan efectiva y te envíe quizas esos 100 paketes pero 4 en 0.1, 15 en 0.2, 7 en 0.3 etc haciendo ke en algun momento haya LAGAZO. O algo así me pareció entender una vez, corregidme si me ekivoko, menos ping aveces no significa mejor calidad d conexion sino velocidad de recepcion/envio, ke no tiene nada que ver con el orden-ritmo de esta.

Bul0

no me enterao de na xD

Amedo

es cierto lo de la recepcion/envio x cable y adsl?

kiero decir ke si el orden de distribucion de paketes en secuencias cuasiperfectas es mas propio de una conexion x cable, y en adsl la secuencia es discontinua por lo kual se producen lagazos mas asiduamente...

2 comentarios moderados