ViaVersion deja que un cliente más nuevo entre a un jar de servidor más viejo, y lo consigue reescribiendo paquetes de red al vuelo en los dos sentidos. Esa traducción es genuinamente ingeniosa, y también es la razón exacta de que aparezcan ciertos glitches que no tienen nada que ver con el lag.
Traducir un protocolo no es lo mismo que hablarlo de forma nativa
Cada versión de Minecraft define sus propios formatos de paquete: qué significa cada ID numérico, qué campos lleva un paquete, cómo se codifican los datos de bloques y objetos. Un servidor y un cliente en la misma versión sencillamente están de acuerdo en todo eso. ViaVersion se coloca entre un cliente más nuevo y un servidor más viejo y reescribe los paquetes que cruzan esa distancia para que cada lado reciba algo en el formato que espera, lo que funciona bien para cualquier cosa que tenga un equivalente directo en los dos lados, y produce costuras visibles en lo que no lo tiene.
Por qué pasan glitches concretos
| Síntoma | Por qué lo causa la traducción |
|---|---|
| Los bloques parpadean o desaparecen un instante | Un estado de bloque introducido después de la versión del servidor no tiene un equivalente exacto al que traducirse, así que se aproxima |
| Las hitboxes se sienten un poco raras | El tamaño o los datos de colisión de la entidad cambiaron entre versiones y se están convirtiendo, no leyendo de forma nativa |
| Los plugins anticheat marcan en falso a los jugadores traducidos | Los paquetes de movimiento llevan una precisión y un ritmo propios de la traducción y no de una conexión nativa, que algunas heurísticas de anticheat no estaban escritas para esperar |
| Algunas partículas o efectos nuevos no se dibujan | No existen como concepto en la versión de servidor más vieja a la que se está traduciendo hacia abajo |
Nada de esto lo causa la carga del servidor, y ningún margen de TPS lo arregla: es una limitación de la capa de traducción entre dos versiones de protocolo que nunca se diseñaron para hablarse directamente. El arreglo es un ajuste de configuración de ViaVersion o ViaBackwards, o en algunos casos poner en lista blanca la función afectada por versión, no una investigación de rendimiento.
Si un anticheat marca en falso a clientes traducidos, eximir a «cualquiera con protocolo viejo» de todas las comprobaciones es más amplio que el problema real y abre un hueco de verdad. Casi todos los plugins de anticheat admiten eximir tipos de comprobación concretos para conexiones traducidas en vez de desactivar la detección entera para ellas.