Cómo aprovechar la Autoridad Distribuida para juegos cooperativos multijugador

EMILY RAINE / UNITY TECHNOLOGIESContributor
Sep 29, 2025|11 min
Visión nocturna en Dagger Directive
Para tu comodidad, tradujimos esta página mediante traducción automática. No podemos garantizar la precisión ni la confiabilidad del contenido traducido. Si tienes alguna duda sobre la precisión del contenido traducido, consulta la versión oficial en inglés de la página web.

Cuando Arcane Alpacas lanzó la primera demo de su emocionante FPS Dagger Directive en Steam a principios de este año, la retroalimentación general fue excelente, pero la comunidad dejó claro que quería jugar este juego juntos. Basado en esa respuesta, el equipo decidió agregar funcionalidad de multijugador al juego. Probaron algunas soluciones diferentes antes de decidirse por el conjunto de soluciones de multijugador integradas incluidas en Unity 6. Nos sentamos con el programador y diseñador Daniel Fowler para aprender cómo aprovechar el Netcode for GameObjects de Unity, Relay y otros servicios de red para conectar jugadores, y cómo Distributed Authority (DA) impulsa toda la operación con soporte de servidor escalable y eficiente.

Empecemos con un poco sobre cómo comenzó Arcane Alpacas y qué querían crear.

Daniel Fowler, programador y diseñador: Comencé la empresa hace unos años. Antes de eso, nosotros – Wade Hribar, Cody Rowland y yo – trabajamos en Oculus en Onward, un juego de FPS en VR, y queríamos alejarnos de trabajar para grandes empresas.

Comencé este proyecto yo mismo y luego traje a los otros dos con el tiempo, a medida que lo necesitábamos. Conseguí un contrato de publicación con MicroProse y luego lancé una demo. La demo fue muy bien, y queríamos agregar multijugador porque ese fue nuestro mayor punto de retroalimentación de la comunidad. Desde entonces, el juego ha estado funcionando bien. Lanzamos, y estamos a punto de lanzar un paquete de contenido.

Hace un par de semanas, lanzamos una actualización de red después de hablar con el equipo de Unity – nos dieron algunos comentarios, y nosotros compartimos algunos también, y obtuvimos muchas buenas ideas que revisamos e implementamos. El multijugador es mucho más estable ahora, y hemos tenido principalmente comentarios positivos de la comunidad, aunque todavía hay algunos problemas que resolver, por supuesto.

¡Eso es genial! ¿Qué más está pasando con este proyecto?

Comencé este proyecto hace cuatro años y medio. En ese momento, estábamos portando Onward al Quest, así que estábamos tomando un juego de PC VR de alta gama y tratando de llevarlo a un teléfono celular. Haciendo eso, tuvimos que eliminar un montón de cosas – especialmente hierba, y no pudimos usar shaders de cómputo en el Oculus. Así que quería comenzar un proyecto y ver cómo puedo generar una gran cantidad de hierba y hacerlo funcionar de manera bastante eficiente. Al final, construí un sistema de hierba personalizado que utiliza el Burst compiler para generar millones de polígonos de hierba, pequeñas plantas y flores a medida que el jugador se mueve por el mapa.

Los jugadores pueden seleccionar cualquier hora del día para comenzar sus misiones, y el tiempo avanza a medida que juegan, por lo que comenzar una misión a las 6 a.m. y esperar una hora hará que la posición del sol se mueva tanto. Usamos iluminación completamente en tiempo real y construimos nuestro propio sombreado de cielo. El post-procesamiento también se ve afectado por esto, respaldado por Objetos Scriptables para mantener todos los valores y cómo cambian a lo largo del día, y la iluminación y la hora del día afectan los comportamientos y sensores de la IA.

Agregué la parte de la hora del día porque quería experimentar con la iluminación en tiempo real también porque también estábamos construyendo un segundo juego. Esto fue mi cosa divertida de fin de semana. Y luego, después de un tiempo, comencé a agregar algunos personajes, y empezó a sentirse como si tuviera un juego completo aquí. Desarrollé eso un poco más y hice que algunas de las personas en el trabajo lo jugaran, y lo disfrutaron.

La iluminación en tiempo real y millones de polígonos de hierba son posibles porque estamos usando Universal Render Pipeline (URP) y Forward+ rendering, junto con el GPU Resident Drawer y GPU occlusion culling. Hemos estado usando el SRP batcher antes de actualizar a Unity 6 desde Unity 2021.3. El Resident Drawer y el culling de oclusión mejoraron el rendimiento en aproximadamente un 20% sobre el SRP Batcher. Los sombreadores y texturas de menor complejidad también ayudaron con el rendimiento. Verificamos que todo esto funcionara muestreando con RenderDoc a medida que avanzábamos y solucionando problemas a medida que surgían. Al final, puedes jugar en el SteamDeck a 30-60 fps en configuraciones gráficas medias.

Realmente quería construir un gran entorno abierto que permita a los jugadores hacer lo que quieran. Es más un sandbox que algo como Call of Duty, donde solo estás bajando por el mismo pasillo con los mismos enemigos que aparecen en posición. Quería darle al jugador la libertad de elegir cómo abordar diferentes objetivos y mezclar la hora del día. Y luego, con el juego cooperativo, esto les permite dividirse en individuos o equipos de dos o simplemente quedarse en un gran grupo de cuatro, eso ha añadido bastante.

Vamos a expandir el juego, tenemos cinco misiones más en camino. Acabamos de terminar nuestro primer paquete de contenido, agregando otras 12 armas, 14 o 16 opciones de uniforme y un montón de nuevo equipo.

Realmente disfruté de los viejos Delta Force y Ghost Recon juegos, así que quería construir algo similar a esos. Tuve que mantener el estilo artístico simple porque soy ingeniero, no realmente un artista. Me estaba enfocando en hacer arte que pudiera hacer, así que si tuviera que hacer todo el juego yo mismo, podría hacerlo. De ahí proviene el estilo del juego. Pero creo que funcionó bastante bien, mezclando los efectos de iluminación en tiempo real y el post-procesamiento con texturas de aspecto antiguo y modelos de baja poligonización. Eso agrega muchas cosas juntas.

Creo que Valheim me dio mucha inspiración cuando salió porque antes de eso no tenía realmente todos los efectos de post-procesamiento y de iluminación, se veía mucho más como un juego de mediados de los 90. Luego vi lo que hicieron con muchos de los efectos que tenían, y pensé que yo también podría hacerlo.

¿Cuándo cambiaste a Unity 6?

El proyecto comenzó en Unity 2019, luego actualicé a Unity 2021.3. Me quedé con eso hasta finales del año pasado, cuando actualicé a Unity 6 solo para probar el culling de oclusión de GPU. Y eso nos dio un buen aumento del 15 al 20% en rendimiento.

Antes, estaba usando el SRP Batcher con URP y algunas otras cosas, y pude desactivar todas esas cosas y simplemente usar el culling de oclusión de GPU. No uso LODs, pero tiene la configuración para culling basado en el tamaño de la pantalla, así que activé todo eso, y nuevamente, fue una mejora del 15 al 20% en rendimiento. Y ahora tenemos el juego funcionando en la Steam deck. No he vuelto desde que vi los aumentos de rendimiento.

Jugabilidad en Dagger Directive

Hablemos un poco más sobre el lado de la red – ¿cómo estás usando Relay?

Es principalmente para los jugadores, para que no tengan que configurar un montón de cosas en su enrutador. Intenté el reenvío de puertos cuando tomé unos días para probar un montón de sistemas de multiplayer y ver qué funcionaba bien. Lo configuramos bastante rápido al principio, pero una vez que decidimos usar Unity 6 multiplayer para la red, simplemente procedí a configurar Relay, y hemos estado haciendo pruebas de esa manera desde entonces.

Para el rendimiento, hemos estado utilizando el simulador de red, que ha estado funcionando bien. Conectarse a un teléfono celular en un hotspot nos ha ayudado bastante con las pruebas de rendimiento.

También usaste Autoridad Distribuida. ¿Cómo surgió eso?

Pensé en hacer multiplayer para este juego después de que lanzamos la demo. El mayor punto de retroalimentación fue que la gente quería juego cooperativo – sabíamos que eso sería algo grande, pero estábamos pensando en guardarlo para el segundo juego.

Pero con el volumen de retroalimentación y después de hablar con nuestro editor, decidimos sentarnos y ver cuánto tiempo tomaría. Probé Photon y luego el sistema Fusion de Photon y luego miré un par de otras bibliotecas. Pensé en simplemente construir el mío propio, y luego decidí probar el Netcode for GameObjects. Decidí probar Autoridad Distribuida porque básicamente todo el juego estaba hecho – no quería lidiar con la solicitud y la aprobación de cambios de propiedad de GameObjects.

Dado que es un juego cooperativo, que la gente haga trampa no es realmente una preocupación que tengamos – si están haciendo trampa con sus amigos, entonces depende de ellos. También tenemos los trucos en el juego, así que pueden activar munición infinita y más de todos modos – así que si están duplicando objetos, realmente no importa.

Eso es lo que me ayudó a decidir ir con DA. Pudimos configurar estas cosas rápido, así que los otros dos miembros pudieron trabajar en terminar el contenido mientras yo me enfocaba en todas las cosas de red. Estimé que nos llevaría 12 o 13 semanas terminarlo todo, y terminó tomando alrededor de 14.

Jugabilidad en Dagger Directive

Estabas usando Relay, así que supongo que a veces lo ejecutas en un modo de conexión directa?

Sí. También configuré la conexión directa para que los jugadores puedan ejecutarlo ellos mismos y tener a sus amigos conectándose directamente a ellos. Tienen que configurar el reenvío de puertos en su enrutador, pero tengo instrucciones sobre cómo configurarlo. Pero entonces no hay migración de anfitrión, así que, si el anfitrión se desconecta, simplemente termina el juego para todos.

Esta funcionalidad es más si alguna vez cerramos como estudio o si Unity cierra los servidores de relay o algo así, los jugadores aún pueden jugar juegos de conexión directa, con suerte por un tiempo.

Eso tiene sentido. Eso es muy visionario y también bueno para los jugadores, así que es genial escuchar eso.

Casi todos los juegos en los que trabajé durante los últimos 15 años fueron multijugador, y ese ha sido un problema en todos los lugares donde he estado: algo se cierra inesperadamente y luego tenemos que apresurarnos a arreglar algo. Quería anticiparme a esas cosas.

Has mencionado la migración de anfitrión y las transferencias de propiedad en las discusiones. ¿Qué opinas del valor que aporta DA a esto? ¿Es una buena adición a tu juego y ayuda al desarrollo?

La migración de anfitrión, especialmente, ha sido casi sin problemas. De nuevo, esa es una de esas cosas que siempre ha sido un problema en los juegos en los que he trabajado en el pasado, donde el anfitrión desaparece de repente y luego tenemos que cambiar un montón de cosas y decidir quién posee qué y todo eso.

Pero ha habido muchas cosas que simplemente han funcionado. He estado haciendo esto para siempre, así que veo que eso sucede y soy muy sospechoso al principio. Pero también no hemos tenido problemas, o si encontramos un pequeño problema, simplemente voy a mirar la documentación y generalmente es como, “Oh, olvidé marcar una casilla que dice transferir automáticamente este objeto de juego a la siguiente persona,” o lo que sea. Solo era cuestión de asegurarme de configurar las cosas correctamente, así que si encuentro problemas puedo solucionarlos rápidamente con este sistema.

Consulta Dagger Directive en Acceso Anticipado en Steam, y ve la última actualización del equipo aquí. Aprende más sobre Autoridad Distribuida y otras soluciones multijugador de Unity, y encuentra historias de desarrolladores de Unity en nuestra página de Recursos.