Después de concentrar nuestros esfuerzos en definir el problema, creemos que ya tenemos aislados casi todos los casos en los que el dispositivo de Hibana podía funcionar mal, y están resueltos. Desde la actualización de título 2.1.1, que se lanza el 11 de julio en todas las plataformas, ustedes podrán ver un comportamiento más fiable en el lanzador de proyectiles X-KAIROS de Hibana.
El caso: Diseño único de Hibana
Antes de Operation Health, los jugadores reportaron problemas de coherencia en el lanzador X-KAIROS de Hibana. Tras investigar las posibles causas subyacentes en la situación, nuestro equipo descubrió problemas básicos en la arquitectura del dispositivo de Hibana; eso requería reconstruir la forma en que gestionábamos sus proyectiles. Hablamos con el Programador de Animaciones, Alex Bubsy, que explica cómo nos acercamos en un principio a los mecanismos de Hibana y cómo queremos solucionar los problemas para siempre.
Primero, sin embargo, debemos comentar algunos detalles relacionados con lo que hace diferente a Hibana de los demás agentes, y luego podremos explicar por qué el modo en que se hizo su diseño especial es el causante de los problemas que algunos jugadores experimentaron. Hibana utiliza su dispositivo para disparar seis proyectiles X-KAIROS que luego puede detonar a su orden. Para crear Hibana, el equipo la separó en elementos diferentes: su cuerpo, el dispositivo lanzador y cada proyectil X-KAIROS de forma individual. Ningún otro agente tiene tantos objetos netos activos al mismo tiempo.
“A pesar de que tenemos una situación parecida con Ash, es la primera vez que tenemos múltiples fases activas, donde se dispara muchas veces, diferentes proyectiles, y múltiples fases donde puedes disparar más proyectiles, o explotar otros diferentes, o recargar.” - Alex Bubsy, Programador de Animaciones.
Pero ¿qué es un objeto neto? Para ser capaces de procesar los eventos de una partida, debemos dividirlos y analizarlos fuera de su orden, si es necesario. Para dar sentido a todo esto, asignamos diferentes autoridades a algunos de esos procesos, que nos aseguran que luego, en el juego, todo suceda de la forma que espera el jugador. Esto es lo que llamamos autoridad del servidor y autoridad local. La idea básica es: existe una línea temporal de eventos de cada partida, sucediendo al mismo tiempo en el servidor y en la máquina local de cada jugador; si se produce un desacuerdo entre los dos, la opción de Autoridad del servidor da prioridad a la información del servidor, mientras que la opción de Autoridad local da prioridad a la información de la máquina del usuario (consola o computadora). En general estos cálculos y comparaciones se realizan a tal velocidad que un humano no puede percibir ninguna discrepancia.
El problema: Discrepancia entre la autoridad del servidor y local
Con Hibana debíamos controlar y analizar muchos eventos simultáneos para un solo agente: está su lanzador, que puede mandar mensajes al servidor sobre cuándo se descarga, con qué trayectoria dispara y cuándo puede recargarse; está su posición en el mundo, que debe registrarse por si otro jugador la ve o dispara; y además están los hasta seis proyectiles X-KAIROS, que envían mensajes sobre su posición y estado de activación. Hacer un seguimiento de todas estas cosas de forma precisa, nos obliga a asignar a cada una un objeto neto para comunicar esta información al servidor.
Sin embargo, cuando lanzamos el personaje de Hibana, comenzamos a ver un deterioro en la capacidad de nuestros servidores para gestionar toda la información que envían sus objetos netos. El lanzador de Hibana, por ejemplo, podía lanzar seis proyectiles, pero algunas veces el flujo de información se interrumpe si hay una latencia extremadamente alta (retraso), o si las condiciones de la red no son buenas. Hay miles de combinaciones que pueden provocar un mal funcionamiento en el dispositivo de Hibana, debido a esa mezcla de mensajes, y en gran parte el problema está relacionado con la asignación de autoridad del servidor o autoridad local a los diferentes pasos.
La solución: Simplificación de objetos netos
Después de meses de trabajo intenso, el equipo simplificó la gestión de los objetos netos. Comenzamos por reducir el número general de objetos que tenemos que monitorizar para así reducir el número de posibles conflictos entre Autoridad del servidor y Autoridad local. Las líneas temporales de Autoridad del servidor y Autoridad local disminuyen, y por ello ustedes no experimentarán ya las complicaciones que derivaban de una desincronización entre las dos opciones.
“Las correcciones realizadas implicaron mover muchas decisiones a la opción de Autoridad del servidor, mientras intentamos mantener la reactividad y la respuesta rápida de los servidores tanto como podamos. Esta idea es la guía de actuación principal de las correcciones. Aislamos lo que puede ir mal, o estar desincronizado, y hacemos que el dispositivo dependa más y más de la autoridad del servidor.” -Alex Busby, Programador de Animaciones.
De forma adicional se revisaron meticulosamente los escenarios en los que se detectaron problemas de desajustes, errores de posicionamiento de los proyectiles o problemas gráficos, y también están corregidos. Para leer todos los detalles sobre las modificaciones generales que tendrá Hibana, pueden consultar las notas de la actualización de título 2.1.1, que se publicarán el lunes 10 de julio.
No solo mejoramos, con estos cambios, la forma de jugar con Hibana; además permiten una mayor variedad en agentes futuros que podrían usar un dispositivo que tenga un comportamiento similar.
Esperamos que esta información explique mejor de qué forma los problemas experimentados con Hibana estaban en la raíz de su funcionamiento, y ayude a comprender por qué debíamos dedicar nuestros recursos a corregirlos durante Operation Health.
¡Muchas gracias por su apoyo!