Juegos Focus: Creación y funcionamiento de juegos conectados con redes multijugador

Este es el octavo blog de nuestra serie Games Focus , que destaca las principales iniciativas de desarrollo de productos para el próximo año y los siguientes. En esta entrega, cubrimos el estado, los próximos planes de lanzamiento y la visión de futuro de Unity Multiplayer Networking.
Hola, mi nombre es Kiki Saintonge y soy gerente de producto en el equipo multijugador - el que se centra en la entrega de Unity's Netcode para GameObjects de Unity.
Llevo aproximadamente un año en Unity, pero soy desarrollador indie y aficionado a Unity desde 2013. Mi pasión son los juegos, sobre todo jugar a las cosas tan inspiradoras que hacéis. Me hace mucha ilusión hablar de nuestras soluciones multijugador en este post de hoy, sobre todo porque muchos de vosotros habéis expresado la necesidad y el deseo de contar con una solución más completa y accesible para el desarrollo multijugador. Estamos más cerca de lo que crees.

Seamos sinceros: Crear juegos multijugador puede ser realmente difícil, desde diseñar la mecánica hasta implementarla y probarla. Hay que tener en cuenta muchas cosas (latencia, pérdida de paquetes, gestión de escenas, lo que debe o no enviarse por la red), muchas de las cuales son difíciles de controlar o simular. Incluso nuestras soluciones de red de terceros necesitan herramientas de terceros (¿cuartos?) para ver qué diablos está pasando.
Construir un sistema de redes completo para tu juego debería ser como el propio juego: único y refinado para adaptarse a la experiencia de tu juego.
Con esto en mente, queríamos crear una solución de código de red lo suficientemente flexible como para adaptarse a todos los aspectos fundamentales de tu juego multijugador, y que al mismo tiempo te facilitara el uso de herramientas o servicios de terceros si lo necesitabas. Este es el objetivo fundamental de nuestras soluciones de netcode.

También es importante tener en cuenta que con el desarrollo multijugador vienen los servicios y la escala, dos cosas en las que puede que no hayas pensado en el contexto de un solo jugador o cooperativo. Unity Gaming Services es nuestra plataforma de reciente lanzamiento que incluye servicios de alojamiento de servidores de juego (Multiplay), Matchmaker, Relay y Lobby. Se diseñó para ofrecerle todas las herramientas que necesita para construir bases sólidas, crear experiencias de jugador atractivas e impulsar el crecimiento del juego, todo dentro del mismo ecosistema integrado.

Este año hemos anunciado algunos lanzamientos de soluciones de netcode increíbles. Nuestra primera gran versión de Netcode para GameObjects ya está disponible en 2020 y 2021 LTS.
Esta solución Netcode basada en GameObject te ayuda a empezar a crear juegos multijugador cooperativos a pequeña escala. Sin embargo, si has creado tu experiencia utilizando DOTS (Entidades), también nos complace anunciar nuestra solución Netcode para Entidades que llegará al Tech Stream de 2022, que te ayudará a prepararte para una experiencia multijugador a mayor escala. Esté atento al próximo artículo de esta serie para obtener más información.
Estas pilas cubren un amplio inicio fundacional para el desarrollo multijugador. Juntos, constituyen un paso de muchos para ponerte en pie con los juegos multijugador. Estas versiones también se centran específicamente en escenarios de red críticos, como la abstracción de cómo comunicarse con servidores y clientes, el envío de datos de objetos a través de la red y el manejo de entradas.
Esta versión también es compatible con algunas herramientas esenciales que permiten realizar un seguimiento de la pérdida de paquetes, el tamaño y la latencia de los objetos en red. Network Profiler es una extensión del Profiler integrado en el Editor, y Runtime Network Stats Monitor (RNSM) es una vista "Profiler" más ligera y personalizable de los estados de red que puede ejecutarse en versiones independientes para pruebas de juego.
Puedes instalar estas herramientas a través del paquete com.unity.multiplayer.tools en el Editor.
Todas nuestras pilas de Netcode -sí, eso incluye las entidades- se construyen sobre nuestra capa de transporte. Esta capa es independiente del código de red y puede utilizarse con cualquier solución.
El protocolo de transporte Unity (o UTP) amplía el protocolo de datagramas de usuario con soporte añadido para Unity Relay y seguridad adicional mediante DTLS. Esta capa funciona en Windows, Mac, Linux, iOS, Android y las principales consolas.
También proporcionamos algunas capacidades de simulación de redes ligeras a través de las propiedades del Simulador de depuración de nuestro paquete de transporte. Esto le permite acelerar o simular problemas de latencia o ancho de banda al realizar pruebas en el Editor.
Si quieres acceder directamente a esta biblioteca de redes de bajo nivel, puedes instalarla directamente a través del paquete com.unity.transport.
Aunque Netcode para GameObjects es relativamente nuevo, ya se están creando juegos con él.

El maravilloso equipo de Fika Productions y Team17 está trabajando en un juego maravillosamente dibujado a mano, Ship of Fools. Es un trepidante juego cooperativo multijugador de persuasión náutica desarrollado completamente en Netcode para GameObjects.
Buscamos constantemente cubrir lagunas y desmitificar lo que ocurre en la red con herramientas multijugador.

El modo de juego multijugador sería un gran primer paso para hacer del desarrollo multijugador una experiencia de Editor de primera clase.
El objetivo de esta herramienta multijugador es "simplemente funcionar" una vez que se entra en el modo de juego. Ofrece la misma experiencia que el flujo de trabajo para un solo jugador, pero ahora puedes tener hasta cuatro clientes ejecutándose dentro de la misma sesión de Editor, cada uno recibiendo su propia información de consola y pudiendo diferenciarse con un sistema de etiquetado basado en la red.

El simulador de red es otra función que nos gustaría sacar de la capa de transporte y convertirla en una herramienta más funcional con una interfaz de usuario que permita introducir picos de retraso, establecer velocidades de ping, activar conexiones/desconexiones a voluntad e incluso personalizar determinados escenarios de red durante las pruebas de juego.
Estamos estudiando una mejor integración de nuestro paquete de transporte con Burst, así como la compatibilidad con WebSockets.
Disponer de un servidor dedicado es la base de muchos juegos multijugador, y conlleva la necesidad de un control más preciso del tipo de servidor headless que se está construyendo.
Hemos empezado a investigar el flujo de trabajo del servidor dedicado. Esto empieza por darte más control y claridad sobre qué activos quieres dentro de un servidor y cuáles no. Esencialmente, está seleccionando el contenido que desea en sus construcciones de servidor, lo que le ahorra tiempo y potencialmente ancho de banda a largo plazo.
Si quieres ver el estado de estas funciones y otras más en Netcode for GameObjects, consulta nuestra hoja de ruta de redes multijugador para ver lo que se incluye en la versión 1.0 y lo que se está preparando para futuras versiones. También puedes consultar nuestra reciente sesión sobre la hoja de ruta de Unite 2022 para obtener una visión general de todo el ecosistema de Unity.
Crear juegos multijugador no es fácil, y es común sentirse abrumado cuando se explora el desarrollo de un juego multijugador - incluso con los documentos SDK proporcionados.
Nuestro objetivo es equiparte y apoyarte con las herramientas necesarias para que tus jugadores disfruten de grandes experiencias de juego multijugador. Parte de esa promesa consiste en proporcionar no sólo la tecnología de redes básica, sino también la documentación y las plantillas educativas, como Boss Room, que necesitará para comprender su aplicación.
Hay muchos recursos disponibles hoy en día que puedes utilizar para aprender más sobre las soluciones multijugador de Unity.

Habitación del jefees un proyecto de ejemplo de juego cooperativo a pequeña escala creado con Netcode para GameObjects. Está diseñado para ser utilizado en su totalidad para ayudarle a explorar los conceptos y patrones detrás de un flujo de juego multijugador.

Seguimos desarrollando proyectos internos para poner de relieve las nuevas funciones y las posibilidades generales de Netcode for GameObjects.
Nuestro último juego es Gatitos Galácticosun shooter 2D, multijugador, jugable, de código abierto y cooperativo.
Para empezar, echa un vistazo a estas entradas de blog para conocer la suite multijugador de Unity:
- Experiencias multijugador con Relay y Lobby
- Enter the Boss Room: nuestro nuevo juego multijugador de muestra
- Estado del comportamiento perturbador en los juegos multijugador
- Cómo elegir el código de red adecuado para tu juego
Además de algunos recursos asombrosos creados por nuestra increíble comunidad:
Esperamos que siga participando en nuestra serie Enfoque en los Juegos con sus comentarios. Publica tus preguntas y comentarios para este blog en el foro multijugador o en este hilo dedicado.
Visite nuestro Productboard para conocer todos los detalles de la hoja de ruta. Tendrás que iniciar sesión con tu ID de Unity y aceptar el uso de cookies funcionales. Puede hacer clic en cada tarjeta de este tablero interactivo para obtener más información sobre cada tema y compartir sus comentarios. Haga clic en una tarjeta, seleccione el nivel de importancia del tema para usted, añada su punto de vista y envíela. Estos comentarios se envían directamente a los equipos de producto correspondientes.
Netcode para GameObjects es una solución de código de red capaz, pero si estás buscando construir algo mucho más grande - piensa en galaxias o MMO multiservidor con miles de jugadores activos a la vez - querrás estar atento a la publicación de nuestro próximo blog de la serieserie Game Focusque tratará sobre cómo crear mundos más grandes y entornos más ricos.
