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
- 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 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:
- 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.