Multiplayer tutorial 3: Pong

2

Index

Tagged

Stats

11,236 visits, 18,626 views

Tools

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 21 Dec, 2014. Last updated 25 Feb, 2019

Grupo "Signalling"

Este grupo es similar al anterior ejemplo de chat este es acorde con la conexión te los servidores de señalización, inicio de sesión, unión a salas y determinar si somos el anfitrión de la sala. Sin embargo hay algunas diferencias clave que tratamos con objetos y la sincronización de tiempo real.

Lo primero de todo, en On Start of layout debemos establecer los objetos y los datos que vamos a transmitir. La primera acción establece las entradas que los peers envían al anfitrión. Para prevenir trampas, los peers solo envían entradas al anfitrión, quien realiza las pruebas de la actual colisión con las paletas y la bola. La única entrada que el peer tiene es la posición vertical (Y) de su paleta.

Las entradas que los peers envían al anfitrión son llamadas client input values. En este caso usamos una entrada que llamamos "y", para la posición Y de la paleta. Esto usa un entero de 16 bits, esto solo usa dos bytes y las posición sub-pixel no importan. El valor de la entrada también usa interpolación Linear. Este significa que incluso si las actualizaciones llegan al anfitrión con una frecuencia baja, el motor multijugador adivina los valores intermedios asumiendo el movimiento lineal de la paleta. Esto asegura un movimiento suave para la paleta. Si seleccionamos None para la interpolación, el movimiento de la paleta puede a menudo mirarse entrecortado.

La siguiente parte de el evento establece que los objetos y sus variables de instancia son sincronizadas.

la primera acción usa la acción del objeto de multijugador Sync object. Esto es una acción clave para indicar que los objetos deben ser enviados a través de la red. Sincronizar un objeto con one-way: se refiere a cuantos de estos objetos existen host tells peers y donde están. Los peers solo reciben estos datos y cualquier cambio que el peer crea a estos objetos será ignorado y anulado. Los valores de entrada son las únicas maneras que los peers tienen de afectar el juego y los únicos datos del juego que son enviados hacia el peer host.

El anfitrión tiene versión autoritaria del juego y los peers hacen su mejor esfuerzo por mostrar lo mismo que tiene el anfitrión. El anfitrión es el único responsable de crear, mover y destruir estos objetos; como lo hace, Sync object también causa que los objetos puedan crearse, moverse y destruirse para los peers conectados. Todo esto pasa internamente en el engine multijugador como consecuencia de esta acción.

Desde Sync object se va a mover objetos por si mismo y solo el anfitrión esta "realmente" corriendo el juego, los peers también desactivan todos los comportamientos de los objetos. El comportamiento Bullet se debe desactivar cuando actúa como un peer, ya que Sync object ya estará en movimiento en el host, y teniendo el comportamiento habilitado en el peer podría hacer que el comportamiento cause conflictos. En este ejemplo, el comportamiento de la bala está desactivado inicialmente y es activado en los eventos cuando actúa como host.

Sync object puede actualizar la posición, ángulos, ambos o nada de los objetos. En este caso solo estamos interesados en la posición, ya que el angulo de los objetos no son importantes para la jugabilidad y esto solo sería un desperdicio de ancho de banda enviando los datos acerca de los ángulos de los objetos. El parámetro Bandwidth permite poder reducir la máxima tasa de actualización desde el host. Esto normalmente no es necesario - consulte el manual de entrada para encontrar mas información acerca de la opción.

El objeto Sync object por defecto no transmite ningún otro dato y las variables de instancia no son actualizadas. Sería un desperdicio actualizar automáticamente cada variable de intancia, ya que algunos de ellos son usados solo localmente. Después de la acción Sync object, podemos opcionalmente usar cualquier numero de las acciones Sync instance variable para agregar variables de instancia para el anfitrión para también enviárselo a los peers (y como con Sync object, las variables de instancia son actualizados automáticamente). Es importante tener en cuenta que Sync instance variable sólo puede sar usada despues de Sync Object. Por si mismo no hace nada; la acción significa "también sincronizar esta variable a un objeto ya sincronizado.

La única variable que sincronizamos en este caso is la variable points del objeto de la paleta. Esta una manera simple para todos para saber la puntuación de cada jugador.

La etiqueta de valor para cliente es usada si la variable de instancia también corresponde a un valor de entrada del cliente. Esto no es necesario en este ejemplo, pero va a cubrirse en el próximo tutorial.

El objeto ball debe también sincronizarse, así el peer puede vere donde esta. Nos obstante no hay necesidad de sincronizar alguna otra cosa de su posición.

Ahora que todos las entradas del cliente y los objetos de sincronización han sido configurados, la última acción en On Start of layout se conecta con el servidor de señalización.

  • 0 Comments

Want to leave a comment? Login or Register an account!