Valve arregla un bug de hace 10 años en el Team Fortress 2

Y es tan gordo que incluso se clasificaría de "game breaking"

En el changelog de la actualización de ayer de Team Fortress 2 se puede leer esto:

“Fixed an animation bug that would cause the client and server hitboxes to become out of sync”

Sigsegv__, el usuario que lo reportó por primera vez, ha explicado en reddit en que consiste el bug, y adjunta varios videos para explicarlo de forma sencilla:

Este es un bug relativamente gordo que fue descubierto por Nicknine (del equipo de desarrollo de TF2 Classic) y reportado por mí. Básicamente, por el simple hecho de cambiar de clase, los parámetros de la pose del personaje se lían a lo grande, destrozando la forma en la que se animan los hitboxes en la parte del servidor (lo cual también destroza la detección de impactos).
Este bug lleva en el juego desde que se lanzó en 2007 (en otras palabras, es un bug de hace 10 años).

Con los modelos humanos el problema principalmente está en las animaciones de las piernas (aunque también hay problemas por ejemplo con la cabeza ladeándose hacia el lado contrario cuando el personaje se mueve), porque solo los parámetros move_x y move_y están intercambiados. Pero los robots del modo Mann vs. Machine, tienen, uh… unas cuantas variaciones más de los parámetros, con lo que el descuadre es mucho mayor.

Ah, y además es básicamente una corrección de una sola línea. (Aunque saber cual era la línea que faltaba es la parte dificil, podría decirse).

La forma de que ocurriera es sencilla, y se da en un 100% de los casos que ocurre lo siguiente:

Si te unes a un servidor y la primera clase elegida es scout/heavy/sniper, entonces si en cualquier momento en ese servidor cambias a soldier/pyro/demo/engie/medic/spy, tus animaciones en el servidor se joden.

Igualmente, si te unes a un servidor y la primera clase es soldier/pyro/demo/engie/medic/spy, entonces si en cualquier otro momento pasas a ser scout/heavy/sniper, tus animaciones en el servidor se joden.

Cambiar otra vez de clase no lo arregla. Morir no lo arregla. Pasar a modo espectador no lo arregla. Etc…

¿Por qué esas clases en concreto? Porque los modelos de los scout/heavy/sniper tienen los parámetros de las poses listados en un orden, mientras que los modelos de soldier/pyro/demo/engie/medic/spy los tienen en un orden ligéramente diferente.

Tambien hay que destacar que en MvM, los bots reutilizan los mismos 22 slots de jugador una y otra vez: cuando un robot muere, su “jugador” cambia a modo espectador, y entonces cuando es hora de que otro robot se spawnee, ese jugador pasa de nuevo al equipo azul y cambia a la clase que le corresponda al nuevo robot. Y en efecto, algunas clases de robots MvM son más o menos equivalentes a un grupo de jugadores humanos que mueren, cambian de clase, y respawnean. Con lo que también les afecta este bug.

Este bug también implica que a veces podías darle a alguien, ver como saltaba la sangre… pero que el rival no muriera. Por lo visto se puede dar el caso de que localmente el cliente sí detecte un impacto (y es el que provoca la animación de la sangre) pero para el servidor eso no haya sido un impacto por el descuadre en los hitboxes.
Por lo que comentan otros usuarios de reddit en el hilo, el bug parece estar presente en otros muchos juegos basados en el motor Source, aunque otros como CS:GO parecen haberlo corregido ya hace tiempo (ahí parece que el problema se limitaba a la posición de la cabeza).

Otro usuario ha bromeado con que “mira, al final resulta que no estaba loco cuando insistía en disparar a los heavy entre los hombros para acertar”.

Total, que al final muchos teníamos razón cuando gritábamos eso de “PERO SI LE HE DADO EN LA CABEZA!” y el juego decía que no. Sinceramente, parece un bug demasiado gordo para un juego que viene a ser la cuna de los e-sports modernos, y es raro que haya pasado tanto tiempo sin ser corregido.