¿Qué estás buscando?
Games

Cómo elegir el netcode adecuado para tu juego

BRANDI HOUSE / UNITY TECHNOLOGIESContributor
Sep 8, 2020|6 minutos
Cómo elegir el netcode adecuado para tu juego

Casi todos los juegos multijugador tienen que tener en cuenta y resolver problemas inherentes a la red que afectan a la experiencia de juego, como la latencia, la pérdida de paquetes y la gestión de escenas. Los juegos resuelven estos retos de diversas maneras.

Encontrar la solución adecuada depende del género de tu juego, la escala de sus jugadores y objetos en red, la competitividad y otros aspectos, como cuánto control se necesita sobre la capa de red. Diferentes escenarios requieren diferentes soluciones de netcode.

En este blog, cubrimos las librerías de red más comunes utilizadas en el motor Unity, además de los resultados de un estudio realizado sobre la experiencia de los desarrolladores con estas soluciones, para ayudarte a determinar cuál podría ser la adecuada para tu proyecto.

¿Qué es el netcode?

Netcode es un término de alto nivel que muchos ingenieros utilizan para referirse a los marcos de trabajo diseñados específicamente para facilitar la creación de ciertos aspectos del juego en red, como la sincronización de datos o la compensación de retrasos.

Un marco totalmente interconectado contiene dos componentes esenciales:

1. Una capa de transporte (base) que gestiona todo el tráfico y los paquetes enviados a/desde un cliente, host o servidor.

2. Una capa de abstracción de alto nivel que simplifica las necesidades comunes de juego en red y se integra con herramientas

A menudo, una "solución de código de red" se refiere a esa segunda capa de abstracción, ya que es aquí donde se implementan la jugabilidad en red y las optimizaciones.

Las distintas soluciones de netcode tienen diferentes limitaciones y capacidades que pueden facilitar o dificultar la creación de tu experiencia multijugador. Es importante saber exactamente lo que se quiere construir y evaluar las opciones antes de empezar, para ayudar a reducir las refactorizaciones que podrían resultar costosas.

Soluciones de netcode de Unity

Unity cuenta con dos soluciones de netcode first-party diferentes: Netcode para GameObjects y Netcode para Entidades.

Netcode for GameObjects

El paquete Netcode for GameObjects se creó para ayudarle a sincronizar más fácilmente las escenas y los datos de GameObjects en varios clientes y plataformas con modelos autorizados por el cliente o el servidor. El motor Unity te ayuda a optimizar tus juegos multijugador con herramientas para perfilar la red tanto en modo Play como en tiempo de ejecución.

También puedes utilizar Relay de Unity Gaming Services, que es un rentable servicio de acompañamiento entre iguales, para ampliar las pruebas de juego y crear un juego multijugador sin tener que invertir en un alojamiento dedicado.

NetCode for Entities

Ampliar el abanico de posibilidades en el próximo Unity 2022 LTS. Añada la capacidad de dirigirse a juegos multijugador de acción competitiva con el paquete Netcode for Entities basado en ECS, creado para ofrecer rendimiento y escalabilidad. Puedes apuntarte a un ambicioso juego de servidor con predicción, interpolación y compensación de lag.

Gestiona los costos con un objetivo de compilación de servidor dedicado que pueda eliminar automáticamente los recursos. Impleméntalo con el alojamiento de servidores de juegos de Unity Gaming Services, un enfoque agilizado para mantener la resiliencia y escalabilidad en tu infraestructura de juegos, de modo que puedas centrarte en ofrecer la mejor experiencia a tus jugadores.

Cómo evaluar distintas soluciones de código neto

Unity ha recopilado información sobre algunas de las soluciones de netcode de terceros más utilizadas, y hemos creado un árbol de decisiones para ayudarte a decidir qué framework te conviene más.

Para crear estas herramientas, recopilamos y analizamos datos de tres fuentes:

  • Una encuesta realizada a más de 200 usuarios de Unity en la que se pedía información sobre sus experiencias con determinados marcos de trabajo de netcode.
  • Más de 20 entrevistas en profundidad con usuarios que desarrollan activamente juegos multijugador con Unity
  • Aprendizajes de los prototipos que construimos con MLAPI (ahora conocido como Netcode for GameObjects), DarkRift 2, Mirror y Photon Quantum.

Los clientes puntuaron y clasificaron las mejores soluciones de netcode en diferentes ejes basándose en su experiencia.

1. Estabilidad y apoyo

Las redes son complejas, por lo que el nivel de estabilidad y asistencia que reciba a través de su solución de código de red es fundamental. La estabilidad y la compatibilidad de cada solución de código de red se evaluaron en función de tres ejes: la probabilidad de que se produjeran errores o cuelgues, el tiempo de respuesta para solucionar problemas o ayudar a depurar un problema, y la probabilidad de que se produjeran cambios de última hora en las API.

2. Facilidad de uso

Recopilamos las evaluaciones de los usuarios sobre lo fácil que es empezar y realizar tareas comunes, incluida la provisión de buenas muestras, documentación, tutoriales y la oferta de API sencillas de la solución para la creación de prototipos.

3. Rendimiento

¿Quién quiere una solución de bajo rendimiento? Para puntuar cada solución de código de red evaluada, buscamos una GC/asignaciones limitadas, una sobrecarga de latencia mínima, un cálculo eficaz e, idealmente, la capacidad de multihilo.

4. Escalabilidad

Dependiendo del género de juego que quieras crear, la escalabilidad de la solución de código de red es una consideración importante. Al igual que con el rendimiento, evaluamos la capacidad de la solución para admitir un mayor número de clientes conectados sin sacrificar en gran medida el rendimiento.

5. Amplitud de características

Disponer de una solución de código de red con todas las funciones es importante para satisfacer las necesidades de cualquier género o juego específico de tu proyecto. Para clasificar las soluciones, nos hemos centrado en características de nivel medio como la replicación de objetos y variables, las RPC, la gestión de escenas, etc. También buscamos características de nivel superior, como la predicción y la compensación de retrasos.

6. Costo

Para que pueda presupuestar adecuadamente su solución de netcode, hemos incluido también evaluaciones del coste de cada solución. Esta consideración tiene en cuenta tanto el coste de las bibliotecas/soluciones como posibles costes ocultos, como los gastos generales de funcionamiento que deben gestionarse por separado.

¿Cuál es la mejor solución de netcode para ti?

Antes de tomar una decisión sobre una solución de netcode, es importante tener en cuenta algunas cosas.

En primer lugar, le recomendamos encarecidamente que siga realizando su propia evaluación. Nuestro resumen de las opciones más comunes puede ser útil, pero también debe hacer una evaluación basada en las características específicas de su juego.

En segundo lugar, esta lista se basa en una evaluación realizada en 2020 y no representa todas las alternativas de soluciones de código de red o capa de transporte disponibles en la actualidad.

Por último, considera cuánto trabajo y mantenimiento adicional relacionado con la red estás dispuesto a asumir. ¿Necesita tu juego tanta sobrecarga de red?

Si estás construyendo algo casual o cooperativo que no requiere una sincronización perfecta de todos los estados de los jugadores a través de los dispositivos, considera una solución de netcode con menos sobrecarga y costo de desarrollo como Netcode para GameObjects.

Si está creando un juego de ritmo más rápido y orientado a la acción, en el que las habilidades físicas de los jugadores compiten entre sí, considere una solución como Netcode for Entities. Esto puede apoyar cosas como la predicción del cliente y tiene un método para compensar el retraso.

Evaluación de la solución de código de red 2020

La información que figura a continuación es un comienzo, pero le recomendamos que descargue también el informe completo sobre el código de red, en el que profundizamos en estas soluciones de código de red de terceros:

Nota: El PDF recoge las soluciones más consultadas por los clientes, pero hay más. Algunos clientes hablaron de otras soluciones para las que aún no hemos reunido suficientes pruebas de clientes para evaluarlas, como Forge, Normcore, Bolt, LL (Enet, LiteNet, etc.). Le animamos a que los incluya en sus consideraciones para ver si pueden ser una opción para su configuración.

Imagen
Introducción al desarrollo multijugador en Unity

Tanto si estás creando el próximo exitazo de battle royale como un acogedor cooperativo online, es esencial que entiendas los fundamentos de las redes multijugador y las soluciones de netcode que tienes a tu disposición.

Vea la muestra cooperativaBoss Room de Unity para un ejemplo de calidad de producción de un proyecto hecho con Netcode para GameObjects. Si buscas un ejemplo de un juego multijugador competitivo de ritmo rápido que también funcione en red, echa un vistazo a la muestra de Unity ECS Network Racing creada con Entities Component System. Para ver un ejemplo de juego que utiliza plenamente todo lo que el Alojamiento de Servidores de Juegos puede ofrecer, echa un vistazo al ejemplo de Battle Royale construido con Photon Fusion.

Feliz creación.

Nota del editor: Este blog se actualizó en marzo de 2023 con la información más reciente sobre las soluciones de netcode de Unity con el fin de proporcionar más información útil para los desarrolladores que eligen la solución de netcode adecuada para su juego. Los datos del informe son todavía de 2020.