Version: 2018.1
Conceptos de Networking de Alto Nivel (Legacy -Depreciado)
Network Views (Legacy)

Elementos de redes en Unity (Legacy)

(Para nuevos proyectos puedes usar el Nuevo Networking System introducido en 5.1. Esta información es para antiguos proyectos usando el sistema antiguo de networking.)

El networking nativo de Unity soporta todo lo discuto en la página anterior. La creación del servidor y la conexión al cliente, compartir datos entre clientes conectados, determinar qué jugador controla qué objetos, y perforar a través de las variaciones de la configuración de red son todos apoyados fuera de la caja. Esta página le guiará a través de la implementación específica de Unity de estas prácticas de redes.

Creando un servidor

Antes de empezar a jugar un juego en red, tiene que determinar los diferentes computadores con los que estará comunicando. Para hacer esto, usted tiene que crear un servidor. Esto puede ser una máquina que también está ejecutando el juego o puede ser una máquina dedicada que no está participando en el juego. Para crear el servidor, simplemente llame a Network.InitializeServer() desde un script. Cuando desea conectarse a un servidor existente como un cliente, llama a Network.Connect() en su lugar.

En general, le será útil familiarizarse con la totalidad de la clase Network.

Comunicándose utilizando Network Views

El Network View es un componente que envía dato a través de la red. Los Network Views hacen que sus GameObjects sean capaz de enviar datos utilizando llamadas RPC o State Synchronization. La manera que usted utiliza Network Views determinará cómo el comportamiento de red de su juego funcionará. Los Network Views tienen pocas opciones, pero son increíblemente importantes para su juego en red.

Para más información utilizando Network Views, por favor leer la página guía del Network View y página de referencia del componente.

Remote Procedure Calls

Remote Procedure Calls (RPCs) son funciones declaradas en scripts que están anexados a un GameObject que contiene un Network View. El Network View debe apuntar al script que contiene la función RPC. La función RPC luego puede ser llamada desde cualquier script dentro de ese GameObject.

Para más información utilizando RPCs en Unity, por favor mirar la página de detalles de RPC.

Sincronización de Estados

State Synchronization es el intercambio continuo de datos entre todos los clientes del juego. De esta manera la posición de un jugador se puede sincronizar sobre todos los clientes, por lo que parece que se controla localmente cuando los datos se están entregando realmente a través de una red. Para sincronizar el estado dentro de un GameObject sólo tiene que agregar una NetworkView a ese objeto y decirle qué observar. Los datos observados se sincronizan a continuación entre todos los clientes en el juego.

Para más información acerca del uso de State Synchronization en Unity, por favor mirar la página de State Synchronization.

Network.Instantiate()

Network.Instantiate() le deja a usted instanciar un prefab en todos los clientes de una manera natural y fácil. Esencialmente es una llamada Instantiate(), pero realiza la instanciación en todos los clientes.

Internamente Network.Instantiate es simplemente una llamada RPC almacenada en memoria intermedia que se ejecuta en todos los clientes (también localmente). Asigna un NetworkViewID y lo asigna al prefab instanciado que asegura que se sincroniza correctamente en todos los clientes.

Para más información por favor leer la página de Network Instantiate.

NetworkLevelLoad()

Tratar de compartir datos, el estado de los jugadores de los clientes, y los niveles de carga puede ser un poco abrumador. La página Network Level Load contiene un ejemplo útil para administrar esta tarea.

Master Server (Servidor Maestro)

El Master Server ayuda emparejar juegos. Cuando usted empieza un servidor usted se conecta al master server, y proporciona una lista de todos los servidores activos.

El Master Server es un lugar de encuentro para servidores y clientes dónde los servidores son anunciados y clientes compatibles se pueden conectar a juegos en ejecución. Esto evita la necesidad de manipular direcciones IP para todas las partes involucradas. Incluso puede ayudar a los usuarios a alojar juegos sin que tengan que meterse con sus routers donde, en circunstancias normales, que sería necesario. Puede ayudar a los clientes a evitar el firewall del servidor y llegar a direcciones IP privadas que normalmente no son accesibles a través de la Internet pública. Esto se hace con la ayuda de un facilitador que facilita el establecimiento de la conexión.

Para más información por favor leer la página del Master Server.

Minimizando el ancho de banda

Utilizar la cantidad mínima de ancho de banda para que su juego funcione correctamente es esencial. Existen diferentes métodos para enviar datos, diferentes técnicas para decidir qué es lo que desea enviar y otros trucos a su disposición.

Para obtener sugerencias y trucos para reducir el uso del ancho de banda, lea la página Minimizar la anchura de banda.

Depurando Juegos en Red

Unity viene con varias instalaciones para ayudarle a depurar su juego en red.

  1. El Network Manager se puede utilizar para registrar todo el tráfico que entra y sale de la red.
  2. Utilizando la vista del Inspector y Hierarchy efectivamente puede hacerle seguimiento a la creación de objetos y mirar Ids de la vista etc.
  3. Usted pude ejecutar Unity dos veces en la misma maquina, y abrir diferentes proyectos en cada uno. En Windows, esto se puede hacer al ejecutar otra instancia de Unity y abrir el proyecto desde el project wizard. En Mac OS X, varias instancias de Unity se pueden abrir desde la terminal, y un argumento -projectPath se puede especificar. /Applications/Unity/Unity.app/Contents/MacOS/Unity -projectPath “/Users/MyUser/MyProjectFolder/” /Applications/Unity/Unity.app/Contents/MacOS/Unity -projectPath “/Users/MyUser/MyOtherProjectFolder/”

Asegúrese de que el reproductor se ejecute en segundo plano al depurar la conexión en red porque, por ejemplo, si tiene dos instancias ejecutándose a la vez, una de ellas no tiene foco. Esto romperá el bucle de red y causará resultados no deseados. Puede habilitarlo en Edit->Project Settings->Player en el editor o con Application.runInBackground

Conceptos de Networking de Alto Nivel (Legacy -Depreciado)
Network Views (Legacy)