Cómo los clientes en línea del juego son capaces de intercambiar datos a través de Internet tan rápido?

StackOverflow https://stackoverflow.com/questions/2847929

Pregunta

Imaginemos juego muy simple ... Tenemos un labirinth y dos jugadores tratando de encontrar la salida en tiempo real a través de Internet .

En cada cliente de juego movimiento debe enviar las coordenadas del jugador con el servidor y aceptar las coordenadas actuales de otro cliente. ¿Cómo es posible hacer este intercambio tan rápido (como todos los juegos modernos lo hacen).

Ok, podemos utilizar Memcache o tecnología similar para reducir las operaciones de minería de datos en el lado del servidor. También podemos usar más rápido servidor web, etc, pero todavía tendremos problemas con períodos de tiempo.

Por lo tanto, las preguntas son ...

  1. Clientes protocolo de juego son por lo general utilizan para el intercambio de información con el servidor?
  2. ¿Qué tecnologías de servidor están llegando a resolver este problema?
  3. ¿Qué se aplican algoritmos para luchar con retrasos durante el juego, etc.
¿Fue útil?

Solución

Por lo general, con la Red de interpolación y predicción. GameDev es un recurso bueno: http://www.gamedev.net/reference/list .asp? categoryid = 30

También puedes ver este: http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

Otros consejos

  • El uso de UDP, no TCP
  • utilizar un protocolo personalizado, por lo general un solo byte de la definición de un "comando", y el menor número de bytes posteriores como sea posible con los argumentos del comando
  • predicción se utiliza para hacer los movimientos de los otros jugadores aparezcan de forma uniforme y sin tener que obtener una actualización para cada cuadro

pista:. Predicción se utiliza de todos modos para suavizar la actualización de la pantalla rápida (~ 60 fps), ya que la velocidad real de juego suele ser más lenta (~ 25 fps)

Las otras respuestas no han explicado un par de ideas falsas importantes en el post original, que es que estos juegos no son sitios web y funcionan de manera muy diferente. En particular:

  • No existe o pequeños "minería de datos" que las necesidades que se acelere. El más rápido en línea (por ejemplo, juegos. shooters en primera persona) por lo general no son nada para ahorrar disco durante un partido. Más lento en línea juegos, tales como juegos en red multijugador, pueden utilizar una base de datos, principalmente para almacenar información de los jugadores, pero en su mayor parte que mantenga sus datos de los jugadores y el mundo en la memoria, no en disco.
  • Ellos no utilizan servidores web. HTTP es un relativamente lento protocolo, y TCP incluso solo puede ser demasiado lento para algunos juegos. En su lugar, a medida que los servidores que se escriben sólo para ese juego en particular. A menudo, estos servidores están sintonizados para la latencia baja en lugar de rendimiento, ya que por lo general no sirven grandes documentos como un servidor web lo haría, pero muchos mensajes pequeños (por ejemplo. Medido en bytes en lugar de kilobytes).

Con esos dos temas cubiertos, su problema de la velocidad pasa en gran medida de distancia. Puede enviar un mensaje a un servidor y obtener una respuesta en menos de 100 ms y puede hacer que varias veces por segundo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top