Version: 2021.1
Multiplayer Overview
Using the Network Manager

Configurando un proyecto multijugador

Note: UNet is deprecated, and will be removed from Unity in the future. A new system is under development. For more information and next steps see this blog post.

Esta página contiene una descripción general de las cosas más básicas y comunes que necesita al configurar un proyecto de varios jugadores. En términos de lo que necesita en su proyecto, estos son:

  • Un Network Manager

  • Una interfaz de usuario (para que los jugadores encuentren y se unan a los juegos)

  • Jugadores Prefabs en red (para que los jugadores controlen)

  • Scripts y GameObjects que son multijugador

Hay variaciones en esta lista; por ejemplo, en un juego de ajedrez multijugador o en un juego de estrategia en tiempo real (RTS), no necesita un GameObject visible para representar al jugador. Sin embargo, es posible que aún desee un GameObject vacío para representar al jugador y adjunte scripts que se relacionen con lo que el jugador puede hacer.

Esta página introductoria contiene una breve descripción de cada uno de los elementos enumerados anteriormente. Sin embargo, cada sección se vincula a documentación más detallada, que debe seguir leyendo para comprenderla por completo.

También hay algunos conceptos importantes que debe comprender y tomar decisiones sobre cuándo construir tu juego. Estos conceptos se pueden resumir en términos generales como:

  • La relación entre un cliente, un servidor y un host (anfitrión)

  • La idea de autoridad sobre los GameObjects y sus acciones.

Para obtener más información sobre estos conceptos, consulte la documentación sobre Conceptos del sistema de red.

El Network Manager

El administrador de red es responsable de gestionar los aspectos de red de su juego multijugador. Debería tener uno (y solo un) Network Manager activo en su escena a la vez.

El componente Network Manager
El componente Network Manager

El componente integrado del Network Manager de Unity completa todas las características para administrar su juego multijugador en un solo componente. Si tiene requisitos personalizados que no están cubiertos por este componente, puede escribir su propio administrador de red en scripting en lugar de usar este componente. Si recién está comenzando con juegos de varios jugadores, debe usar este componente.

Para obtener más información, consulte la documentación en el Network Manager.

Una interfaz de usuario para que los jugadores se encuentren y se unan a los juegos

Casi todos los juegos multijugador brindan a los jugadores una forma de descubrir, crear y unirse a “instancias” individuales de juegos (también conocidas como “matches”). Esta parte del juego se conoce comúnmente como “lobby” y algunas veces tiene características adicionales como chat.

A typical multiplayer game lobby, allowing players to find, create and join games, as seen in the TANKS networking demo, available on the Asset Store.
A typical multiplayer game lobby, allowing players to find, create and join games, as seen in the TANKS networking demo, available on the Asset Store.

Unity tiene una versión incorporada extremadamente básica de dicha interfaz, llamada NetworkManagerHUD. Puede ser extremadamente útil en las primeras etapas de creación de su juego, ya que le permite crear fácilmente partidos y probar su juego sin la necesidad de implementar su propia IU. Sin embargo, es muy básico en funcionalidad y diseño visual, por lo que debe reemplazarlo con su propia IU antes de finalizar su proyecto.

El administrador de red integrado de Unity, HUD, se muestra en el modo MatchMaker..
El administrador de red integrado de Unity, HUD, se muestra en el modo MatchMaker..

Para obtener más información, consulte la documentación sobre el Network Manager HUD.

Los GameObjects jugador en red

La mayoría de los juegos multijugador tienen algún tipo de objeto que un jugador puede controlar, como un personaje, un automóvil u otra cosa. Algunos juegos multijugador no cuentan con un único “objeto jugador” visible, sino que permiten a un jugador controlar muchas unidades o elementos, como en el ajedrez o juegos de estrategia en tiempo real. Otros ni siquiera presentan objetos específicos, como un juego de pintura de lienzo compartido. Sin embargo, en todas estas situaciones, generalmente necesitas crear un GameObject que * conceptualmente * represente al jugador en tu juego. Convierte este GameObject en Prefab, y adjunta todos los scripts que controlan lo que el jugador puede hacer en tu juego.

Si está usando el componente Network Manager de Unity (consulte el * Network Manager*, arriba), asigne el campo Prefab al Player Prefab.

El administrador de red con un prefab Player Car asignado al campo Prefab Player.
El administrador de red con un prefab “Player Car” asignado al campo Prefab Player.

Cuando el juego se está ejecutando, el administrador de red crea una copia (una “instancia”) de su jugador Prefab para cada jugador que se conecte a la partida.

Sin embargo, y es posible que esto resulte confuso para las personas nuevas en la programación multijugador, debes asegurarte de que los scripts de tu jugado Prefab estén “al tanto” de si el jugador que controla la instancia está usando la computadora host ( la computadora que está administrando el juego) o una computadora cliente (una computadora diferente a la que está administrando el juego).

Esto se debe a que ambas situaciones ocurrirán al mismo tiempo

Scripts con capacidad para varios jugadores

Escribir scripts para un juego multijugador es diferente de escribir scripts para un juego de un solo jugador. Esto se debe a que cuando escribe un script para un juego de varios jugadores, debe pensar en los diferentes contextos en los que se ejecutan los scripts. Para obtener más información sobre los conceptos de red que se tratan aquí, consulte la documentación de Conceptos del sistema de red.

Por ejemplo, los scripts que coloque en su jugador Prefab deben permitir que el “propietario” de esa instancia de jugador lo controle, pero no debe permitir que otras personas lo controlen.

Debe pensar si el servidor o el cliente tienen autoridad sobre lo que hace el script. A veces, desea que el script se ejecute tanto en el servidor como en los clientes. Otras veces, solo quiere que el script se ejecute en el servidor, y solo quiere que los clientes repliquen cómo se mueven los GameObjects (por ejemplo, en un juego en el que los jugadores recogen GameObjects coleccionables, el script solo debe ejecutarse en el servidor para que el servidor pueda ser la autoridad sobre el número de GameObjects recopilados).

Dependiendo de lo que haga su script, debe decidir qué partes de su script deben estar activas en qué situaciones.

Para el jugador GameObjects, cada persona generalmente tiene control activo sobre su propia instancia de jugador. Esto significa que cada cliente tiene autoridad local sobre su propio jugador, y el servidor acepta lo que el cliente le dice sobre lo que está haciendo el jugador.

Para los GameObjects que no son jugadores, el servidor generalmente tiene autoridad sobre lo que sucede (como si un elemento ha sido recolectado) y todos los clientes aceptan lo que el servidor les dice sobre lo que le sucedió a GameObject.

Multiplayer Overview
Using the Network Manager
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961