Left 4 Dead 2

Left 4 Dead 2

155 ratings
Conocimientos relevantes del motor Source y Left4dead2
By lechuga
En la presente obra se detalla los conocimientos competente que en general tienen las personas mas dedicadas al motor Source, enfocadas al juego Left 4 Dead 2.

Esta orientada a los aspectos técnicos desde el manejo de variables de consola, hasta construir su propio script y autoexec.

Mucho de lo planteado puede extrapolarse a la mayoría de juegos que usan el respectivo motor, pero quiero hacer hincapié que algunas variables pueden no existir en otros juegos y viceversa.

V2.1 - Ajustes en el autoexec recomendado.
V2.0 - Se incorporo la sección de "Entidades y el director".
v1.0 - Al fin la termine xD.
2
   
Award
Favorite
Favorited
Unfavorite
Comando de consola
Los comandos/cvar/concommands, son líneas de texto cuya estructura es interpretable para la maquina/software (a través de una consola) que buscan generar una acción, es necesario tener un conocimiento básico de cómo se escriben para poder usarlas, a continuación, verán algunas de las características que debe tener en cuenta antes de ingresar comandos a consola.

Tipos de comandos
  • Interget y Float: Tienen un valor numérico, el cual no permite letras.
  • Ejemplo: cl_interp "0.1"
  • Boolean: Tienen un valor numérico (0 o 1) o alfabético (F o T) el cual admite solamente dos variables, las cuales indican el estado de "activado" y "desactivado".
  • Ejemplo: sv_cheats "1"
  • String: Son cadenas de texto (o palabras), los números ingresados serán interpretados como texto.
  • Ejemplo: cl_language "english"
Nota: No es necesario poner siempre comillas en todos los comandos (aunque en ciertas circunstancias especiales si), pero es una buena practica.

Banderas
Existen algunas diferencias entre los comandos, algunos están bloqueados para evitar su manipulación, otros son inmutables y algunos solo pueden ejecutarse en un servidor, entre muchas otras propiedades. Estas categorías se llaman "flag" o banderas en español y lo que vienen hacer aquí es "marcar" el comando para que este se use en ciertas circunstancias.

  • FCVAR_LAUNCHER ( launcher ): Pueden introducirse en los parámetros de lanzamiento, algunas no deben cambiarse mientras el cliente o servidor este iniciado.

  • FCVAR_CHEAT ( cheat ): La mayoría de los comandos y variables tienen fines de depuración y no se eliminan en las versiones de lanzamiento, ya que también son útiles para desarrolladores de terceros y creadores de mapas. Desafortunadamente, no se permite que los jugadores normales usen estas herramientas de depuración, ya que les da una ventaja injusta sobre otros jugadores, como hacer trampa. Si un cliente se conecta a un servidor donde los trucos están deshabilitados (debería ser el caso predeterminado), todas las variables de la consola del lado del cliente se revierten a sus valores predeterminados y no se pueden cambiar mientras el cliente permanezca conectado. Los comandos de consola marcados tampoco se pueden ejecutar.

  • FCVAR_GAMEDLL ( sv ): Está definido por la DLL del servidor (o en el caso de linux, SO).

  • FCVAR_CLIENTDLL ( cl ): Está definido por la DLL del cliente (o en el caso de linux, SO).

  • FCVAR_ARCHIVE ( a ) :Algunas variables de la consola contienen configuraciones específicas del usuario que se debe restaurar cada vez que se inicia el juego (como nombre, network_rate, rate, etc). La variable de la consola se guarda en el archivo "config.cfg" cuando el juego se apaga y se vuelve a cargar cuando se vuelve a abrir.

  • FCVAR_USERINFO ( user ): Algunas variables de la consola contienen información del cliente que el servidor necesita conocer, como el nombre del jugador o su configuración de red. Estas variables se transmitan al servidor y se actualicen cada vez que el usuario las cambie. Cuando el jugador cambia una de estas variables, el motor notifica al código del servidor. El servidor del juego también puede consultar el motor para configuraciones específicas del cliente.

  • FCVAR_DEMO ( demo ): Al comenzar a grabar un archivo de demostración, algunas variables de la consola deben agregarse explícitamente a la grabación para garantizar una reproducción correcta.

  • FCVAR_DONTRECORD ( norecord ): Esto es lo opuesto a "demo", algunos comandos de la consola no deben registrarse en archivos de demostración.

  • FCVAR_REPLICATED ( rep ): Cuando el servidor del juego y los clientes utilizan código compartido, es importante que ambos lados sigan exactamente la misma ruta utilizando los mismos datos (por ejemplo, movimiento / armas previstos, reglas del juego). Si este código usa variables de consola, deben tener los mismos valores en ambos lados. Este asegura que al transmitir estos valores a todos los clientes. Mientras están conectados, los clientes no pueden cambiar estos valores y se ven obligados a utilizar los valores del lado del servidor.

  • FCVAR_NOTIFY ( nf ): El servidor envía un mensaje de notificación a todos los clientes cada vez que se cambia la variable. Esto debe usarse para variables que cambian las reglas del juego, que son importantes para todos los jugadores (mp_friendlyfire, etc.).

  • FCVAR_PROTECTED ( prot ): Si una variable de la consola contiene información privada (contraseñas, etc.) esta categoría volverá la información como confidencial.

  • FCVAR_SPONLY ( sp ): Solo se debe permitir ejecutar un comando o cambiar una variable en el modo de un jugador.

  • FCVAR_PRINTABLEONLY ( print ): Algunas variables importantes se registran o difunden (reglas de juego, etc.), por lo que es importante que solo contengan caracteres imprimibles (sin caracteres de control, etc.) para evitar la ejecución de código arbitrario y otros problemas.

  • FCVAR_NEVER_AS_STRING ( numeric ): Le dice al motor que nunca imprima esta variable como una cadena ya que contiene secuencias de control.

  • FCVAR_SERVER_CAN_EXECUTE ( server_can_execute ): Hará que el comando solo permita que el servidor lo use, ya sea a través de la consola del servidor dedicado o por el jugador que creó el servidor local.
Nota: Con la función de Sourcemod, es posible que existan más "flags" para las variables.
Bind
  • Un "bind" es un comando de consola que le permite "vincular otro comandos a una tecla".
  • Al iniciar el juegos, de forma predeterminada se crean una serie de "bind " que indican como se comportará el teclado al iniciar el juego, aquellos se encuentran en "\Left 4 Dead 2\left4dead2\cfg\config.cfg".

Nota: Al ingresar un "bind" por consola, este se guardará en el archivo "config.cfg".
Nota: Si borras ese archivo el sistema lo creara de nuevo.

Modo se uso
  • Para ingresar un "bind" debes aprender la siguiente estructura:
bind <key> [command]
    Donde:
  • <key> : Es alguna tecla como F11,h,8,etc.
  • [command] : Es el comando que se va a relacionar.
Ejemplo : bind "x" "say_team attack, wait ! ! !"
Al presionar "x" se imprime en el chat de equipo el texto "say_team attack, wait ! ! !".

Exponer una tecla "bindeada"
  • Para mostrar un "bind", solo hay que escribir su estructura exceptuando el comando.
Ejemplo : bind "x"
Consola responderá mostrado la función que tengo asignada a esa tecla.

Eliminar una tecla "bindeada"
Para quitarle un comando asignado solo debe usar "unbind" .
Ejemplo: unbind "x"
esto dejara en blando la tecla "x".

  • También se puede quitar todos los "bind" ingresando "unbindall" en consola, pero esto afectará todas las funciones, incluyendo movilidad del personaje, votaciones, etc.

Nota: Si ingresó "unbindall" , al reiniciar el juego se restaurarán los "bind" predeterminados del juego, esto es recomendable en algunas circunstancias.
Implementación de consola
Por defecto la consola de comandos de l4d2 esta desactivada para el jugador, sin embargo es posible activarla para su uso de las siguiente forma:

  1. Se dirigen a su biblioteca steam
  2. Click derecho en l4d2
  3. Seleccionan "propiedades"
  4. En la pestaña "General" estará la opción "parámetros de lanzamiento"
  5. En el cuadro de dialogo ingresan el texto "-console"
  6. Aceptan y abren el juego, acto seguido aparecerá la consola en la pantalla.
ServerBrower
El serverbrower, es una Herramienta que se utiliza desde counter-strike para buscar servidores de juego, usualmente no aparece a simple vista ya que valve espera que utilicen el sistema de lobby en su lugar, pero para efectos prácticos es bastante útil para guardar servidores dedicados (competitivos) a favoritos.

  • Para iniciar serverbower debes abrir la consola e introducir "openserverbrowser".

ServerBrower de L4d2

  • La pestaña "internet" no tiene uso en este juego, ya que por el sistema de lobby, todas las partidas serán visualizadas en "Personalizada".
  • Omitiré las pestañas "Historia", "Espectador","lan" y "Amigos" ya que considero que no es relevante.

Pestaña "Personalizada"

  • Nos presenta todas las partidas que se conectaron al servidor maestro, tanto versus, coop,etc.
  • Dentro de esta pestaña esta la herramienta de filtros, que es bastante útil para buscar contenidos específicos.

  • Etiqueta: Nos permite filtrar los servidores según un texto que se genera automáticamente en el, el cual describe el servidor como "versus", "coop", "scavenge", "survival", etc.
  • Es bastante útil para buscar versus en vanilla.
  • Latencia: Esta opción nos permite filtrar a todos los servidores que nos den un ping superior a el valor establecido .
  • El valor que podemos seleccionar esta predeterminado en intervalos de 50.
  • "El servidor no esta lleno": Nos permite filtrar los servidores llenos.
  • "Tiene usuarios Jugando": Nos permite filtrar los servidores vacíos.

Ejemplo Para buscar versus con un ping en 50
.
  • Podemos clickear otra vez el botón "filtros" para despejar el serverbrower.
  • Un detalle importante es que, de esta forma pueden entrar a partidas privadas, ya que esta función es del sistema "lobby".

Información del servidor
  • Es posible pedir la información del servidor ( con click derecho en el) y ver datos como la ip del servidor, numero de jugadores, el nombre de ellos, su respectivo puntaje, tiempo que llevan en el, etc.

  • Si no pueden entrar se les desplegara una opción adicional, la cual tiene 2 opciones.
  • "Avisarme...": cuando se desocupe un slot (llámese slot a espacios dentro del server), el juego emitirá un sonido.
  • "Entrar": entrara automáticamente cuando se detecte un slot vacío.
  • Nota: La opción entra a veces puede fallar, ya que el servidor necesita conectarse al sistema lobby para anunciar que hay un slot vacío.

Pestaña "Favoritos"
  • En este lugar se nos presenta el menú para agregar servidores, nos ayudará a mantener las ip de los servidores competitivos y ver si hay gente ocupándolos.
  • Al abrir el botón de "añadir" se nos desplegará un menú para introducir la ip del servidor y analizar si hay GameServer (servidor dedicado) ahí, cabe señalar que una ip puede tener muchos GameServers.

ServerBrower en el escritorio
  • Es posible abrir en serverbrower en el escritorio de windows para añadir, eliminar o visualizar los servidores, de esa forma no es necesario tener el juego abierto.


  1. Abre la aplicación de Steam y dirígete al botón "steam" en el aparte superior izquierda.
  2. Ve a "Parámetros" y en la pestaña "interfaz" busca el botón "preferencias de la barra de tareas"



  3. Activa la opción de "servidores"



  4. Click derecho en el icono de steam en la barra de tareas para ver el "serverbrower"
Hitbox
Originally posted by valve:
Una Hitbox es una caja invisible (o más a menudo una serie de cajas) que define la forma aproximada de un modelo a los efectos de la detección de colisiones basada en daños. Un modelo típico dentro de un juego es demasiado poligonal para realizar cálculos de aciertos en tiempo real, por lo que se utilizan en su lugar los hitboxes. Un hitbox es diferente de un cuadro delimitador en que es más complejo y más cercano a la forma visible del modelo. El cuadro delimitador se utiliza para la detección de colisiones basada en movimientos y, por lo general, es literalmente un cuadro único.
  • Resumen: La Hitbox son cuadrados o rectángulos invisibles que tienen la función de anunciar la colisión del personaje con algún agente externo, aquellas logran definir la sección por donde se genera la interacción (como un balazo en el pie).

  • Cabe destacar que las texturas intentan ser representativas de las Hitbox, pero solo queda ahí, ya que un rectángulo de una pared puede ser atravesar o no por balas, el fuego, etc.

  • También es correcto señalar que es la base para crear paredes invisibles, las que señalan el límite de los mapas según el equipo (los infectados especiales o supervivientes).
Entidades y el director
Point entity
Point entity (o en español "punto de entidad") son, como su nombre lo indica entidades creadas en un punto de posición específico en el plano cartesiano (el mapa). Estos puntos puedes bifurcarse en 3.

Nota: Por definición una entidad es un objeto concreto o abstracto que interactúa con el medio.

  1. NPC entities: (Entidades NPC), o entidades de "Personajes no jugadores", son personajes y criaturas controlados por computadora que pueden interactuar con los jugadores usando su codificación de IA (inteligencia artificial). Los NPC generalmente se dividen en dos categorías: Amistosos, NPC que ayudan, asisten o no afectan al jugador, y Hostiles, NPC que atacan o afectan negativamente al jugador.

  2. Prop entities: (Entidades de apoyo), son (generalmente) objetos inanimados que usan un modelo para su apariencia y función. Pueden ser estáticos, dinámicos o físicos. Algunos accesorios más específicos pueden incluso tener funcionalidad.

  3. Logic entities: (Entidades lógicas), son invisibles y afectan el juego, creando o agregando varios sistemas de control ambiental y del juego, como iluminación, administradores de inteligencia artificial, contadores matemáticos y coreografías.

2. Prop entities: Categorías

prop_detail
Modelos estáticos que no se mueven.
No contienen propiedades físicas ni datos de colisión.
No se puede romper.
No arrojan sombras.
Se puede colocar automáticamente asignando un tipo de detalle a un material.
Generalmente, los diseñadores de niveles no los colocan individualmente.
La geometría menos costosa de renderizar.
Es posible que ni siquiera se procesen en máquinas de gama baja.
Ejemplos: hierba, rocas, plantas.

prop_static
Modelos que no se mueven.
No contiene propiedades físicas distintas de la colisión y no se puede romper.
No puede tener articulaciones ni animación.
Proyecta sombras de mapas de luz. Geometría económica de renderizar.
Ejemplos: tuberías, artefactos de iluminación, rocas, postes telefónicos.

prop_physics
Modelos con propiedades físicas integradas.
Se mueve y choca usando el sistema de física de cuerpo rígido.
Se puede restringir a otros objetos físicos mediante bisagras u otras restricciones.
También se puede configurar para que se rompa cuando reciba suficiente daño.
Proyecta sombras dinámicas.
Caro de mover y renderizar.
Ejemplos: barriles, escombros pequeños, muebles.

prop_ragdoll
Física de muñeco de trapo.
Tiene todas las propiedades de prop_physics y también puede usar el sistema de física de muñeco de trapo[en.wikipedia.org] de un cuerpo múltiples partes que colisionan o se doblan.
Muy caro de mover y renderizar.
Ejemplos: cadáveres, cajas de cartón de varias piezas, colchones.

prop_dynamic
Modelos que pueden colocarse en jerarquía y pueden tener articulaciones y reproducir animaciones.
También se puede configurar para que se rompa al recibir suficiente daño.
Se puede adjuntar jerárquicamente a otros objetos. Puede proyectar sombras dinámicas.
Más cara que la geometría estática, menos cara que la geometría física.
Ejemplos: brazos robóticos, maquinaria, modelos animados en escenas de corte.

3. Logic entities: info_director
  • El director es una IA implementada para llevar acabo acciones que determinan la partida a voluntad propia.
  • Los mapas tienen diferentes sectores que permiten el spawn ( desovar o aparecer ) de objetos como píldoras, armas, adrenalina, botiquines, common (infectados comunes), etc. El director define desde la carga del mapa, que objetos aparecerán en la partida, es el corazón del juego, ya que siempre que inicies la campaña el se encarga que nunca sea igual a la anterior.
  • Los desarrolladores de mapas pueden influir en el director para que realice siempre la misma acción o deje a su discreción.

Panic Events (evento de pánico)
  • Los eventos de pánico son ocasiones en las que el diseñador obliga a una horda infectada a aparecer en un momento determinado, aún que tendrá un control limitado sobre de dónde vendrán.
  • Los eventos de pánico pueden generar common (infectados comunes) ilimitados o definidos a una cantidad especifica.

  • EL director esta programado para que en un rango de tiempo genere un evento de pánico, sea el momento que sea:
    • En dificulta normal, avanzada y experto el rango de tiempo es desde 90 a 180 minutos, en dificultad fácil de 120 a 240 minutos.
    • La cantidad de common que aparecen están en un rango de 10 a 30.

      Nota: la cantidad de common en el mapa tiene un limite de 30, en un evento de pánico, aparecerán la cantidad suficiente para que sean 30 constantemente. Mientras mas rápido los limpies, mas temprano termina el evento.
Source Multiplayer Networking #1
Para responder a la pregunta de ¿Por qué debemos modificar la network?, hay que contextualizar que l4d2 es un juego que también se lanzo a consola en el 2007, por lo tanto las configuraciones básicas no están echas para que sea competitivo, los cambios de estas variables se hacen solo en servidores dedicados para tener un juego mas fluido y eficiente.

Originally posted by Valve:
Los juegos multijugador basados ​​en el motor de source utilizan una arquitectura de red cliente-servidor.
Por lo general, un servidor es un host dedicado que ejecuta el juego y tiene autoridad sobre la simulación del mundo, las reglas del juego y el procesamiento de las entradas de los jugadores.
Un cliente es la computadora de un jugador conectada a un servidor de juegos. El cliente y el servidor se comunican entre sí enviando pequeños paquetes de datos a alta frecuencia (normalmente de 20 a 30 paquetes por segundo). Un cliente recibe el estado mundial actual del servidor y genera una salida de video y audio basada en estas actualizaciones. El cliente también muestra datos de dispositivos de entrada (teclado, mouse, micrófono, etc.) y envía estas muestras de entrada al servidor para su posterior procesamiento. Los clientes solo se comunican con el servidor del juego y no entre ellos (como en una aplicación peer-to-peer). En contraste con un juego para un solo jugador, un juego multijugador tiene que lidiar con una variedad de nuevos problemas causados ​​por la comunicación basada en paquetes.

El ancho de banda de la red es limitado, por lo que el servidor no puede enviar un nuevo paquete de actualización a todos los clientes para cada cambio mundial. En cambio, el servidor toma instantáneas del estado mundial actual a una velocidad constante y transmite estas instantáneas a los clientes. Los paquetes de red tardan una cierta cantidad de tiempo en viajar entre el cliente y el servidor (es decir, la mitad del tiempo de ping). Esto significa que la hora del cliente siempre está un poco por detrás de la hora del servidor. Además, los paquetes de entrada del cliente también se retrasan en su camino de regreso, por lo que el servidor está procesando comandos de usuario temporalmente retrasados. Además, cada cliente tiene un retraso de red diferente que varía con el tiempo debido a otro tráfico de fondo y la velocidad de fotogramas del cliente. Estas diferencias de tiempo entre el servidor y el cliente provocan problemas lógicos, que se agravan con el aumento de las latencias de la red. En los juegos de acción de ritmo rápido, incluso un retraso de unos pocos milisegundos puede provocar una sensación de juego lento y dificultar golpear a otros jugadores o interactuar con objetos en movimiento. Además de las limitaciones de ancho de banda y las latencias de la red, la información puede perderse debido a la pérdida de paquetes de red.

TickRate

¿Qué es Tickrate?

Originally posted by Valve:
El servidor simula el juego en pasos de tiempo discretos llamados ticks. De forma predeterminada... Durante cada tick, el servidor procesa los comandos de usuario entrantes, ejecuta un paso de simulación física, verifica las reglas del juego y actualiza todos los estados de los objetos.
Después de simular un tick, el servidor decide si algún cliente necesita una actualización mundial y toma una instantánea (fotograma) del estado mundial actual si es necesario. Un tickrate más alto aumenta la precisión de la simulación, pero también requiere más potencia de CPU y ancho de banda disponible tanto en el servidor como en el cliente.

  • Resumen:El tickrate es la frecuenta de fotogramas que crea el servidor simulando el universo en que se juega.
  • Cuando el tickrate de eleva la información se actualiza tantas veces que se logra mejor precisión en la comunicación del servidor al jugador. Esto se refleja en acciones como el skeet, level, bhop, etc.
  • En computadores con pantalla de alta frecuencia como 144hrz, se puede visualizar un cambio notable en el juego.
  • El tickrate solo puede modificarse en servidores y host local, pero es necesario saber su valor para ajustar el rate, cmdrate y updaterate.

Rate
¿Qué es rate?
  • El rate es el tamaño del paquete enviado al servidor, este tiene como limite máximo el tickrate definido por el del servidor.

Cvar
Value
Flag
Comment
rate
10000
user
Max bytes/sec the host can receive data.
  • El valor que se muestra es el máximo que nos permite los servidores de vanilla, en competitivo el valor es más alto.
  • El valor por defecto mostrado es para clientes y el valor para los servidores es 30.000.

cl_cmdrate
¿Qué es cmdrate?
Originally posted by valve:
El cliente crea comandos de usuario a partir de dispositivos de entrada de muestreo con la misma tasa de tick con la que se ejecuta el servidor. Un comando de usuario es básicamente una instantánea del estado actual del teclado y el mouse. Pero en lugar de enviar un nuevo paquete al servidor para cada comando de usuario, el cliente envía paquetes de comando a una cierta tasa de paquetes por segundo (generalmente 30). Esto significa que se transmiten dos o más comandos de usuario dentro del mismo paquete. Los clientes pueden aumentar la tasa de comando con cl_cmdrate. Esto aumentará la capacidad de respuesta, pero también requiere más ancho de banda de salida.
  • Resumen: El cmdrate son la cantidad de instrucciones de teclado y mouse que el cliente sube al servidor por segundo.
Cvar
Value
Flag
Comment
cl_cmdrate
30
a,user
Max number of command packets sent to server per second.
  • Este comando tiene un rango de 10 a 100.

cl_updaterate
¿Qué es updaterate?
Originally posted by Valve:
Los clientes suelen tener solo una cantidad limitada de ancho de banda disponible. En el peor de los casos, los jugadores con una conexión de módem no pueden recibir más de 5 a 7 KB / seg. Si el servidor intentara enviarles actualizaciones con una velocidad de datos más alta, la pérdida de paquetes sería inevitable. Por lo tanto, el cliente tiene que decirle al servidor su capacidad de ancho de banda entrante estableciendo la velocidad variable de la consola (en bytes / segundo). Esta es la variable de red más importante para los clientes y debe configurarse correctamente para una experiencia de juego óptima. El cliente puede solicitar una determinada tasa de instantáneas cambiando cl_updaterate (por defecto 20), pero el servidor nunca enviará más actualizaciones que ticks simulados ni excederá el límite de tasa de cliente solicitado.
  • Resumen: El updaterate son cantidad de paquetes que el cliente demanda del servidor por segundo.
Cvar
Value
Flag
Comment
cl_updaterate
20
a,user
Number of packets per second of updates you are requesting from the server.
  • Este comando esta restringido hasta un máximo de 60 en servidores vanilla, esto quiere decir que aunque ingresen un número mas alto, el servidor solo les tomara 60.
Source Multiplayer Networking #2
Interpolación de entidades
¿Qué es Interpolación?
Originally posted by Valve:
De forma predeterminada, el cliente recibe aproximadamente 20 instantáneas por segundo. Si los objetos (entidades) en el mundo solo se renderizaran en las posiciones recibidas por el servidor, los objetos en movimiento y la animación se verían entrecortados y nerviosos. Los paquetes descartados también causarían fallos notables. El truco para resolver este problema es retroceder en el tiempo para la renderización, de modo que las posiciones y las animaciones se puedan interpolar continuamente entre dos instantáneas recibidas recientemente. Con 20 instantáneas por segundo, llega una nueva actualización aproximadamente cada 50 milisegundos. Si el tiempo de renderizado del cliente se retrasa 50 milisegundos, las entidades siempre se pueden interpolar entre la última instantánea recibida y la instantánea anterior.
  • Definición del concepto Interpolación:
    Poner determinada cosa entre otras que siguen un orden, o dentro del conjunto que estas forman.
  • Resumen: La interpolación consiste en crear varios frames falsos para crear una animación mas fluida visualmente pero no es representativa en la realidad.
  • La Interpolación consta de 2 comandos.
  • Nota: Del texto se puede explicar porque los common ( zombies ) pueden verse "cortados" cuando se usa lerps bajos.

Cvar
Value
Flag
Comment
cl_interp
0.1
user,cl
Sets the interpolation amount (bounded on low side by server interp ratio settings).
  • En los servidores oficiales, el valor de cl_interp no puede bajar menos de 0.017.
  • Nota: Si no se acostumbra al valor mínimo de cl_interp 0.017, les recomiendo usar 0.067, ya que otorga mas fluidez a los common(Zombies).
  • Les dejaré una tabla con la representación de interpolación respecto a su valor en el comando.

Decimal
Lerp
0.2
200
0.1
100
0.067
67
0.017
17
0.001
1

Cvar
Value
Flag
Comment
cl_interp_ratio
2.0
user,cl
Sets the interpolation amount (final amount is cl_interp_ratio / cl_updaterate).
  • En los servidores oficiales, el valor de cl_interp_ratio no puede bajar menos de 1.
  • Nota: Los servidores competitivos tienen como requisito mínimo dejar los lerps en 0, esto se obtiene con los dos comandos mencionados.

Compensación de retraso
Originally posted by valve:
La compensación de retraso es la noción de que el servidor usa la latencia de un jugador para rebobinar el tiempo cuando procesa un usercmd, con el fin de ver lo que vio el jugador cuando se envió el comando. En combinación con la predicción, la compensación de retardo puede ayudar a combatir la latencia de la red hasta el punto de casi eliminarla desde la perspectiva de un atacante.

Originally posted by valve:
CUserCmd ("comando de usuario") es la representación en red de la entrada del jugador, incluidas las teclas presionadas y el ángulo de visualización. De forma predeterminada, las actualizaciones se envían del cliente al servidor a una velocidad de 30 por segundo (cl_cmdrate) en forma de "usercmds" comprimidos en delta.
  • Resumen: La compensación de retraso permite en situaciones de alta latencia de red, rebobinar las ultimas ordenes dadas desde el teclado y mouse de algunos clientes, para que otros clientes que tengan alta latencia, puedan percibir el mundo lo mas próximo posible del que tiene menos latencia.

  • Esto puede dar situaciones muy extrañas en las que, un cliente haya escapado de la visión de un segundo cliente y este (el primero) muera igualmente, ya que en el disparo del segundo cliente , ve al primero pero de forma mas atrasada en el tiempo.


  • Hitboxes del cliente (rojo) versus hitboxes del servidor rebobinado (azul).

Cvar
Value
Flag
Comment
cl_lagcompensation
1
user,cl
Perform server side lag compensation of weapon firing events.
Source Multiplayer Networking #3
Network Graph
  • net_graph es una herramienta que nos permite visualizar datos proveniente del servidor en el que estamos y el cliente (ó sea tu).
  • Esta oculta, pero gracias a consola podemos mostrarla en pantalla y con algunos comandos que la acompañan posicionaría en el lugar que nos sea mas conveniente.
  • nota: Existen algunos script que permiten activar el net_graph la abrir el marcador con tabulador.

Cvar
Value
Flag
Comment
net_graph
0
a, cl
0 = No graph (default).
1 = Draw basic netgraph.
2 = Draw data on payload as well as latency and interpolation graphs.
3 = Draw payload legend and packet loss percentage and choked packet percentage.
4 = Draws the server perf statistics area.
  • El comando puede tomar 4 valores, cada uno muestra mas información en el panel que el anterior.

Cvar
Value
Flag
Comment
net_graphheight
64
a, cl
Height of netgraph panel.
  • Define la altura del panel en la pantalla, mientras mas alto es el valor, mas alto quedara el panel,

Cvar
Value
Flag
Comment
net_graphpos
1
a, cl
Where to position the graph.
0 = left edge
1 = right edge
2 = centered
  • Marca la posición del gráfico, el valor 1 es derecha, 2 es centro y 3 izquierda.

Cvar
Value
Flag
Comment
net_graphproportionalfont
1
a, cl
Determines whether netgraph font is proportional or not.
  • Determina si el tamaño del panel es proporcional.

Glosario

  • fps: Valor de los fps del cliente.
  • ping: ping actual.
  • in: paquetes de entrada y su velocidad.
  • out: paquetes de salida y su velocidad.
  • loss: paquetes perdidos.
  • choke: paquetes rechazados por el servidor.
  • sv: muestra los fps del servidor a partir de la última actualización de red entregada al cliente
  • var: muestra la desviación estándar del tiempo de fotogramas del servidor (donde servidor fps = 1.0 / tiempo de fotogramas) durante los últimos 50 fotogramas registrados por el servidor. Si la velocidad de fotogramas del servidor es inferior a 20 fps, esta línea se dibujará en amarillo. Si la velocidad de fotogramas del servidor es inferior a 10 fps, esta línea se dibujará en rojo.
  • lerps: Interpolación del cliente.


  • V1: Muestra el cl_updaterate del cliente.
  • V2: Número real de actualizaciones por segundo realmente recibidas del servidor.
  • V3: Número real de paquetes por segundo enviados al servidor
  • V4: Muestra el cl_cmdrate del cliente.
Demo #1
Originally posted by valve:
El motor de Source proporciona un conjunto de herramientas para grabar un juego en un archivo de demostración para su posible edición y reproducción posterior. Estas funciones se proporcionan a través de comandos de consola o herramientas GUI como la ventana Demo Playback, Demo Editor y Demo Smoother.

Para grabar un juego, escriba "record 'name' " en consola, el nombre del archivo no debe tener caracteres especiales ni espacios. El archivo de demostración (extensión .dem) se guarda en el directorio del juego actual.
Ejemplo: \left4dead2\name.dem

Puede comenzar a grabar en cualquier momento dentro de un juego en ejecución y detener la grabación con el comando de "stop". Si se produce un cambio de nivel (capitulo de un mapa) durante la grabación, el archivo de demostración actual se cerrará y se creará un nuevo archivo de demostración name_2 (name_3, name_4, etc.).

Para reproducir un juego grabado anteriormente, escriba "playdemo 'name' ". Si desea utilizar la reproducción de demostración para la evaluación comparativa del sistema, utilice "timedemo 'name' ". Timedemo reproduce una demostración lo más rápido posible y muestra las estadísticas de rendimiento una vez finalizada la reproducción (fotogramas dibujados totales, segundos necesarios para la reproducción, fotogramas promedio por segundo y variabilidad).
  • Los archivos de demostración usan un tiempo llamado "ticks".

Demo Playback

  • Esta herramienta se puede activar usado "⇧ Shift + F2"o con su comando demoui.
  • Load: Nos permite elegir otra demo, usando la ventana de windows, sin tener que usar comandos.
  • Stop: Detiene la reproducción de la demo.
  • Con el control deslizante, puede ajustar la velocidad de reproducción entre cámara lenta y rápida (0% a 600%).
  • Play, Pause, Resume : Inicia la demo, la pausa y vuelve a iniciarla.
  • > : Otorga un paso adelante.
  • Cabe destacar que algunas opciones no funcionan, como retroceder "<", "<<", inicio "|<" y final ">|".
  • Goto: Nos lleva a un ticks en especifico de la demo.
  • Drive: Permite tomar el control de la cámara (como una libre), mientras el botón este activado tendremos permitido movernos, para navegar con la cámara es necesario mantener apretado el botón izquierdo del mouse apretado, nos moveremos usando. Para avanzar en el espacio usaremos las teclas convencionales (w,a,s,d), para ascender usaremos "z" y descender "x", para reducir la velocidad de la cámara en el espacio se mantiene apretado "⇧ Shift".
  • Edit: Abre el menú "Demo Editor"
  • Smoot: Abre el menú "Demo Smoother"

Nota: Para limpiar la cámara de espectador pueden usar los siguientes comandos
Cvar
Value
Flag
Comment
cl_drawhud
1
cheat, cl
Enable the rendering of the hud.
r_drawviewmodel
1
cheat, cl
  • drawhud: Se usa para activar o desactivar el Hud en pantalla.
  • drawviewmodel: Se usa para activar o desactivar el modelo de manos y armas.

Demo Editor

Originally posted by valve:
El Editor de demostración le permite agregar y ejecutar un conjunto de comandos durante la reproducción de la demostración. Estos comandos de demostración pueden mostrar texto, aparecer / desaparecer gradualmente, cambiar el campo de visión o ejecutar cualquier otro comando de la consola. El Editor de demostración no puede cambiar la vista de la cámara, utilice Demo Smoother para hacerlo. Los comandos de demostración no se guardan dentro del archivo de demostración en sí, sino en un archivo de texto adicional llamado demoname.vdm. Estos archivos de texto .VDM se cargan y ejecutan cada vez que se reproduce un archivo de demostración con el mismo nombre.
  • New->: Abre una lista de funciones que podemos usar para, agregar texto, comandos, etc.
  • Edit...: Edita la función agregada.
  • Delete: Elimina la función agregada.
  • Save: Guardar la lista de funciones
  • Revert: Revierte la lista de funcione agregadas
Comando
Descripcion
SkipAhead
Salta la reproducción hasta una marca específica y reanuda la reproducción.
StopPlayback
Detiene la reproducción inmediatamente.
PlayCommands
Ejecuta un comando de consola.
ScreenFadeStart
Desvanecer la pantalla de entrada / salida
TextMessageStart
Shows a simple text message.
PlayCDTrackStart
Inicia la reproducción de una pista de CD.
PlaySoundStart
Reproduce un archivo de sonido .WAV o .MP3.
Pause
Pauses playback for given seconds.
ChangePlaybackRate
Cambia la velocidad de reproducción.
ZoomFov
Agrega un efecto de acercar / alejar.
Demo #2
Demo Smoother

Originally posted by valve:
Demo Smoother es la más compleja de todas las herramientas para demo y permite anular la vista de la cámara en los archivos. Esto se puede utilizar para suavizar la vista grabada o crear rutas de cámara completamente nuevas.
  • Resumen: Esta herramienta esta enfocada a manejar la cámara entre fragmentos de la demo y posicionarla como nosotros queramos, con el fin de recrear la demo.



Nota: No entrare en detalle como usar esta herramienta, ya que es un tema mucho mas profundo (Aunque no descarto actualizarlo en un futuro).

Creación de video
  • Una vez que haya podido grabar su demo y posicionada la cámara correctamente, podrá convertir esa demo en un video usando herramientas como Adobe Premiere, Adobe After Effects, FFmpeg, Sony Vegas, VirtualDub, VirtualDubMod, etc
  • Debe establecer la configuración de video del juego igual al del video.
  • Tome en cuenta que una resolución de 800x600 genera aproximadamente 1,5 megabytes por cada fotograma, si llena el espacio del disco duro el juego se detendra.
Alias y Script
Originally posted by valve:
Un alias es un comando de consola que invoca otros comandos. Los alias solo actuarán para la sesión de juego en la que sean llamados... Es común que los alias se definan en el archivo autoexec.cfg... Un alias puede tener dos estados, + y -....
  • Los alias permiten ejecutar múltiples acciones en una sola ejecución, para personas más creativas y familiarizadas con muchos comandos, podrían crear funciones muy creativas, útiles.
  • Esta definición es muy parecida a un script, pero la diferencia cae en que el alias es muy restrictivo, ya que en un script puede profundizarse el contenido como por ejemplo, a través de funciones. Un alias puede ser un script, pero un script no puede ser un alias.
  • Para temas prácticos podemos usare los dos conceptos como sinónimos.
  • El estado "+" señala a la consola la consecuencia de la acción al presionar un botón y se mantendrá de en ese estado mientras este sostenido.
  • El estado "-" señala la acción a contrarrestar la primera, para que vuelva al estado original.

Ejemplo 1
  • Crearemos un script que nos permita saltar, agacharse y golpear al mismo tiempo.
alias "+test" "+duck;+jump;+attack2" alias "-test" "-duck;-jump;-attack2" bind x +test
  • El script es de acción simple, que se inicia al apretar "x".

Ejemplo 2
  • Crearemos un script que nos permita cambiar los lers en 3 valores y nos a anuncie el cambio por el chat.
alias lerp0 "say_team "lerps en 0";cl_interp 0 ;cl_interp_ratio 0;alias lerps lerp67" alias lerp67 "say_team "lerps en 67";cl_interp 0.067 ;cl_interp_ratio 0;alias lerps lerp100" alias lerp100 "say_team "lerps en 100";cl_interp 0.1;cl_interp_ratio 1;alias lerps lerp0" alias lerps lerp0 bind x lerps
  • El script es un poco mas complejo, su función es como un interruptor, cada vez que se presiona "x", el script cambiara de comandos.

Ejemplo 3
  • Esta función puede extrapolarse a todos los juegos de motor source.
https://www.youtube.com/watch?v=o1ZT1tJV5sY
Servidores dedicados
  • Es necesario definir algunos conceptos para asegurar un entendimiento completo.
  • Hosting : Es una empresa que ofrece un servicio de servidores, ellos te ofrecen un producto el cual se paga mensualmente.
  • Servidor: Es un equipo diseñado para procesar grandes cantidades de datos en una red gigante. Aquellos tienen procesadores diferentes a los computadores normales y diseños mas orientado a la industria, usualmente conectan varias maquinas para crear megacomputadoras.
  • Vps; (virtual private server), es un servidor virtualizado en uno real (mas grande) que ofrecen las empresas con determinadas características para sus clientes, su acceso es por un terminal ssh (para linux) o vnc (para windows), este producto esta hecho para personas que estén familiarizados con servicios de servidores y no para usuarios comunes.
  • Gameserver: es una aplicación que se ejecuta en de un servidor, esta aplicación es en donde las personas se conectan a jugar en l4d2, ya que un servidor o vps pueden contener múltiples gameserver, dependiendo de el desempeño de la maquina.

Servidores Oficiales
  • La ubicación física es fundamental para asegurar una buena calidad de conexión entre jugadores.
  • Valve a varia el lugar en donde aloja sus gameserver, en el caso de left4dead2 para Sudamérica, sus servidores se encuentran en Chile y Perú. En el caso de CS:GO, sus servidores competitivos están presentes en Chile, Perú y Brazil.
  • Las especificaciones de los servidores oficiales de Left4Dead2 son de 30 tickrate , muy por debajo de los 128 para competitivo en CS:GO. Lo nos deja un pésimo ambiente de competencia, sin contar lo poco equilibrado que esta el juego en su versión Vanilla.

Servidores dedicados (gameservers)
  • Valve permite a cualquiera que pueda, crear su propio gameserver, usando las herramientas que ellos brindan a la comunidad, incluso en nuestra propia casa.
  • Si combinamos los factores como "rentar un servidor virtual (vps) a Host profecional" y además instalar un gameserver en el, quedara un Servidor de juegos bastante robusto, en donde podremos tenerlo encendido día y noche.
  • Varios programadores a través de los años, crearon modificaciones de los servidores, para crear un juego mas divertido o con el objetivo de generar un ambiente mas exigente para el jugador, enfocándose en las habilidades y el juego en equipo, nos enfocaremos en el segundo.
  • La herramienta principal en la que se apoyan es en sourcemod, técnicamente es un mod que permite generar cambios en el código del servidor y modificar comandos que no debiesen ser tocados, pero en buenas manos es muy útil.

Metamod: Source
Originally posted by wiki.alliedmods:
Metamod: Source es un administrador de API y un controlador de interceptación que se encuentra entre Half-Life 2 Engine (Source) y una modificación de juego posterior (MOD)... También permite la comunicación entre complementos...
  • Resumen: Metamod es el complemento que detecta el moto Source y sirve como intermediario entre el y sus otros complementos como sourcemod.

Sourcemod
Originally posted by wiki.alliedmods:
SourceMod es un complemento Metamod: Source para Half-Life 2. Proporciona scripts completos para el motor Source y mods escritos usando el Source SDK. Tiene características para sistemas de administración, comandos, variables de consola, eventos, mensajes de red, acciones cronometradas, rutinas matemáticas y de cadenas, modificación de entidades y más.

Los scripts de SourceMod están escritos en el lenguaje SourcePawn, que se deriva de Pawn.
  • Con la existencia de sourcemod, es posible ampliar toda la gama de comandos y operaciones.
  • Plugin: Son programas con extensión .smx que permiten ejecutar alguna sentencia que este en las librerías. El código de fuente de aquellos están en formato .cfg y son compilables según la versión de sourcemod, algunas versiones son incompatible entre si, por lo que, para usar plugin viejos, es necesario volver a escribir el código de fuente ( Como en zonemod respecto a los plugins competitivos).
  • Extensions: Son librerías que se pueden agregar a sourcemod, están encargadas de ser un "diccionario" de comandos (los añade y define), son el apoyo para crear plugins. La extensión de estas dependen directamente del sistema operativo del cliente o servidor, como DLL para windows o SO para linux.

Servidores Competitivos
  • Estos tipos de gameserver están totalmente modificado para la escena competitiva que nunca se obtuvo en left4dead2, sus características principales son el alto tickrate ( que puede ser de 60 , 100 o 128), sus modos de juego y gestión directa por jugadores.
  • Cabe señalar que el sistema competitivo de lef4dead2 es bastante robusto, se apoya en modos de juego, las cuales son desarrolladas por una persona o grupo, ellos definen las reglas y alcances de cada modo de juego, también se encargan de crear actualizaciones del mismo.
  • Existe una amplia gama de modos de juego como Confog[code.google.com], Promod[github.com], Equilibrium[github.com], Acemod[github.com], Zonemod[github.com] entre otros. cada uno esta enfocado a un estilo de juego.
  • Algunos modos están descontinuados, ya que sus desarrolladores perdieron el interés en left4dead2 o simplemente terminaron el proyecto. Esto no impide a algunos desarrolladores nuevos tomar los códigos y darles un aire fresco para que vuelvan a estar vigente, tal caso es "Promod Elite".
  • Para poder mantener este tipo se servicios, la financiación es crucial, normalmente se dan comunidades que disponen de presupuesto para pagarlos y mantenerlos, el ciclo de vida de estas comunidades dependen directamente de su administración, también existe el caso de que todo este a cargo de una sola persona.
Nota: Los servidores competitivos tiene como requerimiento de entrada desactivar la interpolación ( o bajar los lerps a 0)
Nota: Los slots ( o el espacio de jugador, en español) usualmente es mas alto para permitir espectadores.
  • Para información mas detallada les dejare la siguiente guía que explica mas a fondo los cambios en el modo zonemod.
https://steamproxy.net/sharedfiles/filedetails/?id=1667162457
Autoexec
  • Autoexec es un archivo CFG para iniciar un juego con comandos establecidos que se ejecutarán automáticamente al iniciarse.
  • Este archivo se ejecutara después de de "config.cfg", reescribiendo los "bind" en cada inicio en caso que contenga alguno.
  • También cabe señalar que este archivo no esta por defecto al instalar el juego, debemos crearlo nosotros mismos si queremos usarlo
  • Este archivo existe tanto para los clientes, como para los servidores.


Creacion del autoexec
  1. Deben ir al directorio del juego, en \left4dead2\cfg.
  2. Deben crear un archivo con el nombre "autoexec" con extensión .cfg.
  3. Pueden llenarlo con alguna configuración que se adapte según sus necesidades, añadiendo comandos y script.

Nota: Les recomiendo que al copiar comandos, los busquen en el sitio oficial de Valve para desarrolladores, donde encontraran los comentarios de ellos (en ingles) y así evitar algún código malicioso o en muchos casos, innecesario.

Nota: También les recomiendo el siguiente el editor de texto Notepad++[notepad-plus-plus.org], que les permitirá visualizar de forma mas ordenada y agradable

Sintaxis de un Código
  • El autoexec será leído cualquier código de programación, por lo que su sintaxis debe ser adecuada.

Comentarios
  • Los comentarios son secciones que pasan a ser ignoradas por la consola, de esta forma es posible agregar código y dejar los notas personales, o el de los desarrolladores.
  • Para usarlo es necesario usar "//".

Ejemplo: cl_crosshair_dynamic "0" // Cambia la mira del arma.
  • Aquí podemos dejar la mira pequeña y dejar una nota que nos recuerde para que sirve el comando, la maquina solo leerá hasta el numero "0".
  • Los comentarios comienzan de izquierda a derecha.

Limpiar consola
  • Al iniciar el juego, la consola señala todos los comandos que fueron ejecutados y su respectivo valor.
  • Es posible limpiarla con el comando "clear"
Ejemplo: //-------------------- // [Rates] //-------------------- rate "30000" // Max bytes/sec the host can receive data. cl_cmdrate "100" // Max number of command packets sent to server per second. cl_updaterate "60" // Number of packets per second of updates you are requesting from the clear
  • Todos los comandos que fueron modificados no se anunciaran en la consola.

Imprimir en consola
  • Se considera "imprimir" a dejar un texto escrito en consola.
  • Es posible imprimir en la consola cuando se ejecuta el autoexec con el comando "echo".
Ejemplo1: echo "hola mundo"
  • Imprime en la consola un "hola Mundo"
Ejemplo2: echo " "
  • Imprime en la consola un espacio en blanco.

Autoexec de Recomendado
  • A continuación les dejare un autoexec básico, destinado a personas que deseen jugar en servidores oficiales y competitivos.
// ===================================
// Parámetros de lanzamiento []
// ===================================

//--------------------
// Networking
// --------------------
rate "30000"
cl_cmdrate "40"
cl_updaterate "60"

//--------------------
// Lerps
// --------------------
cl_interp "0.0167" // Si les molesta ver los common "cortados", usen 0.067
cl_interp_ratio "1"

//--------------------
// Net Graph
//--------------------
net_graph "1" // net graph basico.
net_graphpos "1" // Derecha.
net_graphproportionalfont "0" // Fuente pequeña.
net_graphheight "680" // altura.

//--------------------
// Alias
//--------------------
alias rates_100 "rate 100000;cl_updaterate 100;cl_cmdrate 100;cl_interp 0 ;cl_interp_ratio 0;alias changerates rates_30"
alias rates_30 "rate 30000;cl_updaterate 60;cl_cmdrate 40;cl_interp 0.0167;cl_interp_ratio 1;alias changerates rates_100"
alias changerates "rates_100"

// Este script cambia todas las Network y lerps de tickrate 30 (para server vanilla) a 100 (server competitivos).

//--------------------
// bind
//--------------------
bind "F4" "disconnect" // Al presionar, te desconecta del servidor sin pedir confinación.

bind "F7" "record bug;stop" // Para solucionar el problema de los jugadores invisibles.
bind "F8" "changerates" // Activa el script que déjamos.
bind "F9" "openserverbrowser" // Abre el buscador de servidores.
bind "F10" "toggleconsole" // Abre la consola

//--------------------
// Print in console
//--------------------
clear // Limpia la consola
echo " "
echo " autoexec.cfg Ejecutado"
echo " "
Recomendaciones y Preguntas Frecuentes
  • Los servidores competitivos solo funcionan en un SO linux y de preferencia ubuntu 16 LTS, esto se debe a que valve en una actualización pasada quebró algunas librerías que se usaban en plugins y los desarrolladores no les intereso arreglar el problema, así que el competitivo para windows quedo abandonado.

  • Si piensan en entrar a un servidor competitivo, les recomiendo que usen un bind para bajar los lerps a 0, aunque en la sección de Alias y script existe uno a modo de ejemplo y es totalmente útil (yo lo uso).

  • Existe un bug al minimizar la ventana de left4dead2 al jugar en competitivo, el jugador no podría ver a uno o varios jugadores, ósea los percibe como invisibles. Esto se puede arreglar grabando y deteniendo una demo.
    Pueden introducir el código en consola: record bug;stop Este comando inicia y detiene la grabación de forma inmediata y es mas útil cuando esta en una tecla: bind F3 "record bug;stop"

  • Otro bug común en competitivo, pasa cuando el cliente se desconecta del servidor y al reconectarse, este queda estancado en una posición. Esto esta muy ligado a la calidad de coacción del servidor y el cliente, ya que no están sincronizados ( no recibe los paquetes necesarios de usercmd), la única forma de salir de ese bug es esperar a que el cliente se pueda mover.

    nota: Pausar la partida no avanzará en la reconexión de paquetes, ya que en estado de "pause" los clientes no tienen permitido moverse.

  • Cada comunidad competitiva tiene sus propias reglas, como sancionar el Ragequit, pasar el control del Tank a otro jugador, etc.

  • Si desean entrar y observar el juego competitivo, les recomiendo la comunidad de AoC-Gamers.


FAQ
  • ¿Cómo rentar mi propio servidor competitivo? y ¿Dónde debo hacerlo?.

    Esto es un poco largo, existen pocas empresas que renten servidores competitivos, ya que no todas las empresas están enteradas de que el competitivo existe. la forma tradicional es pagar mensualmente un gameserver o un vps y montar ahí el servidor, si no sabes como hacerlo, contratar algún Dev que haga (y obviamente te cobrara por eso).

    El Hosting debes buscarlo tu, solo googlea "hosting en chile" o "gameserver l4d2 chile", reemplazando el país por tu localidad. Los costos son variados y es responsabilidad del interesado en buscar el mas económico o el mas eficiente.

  • ¿Qué es ddos? y ¿Qué hago si me dosean?.
    El ddos es una denegación del servicio a través de peticiones masivas, por ejemplo que muchas personas intenten hablar contigo, en algún momento vas a a colapsar, ya que no puedes atenderlas a todas al mismo tiempo (esto hablando en números exageradamente altos). Los rasgos de ddos es un ping elevado en todos los jugadores en algún momento de la partida, lo cual imposibilita el juego.

    Si eres victima de ddos lo mas probablemente debas hablar con tu hosting, pero por experiencia yo recomiendo rentar maquinas virtuales ( vps ), ya que permiten crear tu propia defensa de anti-ddos, lamentablemente este conocimiento es muy avanzado en programación y necesitas de una persona familiarizada en el área.

  • ¿Qué es sourcebans? y ¿Cómo puedo tener una?.
    Es un una aplicación que se instala en gameserver y servidores Web, su objetivo es administrar las credenciales de los administradores del gameserver, las personas baneadas, las personas muteadas, conectarse a la base de datos, etc.

    Para su instalación es necesaria una persona con conocimientos básicos en base de datos, montar sitios webs, además de saber manejar los plugins en un gaemserver.

  • ¿Puedo tener un servidor competitivo y que a la misma vez me permita jugar vanilla?.
    Antiguamente no se podía, pero actualmente como se han actualizado los plugins, diría que si, pero bajo observación.

  • ¿Los administradores de un servidor competitivo me pueden dar VAC?.
    No, el sistema vac opera automáticamente y sin la manipulación de nadie. Lo único que pueden hacer los administradores es prohibir la entrada a sus servidores.

  • ¿Puedo tener vac en un servidor competitivo?.
    si, la mayoría de los servidores tienen el sistema vac activado.

  • ¿Me desbaneas de AoC ?.
    n0.

  • Al iniciar una demo me aparece el siguiente error "ERROR: demo network protocol 2042 outdated, engine version is 2100", ¿Qué significa? y ¿Cómo lo soluciono?.
    Eso quiere decir que la versión del juego en la que fue grabada es diferente a la versión en la que se desea reproducir.

    Aun así existe una forma de reproducirlos editando el archivo "steam.inf" que esta en la carpeta "left4dead", esto es algo arriesgado, ya que por ser de diferentes versiones pueden ocasionar problemas, errores ,etc.
Referencias y Agradecimientos
Comando de consola
https://developer.valvesoftware.com/wiki/Developer_Console
https://developer.valvesoftware.com/wiki/Category:Console_Commands
https://developer.valvesoftware.com/wiki/List_of_L4D2_Cvars

Entidades y el director
https://developer.valvesoftware.com/wiki/Point_entity
https://developer.valvesoftware.com/wiki/Prop_Types_Overview
https://developer.valvesoftware.com/wiki/Info_director
https://developer.valvesoftware.com/wiki/L4D_Level_Design/Panic_Events

Source Multiplayer Networking
https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
https://developer.valvesoftware.com/wiki/Interpolation
https://developer.valvesoftware.com/wiki/Lag_compensation
https://developer.valvesoftware.com/wiki/Latency_Compensating_Methods_in_Client/Server_In-game_Protocol_Design_and_Optimization
https://developer.valvesoftware.com/wiki/Usercmd
https://developer.valvesoftware.com/wiki/TF2_Network_Graph

Hitbox
https://developer.valvesoftware.com/wiki/Hitbox

Demo
https://developer.valvesoftware.com/wiki/Demo_Recording_Tools
https://developer.valvesoftware.com/wiki/Demo_Video_Creation

Alias y Script
https://developer.valvesoftware.com/wiki/Alias

Servidores dedicados
https://developer.valvesoftware.com/wiki/Source_Dedicated_Server
https://developer.valvesoftware.com/wiki/SteamCMD
https://developer.valvesoftware.com/wiki/Server_plugins
https://wiki.alliedmods.net/Metamod:Source_Development
https://wiki.alliedmods.net/SourceMod
https://wiki.alliedmods.net/Introduction_to_SourceMod_Plugins

Autoexec
https://developer.valvesoftware.com/wiki/Autoexec

Originally posted by >lechuga:
Agradecimientos
  • Quiero dar las gracias a FerniESP por apoyar, dejándome usar su video a la sección de alias y Script, enfocado a CSGO.
  • También a .Pasta por su voluntad de revisar el contenido para correcciones de ortografía y gramática (dios te bendiga).
  • Igualmente quiero agradecer a Ayelen por permitirme publicar su guía de Zonemod.

Originally posted by >lechuga:
Copyright
  • Quiero señalar que los comentarios, explicaciones y algunas imágenes fueron elaborados por mí, no tengo problema con que se comparta o fraccione en otras obras, siempre y cuando, den la referencias y agradecimientos correspondientes.
14 Comments
ᵀᴷ'ˢ nearly 21 Dec, 2023 @ 5:53pm 
Buena guía pa, directo a los favs :boomer:
lechuga  [author] 29 Sep, 2023 @ 1:39pm 
Primero déjame contextualizar para dar sentido al asunto
- La rama del motor que usa l4d y l4d2 es el "Left 4 Dead engine branch", el sucesor de "orange box", en este punto, se entiende que muchos de los comandos son genéricos dentro del motor.
- esto significa que algunas herramientas están limitadas o simplemente quebradas.
- tengo entendido que sourcetv está roto y demoplayback funciona parcialmente.


Si estás aprendiendo a utilizar esta herramienta, te recomiendo ver videos de la comunidad de tf2, ya que tengo entendido en la rama de su motor funciona bien.

Te dejo un ejemplo: https://www.youtube.com/watch?v=X_Db_THGSD8
Zhorium 29 Sep, 2023 @ 11:56am 
Hola, en el tópico de "Demo #1" cómo se usa el "TextmessageStart"?. No encuentro información al respecto o si tanto ese comando de edición como el de Zoom FOV no están funcionando.
Jumperwar117 21 Jun, 2021 @ 9:40pm 
nice
:steamthumbsup:
Sknot 16 Oct, 2020 @ 4:41pm 
Buena pe :csdsmile:
lechuga  [author] 29 Sep, 2020 @ 9:25am 
Se agrego una sección adicional donde se explica la función del "director", tengo pensado añadir mas contenido cuando pueda.
李天使 29 Sep, 2020 @ 3:15am 
esta muy bueno
VANIC 28 Sep, 2020 @ 9:07pm 
Muy buena compilación, felicidades! :chocola2::nekoheart:
Durazno100hz 28 Sep, 2020 @ 5:59pm 
buena
MR TAMALITO <3 27 Sep, 2020 @ 10:56pm 
Oks