Fusiona mundos en un emocionante Multiplayer Histera | Unity

Descubre cómo las mejoras de rendimiento de DOTS ayudan a StickyLock a transportar a los jugadores a través del espacio y el tiempo en esta nueva versión de un FPS multijugador.
¿Cómo consigue un pequeño equipo de desarrolladores introducir una innovadora mecánica de juego en un trepidante juego de acción en primera persona? El equipo de StickyLock sabía que necesitaban un nuevo enfoque para triunfar en el saturado mercado de los FPS. Lo que empezaron siendo portales entre distintas épocas evolucionó hasta convertirse en el Glitch, una mecánica de juego que transporta a los jugadores a una época diferente en el tiempo, con un nuevo mapa. Pero construir esta audaz visión requería un rendimiento asombroso, una infraestructura Multiplayer sólida como una roca, componentes gráficos innovadores y un socio fuerte que ayudara a unirlo todo.
This content is hosted by a third party provider that does not allow video views without acceptance of Targeting Cookies. Please set your cookie preferences for Targeting Cookies to yes if you wish to view videos from these providers.
El género FPS alcanza nuevas dimensiones
El artista técnico y programador reconvertido en productor Jamel Ziaty sabía que tenía entre manos un proyecto ambicioso cuando él y el equipo de StickyLock empezaron a trabajar en lo que se convirtió en Histera. Este shooter en primera persona 8x8 de alto octanaje transporta a los jugadores a través de mapas y líneas temporales superpuestas en tiempo real, sin sacrificar el rendimiento.
Como desarrollador experimentado de Unity, Jamel sabía que necesitaban un procesamiento escalable y funciones de backend que pudieran gestionar el cambio de componentes de mapas y personajes sobre la marcha. Para ello, el equipo optó por la pila tecnológica orientada a datos (DOTS) de Unity y el sistema de componentes de entidades (ECS) para mejorar el rendimiento, al tiempo que recurría a Unity Gaming Services (UGS) para gestionar la infraestructura de backend multijugador.
Los resultados:
- Un marco de backend eficiente y eficaz que puede gestionar cientos de miles de entidades y componentes (más de 230.000 en un solo nivel).
- Ahorro de cientos a miles de horas de desarrollo con UGS

Transportar a los jugadores a épocas paralelas con el Glitch
La característica distintiva de Histeraes la mecánica de juego Glitch, en la que una sección dentro de un nivel cambia a una época completamente diferente con su propio campo de juego, comportamientos y conjuntos de armas. Este repentino cambio de configuración avivó el entusiasmo en el juego, pero también creó desafíos para el equipo de StickyLock.
This content is hosted by a third party provider that does not allow video views without acceptance of Targeting Cookies. Please set your cookie preferences for Targeting Cookies to yes if you wish to view videos from these providers.
The Glitch se desarrolla en tres fases distintas. La primera etapa, la anticipación, sirve tanto de señal visual a los jugadores de que un Glitch es inminente como, entre bastidores, se prepara para gestionar las transiciones de activos. A continuación viene una fase de deconstrucción, en la que los elementos visuales de la era actual empiezan a dejar paso a la siguiente serie de gráficos. Durante este cambio, las colisiones de la era original se eliminan a medida que el terreno de la nueva empieza a tomar forma.
Cuando el juego entra en la nueva era, ofrece a los jugadores un vistazo a los nuevos efectos visuales y las zonas de colisión, empleando un mapa de texturas único para delimitar las zonas navegables y las zonas de colisión inminente que guía a los jugadores lejos de los puntos peligrosos. Si los jugadores se encuentran en estas zonas, el juego les anima a moverse infligiéndoles daño, que puede llegar a ser letal si permanecen allí después de la transición. Esto culmina con un espectacular efecto de onda expansiva que solidifica los efectos visuales y las colisiones de la nueva era, completando la secuencia Glitch.
La construcción del Glitch exigió sistemas avanzados para las transiciones, el movimiento de los jugadores y la gestión de las colisiones. La flexibilidad de Unity permitió al equipo desarrollar herramientas y secuencias de comandos personalizadas que las automatizaron, garantizando una jugabilidad fluida incluso cuando todo el mapa cambia durante la partida. "Es un campo de batalla único", explica Jamel, "y nos centramos mucho en hacerlo bien".

Racionalización de los flujos de trabajo con subescenas
El Glitch supuso un enorme reto, tanto en su implementación técnica como porque, para funcionar, tenía que integrarse en un nivel sin alterar la coherencia visual ni la fluidez del juego. El equipo consiguió este equilibrio utilizando el componente SubScene de Unity.
Una subescena es un GameObject MonoBehaviour que hace referencia a otra escena. Se convierte en una representación de entidad, conocida como EntityScene. Las subescenas pueden existir en diferentes estados: abiertas, cerradas o descargadas, y este estado influye en la carga de memoria y visibilidad. Las subescenas abiertas permiten modificar y convertir GameObjects en tiempo real, mientras que las subescenas cerradas cargan representaciones de entidades en la memoria. Esta configuración ayuda a gestionar escenas complejas y a optimizar el rendimiento mediante una gestión eficaz de los datos de las entidades.
"Es un detalle aparentemente pequeño que marca una gran diferencia", dice Jamel. "Nos permite manejar múltiples secciones de mapas dentro de una misma escena. Este planteamiento no sólo simplifica el flujo de trabajo de nuestros artistas, al permitirles centrarse en cada subescena sin solapamientos, sino que también minimiza los conflictos. Ofrece una visión clara de qué subescenas están activas en cada momento".

Lucha contra el retraso y optimización para aumentar el porcentaje de visitas
"Proporcionar una experiencia Multiplayer global es sin duda el mayor reto que UGS nos ayuda a afrontar", afirma Jamel. "Se ocupa de las preocupaciones de crear y gestionar flotas, a la vez que garantiza que se puede ofrecer una calidad de servicio adecuada a muchas regiones diferentes de todo el mundo".
El equipo de StickyLock ha trabajado duro para equilibrar la experiencia de los jugadores con distintos niveles de ping. Los jugadores con mucho lag se benefician de la compensación de lag porque el juego permite un registro de impactos más justo al tener en cuenta su retraso. Sin embargo, esto puede afectar negativamente a los jugadores con poco "ping", ya que podrían ser golpeados detrás de una cobertura debido a que el servidor "rebobina". La información sobre colocación y rendimiento del panel de control Multiplay Hosting y las funciones de predicción, retroceso y compensación de retrasos del paquete Netcode for Entities fueron fundamentales para garantizar una experiencia multijugador más fluida y justa para todos los jugadores.
Jamel subraya que se ha trabajado mucho en la puesta a punto de los servidores para que funcionen a mayor velocidad sin aumentar los costes. La experiencia del equipo de Unity les permitió identificar oportunidades de optimización, mientras que los servidores podían configurarse para que el equipo pudiera realizar ajustes en directo con rapidez. Por último, el Matchmaking basado en reglas de Unity permitió al equipo de StickyLock equilibrar el diseño del juego con el tiempo de espera y la latencia.
"Obtener información sobre el uso de la RAM y la CPU del servidor, mantener un servicio de alta calidad en las distintas regiones y gestionar las funciones del servidor junto con la flexibilidad de las reglas de emparejamiento son aspectos esenciales para nosotros", afirma Jamel. "Siempre buscamos formas de ser más eficaces para evitar compromisos desfavorables entre la mejora de la jugabilidad y la gestión de los costes".

Aumentar el techo de rendimiento con DOTS
Los juegos que se entrecruzan en el tiempo plantean retos que van mucho más allá de las transiciones fluidas: crear mundos paralelos superpuestos en un marco Multiplayer significa alcanzar marcas de rendimiento increíblemente altas. Para conseguirlo, el equipo de StickyLock recurrió a la pila tecnológica orientada a datos (DOTS) de Unity, compuesta por el paquete Entities Component System (ECS), Physics, C# Job System y el compilador Burst.
Adoptar DOTS y ECS a principios de 2020 conllevaba algunos riesgos: eran los primeros en adoptar la tecnología y el equipo tendría que invertir en mejorar sus conocimientos y adaptarse a nuevos flujos de trabajo sobre la marcha, pero tras analizar las muestras, Jamel y su equipo decidieron que las recompensas superaban los riesgos, así que se lanzaron.
“El mayor techo de rendimiento de Burst y ECS es crucial para nosotros", afirma Jamel, "sobre todo ante el reto de gestionar cinco eras distintas. Esto da lugar a más lotes rotos, ya que no podemos reutilizar mallas o materiales en diferentes estilos. Con ECS, obtenemos el rendimiento necesario para mantener imágenes de alta calidad a pesar de estas limitaciones".
El sistema de tareas de C# permite un procesamiento en paralelo eficaz de las tareas, mientras que Burst compila el código C# en código máquina nativo altamente optimizado, evitando la sobrecarga del tiempo de ejecución tradicional de .NET. Este código nativo se adapta específicamente a la plataforma de destino, lo que se traduce en un mejor rendimiento. Reflexionando sobre los beneficios que DOTS ha desbloqueado para su equipo, Jamel comparte que, "Si hubiéramos gastado gran parte del presupuesto de rendimiento en sistemas, no habríamos sido capaces de renderizar cinco épocas diferentes con la calidad que tenemos ahora".

Ganar tiempo con UGS
Más allá de la conectividad, Jamel necesitaba ganar tiempo para que su equipo mejorara su cualificación encontrando otras formas de reducir las horas de desarrollo. Recurrió a UGS para que los desarrolladores se centraran en la jugabilidad, una medida que, según sus cálculos, "ahorraría entre cientos y miles de horas de desarrollo".
El equipo utilizó Multiplay Hosting, MatchMaker, Authentication y Cloud Content Delivery (CCD). StickyLock tuvo claras desde el principio las ventajas de utilizar varios servicios de origen. "Un servicio de origen sería más fácil de integrar y mantener", dice Jamel, "y los servicios de UGS son multiplataforma para cuando queramos portarlos a consola más adelante".
Multiplayer Hosting está diseñado para escalar rápidamente en caso de éxito de la noche a la mañana. "Hoy en día es más habitual que un juego se haga popular de la noche a la mañana. Contar con un servicio que tiene la experiencia de lanzar muchos títulos de éxito nos da una sensación de tranquilidad", afirma Jamel. Además, las capacidades multiplataforma de Authentication preparan a Histera para una expansión multiplataforma cuando llegue el momento, mientras que CCD facilitará al equipo la gestión de sus contenidos y lanzamientos para que puedan ofrecer el contenido y las características adecuadas para mantener a los jugadores interesados a medida que el juego crece.
Con una infraestructura de backend multijugador robusta y escalable y una autenticación y comunicaciones con los jugadores preparadas para múltiples plataformas, Jamel se dirige al lanzamiento con la confianza de saber que los equipos de Multiplayer y UGS le cubren las espaldas.