Lag Compensation
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 .



LagCompensate
!FGD.Configuración
Cvar/Command | Parameters or default value | Descriptor | Effect |
---|---|---|---|
cl_lagcompensation | bool | Permite a los clientes decirle al servidor que no quieren que se compensen sus comandos. Esto no es hacer trampas. | |
cl_lagcomp_errorcheck | int | ¿No válido? En teoría muestra un error, en la práctica no hace nada. | |
sv_lagcompensationforcerestore | 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. Pendiente: Why would anyone want that to happen? |
|
sv_showlagcompensation | bool | Trampa. Displays rewound hitbox es 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:
Cvar/Command | Parameters or default value | Descriptor | Effect |
---|---|---|---|
sv_unlag | bool | 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.