Tal vez para mucha gente este término suene extraño, pero si sos gamer y te gusta jugar online probablemente lo hayas escuchado nombrar en los últimos tiempos. Ya que el Rollback Netcode es algo así como la panacea para los problemas de conectividad de los juegos de pelea.
¿Qué es el Rollback Netcode? ¿Por qué es tan importante?
Antes de sumergirnos en el tópico central de esta nota es importante conocer que son la latencia y el ping. La latencia es, explicado a grosso modo, el tiempo que demora en llegar un paquete de datos desde un servidor a un terminal y viceversa. O sea, lo que tarda en llegar la información. La velocidad de este proceso se mide en milisegundos y se denomina ping. El ping está afectado por varios factores, algunos de ellos son: la velocidad de la conexión a internet, la distancia entre el router wifi y nuestro terminal, la distancia geográfica al servidor, la velocidad de procesamiento de nuestra unidad, el uso de ancho de banda para otros procesos, etc.



El ping no es estable y suele tener un rango variable a lo largo de la conexión. Un ping aceptable es generalmente debajo de 20 (o sea, menos de 20 milisegundos de latencia = 0,02 seg) ¿por qué? Porque el ojo humano difícilmente puede distinguir imágenes a velocidades superiores a 30 cuadros por segundo (es decir un cuadro cada 0, 033333 seg), por lo que una pérdida de algunos pocos cuadros es imperceptible al ojo humano.
Hasta acá se entiende, prosigamos.
Hoy en día muchos juegos vienen configurados para proyectar imágenes a una velocidad de 60 fps (frames per second = cuadros por segundo), todo esto en pos de aumentar la definición y darle una sensación de movimiento fluido. El problema radica cuando el ping es alto y las latencias largas hacen que nuestro terminal vaya atrasado varios milisegundos respecto a la acción que se produce en el servidor. Esto puede llevar a la pérdida creciente de cuadros por segundo y hacerlo perceptible a la vista. Si bien tener unos milisegundos de demora no es grave si jugamos una partida de ajedrez online, para otras cosas en tiempo real como una videollamada puede ser algo molesto. Pero si estamos jugando a un shooter online en donde la velocidad de reacción es crucial para la jugabilidad perder frames puede hacer que sea absolutamente imposible jugar. Esta pérdida de cuadros por segundo perceptible a los sentidos y que dificulta la jugabilidad es el clásico y temido lag.



Los juegos de pelea tienen la particularidad que en el gaming online, si bien dependen de un servidor que establezca la conexión entre las partes, una vez logrado el match con el oponente el control de la partida es manejada por la sincronización entre ambos terminales los cuales comparan constantemente la información entre sí sin involucrar al server (el llamado protocolo lockstep). En este momento es cuando el ping entra en acción y trae todos los problemas, manifestándose principalmente como una demora entre que hacemos un comando y lo recibe nuestro oponente. Cuando el ping presenta alta variabilidad o es muy alto y no se condice con el de nuestro oponente se genera una discordancia que pone en riesgo toda la sincronización del proceso. Para lidiar con esta falta de sincronización los juegos de pelea traen programado un artilugio denominado netcode.
El netcode más utilizado en la mayoría de los juegos de pelea hasta ahora ha sido el delay based netcode (código de red basado en demora) el cual ajusta la acción de los personajes apenas llega la información del otro terminal. Para explicarlo sencillo: si nosotros (jugador 1) realizamos un comando en el cuadro 1 (por ejemplo, apretar un botón de patada) y tenemos una demora para que le llegue la información al oponente de 3 cuadros, nosotros veremos la acción en nuestra pantalla realizándose en el primer frame pero a nuestro rival se le presentará dicho comando recién en el cuarto frame, durante esos 3 cuadros de demora nuestro personaje será interpretado como inactivo por el terminal del jugador 2. Lo mismo pasa en el caso inverso, si el oponente tiene 4 frames de demora él verá su acción en el frame 1 y nosotros veremos la acción del jugador 2 en nuestra pantalla recién en el quinto frame. El delay based netcode tiene estipulada una tolerancia de cuadros para mantener un ritmo fluido de jugabilidad, perder 3 o 4 frames por segundo cuando un juego de pelea tiene 60 fps no es la muerte de nadie. Esto puede funcionar bien cuando ambos contrincantes manejan un ping bajo y estable.



¿Entonces qué tiene de malo este netcode?
El problema con este netcode radica en que la mitad del mundo tiene conexiones a internet que son una porquería. Eso hace que los jugadores con ping alto por tener una mala conexión (por ejemplo, toda Latinoamérica) tengan latencias larguísimas e inestables que conllevan lag para la partida por pérdida de 10 o 20 frames por segundo. Esto hace que muchos jugadores se vean obligados a:
A) jugar en servidores locales o regionales que por su situación geográfica favorezcan tener un ping bajo y no poder competir con jugadores de otras partes del mundo
B) conformarse a jugar partidas mediocres en donde a causa del lag no podés meter un combo ni de casualidad y generalmente terminan perdiendo
C) matchear con rivales que compartan su ping en lugar de por su destreza haciendo peleas desbalanceadas
D) abandonar el gaming online porque la experiencia de juego es poco satisfactoria
E) todas las opciones anteriores juntas



Para solucionar esto desde hace unos años los juegos de lucha empezaron gradualmente a utilizar una versión mejorada, el rollback netcode. Este netcode no es nuevo, existe hace más de una década, pero no fue sino hasta hace poco que se empezó a utilizar como medida para favorecer la jugabilidad.
El rollback netcode en sí funciona como un predictor de las acciones de los jugadores… what???
Para explicarlo y que se entienda, si nuestro terminal (una consola o una PC) deja de recibir información del otro jugador a causa del ping, rellenará la línea de comando con la última acción realizada por el oponente. Este predictor va completando la información cuadro por cuadro y suele ser bastante acertado.
Por ejemplo: si durante el combate el jugador 1 apretó el direccional hacia la derecha y su personaje estaba avanzando, pero súbitamente el ping de alguno de los jugadores aumentó y el terminal del jugador 2 deja de recibir información del jugador 1 por unos milisegundos, entonces el terminal 2 interpreta que el personaje 1 continúa realizando la última acción registrada (es decir, avanzando) y ejecutará la acción hasta que se reestablezca el flujo de información con el terminal 1.



¿Qué pasa si la predicción es equivocada?
Continuemos con el ejemplo anterior: en caso que el terminal del jugador 2 hubiera realizado la acción predicha por el netcode de mantener avanzando al jugador 1, pero repentinamente recibe demorado unos milisegundos un comando del terminal 1 con información distinta a la ya realizada por la predicción unos cuadros atrás (por ej. porque el jugador 1 se agachó en lugar de seguir avanzando) en ese caso el netcode del terminal 2 indica al juego hacer un rollback (volver el juego para atrás) ubicando al personaje 1 en el lugar que debería haber estado y realizando el comando correcto. Recordemos que si la predicción fue correcta el juego continúa sin problemas, y en caso de tener que volver para atrás algunos pocos cuadros, tengamos en cuenta que el juego corre a 60 cuadros por segundo y ninguna acción realizada por los personajes dura menos de 20 cuadros. Lo que le da margen de sobra al terminal 2 para adaptar la acción al comando correcto sin que los ojos del jugador 2 lo perciba. Estos controles y correcciones constantes permiten jugar prácticamente sin lag. Existen ocasiones en que el ping de alguno de los jugadores en demasiado alto y se retrasa muchos cuadros el comando, en esos casos el rollback de corrección se puede percibir como un pequeño “teleport” del rival hacia otro lugar de la pantalla pero que habitualmente no impacta en la jugabilidad.



Para profundizar un poco más en el tema, debemos saber que hacer un rollback de unos pocos cuadros para atrás no es poca cosa…. significa que TODOS los cuadros del juego deban ser autograbados uno por uno para que potencialmente puedan cargarse el contenido de dichos cuadros en caso de requerirse una corrección por discrepancia con el comando recibido. Por ende, el juego debe programarse desde el inicio para grabar la partida 60 veces por segundo, simplemente, por si las dudas la predicción saliera mal. Y mientras tanto debe continuar corriendo los procesos de un combate normal, las animaciones, gráficos, sonidos, etcétera. Esto es MUCHISIMO trabajo de programación y consumo de gran cantidad de recursos de hardware. Algunas desarrolladoras hicieron esfuerzos notables para reprogramar juegos ya lanzados para añadirles posteriormente el nuevo netcode, tal fue el caso de Street Fighter V y el Mortal Kombat X, los cuales debieron agregar estos netcodes a contrarreloj mediante actualizaciones para no perder a su comunidad en el gaming online.
Ahora, si es tan bueno el rollback netcode ¿por qué hay juegos que aún usan la otra versión?
Porque el problema en sí no es el netcode, sino las conexiones a internet. Razón por la cual, en Japón, donde se encuentran varias desarrolladoras con sus servidores para gaming y que tienen unas conexiones con velocidades astronómicas, no les representa ningún problema el delay based netcode. Es un dolor de cabeza muy costoso para las empresas japonesas tener que reprogramar un juego ya lanzado para cambiarle su estructura y ponerle un netcode extranjero cuando el de ellos anda muy bien en Japón. En cambio, en EEUU la medida se tomó con más naturalidad y las desarrolladoras estadounidenses rápidamente se subieron al barco del rollback netcode.



Esta guerra de los netcodes está generando pérdidas para las empresas japonesas que ven como como la fighting games community se está volcando a juegos estadounidenses, mientras que los juegos japoneses empiezan a perder terreno. Tener una comunidad online activa es una necesidad imperiosa dado que es el motor de desarrollo posventa de cualquier juego, además de ser un estímulo para el desarrollo de nuevo contenido que favorece a todos. Afortunadamente esto no ha pasado desapercibido y las empresas niponas empezaron a cambiarse a la nueva versión del netcode. De hecho, SNK anunció que su nuevo The King of Fighters XV contará con con el rollback netcode, algo que la comunidad de los juegos de lucha agradece enormemente.
Si llegaste a leer la nota hasta acá te agradezco mucho por tu interés, espero que se haya entendido y hayas podido aprender tanto como yo aprendí investigando sobre el tema. Te dejo este link a un video donde se explica bien con algunos ejemplos muy ilustrativos.
Te mando un abrazo sin lag y nos vemos la próxima.
2 thoughts on “¿Qué es el Rollback Netcode?: la piedra angular de los juegos de lucha online”