7/7/2017

Operation Health: Diagnóstico – La complejidad de Hibana

Tras un gran esfuerzo en centrar el problema, creemos que hemos aislado la mayor parte de los casos en los que el dispositivo de Hibana podía funcionar mal, y los hemos resuelto. A partir de la actualización de juego 2.1.1, que llega el 11 de julio a todas las plataformas, los jugadores percibirán un comportamiento más fiable en el lanzador de proyectiles X-KAIROS de Hibana.

La situación: El diseño único de Hibana

Antes de la llegada de la operación Health, recibimos informes sobre la coherencia del lanzador X-KAIROS de Hibana. Tras investigar las posibles causas subyacentes para esos extraños comportamientos, nuestro equipo descubrió problemas fundamentales en la arquitectura del dispositivo de Hibana que implicaba que debíamos reconstruir la forma en que manejábamos sus proyectiles. Hablamos con el programador de animación, Alex Bubsy, que nos ha descrito cómo abordamos inicialmente los mecanismos de Hibana y cómo pretendemos solucionar los problemas de una vez por todas.

Pero antes de nada, hay algunos detalles que deberíamos tener en cuenta, con relación a lo que diferencia a Hibana de los demás agentes, y luego podremos explicar por qué la forma en que hemos abordado su diseño especial ha provocado los problemas que algunos jugadores han encontrado. Hibana usa su dispositivo para disparar seis proyectiles X-KAIROS que pueden ser detonados después con una orden. Para crear a Hibana, el equipo preparó e identificó por separado 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.

“Aunque sucede algo parecido con Ash, es la primera vez que tenemos múltiples fases activas, donde puedes disparar muchas veces, diferentes proyectiles, y fases donde puedes disparar más proyectiles, o volar otros diferentes, o recargar…” - Alex Bubsy, programador de animación.

Y… ¿a qué llamamos un objeto neto? Para poder procesar los sucesos en una partida, tenemos que dividirlos y analizarlos fuera de su orden, si es necesario. Todo esto cobra sentido cuando asignamos diferentes autoridades a algunos de esos procesos, para asegurarnos de que todo sucede luego, de cara al jugador, exactamente de la forma en que espera. A esto lo llamamos autoridad del servidor (o jerarquía del servidor) y autoridad local. Básicamente, tenemos una línea temporal de eventos de cada partida, corriendo al mismo tiempo en el servidor y en la máquina local de cada jugador; si hay un desacuerdo entre los dos equipos, la opción Autoridad del servidor implica que la información del servidor se impone, mientras que Autoridad local es una opción que da prioridad a la información de la máquina del usuario (consola o PC). En general estos cálculos comparativos se realizan tan rápido que un humano no puede percibir ninguna discrepancia.

El problema: La discrepancia entre la autoridad del servidor y local

Con Hibana teníamos que monitorizar un montón de sucesos simultáneos para un solo agente: tiene su lanzador, que puede mandar mensajes al servidor con respecto a cuándo se descarga, con qué trayectoria está disparando y cuándo puede ser recargado; está su posición en el mundo, que ha de registrarse en caso de que otro jugador la vea o dispare hacia ella; y por último están los seis proyectiles X-KAIROS, que envían mensajes sobre su posición y estado de activación. Para hacer un seguimiento de todas estas cosas de forma precisa, hemos asignado a cada una un objeto neto para comunicar esta información al servidor.

Sin embargo, cuando lanzamos Hibana, empezamos a ver una pérdida de capacidad de nuestros servidores para gestionar toda la información que envían los diferentes objetos netos de Hibana. Por ejemplo, su lanzador podía lanzar seis proyectiles, pero a veces el flujo de información se interrumpe por una latencia extremadamente alta (un retraso), o por ciertas condiciones pobres de red. Hay un sinfín de combinaciones que pueden provocar un mal funcionamiento en el dispositivo de Hibana, debido a esa mezcla de mensajes, y gran parte de eso tiene que ver con la asignación de autoridad del servidor o autoridad local a los diferentes pasos.

La solución: La simplificación de objetos netos

Tras meses de duro trabajo, hemos simplificado la forma de manejar los objetos netos, empezando por reducir el número general de objetos que tenemos que controlar. Al hacerlo, se reduce el número de posibles conflictos entre Autoridad del servidor y Autoridad local. Las líneas temporales de eventos de Autoridad del servidor y Autoridad local se reducen, y en consecuencia los jugadores no sufrirán las complicaciones consecuencia de una desincronización entre las dos opciones.

“Las correcciones que hemos hecho han supuesto mover muchas decisiones a la opción de Autoridad del servidor, mientras intentamos mantener tanto como sea posible la reactividad y la respuesta rápida de los servidores. Este objetivo ha marcado la línea de actuación principal de las correcciones. Hemos aislado lo que podía ir mal, o lo que podía estar fuera de sincro, y hemos hecho que el dispositivo dependa más y más de la autoridad del servidor.” -Alex Busby, programador de animación.

Además, hemos repasado meticulosamente los escenarios en los que hemos visto problemas de desajustes, como errores visuales o de colocación de los proyectiles, y también los hemos corregido. Para ver más detalles sobre las modificaciones generales que tendrá Hibana, puedes consultar las notas de la actualización de juego 2.1.1, que se publicarán el lunes 10 de julio.

Estos cambios no solo mejoran la jugabilidad de Hibana, sino que además permiten una mayor variedad en agentes futuros que puedan tener un dispositivo con comportamiento similar.

Esperamos que esta información ayude a explicar lo enraizados que estaban los problemas experimentados con Hibana y por qué necesitábamos dedicar nuestros recursos a rectificar ese comportamiento durante la operación Health.

¡Muchas gracias por vuestro apoyo!

Visita todos nuestros canales

facebook icontwitter iconyoutube icontwitch icon