Ir al contenido

Netcode

De Wikipedia, la enciclopedia libre

Esta es una versión antigua de esta página, editada a las 22:41 11 dic 2020 por GerardSN (discusión · contribs.). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.

Netcode se trata de un hiperónimo utilizado en la comunidad gamer para denominar cualquier cosa que se relacione a la gestión de redes (networking en inglés) de los juegos en línea, a menudo refiriéndose a problemas de sincronización entre clientes y servidores. Los jugadores habitualmente hacen afirmaciones sobre "netcodes malos" cuando se encuentran problemas de conexión en un juego, a pesar de que las causas de estos problemas podrían estar completamente fuera del control de su motor (algunas causas habituales: latencia alta entre el servidor y el cliente, packet loss, congestión de la red, etc.). Incluso podrían ser causados por factores externos que no tienen nada que ver con la calidad de la red como el tiempo de renderización de los fotogramas o velocidades inconsistentes de fotogramas.[1][2]​ Netcode como término tiende a ser utilizado solamente en el mundo de los videojuegos, y no es reconocido por la comunidad científica de las ciencias de la computación.[3][4]

Causas potenciales de problemas de netcode

La latencia es inevitable en los juegos en línea, i es causada no únicamente por la latencia de la red (la cual está en gran parte fuera del control de los juegos) sino también por la latencia inherente a la manera que las simulaciones de los juegos se ejecutan. Hay varios métodos de compensación de lag utilizados para disfrazar, reducir, o disimular esta latencia.

La medida temporal mínima de una reiteración de acciones en un juego se conoce como tick. La tasa a la cual la simulación es ejecutada en un servidor es referido a menudo como el tickrate (o tasa de actualización) de un servidor; esto es esencialmente el equivalente de los fotogramas por segundo del cliente.[5]​ El tickrate es limitado por el periodo de tiempo que la simulación necesita para ejecutarse, y es a menudo intencionadamente limitado todavía más para reducir la inestabilidad introducida por una tasa fluctuante (y también para reducir los costes de la CPU y de transmisión de datos). Un tickrate bajo incrementa la latencia de la sincronización entre la simulación del servidor y las de los clientes.[6]​ El tickrate en juegos de acción rápida como los shooters en primera persona a menudo se encuentra entre los 120 ticks por segundo (cómo es el caso de Valorant), los 60 ticks por segundo (en juegos como Counter-Strike: Global Offensive o Overwatch), los 30 ticks por segundo (como en Fortnite y en la versión de consola de Battlefield V)[7]​ y los 20 ticks por segundo (cómo con los polémicos casos de Call of Duty: Modern Warfare, Call of Duty: Warzone y Apex Legends).[8][9]​ Un tickrate bajo, naturalmente, también reduce la precisión de la simulación, de manera que podría llegar a causar problemas si se lleva a extremos, o si las simulaciones del cliente y del servidor se encuentran ejecutándose a tasas significativamente diferentes.

Debido a limitaciones en la cantidad de la anchura de banda disponible y el tiempo de la CPU dedicado a la comunicación de la red, algunos juegos priorizan ciertas comunicaciones vitales mientras se limita la frecuencia y prioridad de otros tipos de información menos importantes. Igual que con el tickrate, esto aumenta la latencia de la sincronización. Los motores de juego pueden limitar las veces por segundo que las actualizaciones (de la simulación) son enviadas a un cliente determinado y/o a objetos determinados en el mundo del juego además de reducir la precisión de algunos valores enviados a través de la red para ayudar con el uso de la anchura de banda. Esta carencia de precisión puede llegar a ser notable.[5][10]

Hay varios errores de sincronización de una simulación entre máquinas que suelen ser considerados como "problemas de netcode". Por ejemplo, podemos encontrar varios bugs que causen que la simulación avance y se desarrolle de manera diferente entre una máquina y otra, o que algunos objetos o elementos no se comuniquen entre ellos aunque el usuario perciba que deberían hacerlo. [2]​Tradicionalmente, los juegos de estrategia en tiempo real (por ejemplo, Age of Empires) utilizaron modelos de gestión de redes peer-to-peer del tipo lock-step donde se asume que las simulaciones se ejecutan de manera exactamente igual para todos los clientes; aun así, si un cliente perdiera el paso por cualquier razón, la desincronización puede ser grave y volverse irrecuperable.[11]

El tipo de protocolo de capa de transporte escogido por un juego también puede causar problemas de la gestión de red. Si un juego utiliza un protocolo de control de transmisión (PCT, TCP en inglés), la gestión de redes tendrá un coste general elevado y una latencia también elevada. Si el juego en cambio utiliza un protocolo de datagramas de usuario (PDU, UDP en inglés), su motor puede necesitar la implementación de código propio para encargarse de condiciones de error y de otras cosas que son solucionadas por el PCT;[12]​ esto aumenta la complejidad del motor, de forma que se podrían provocar problemas.

Véase también

Enlaces externos

Referencias

  1. Huynh, Martin (2019). An analysis of continuous consistency models in real time peer-to-peer fighting games. 
  2. a b «Addressing “Netcode” in Battlefield 4». Battlelog (en inglés). Consultado el 30 de marzo de 2014.  Error en la cita: Etiqueta <ref> no válida; el nombre «DiceNetcode» está definido varias veces con contenidos diferentes
  3. «List of programming and computer science terms». Labautopedia. 
  4. «Computer programming term». Computer Hope. 
  5. a b «Source Multiplayer Networking - Valve Developer Community». developer.valvesoftware.com. Consultado el 11 de diciembre de 2020.  Error en la cita: Etiqueta <ref> no válida; el nombre «ValveTick» está definido varias veces con contenidos diferentes
  6. gamekult.com, ed. (29 de marzo de 2014). «Titanfall, de l'importance d'un bon tickrate». Consultado el 30 de marzo de 2014. 
  7. «Battlefield V Server Tick Rate Revealed & Why It Matters» (en en-ZA). Consultado el 5 de diciembre de 2020. 
  8. Davison, Ethan. «Valorant’s super-fast servers are attracting streamers and pros in droves. Here’s why.». Washington Post (en inglés estadounidense). ISSN 0190-8286. 
  9. «How bad is Apex Legends netcode compared to Fortnite and PUBG?» (en inglés). 23 de noviembre de 2019. Consultado el 5 de diciembre de 2020. 
  10. Epic Games (ed.). «Unreal Networking Architecture». Consultado el 7 de septiembre de 2014. 
  11. Glenn Fiedler. «What every programmer needs to know about game networking». Consultado el 8 de septiembre de 2014. 
  12. Glenn Fiedler. «UDP vs. TCP». Consultado el 8 de septiembre de 2014.