Es/Lag Compensation: Difference between revisions
m (Nesciuse moved page Lag Compensation/es to Es/Lag Compensation over redirect: Language prefixes) |
m (-Using L template for links) |
||
Line 1: | Line 1: | ||
{{langsp}} | {{langsp}} | ||
<!-- | <!-- | ||
: ''You may be looking for | : ''You may be looking for {{L|Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization|Yahn Bernier's 2001 paper on game engine networking}}.'' | ||
--> | --> | ||
[[File:Lag compensation.jpg|thumb|Cajas de colisión reales (en rojo) y cajas de colisión del servidor (en azul).]] | [[File:Lag compensation.jpg|thumb|Cajas de colisión reales (en rojo) y cajas de colisión del servidor (en azul).]] | ||
La '''compensación de retardo''' es la utilización de la latencia del jugador por parte del servidor al ejecutando | La '''compensación de retardo''' es la utilización de la latencia del jugador por parte del servidor al ejecutando {{L|usercmd}}, logrando así que el jugador vea la misma imagen que se ejecuta al enviarse el comando. La combinación de esto con la {{L|prediction|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 {{L|Source Multiplayer Networking#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|{{ent|CBasePlayer}} no usa compensación de retardo; debe implementarse. Los jugadores en red de Valve ya lo tienen.}} | ||
Line 16: | Line 16: | ||
{{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:es|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 | {{IO|sv_showlagcompensation|param=bool|Trampa. Displays rewound {{L|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.}} | ||
Las compilaciones de los desarrolladores de servidores (con <code>ALLOW_DEVELOPMENT_CVARS</code>) tienen comandos adicionales: | Las compilaciones de los desarrolladores de servidores (con <code>ALLOW_DEVELOPMENT_CVARS</code>) tienen comandos adicionales: | ||
Line 54: | Line 54: | ||
: Rebobina la ubicación de las entidades, omitiendo animaciones. | : Rebobina la ubicación de las entidades, omitiendo animaciones. | ||
; <code>LAG_COMPENSATE_HITBOXES</code> | ; <code>LAG_COMPENSATE_HITBOXES</code> | ||
: Rebobina la ubicación y las | : Rebobina la ubicación y las {{L|hitbox|cajas de colisión}}. Este es el ajuste estándar. | ||
; <code>LAG_COMPENSATE_HITBOXES_ALONG_RAY</code> | ; <code>LAG_COMPENSATE_HITBOXES_ALONG_RAY</code> | ||
: Rebobina las cajas de colisión si una entidad es golpeada por un rayo definido por sobrecarga de «weaponPos» <code>StartLagCompensation()</code>. | : Rebobina las cajas de colisión si una entidad es golpeada por un rayo definido por sobrecarga de «weaponPos» <code>StartLagCompensation()</code>. | ||
Line 66: | Line 66: | ||
== Véase también == | == Véase también == | ||
* | * {{L|Source Multiplayer Networking#Compensación de retardo|Compensación de retardo en redes multijugador Source}} | ||
* | * {{L|NPC Lag Compensation|Compensación de retardo en PNJ}} | ||
* | * {{L|Prediction|Predicción}} | ||
* | * {{L|Interpolation|Interpolación}} |
Revision as of 08:24, 11 July 2024
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.