¿Cómo funcionan los juegos multijugador en línea?

En los juegos multijugador en línea, supondré que te refieres a un juego en red, donde hay uno o más nodos / computadoras conectados entre sí.

Estructura basica

Dentro del juego, generalmente hay dos tipos de nodos:

  • Servidor : aloja el juego y responde a las solicitudes
  • Cliente : se conecta al servidor y envía solicitudes

Entonces, ¿de qué tipo de solicitudes estamos hablando aquí? Pueden ser cualquier dato. Por ejemplo, en un juego de Starcraft, moviste un marine, llamémoslo Bob, a las coordenadas hipotéticas (20, 10). Su cliente envía una solicitud al servidor para mover ese marine a (20, 10).

En este punto, el cliente y el servidor pueden tener dos estados diferentes dependiendo de si el código de red (netcode) se basa en una infraestructura de servidor autorizada o no autorizada.

En un enfoque de servidor autorizado , el servidor tiene la última palabra sobre si la solicitud está registrada y es válida o si se ignora y se descarta. Si la respuesta es válida, actualizará el remitente, es decir, usted y todos los demás clientes conectados acerca de la solicitud.

En un servidor no autorizado , el cliente no tiene que esperar la respuesta del servidor para continuar con el juego.

Escenario del mundo real

Volvamos al juego de Starcraft. Cuando emitió la orden para que Bob se dirigiera a (20, 10), su oponente, el otro cliente, necesita ser informado de su acción y mover a Bob en su pantalla. Si Starcraft adoptara el enfoque de servidor no autorizado y su solicitud nunca llegara a su oponente, ¡esto significará que la versión de Bob de su oponente podría no estar en la misma coordenada que su versión de Bob! ¿Qué sucede si allí había emitido una orden para mover su enjambre de zerglings unos segundos antes de las mismas coordenadas? ¿Quién tiene ahora el estado correcto del juego?

Entonces parecía que tener un servidor autorizado resolvería todos los problemas; espera, no lo hace. Más específicamente con precisión y latencia. Estos dos factores son los principales desafíos para construir un juego multijugador en línea.

Precisión : cuán homogéneos son los clientes y cuán pocas de las solicitudes / respuestas se descartan o se pierden.

Latencia : el tiempo que tarda una solicitud en llegar al servidor y su respuesta para comunicarse con usted.

Ambos problemas se originan por la poca confiabilidad de internet. Para más detalles. leer Fiabilidad (redes de computadoras).

Para garantizar la precisión , uno tiene que asegurarse de que todas las solicitudes y respuestas estén en orden y ninguno de los clientes se pierda; el estado de cada cliente también debe ser el mismo, lo que significa que cuando uno de los clientes tiene un estado diferente (es decir, alguien tiene una conexión intermitente), todos los demás clientes tienen que alcanzar ese estado antes de que alguien pueda realizar ningún cambio. Este es su caso común del `retraso` en Starcraft.

Para garantizar la latencia , uno debe asegurarse de que el cliente no sienta ningún punto de retraso entre la solicitud de su cliente y la respuesta del servidor. Aparte de reducir la cantidad de enlaces que su cliente conecta al servidor o alojar el servidor en su cliente (es decir, cero saltos de red cliente-servidor), no hay otras formas de mejorar esto.

Actualmente no existe una solución que pueda garantizar una precisión perfecta y sin latencia (a menos que esté hablando de juegos para un solo jugador) y, por lo tanto, se debe hacer una compensación. Ya sea para garantizar una latencia más baja pero baja precisión o alta precisión pero alta latencia.

Vota a favor si esto responde tus preguntas. 🙂

Los juegos multijugador en línea han sido muy relevantes para las personas debido a sus increíbles características y la facilidad de proporcionar un jugador para jugar en grupo. También soy un jugador potencial de todo tipo de juegos multijugador donde puedo compartir mi puntuación con todos los miembros de allí. Recientemente decidí formar parte de League of Legends pero, por lo tanto, enfrenté muchos problemas al anotar los puntos deseados que habían afectado mucho mi rendimiento. Me implementaron siguiendo el consejo de mi amigo de comprar una cuenta lol smurf que me ayudó mucho a mantener una posición entre el jugador experimentado.