Multijugador Tutorial 1: conceptos

2
  • 0 favourites

Conectividad

El motor multijugador de Construct 2 está basado en WebRTC DataChannels. Esto es una tecnología cliente-a-cliente (peer-to-peer) para una red de navegador. Los jugadores se conectan directamente el uno al otro, en vez de ir hacia un servidor central.

A pesar del hecho de que los jugadores se puedan conectar directamente el uno al otro, los juegos en sí mismos todavía están basados en un servidor con clientes. El primer cliente en unirse a un juego se convierte en el host. Todos los jugadores que se unan posteriormente se conectarán únicamente al host. Los jugadores que no hacen de host son llamados clientes (peers), el host actúa como el servidor del juego. La principal diferencia con los servidores centrales es que el host puede ser cualquiera que se una al juego, en vez de que un servidor que se mantiene encendido y es mantenido por el desarrollador del juego. El host también puede ser un participante activo en el juego, mientras que los servidores centrales a menudo sólo mueven ciegamente el juego para otros jugadores.

También es posible usar servidores centrales: puedes diseñar tu juego de forma que el host no es un participante, y dejar que corra en un servidor dedicado. Sin embargo, esto requiere pagar por el servidor, así que el acercamiento cliente-a-cliente es probablemente más barato.

Para que un cliente pueda conectarse a un host necesita saber dónde están y cómo conectarse a ellos, esto involucra encontrar su Dirección IP, determinando si ellos tienen un enrutador que restringe conexiones, y trabajar sobre esas restricciones si es posible.

Los enrutadores restrictivos son muy comunes, el internet se quedó sin direcciones IPv4 hace muchos años. La solución fue esconder múltiples usuarios detrás de una sola dirección IP. Esto es hecho por Network Address Translation (NAT), por ejemplo, en tu propio hogar u oficina, puede haber un enrutador que conecta a todos en la red interna con el Internet. En este caso, una variante de NAT haría como si todos parecieran venir de la misma dirección IP, pero sobre diferentes puertos. Hay muchas otras variantes de NAT, incluyendo un NAT a gran escala aplicada para regiones enteras, ISPs, o redes móviles, y algunas son más restrictivas que otras. Desafortunadamente esto significa que en algunos casos las conexiones no son posibles, particularmente si ambos, el host y el cliente están tras un NAT altamente restrictivo. Sin embargo, con configuraciones comunes los jugadores pueden usualmente conectarse los unos a los otros, y generalmente, entre más cerca geográficamente se encuentren, más fácilmente funcionará la conexión y tendrá un mejor servicio. Ésta es la razón por la que es mejor alentar a los jugadores a conectarse con otros jugadores de al menos su mismo continente.

La conectividad es manejada automáticamente por WebRTC. Éste intentará determinar cómo conectar con el host trabajando a través de las restricciones del NAT. Esto también significa que no hay un puerto específico por el que los juegos funcionen; utilizará cualquier puerto que WebRTC encuentre que está funcionando. Por ejemplo, en el diagrama de arriba, tres clientes comparten una dirección IP, así que un cliente en el otro lado debe conectarse a esa dirección IP por el puerto A para alcanzar al primer cliente, o el puerto B para llegar al segundo cliente, y así. Sin embargo, ten en cuenta que en algunos casos dos usuarios no podrán conectarse entre ellos, y puede ser necesario encontrar otro jugador que actúe como el host.

IPv6 está ganando gradualmente más adopción en el internet con un mayor espacio de direcciones. Esto permitirá que cada dispositivo conectado a la internet tenga una dirección IP única de nuevo, haciendo NAT innecesario y permitiendo conexiones entre cualquier persona sin importar su configuración de red. Hasta que esto ocurra, los problemas de conexión son una desafortunada consecuencia. Google incluso publica estadísticas en la adopción de IPv6.

  • 0 Comments

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