Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Página principal
Cambios recientes
Página aleatoria
Ayuda sobre MediaWiki
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Editando
Netcode
(sección)
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
== Causas potenciales de problemas de netcode == === Latencia === La latencia es inevitable en los juegos en línea, y la calidad de la experiencia de los jugadores está estrictamente ligada a esta (cuanta más latencia hay entre los jugadores, mayor es el sentimiento de que el juego no es responsivo a sus entradas).<ref name=":0" /> Hay que tener en cuenta el hecho de que la latencia de la red de los jugadores (la cual está en gran parte fuera del control de los juegos) no es el único factor en cuestión, sino también la latencia inherente a la manera en que las simulaciones de los juegos se ejecutan. Para disfrazar o disimular la latencia y para corregir problemas causados por valores altos de esta se han desarrollado varios métodos de compensación de [[lag]].<ref>{{Cita web|url=https://developer.valvesoftware.com/wiki/Latency_Compensating_Methods_in_Client/Server_In-game_Protocol_Design_and_Optimization#Lag_Compensation|título=Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization - Valve Developer Community|fechaacceso=2020-12-11|sitioweb=developer.valvesoftware.com}}</ref> === Tickrate === 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.<ref name=":2">{{Cita web|url=https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking|título=Source Multiplayer Networking|fechaacceso=2020-12-11|sitioweb=Valve Developer Community}}</ref> 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.<ref>{{Cita web|url=http://www.gamekult.com/actu/titanfall-de-limportance-dun-bon-tickrate-A130413.html|título=Titanfall, de l'importance d'un bon tickrate|fechaacceso=2014-03-30|fecha=2014-03-29|editor=gamekult.com}}</ref> El ''tickrate'' en juegos de acción rápida como los [[Videojuego de disparos en primera persona|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]] u [[Overwatch]]), los 30 ''ticks'' por segundo (como en [[Fortnite]] y en la versión de consola de [[Battlefield V]])<ref>{{Cita web|url=https://www.glitched.online/battlefield-v-server-tick-rate/|título=Battlefield V Server Tick Rate Revealed & Why It Matters|fechaacceso=2020-12-05|idioma=en-ZA}}</ref> y los 20 ''ticks'' por segundo (cómo con los polémicos casos de [[Call of Duty: Modern Warfare (videojuego de 2019)|Call of Duty: Modern Warfare]], [[Call of Duty: Warzone]] y [[Apex Legends]]).<ref>{{Cita publicación|url=https://www.washingtonpost.com/video-games/esports/2020/04/14/valorant-tick-rate-servers-pros-streamers/|título=Valorant’s super-fast servers are attracting streamers and pros in droves. Here’s why.|apellidos=Davison|nombre=Ethan|publicación=Washington Post|idioma=en-US|issn=0190-8286}}</ref><ref>{{Cita web|url=https://www.dexerto.com/apex-legends/how-bad-is-apex-legends-netcode-compared-to-fortnite-pubg-1290489/|título=How bad is Apex Legends netcode compared to Fortnite and PUBG?|fechaacceso=2020-12-05|fecha=2019-11-23|idioma=en}}</ref> 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.<ref name=":2" /><ref name="EpicNet">{{Cita web|url=http://udn.epicgames.com/Three/NetworkingOverview.html|título=Unreal Networking Architecture|fechaacceso=2014-09-07|fecha=|editor=[[Epic Games]]}}</ref> === Errores de software === 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 [[Error de software|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.<ref name=":1" /> Tradicionalmente, los [[Videojuego de estrategia en tiempo real|juegos de estrategia en tiempo real]] (por ejemplo, [[Age of Empires (serie)|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.<ref>{{Cita web|url=http://gafferongames.com/networking-for-game-programmers/what-every-programmer-needs-to-know-about-game-networking/|título=What every programmer needs to know about game networking|fechaacceso=2014-09-08|apellido=Glenn Fiedler|fecha=}}</ref> === Protocolos de capa de transporte y código de comunicación: PCT y PDU === El tipo de protocolo de [[capa de transporte]] (y su gestión y programación) escogido para un juego también puede causar problemas de ''networking''. Si un juego utiliza un [[protocolo de control de transmisión]] (PCT, TCP en inglés), habrá una latencia añadida entre los jugadores. Este protocolo se basa en la conexión entre dos máquinas, en la cual estas pueden intercambiar datos y leerlas. Este tipo de conexiones son muy fiables, estables, ordenadas y fáciles de implementar, y se utilizan en prácticamente cualquier operación que hacemos por internet (tanto en la navegación de la web como en los [[Correo electrónico|correos electrónicos]] o los [[Internet Relay Chat|IRC]]). Estas conexiones, sin embargo, no se adecuan correctamente a las velocidades de red que los juegos de acción rápida necesitan, ya que este tipo de protocolo (los [[Protocolo de transmisión en tiempo real|protocolos de transmisión en tiempo real]]) agrupa los datos automáticamente en paquetes (los cuales no se enviarán hasta alcanzar un volumen de información determinado) que se enviarán a través de la conexión establecida entre las máquinas, en vez de manera directa (sacrificando la velocidad por seguridad). Este tipo de protocolo también tiende a responder muy lentamente cuando se encuentra con la situación de que ha perdido un paquete, o que han llegado en un orden incorrecto o duplicados, lo que puede ser muy perjudicial para un juego en línea en tiempo real (hay recordar que este protocolo no se diseñó para este tipo de software). Si el juego en cambio utiliza un [[protocolo de datagramas de usuario]] (PDU, UDP en inglés), la conexión entre las máquinas será muy rápida, ya que en vez de establecer una conexión entre ellas se enviarán y recibirán los datos directamente. Este protocolo es mucho más sencillo que el anterior, pero no goza de su fiabilidad y estabilidad y requiere la implementación de código propio para encargarse de las funciones indispensables para la comunicación entre máquinas que el PCT incluye (tales como la división de datos en paquetes, la detección automática de la pérdida de paquetes, la [[suma de verificación]], etc.); esto aumenta la complejidad del motor, por lo que se podrían provocar problemas.<ref>{{Cita web|url=https://gafferongames.com/post/udp_vs_tcp/|título=UDP vs. TCP|fechaacceso=2020-12-11|fecha=2008-10-01|sitioweb=Gaffer On Games|idioma=en-us}}</ref>
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Buscar
Buscar
Editando
Netcode
(sección)
Añadir idiomas
Añadir tema