Es/Lag Compensation: Difference between revisions
(Created page with "{{otherlang2 |noborder=true |cs=Lag_Compensation:cs |en=Lag_Compensation |de=Lag_Compensation:de |fr=Lag_Compensation:fr |ka=Lag_Compensation:ka |nl=Lag_Compensation:nl |ru=La...") |
m (Updated {{lang}}, translated some templates) |
||
Line 1: | Line 1: | ||
{{lang|Lag Compensation}} | |||
{{lang| | |||
<!-- | <!-- | ||
: ''You may be looking for [[Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization|Yahn Bernier's 2001 paper on game engine networking]].'' | : ''You may be looking for [[Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization|Yahn Bernier's 2001 paper on game engine networking]].'' | ||
Line 20: | Line 8: | ||
La '''compensación de retardo''' es la utilización de la latencia del jugador por parte del servidor al ejecutando [[usercmd:es|usercmd]], logrando así que el jugador vea la misma imagen que se ejecuta al enviarse el comando. La combinación de esto con la [[prediction:es|predicción]], puede lograr que la compensación de retardo ayude a combatir la latencia de red, hasta el mundo de casi eliminarla desde la perspectiva del atacante. Para una explicación más detallada, véase el artículo [[Source Multiplayer Networking:es#Compensación de retardo|Redes multijugador Source]]. | La '''compensación de retardo''' es la utilización de la latencia del jugador por parte del servidor al ejecutando [[usercmd:es|usercmd]], logrando así que el jugador vea la misma imagen que se ejecuta al enviarse el comando. La combinación de esto con la [[prediction:es|predicción]], puede lograr que la compensación de retardo ayude a combatir la latencia de red, hasta el mundo de casi eliminarla desde la perspectiva del atacante. Para una explicación más detallada, véase el artículo [[Source Multiplayer Networking:es#Compensación de retardo|Redes multijugador Source]]. | ||
{{note|{{ent|CBasePlayer}} no usa compensación de retardo; debe implementarse. Los jugadores en red de Valve ya lo tienen.}} | {{note:es|{{ent|CBasePlayer}} no usa compensación de retardo; debe implementarse. Los jugadores en red de Valve ya lo tienen.}} | ||
{{tip|Desde {{l4d2}}, ''todas'' las entidades pueden compensar su retardo con el valor <code>LagCompensate</code> {{not in FGD}}.}} | {{tip:es|Desde {{l4d2}}, ''todas'' las entidades pueden compensar su retardo con el valor <code>LagCompensate</code> {{not in FGD}}.}} | ||
== Configuración == | == Configuración == | ||
{{IO|cl_lagcompensation|param=bool|Permite a los clientes decirle al servidor que no quieren que se compensen sus comandos. Esto ''no'' es hacer trampas.}} | {{IO|cl_lagcompensation|param=bool|Permite a los clientes decirle al servidor que no quieren que se compensen sus comandos. Esto ''no'' es hacer trampas.}} | ||
{{IO|cl_lagcomp_errorcheck|param=int|¿No válido? En teoría muestra un error, en la práctica no hace nada.}} | {{IO|cl_lagcomp_errorcheck|param=int|¿No válido? En teoría muestra un error, en la práctica no hace nada.}} | ||
{{IO|sv_lagcompensationforcerestore|param=bool|Trampa. Disabling this causes the game to check if each entity can still occupy its rewind position in the current, un-rewound world. If it can't, it is rewound to the last valid position instead of the desired one. {{todo|Why would anyone want that to happen?}}}} | {{IO|sv_lagcompensationforcerestore|param=bool|Trampa. Disabling this causes the game to check if each entity can still occupy its rewind position in the current, un-rewound world. If it can't, it is rewound to the last valid position instead of the desired one. {{todo:es|Why would anyone want that to happen?}}}} | ||
{{IO|sv_showlagcompensation|param=bool|Trampa. Displays rewound [[hitbox]]es whenever a player is lag compensated. This fills the role of the old <code>sv_showhitboxes</code> command, only without the confusion caused by the hitboxes also being shown when compensation is not in effect.}} | {{IO|sv_showlagcompensation|param=bool|Trampa. Displays rewound [[hitbox]]es whenever a player is lag compensated. This fills the role of the old <code>sv_showhitboxes</code> command, only without the confusion caused by the hitboxes also being shown when compensation is not in effect.}} | ||
Line 74: | Line 62: | ||
== Implementación == | == Implementación == | ||
{{todo|Supporting lag compensation on new entities.}} | {{todo:es|Supporting lag compensation on new entities.}} | ||
== Véase también == | == Véase también == |
Revision as of 14:21, 9 July 2022
La compensación de retardo es la utilización de la latencia del jugador por parte del servidor al ejecutando usercmd, logrando así que el jugador vea la misma imagen que se ejecuta al enviarse el comando. La combinación de esto con la predicción, puede lograr que la compensación de retardo ayude a combatir la latencia de red, hasta el mundo de casi eliminarla desde la perspectiva del atacante. Para una explicación más detallada, véase el artículo Redes multijugador Source.
Configuración
- cl_lagcompensation <boolean >
- Permite a los clientes decirle al servidor que no quieren que se compensen sus comandos. Esto no es hacer trampas.
- cl_lagcomp_errorcheck <integer >
- ¿No válido? En teoría muestra un error, en la práctica no hace nada.
- sv_lagcompensationforcerestore <boolean >
- Trampa. Disabling this causes the game to check if each entity can still occupy its rewind position in the current, un-rewound world. If it can't, it is rewound to the last valid position instead of the desired one. Pendiente: Why would anyone want that to happen?
- sv_showlagcompensation <boolean >
- Trampa. Displays rewound hitboxes whenever a player is lag compensated. This fills the role of the old
sv_showhitboxes
command, only without the confusion caused by the hitboxes also being shown when compensation is not in effect.
Las compilaciones de los desarrolladores de servidores (con ALLOW_DEVELOPMENT_CVARS
) tienen comandos adicionales:
- sv_unlag <boolean >
- Activa/Desactiva la compensación entera.
- sv_maxunlag <float >
- Número de segundos para almacenar la posición de jugadores. Por defecto (y máximo) es 1.
Invocación
Rodea el código que quieras compensar entre dos calls con el objeto lagcompensation
:
#ifdef GAME_DLL
#include "..\server\ilagcompensationmanager.h"
void CMyPlayer::FireBullets ( const FireBulletsInfo_t &info )
{
// Source 2007
lagcompensation->StartLagCompensation( this, this->GetCurrentCommand() );
// Alien Swarm and later (see also sub-section below)
lagcompensation->StartLagCompensation( this, LAG_COMPENSATE_HITBOXES );
BaseClass::FireBullets(info);
lagcompensation->FinishLagCompensation( this );
}
#endif
El tiempo retrocederá desde el call hasta StartLagCompensation()
y avanzará del call a FinishLagCompensation()
.
Tipo de compensación de retardo
Desde Alien Swarm, puedes optimizar la compensación de retardo con estos ajustes:
LAG_COMPENSATE_BOUNDS
- Rebobina la ubicación de las entidades, omitiendo animaciones.
LAG_COMPENSATE_HITBOXES
- Rebobina la ubicación y las cajas de colisión. Este es el ajuste estándar.
LAG_COMPENSATE_HITBOXES_ALONG_RAY
- Rebobina las cajas de colisión si una entidad es golpeada por un rayo definido por sobrecarga de «weaponPos»
StartLagCompensation()
.
Estos ajustes se aplican a todas las entidades afectadas por el rebobinado.