lunes, 24 de julio de 2017

Por qué PUSH es el modo mas popular


Push es de hecho el modo PVP mas fácil, comparado con Skirmish y Firefight.
Algunas de las razones son:
  • Push es linear, donde se toma un objetivo a la vez. No hay necesidad de hacer mucha rotación entre diferentes objetivos ya que solo uno está disponible en un momento dado para capturar o defender. Mas fácil que Skirmish porque no hay que recapturar objetivos, no hay que pensar en objetivos desde el punto de vista de tiempo/distancia/respawn.
  • Las batallas están concentradas en pequeñas áreas (del spawn al objetivo), el resto esta restringido o no está en juego pero accesible. 32 jugadores en un área pequeña significan mucha acción.
  • Las oleadas de respawn son generosas, aunque los atacantes solo empiezan con 5 oleadas para gastar, ese número se incrementa a medida que van tomando objetivos. Los defensores tienen 15 oleadas para gastar. Ésto significa poco tiempo de espera para jugadores que mueren, ideal para nuevos jugadores que pueden unirse a la batalla rápidamente, las únicas esperas largas es cuando ya no quedan oleadas para uno o ambos equipos.
  • Las rondas puede ser tan cortas como unos pocos minutos hasta un máximo de 15 minutos.
  • Casi todas las clases disponibles para usar, los defensores no cuentan con C4/IED pero pueden contar con RPG/AT4. El spawn y reabastecimiento se mueve de acuerdo al objetivo y no es fijo ni tan lejos como en Skirmish o Firefight.
Por qué Sinjar es popular:
  • Es un mapa desafiante para los atacantes pero muy satisfactorio cuando se gana.
  • Es un mapa fácil para los defensas y algunos jugadores les gusta tener una ventaja.
  • Hay jugadores que les gusta ser snipers desde la colina y tener muertes fáciles.
  • Hay jugadores que les gusta campear.
  • Cuando se pasa el objetivo A, es un buen ambiente urbano para pelear con edificios de 2 pisos.
Por qué los mapas nocturnos no son populares:
  • Simplemente porque el juego es mucho mas lento, todo el mundo está campeando y arrastrandose.
  • Clases con silenciadores tienen buen desempeño en mapas nocturnos, pueden mantenerse ocultos practicamente toda la ronda.
  • Debido a que hay que gastar puntos extra en visión nocturna, algunos jugadores no pueden utilizar si equipamiento favorito y por lo tanto no disfrutan la partida.
  • El juego es mas desafiante y se juega diferente a lo que la mayoría espera. Los jugadores prefieren mapas diurnos donde al menos puedan ver quien les dispara y ser un espectador no sea tan aburrido

lunes, 16 de enero de 2017

Todo lo que necesitas saber sobre Tick Rate, Interpolación, compensación de Lag, etc.

Encontré una buena explicación de los distintos términos asociados a los juegos en red que explica muy bien que son esos términos.

Infelizmente no puedo acreditar al autor original, pero si referenciar el post.

El post original se refiere a Overwatch, pero la explicación de como funciona la capa de red de un juego es genérica, por lo que se aplica a Insurgency y por falta de relevancia he omitido las secciones referidas a Overwatch.


Preámbulo:
En practicamente todos los juegos FPS el servidor mantiene el estado del juego. Ésto es imporante para prevenir trampas, pero lleva a algunos problemas que pueden experimentar los jugadores. En el diseño cliente-servidor de un juego, siempre va a existir el problema de una diferencia de estado entre el cliente y el servidor. Ej: El cliente ve una versión retrasada del "Verdadero" estado del juego en el servidor. Ésto siempre va a existir, pero hay algunas cosas que se pueden hacer para hacerlo menos notorio.

Código de red (Netcode)
Es un termino genérico que describe la programación de red de un juego. Es básicamente un termino simple usado para describir el componente de red y no es un término técnico.

Latencia
También conocido comúnmente (e incorrectamente) como ping. Éste es el tiempo que toma a un paquete el viajar desde la computadora del jugador (cliente) al servidor y vise versa (Round Trip Time o RTT). La razón por lo que a la gente lo llama "Ping" es que existe una aplicación llamada "ping" que data de los años 80 y que es utilizada para medir la latencia utilizando algo llamado "Eco ICMP". El comando "ping" se puede encontrar en cualquier sistema operativo con acceso a Internet.
Hay que notar que el viaje en un sentido de un paquete no equivale a mitad del tiempo RTT, pero por simplicidad vamos a asumir que es así. De ahora en adelante vamos a referirnos a la latencia RTT como la latencia y al paquete en un sentido como media latencia.

Tasa de ticks (Tick rate)
El Tick Rate es la frecuencia con la que el servidor actualiza el estado del juego. Ésto se mide en Hertz. Cuando un servidor tiene un Tick Rate de 64, significa que es capaz de enviar paquetes a los clientes a casi 64 veces por segundo. Éstos paquetes contienen actualizaciones del estado del juego, incluyendo cosas como posición de jugadores y objetos. El largo del Tick es solo su duración en mili segundos. Ej: 64 ticks serían 15.6ms, 20 ticks 50ms, 10 ticks 100ms, etc.

Tasa de actualización del cliente (Client Update Rate)
Es la tasa a la cual el cliente está dispuesto a recibir actualizaciones del servidor. Por ejemplo, si la actualización del cliente es 20 y la del servidor es 64, el cliente jugaría como si estuviera en un servidor de 20 ticks. Ésto a menudo se configura localmente pero a menudo hay juegos que no permiten cambiarlo.

Renderización
Es el proceso que realiza el motor gráfico de un juego para generar una imagen.

Cuadros por segundo (Framerate)
El número de cuadros por segundo que el cliente es capaz de renderizar a video. El termino común es FPS (Frames per Second).

Tasa de refresco (Refresh Rate)
El número de veces por segundo que el monitor actualiza lo que renderiza la tarjeta de video. Se mide en Hertz. Si por ejemplo se tiene 30 FPS y el monitor 60Hz, cada imagen generada se mostraría 2 veces en el monitor. Si se tienen 120 FPS en un monitor de 60Hz el monitor solo mostraría 60 de los 120 cuadros renderizados.

Interpolación
Es la tecnología  que suaviza los movimientos de los objetos en un juego como por ejemplo: los jugadores. Esencialmente ésto significa que se esta dando fluidez a los movimientos de los objetos entre dos puntos conocidos. El retraso de interpolación es usualmente igual a 2 ticks, pero puede variar.
Por ejemplo, si un jugador corriendo en linea recta en el momento del "Tick 1" estaban a 0.5 metros y si para el "Tick 2" estaban a 1 metro, la interpolación hará que parezca en el cliente como si se hubiera desplazado fluidamente del 0.5m hacia 1m desde la ubicación hacia la que estaba mirando.
El servidor sin embargo, solo lo "ve" realmente en esas dos posiciones, nunca entre medio de las mismas. Sin interpolación, los juegos se verían muy cortados, ya que el cliente solo vera los objetos en el juego a medida que recibe una actualización del servidor.
La interpolación solo ocurre del lado del cliente y esencialmente hace mas lenta la tasa a la que el juego es renderizado a un valor típico igual a 2 ticks (sin embargo hay juegos que permiten cambiar éste valor, como GSGO e Insurgency). Ésto es a lo que la gente se refiere a sus "tasas" (rates). Lo que quieren decir es Actualización de Tasas y retraso de Interpolación. CSGO por ejemplo tiene una interpolación 2x la tasa de actualización o 31ms si la taza de actualización es de 64Hz, posiblemente Insurgency comparta los mismos valores. 

"Hit Box"
Es el modelo 3D de un personaje que representa las áreas consideradas como impacto válido. No se pueden ver los hit box, solo se ve el modelo del jugador. Los hit box  pueden ser mas chicos o mas grandes o en algunos casos imprecisos, dependiendo de la programación del juego. Ésto puede hacer una diferencia mayor en la percepción de disparos acertados o errados que la tasa de ticks.

Compensación de Lag
Es una función del servidor que intenta reducir la percepción de atraso de un cliente.
Aqui hay un video (ingles) que explica de buen modo como se da la compensación:
Sin compensación de Lag un jugador se tendría que adelantar al objetivo para acertar el disparo, ya que el cliente esta viendo una versión atrasada del mundo del juego.
Esencialmente lo que la compensación de lag está haciendo es interpretando las acciones que recibe del cliente como por ejemplo el disparo de un arma, como una acción del pasado.
La diferencia entre el estado del juego en el servidor y el estado del juego del cliente o "Atraso del cliente" puede ser resumida en: AtrasoDelCliente = (1/2*Latencia)+AtrasoDeInterpolacion.

Un ejemplo de compensación de lag en acción:
  • Jugador A ve a Jugador B acercarse a una esquina.
  • Jugador A realiza un disparo, el cliente envía la acción al servidor.
  • El servidor recibe la acción X mili segundos después, donde X es la media latencia del Jugador A
  • El servidor entonces mira en el pasado (en un buffer de memoria), donde estaba parado el Jugador B en el momento que el Jugador A realizó el disparo. En un ejemplo básico el servidor iría hacia atras (Xms+TiempoDeInterpolacionDeJugadorA) para encontrar lo que el Jugador A estaba mirando en ese momento.
    Otros valores son posibles dependiendo de como el programador quiera que la compensación de lag se comporte.
  • El servidor decide si el tiro acertó o no. Para que un disparo sea considerado un acierto, debe alinearse con un hitbox del modelo del jugador. En este caso el servidor considera que fue un acierto incluso si desde la perspectiva del Jugador B, pareciera que ya estaba detrás de la pared. La diferencia de tiempo entre lo que el Jugador B mira y el tiempo en que el servidor considera que el disparo tuvo lugar es igual a: (1/2*LatenciaJugadorA + 1/2*LatenciaJugadorB + TiempoDesdeUltimoTick)
  • En el siguiente Tick el servidor actualiza ambos clientes con el resultado. El Jugador A ve el acierto y Jugador B ve su vida decrementada o la muerte. 

Nota: En un ejemplo donde 2 jugadores se disparan mutuamente y ambos disparos son aciertos, el juego puede comportarse diferente. En algunos casos como en CSGO, si el primer disparo en arrivar al servidor mata al enemigo, cualquier disparo subsequente es ignorado, es este caso no pueden haber muertes mutuas donde dos jugadores se maten a "1 tick de distancia", Overwatch por ejemplo  permite muertes mutuas.

En el modelo de CS:GO, jugadores con mejor latencia tienen una ventaja significativa y puede verse en algunos casos como "Le disparé a ese tipo antes de que me matara, pero no murio!". Incluso se puede escuchar cuando disparamos y aun así no hacerle ningún daño al otro jugador.

En Overwatch por ejemplo, pequeñas diferencias en tiempo de repuesta importan menos, por ejemplo: en un servidor de 64Hz si el Jugador A dispara 15ms mas ràpido que el Jugador B, pero ambos lo hacen antes de los 15.6ms, ambos morirán.

Si la compensacion de lag esta calibrada de mas, resultará en "Disparé detras del objetivo y aún así le acerté" en cambio, si la compensación de lag esta calibrada de menos, resultará en "Dispare delante del objetivo y le acerté".

Generalmente un servidor con una tasa de ticks será mas fluido y la interacción de los jugadores será mas precisa. Téngase en cuenta que un servidor con mayor tasa de tick no afectará como se comporta la compensación de lag, por lo que de todos modos se experimentarán situaciones cuando se corre detrás de una esquina y de todos modos se muere.

Si se está preocupado por el rendimiento de un juego hay una serie de cosas que se deben descartar primero y que pueden hacer la diferencia:
  • La conexión a Internet. Cuando mas baja la latencia, mejor. Por eso es importante jugar en servidores donde se tenga la latencia mas baja. También cualquier congestión en el tráfico de Internet en casa pueden causar retrasos. La compensación de lag, ayuda con la parte de a que se está disparando, pero si la latencia es mala se es mas propenso a experimentar el "Corrí detrás de la esquina y aún así me dieron" o el escenario "yo disparé primero y de todos modos morí".
    Utilizar cable UTP es siempre mejor que utilizar WiFi.
  • Si el cliente tiene una baja cantidad de FPS (menor a 60Hz), aumentará la percepción de atraso y a menudo mas notorio que la diferencia que la tasa de ticks puede causar.
  • Ajustar la interpolación en los juegos que lo permiten. La mayoría de los juegos tendrán un período de interpolación 2 veces la duración entre ticks, la idea es que si un paquete se pierde, el movimiento de un jugador no se trancará en pantalla. Si la conexión a Internet es buena y no hay pérdida de paquetes, se puede cambiar el período de interpolación mas o menos al valor de la duración del tick, pero si los paquetes se atrasan, se vera trancado. Si el valor es muy bajo puede causar que se vea todo entrecortado.
  • Si el juego permite aumentar la tasa de actualización del cliente (update rate), se debería hacer si se quiere un rendimiento óptimo, viene a un costo de mayor uso de CPU y ancho de banda, sin embargo del lado del cliente importa poco a no ser que la conexión a Internet sea de un ancho de banda muy bajo.
  • Si se tiene una tasa de refresco de 60Hz en el monitor, probablemente no se pueda notar la diferencia entre un servidor de 64 y 128 ticks, porque el monitor no puede mostrar la diferencia atribuida a la tasa de ticks

Por último, si se sigue a un jugador en "Primera persona" como espectador o utilizando SourceTV, no se verá exactamente lo que el jugador ve, los espectadores ven el mundo sin compensación de lag.

martes, 10 de enero de 2017

Por qué el Spawn Kill no es tan retardado como muchos piensan.

En nuestro servidor Push el Spawn Kill es legal, matar al enemigo cuando recién nace, se me ha dicho en numerosas oportunidades de que es mala idea y debería sacarlo.
Siempre he pensado que es una táctica válida y que ni bien la odié al principio aprendí no solo a evitarlo sino también utilizarlo.

He encontrado lo que para mi es una excelente explicación de por qué es válido utilizar el Spawn Kill y la he traducido al español.

La explicación la da el usuario SkiddChung y es en respuesta a la queja de un jugador novato que explicaba estaba harto de que dispararan RPGs/AT4s al spawn y que lo consideraba retardado, pidiendo que la protección en el spawn fuera una configuración por defecto en los servidores.

A continuación la explicación:

Creo que haz estado jugando el modo Push que normalmente tiene una buena dosis de trampas en el spawn. Las trampas en el spawn son un tema muy controvertido. Se que estas en contra en base a lo que preguntas y es cierto, es muy desmotivador que te vuelen por los aires inmediatamente que sales del spawn con un C4/IED. Sin embargo, dejame explicarte por qué las trampas en el spawn no son tan retardadas y que de hecho aumentan la complejidad del juego y expanden la utilidad de rodear posiciones en un mapa.

La protección del Spawn esta siempre activa cuando se spawnea, siempre y cuando no estés activo, osea: si no te mueves, no te pueden matar. Creo que hay unos pocos segundos de inmunidad al spawnear y moverte un poco. Pero de todos modos no importa si caminas en una trampa.
Los explosivos no funcionan en en áreas de spawn, granadas, C4/IED, cohetes; sin embargo si funcionan fuera de esa área, por lo que pueden colocarse cerca del spawn pero no dentro.
Muchas trampas de spawn tienen como objetivos rutas comunes, cuellos de botella o áreas cerradas donde se pueda alcanzar el mayor efecto.

¿Por qué sucede? Porque es el método mas efectivo de erradicar refuerzos a los objetivos. Pero cómo sucedan es de hecho culpa de tu equipo. La razón para que te campeen en el spawn es porque bien tu equipo perdió el control del área entre el objetivo y el spawn o las defensas de tu equipo son suficientemente débiles para permitir que el enemigo se cuele detrás de tus líneas. Ésto es lo que permite al enemigo poner una trampa para cortar refuerzos.

¿Entonces, como nos podemos adaptar a ésto?
1: "Siempre hay una trampa en el spawn."
Repite ésto en tu cabeza cuando spawneas e incluso díselo a tus compañeros antes de spawnear como advertencia para mitigar bajas. Las trampas pueden ser desactivadas, sea matando a quien puso la trampa o detonando el C4 prematuramente. Ya que tienes 45 segundos de abastecimiento ilimitado (siempre que no se salga del área del spawn), te puedes dar el lujo de lanzar tu propio C4/IED o RPG o granadas fuera del spawn para detonar la trampa.

2: "La ruta mas fácil y común es siempre donde va a estar la trampa."
Si puedes toma una ruta alternativa. Si tomar una ruta mas larga significa que se perderá un objetivo, es mejor estar vivo para vigilar un flanco después de perder el objetivo que estar muerto y respawnear en un lugar mas lejano. Solo unas pocas clases tienen la habilidad de detonar una trampa, otras carecen de los explosivos por lo que deben buscar rutas alternativas para salir del spawn, siempre hay 2-3 rutas alternativas. (NT: todas las clases tienen la habilidad de llevar granadas y por lo tanto pueden detonar la trampa).

3: "El enemigo siempre está tratando de flanquearnos."
No estás jugando contra bots con poca inteligencia, en cada equipo siempre hay unos cuantos jugadores que trataran de flaquear y poner trampas a tus refuerzos.
Es imperativo que tu y tu equipo se cubran las espaldas e incluso si fallas en prevenir que el enemigo penetre los flancos es tu deber informarle a tus compañeros que el enemigo ha pasado y que deben esperar trampas.

4: "Comparte inteligencia."
Puedes escribirles a tus compañeros cuando estás muerto, no puedes hablarles con la voz pero el texto es mas que suficiente. Si las defensas han sido penetradas, advierte a tus compañeros. Si están cerca o son jugadores competentes deberían intentar buscar a los intrusos y restablecer las lineas de defensa. A veces, con buena inteligencia se puede poner trampas a los enemigos. Si chequeas el mapa a menudo, puedes ver las partes del mapa que han caído ya que los compañeros desaparecen de esas áreas, usa el mapa como referencia de control de territorio: si no hay compañeros es territorio hostil.

5: "Hacia adelante no es la única dirección."
Por supuesto, el C4 o los RPGs son extremadamente mortales y a veces uno se siente indefenso ante un enemigo superior. Aprende a retirarte, hacia delante no es la única dirección que se debe seguir cuando se spawnea, si una parte del mapa está perdida y el enemigo tiene posiciones de fuego fuera del spawn, es mejor retirarse a otra posición de defensa en lugar de ser volado por los aires tratando de ganar una causa perdida.

sábado, 31 de diciembre de 2016

Consejos para los recien iniciados


El conocimiento del mapa es importante y hay que aceptar que se va a morir muchas veces.

En mi opinión el modo de juego mas fácil es PUSH porque solo hay que concentrarse en un objetivo. Hay que jugar rápido y aprender cuales son los puntos de choque, se va a morir mucho pero se van conocer mas partes de los mapas.

La comunidad es muy buena, ignora a los Trolls y a los tipos que se quejan de los novatos, el juego te permite mutear jugadores individulamente desde la tabla de posiciones (tecla TAB), a un jugador mudo no se lo escucha ni se lee lo que escribe, tomate tu tiempo y trata de aprender.

Muchos servidores tienen el fuego aliado activado, matar compañeros es normal y si matas a un compañero pide disculpas y si la victima se queja ignoralo. En el caso de nuestro servidor tenemos un sistema AntiTK que tiene como finalidad que los novatos presten atención pero por sobre todo filtrar trolls.

Éste juego es muy satisfactorio una vez que mas o menos se aprenden los mapas y como funcionan las cosas.

Recuerda que este juego está basado en objetivos y todo lo que se haga tiene que contemplar eso, no es buena idea estar en un techo de franco tirador o jugar para ser el que mas mata, hay que ayudar en los objetivos y estar atentos al mapa táctico y en el caso de ser defensor, si el objetivo está vacío y está siendo capturado, hay que ir a liberarlo.

Hay algunas guias fantasticas en texto y video (en ingles) de como jugar este juego:
Kate's Guide
Enfiende's videos
Andrea's videos
Slice the pie

Te puedo garantizar que una vez que le agarres la mano a este juego, lo vas a amar.

viernes, 25 de noviembre de 2016

Como funciona el AntiTK en nuestro servidor

Matar compañeros es totalmente normal y ni bien es frustrante, es parte de lo que le da sabor al juego en equipo.

Los teamkills son algo que produce muchos enojos en las victimas y son fuente de muchas peleas, pero lo cierto es que todos matamos compañeros y son casi en su totalidad por error.

Pero todos los servidores con fuego aliado tienen un problema: los trolls, que pueden ser tipos que entran a molestar o que se aburren y como no tienen interés ni respeto por los demás empiezan a matar compañeros.

El AntiTK nace como respuesta esos trolls y hemos comprobado que ha resultado ser una herramienta invaluable para mantener el servidor con un buen nivel del juego sin la necesidad de un administrador presente.

El AntiTk funciona en 3 niveles y efectúa 4 acciones: advierte (warn), mata (kill), patea (kick) o banea (ban). Cada vez que se mata un compañero se suman tkPoints y se acumulan en todas las rondas que dure el mapa y se resetean en cada mapa nuevo.
  • El nivel 1 es para aquellos jugadores que tienen menos de 2 horas de juego en el servidor y cada tk equivale a 1 tkPoint, el limite para estos jugadores es 1/3/4, lo que quiere decir que el primer tk el servidor lo mata, al segundo tk el servidor lo mata de nuevo, al tercer tk el servidor lo patea con un mensaje que le indica fue pateado por exceso de teamkills pero que le permite conectarse de nuevo y si entra y realiza un cuarto tk es baneado permanentemente.
    Eso equivale a: kill, kill, kick, ban.
  • El nivel 2 es para los jugadores de menos de 10 horas y es un: warn, kill, kill, kill, kick, ban.
  • El nivel 3 es para los jugadores con mas de 10 horas y son los considerados como regulares del servidor, pero el calculo es distinto porque ahora cada tk tiene un valor basado en la reputación del jugador como teamkiller y se basa en cuantos tk realice el jugador por hora, y un valor normal es 0.5 por hora, eso quiere decir que se mata un compañero cada 2 horas.
    En este nivel se tiene un limite de 3/7/10, un jugador con 0.5 de reputación tiene que matar a 7 compañeros para recibir el primer kill.
    En este nivel lo que se busca es que no haya descuidos, sobre todo en el uso de explosivos potentes.

Cuando se mata un compañero se recibe el siguiente mensaje del servidor:
La linea 1 indica quien agredió a quien, es un mensaje nativo del juego y lo ven todos los compañeros del equipo, la segunda linea es el control de teamkills nativo de insurgency y es un control por ronda, pero es totalmente ineficiente debido a que un troll puede eliminar 10 compañeros sin castigo alguno.
La tercera linea es la importante, indica que el AntiTK registro el tk, muestra los tkPoint, muestra el limite y da información general de cuantos tk acumulados tiene el jugados, en este caso ha matado 199 compañeros y lo han matado 354 veces por compañeros.

La victima ve que se ha registrado el tk y cual es la acción que toma el servidor al respecto:

Hemos comprobado que el limite de 2 horas es perfecto para filtrar trolls y aquel jugador que se tome el trabajo de invertir mas horas en el servidor es porque tiene un interés real de jugar en buenos términos con los demás.
El kill para los novatos creemos que ayuda positivamente a que tengan mas cuidado.
Sistemas perfectos no hay, jugadores del tercer nivel se han visto en situaciones de venganza entre si y eso es difícil de filtrar, pero han sido casos aislados.

Sin perjuicio de la efectividad que encontramos en el AntiTK, hay veces que se puede evaluar que un tk ha sido a proposito y el jugador sea pateado o baneado, sobre todo si el tk fue realizado en el spawn.

Discute este post en steam.