Es/Lag Compensation: Difference between revisions

From Valve Developer Community
< Es
Jump to navigation Jump to search
(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...")
 
(→‎Configuración: Fixed cvar table)
 
(12 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{otherlang2
{{LanguageBar}}
|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=Lag_Compensation:ru
|sv=Lag_Compensation:sv
|zh-cn=Lag_Compensation:zh-cn
}}
{{lang|Compensación de retardo}}
<!--
<!--
: ''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 {{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 [[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 {{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.}}


{{tip|Desde {{l4d2}}, ''todas'' las entidades pueden compensar su retardo con el valor <code>LagCompensate</code> {{not in FGD}}.}}
{{tip|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.}}
{{Varcom|start}}
{{IO|cl_lagcomp_errorcheck|param=int|¿No válido? En teoría muestra un error, en la práctica no hace nada.}}
{{Varcom|cl_lagcompensation||bool|Permite a los clientes decirle al servidor que no quieren que se compensen sus comandos. Esto ''no'' es hacer trampas.}}
{{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?}}}}
{{Varcom|cl_lagcomp_errorcheck||int|¿No válido? En teoría muestra un error, en la práctica no hace nada.}}
{{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.}}
{{Varcom|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. {{todo:es|Why would anyone want that to happen?}}}}
 
{{Varcom|sv_showlagcompensation||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.}}
{{Varcom|end}}
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:
 
{{Varcom|start}}
{{IO|sv_unlag|param=bool|Activa/Desactiva la compensación entera.}}
{{Varcom|sv_unlag||bool|Activa/Desactiva la compensación entera.}}
{{IO|sv_maxunlag|param=float|Número de segundos para almacenar la posición de jugadores. Por defecto (y máximo) es 1.}}
{{Varcom|sv_maxunlag||float|Número de segundos para almacenar la posición de jugadores. Por defecto (y máximo) es 1.}}
{{Varcom|end}}


== Invocación ==
== Invocación ==
Line 48: Line 39:
lagcompensation->StartLagCompensation( this, this->GetCurrentCommand() );
lagcompensation->StartLagCompensation( this, this->GetCurrentCommand() );


// Alien Swarm and later (see also sub-section below)
// Alien Swarm and later (See also sub-section below)
lagcompensation->StartLagCompensation( this, LAG_COMPENSATE_HITBOXES );
lagcompensation->StartLagCompensation( this, LAG_COMPENSATE_HITBOXES );


Line 66: Line 57:
: 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 [[hitbox:es|cajas de colisión]]. Este es el ajuste estándar.
: 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 74: Line 65:
== 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 ==


* [[Source Multiplayer Networking:es#Compensación de retardo|Compensación de retardo en redes multijugador Source]]
* {{L|Source Multiplayer Networking#Compensación de retardo|Compensación de retardo en redes multijugador Source}}
* [[NPC Lag Compensation:es|Compensación de retardo en PNJ]]
* {{L|NPC Lag Compensation|Compensación de retardo en PNJ}}
* [[Prediction:es|Predicción]]
* {{L|Prediction|Predicción}}
* [[Interpolation:es|Interpolación]]
* {{L|Interpolation|Interpolación}}


[[Category:Networking:es]]
{{ACategory|Networking}}

Latest revision as of 16:02, 21 April 2025

English (en)Español (es)中文 (zh)Translate (Translate)


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 usercmd(en), 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(en), 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(en).

Note.pngNota:CBasePlayer no usa compensación de retardo; debe implementarse. Los jugadores en red de Valve ya lo tienen.
Tip.pngConsejo:Desde Left 4 Dead 2, todas las entidades pueden compensar su retardo con el valor 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(en)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(en). 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.

Implementación

Pendiente: Supporting lag compensation on new entities.

Véase también