¿Por qué los MMORPG todavía usan múltiples servidores?

18

Los MMORPG, algunos MOBA como League of Legends o incluso StarCraft 2 generalmente te obligan a elegir un servidor. Por lo general, son EE. UU., UE y MAR, en MMORPG, muchos por ubicación. Puedo ver que eso era necesario hace unos años, pero ahora con el advenimiento de AWS y ofertas similares que le permiten escalar sin problemas su "potencia de servidor", ¿por qué todavía hay servidores separados?

Mi línea de pensamiento es así (usando Star Wars: The Old Republic como ejemplo): - Siempre estás en un planeta, una "instancia" aislada de otros planetas. - Si hay demasiadas personas en un planeta, SW: TOR crea una nueva instancia del mundo y pone a los jugadores allí. - Si abandonas el mundo / cambias de instancia tienes una pantalla de carga

Entonces, ¿por qué el juego no puede crear una instancia para este planeta? Esta instancia (y solo esta) tiene sus datos actuales en su base de datos y gestiona x jugadores. Tan pronto como los jugadores x-50 estén en esta instancia, se encenderá un nuevo servidor y se generarán nuevas personas en esa instancia. Los 50 lugares están reservados para cambiar a su grupo, etc.

Podría haber una instancia para que las tres regiones principales mantengan la latencia baja, pero le permitiría seguir jugando con otros jugadores, es decir, SEA, si puede vivir con un retraso de 140 ms (que todavía no es nada).

Cada vez que cambia una instancia o viaja a otro mundo, su servidor actual entrega todos sus datos al siguiente servidor, asegurándose de que no necesita una gran base de datos centralizada. Todavía podría tener uno que reciba actualizaciones periódicamente para fines de análisis.

Cuando cierra sesión o los servidores pierden la conexión, los datos podrían transferirse a una base de datos masiva que está optimizada para almacenar los datos. Los servidores de instancias pueden optimizarse para un alto rendimiento.

¿Hay alguna razón en particular para que esto no funcione? ¿Hay otros problemas que me faltan?

mmlac
fuente
¿Qué pasa con el hecho de que muchos de esos juegos tendrían que reescribir secciones moderadas a grandes de sus motores para soportar eso? Y ese tiempo y dinero podrían gastarse mejor agregando más contenido.
Xavon_Wrentaile
No sugerí cambiar los juegos existentes, pero mucho más por qué el diseño se eligió de la forma en que debía comenzar.
mmlac

Respuestas:

12

Los MMORPG, algunos MOBA como League of Legends o incluso StarCraft 2 generalmente te obligan a elegir un servidor. Por lo general, son EE. UU., UE y MAR, en MMORPG, muchos por ubicación. Puedo ver que eso era necesario hace unos años, pero ahora con el advenimiento de AWS y ofertas similares que le permiten escalar sin problemas su "potencia de servidor", ¿por qué todavía hay servidores separados?

AWS no es una solución tan obvia como parece. Puede ser costoso, en algunos casos más que usar centros de datos internos (para un editor, el costo de estos puede amortizarse en múltiples productos, por ejemplo). Además, podría haber preocupación sobre el almacenamiento de archivos binarios y registros sensibles en el hardware fuera del control de uno. Finalmente, el poder de cómputo real no siempre es la razón para segregar la población de "servidores" en los MMO.

Mi línea de pensamiento es así (usando Star Wars: The Old Republic como ejemplo): - Siempre estás en un planeta, una "instancia" aislada de otros planetas. - Si hay demasiadas personas en un planeta, SW: TOR crea una nueva instancia del mundo y pone a los jugadores allí. - Si abandonas el mundo / cambias de instancia tienes una pantalla de carga

Guild Wars 2, de hecho, hace algo muy similar a esto. Los mapas se simulan mediante procesos de servidor individuales, y las instancias de desbordamiento se crean según sea necesario según el límite de población del mapa y algunas heurísticas para el rendimiento del mapa.

Guild Wars 2 tiene dos centros de datos principales, uno en los EE. UU. Y otro en Europa: existe una conversación cruzada entre esos centros de datos (principalmente para los puestos comerciales y los sistemas comerciales), pero en general existen en esa configuración, por lo que los jugadores en Alemania, Francia, etc., no tienen que sufrir la mayor latencia de los servidores de juegos de EE. UU. Dentro del centro de datos, los jugadores se clasifican en "mundos de origen" (o "fragmentos" en términos vernáculos); Pero una de las razones por las que se hace esto es para minimizar la cantidad de jugadores que un cliente puede ver y necesita informarles. El aspecto del lado del cliente de ese problema no se resolverá escalando a más hardware de servidor. La explosión combinatoria del lado del servidor de rutas de informes adicionales podría ser,

¿Hay alguna razón en particular para que esto no funcione? ¿Hay otros problemas que me faltan?

Te faltan bastantes cosas, pero en su mayoría son detalles (y no explicaré cómo los manejamos de todos modos, ya que se consideran secretos comerciales) que no son relevantes para una pregunta de tipo general de tan alto nivel. Creo que la falla más grande en su propuesta es tratar de entregar los datos del jugador al nuevo servidor cuando un jugador transfiere. Ese es un problema complejo que no escalará bien, probablemente sea mejor en la práctica tener los datos de ese jugador en un sistema centralizado de servidores. Es bastante factible si no utiliza esas bases de datos y el almacén de registros de tiempo de ejecución primario para los datos.


fuente
@ Josh, ¿diría que los derechos de distribución también son un factor importante en la decisión de crear y mantener servidores separados para regiones separadas del mundo?
Trevor Powell
No estoy seguro de lo que quieres decir, ¿estás hablando de presentar la versión de la UE como un SKU diferente para fines de ajuste de precios (y, en consecuencia, quieres mantener el servidor también distinto?).
7

Principalmente se trata de latencia.

En primer lugar, tener un servidor geográficamente cerca de usted reduce la latencia. Si el servidor está al otro lado del mundo, verá más latencia que si el servidor está a solo unos saltos de distancia.

En segundo lugar, servicios como AWS no están diseñados para el trabajo en tiempo real. Están diseñados para un alto rendimiento a expensas de un poco de latencia. Si su página web tarda 250ms más de lo normal en cargarse en una ocasión, a nadie le importa, pero si su juego tarda 250ms más de lo normal en procesar un mensaje, el juego puede verse seriamente afectado. Es por eso que los MMO casi siempre están alojados en hardware dedicado.

Pero también se trata del diseño del juego. Si parece que todo el mundo está en el mismo mundo pero tiene que dividir una zona cuando se llena demasiado, la gente se frustra porque no puede encontrar a sus amigos en los lugares de reunión designados. Este tipo de problema se extendería a gremios, batallas PvP masivas, etc. Los jugadores están acostumbrados a las instancias en estos días, pero hay ciertas áreas que se espera compartir. Si tiene servidores completamente separados, al menos no hay sorpresas aquí.

Finalmente, hay otros problemas tecnológicos a considerar. Incluso si cada instancia está bastante aislada de las demás, generalmente todavía hay varios servicios que necesitan comunicarse entre ellas. La comunicación entre servidores es difícil de hacer bien en software en tiempo real y ha dado lugar a varias vulnerabilidades y errores en los MMO en el pasado. En particular, entregar datos de jugadores autorizados de uno a otro es arriesgado. Por lo tanto, los desarrolladores a menudo se muestran cautelosos y han delineado claramente los límites entre los servidores, reduciendo la cantidad de tráfico que debe cruzarlos.

Kylotan
fuente
"Si tiene servidores completamente separados, al menos no hay sorpresas aquí". Bueno, entonces no puedes jugar con tus amigos. En SW: TOR te dice en qué instancia es el líder del grupo y puedes cambiarlo inmediatamente. Yo (personalmente) creo que esto es suficiente. Gracias por los conocimientos técnicos, ¡esto realmente me ayuda a entender los problemas que tenemos entre manos!
mmlac
1
Ciertamente, algunos juegos pueden permitirte cambiar de instancia de esa manera, pero eso funciona mucho mejor para mazmorras y áreas de búsqueda que para reuniones compartidas y áreas sociales. En última instancia, aunque los problemas técnicos son más importantes.
Kylotan
Y como mencioné en mi comentario a Philipp, no creo que se puedan administrar capitales y ciudades principales sin instancias.
mmlac
3

en realidad creo que la respuesta no es relacionada con la red o la arquitectura, sino con el juego, generalmente en este tipo de juegos hay eventos, y estos eventos se cronometran de acuerdo con los plazos más cómodos para las personas que juegan en el servidor, y eso es generalmente relacionado con la zona horaria donde vive la gente, por lo tanto, UE y EE. UU., etc.

Otra razón es crear una separación entre mundos para que si hay un grupo que es demasiado fuerte no arruine el juego para todos los que juegan, y siempre puedes moverte a un mundo menos "desafiante".

Por el lado de la capacidad de la CPU del servidor, aunque las máquinas de hoy en día son bastante fuertes, siempre hay un límite de lo que una máquina puede manejar, por lo que es necesario crear una separación entre mundos para proteger el juego de la sobrecarga y permitir que las personas elijan qué mundo quieren jugar para que puedan jugar con sus amigos. Escalar horizontalmente no es solo cuestión de tener máquinas, necesita su aplicación para poder trabajar en una arquitectura escalada horizontalmente, y eso no es tan fácil cuando tiene miles de "acciones" que se llevan a cabo simultáneamente con una posible influencia mutua, y Necesito sincronizar todo. Creo que sería muy difícil hacerlo en varias máquinas.


fuente
Bueno, al menos en SW: TOR solo hay influencias en la instancia actual en la que estás. Lo que significa que, por ejemplo, los jefes mundiales que matas en el caso uno, seguirán ilesos / engendrados en el caso 2. Entonces la separación ya está en su lugar. Puedo ver la razón de los diferentes servidores en el lado de la alimentación, pero debajo del cinturón, también podrían escalar así, por lo que no tiene límites de población artificiales. El tiempo no debe ser motivo de preocupación, porque los eventos locales son atendidos por personas locales. Si está en línea, ¿por qué no se le debe permitir unirse? Simplemente no está diseñado para su zona horaria.
mmlac
Solía ​​jugar Lineage2 en un servidor de EE. UU. Mientras estaba en la zona horaria de la UE (antes de que crearan los servidores de la UE), ¡y puedo decirte que es una perra! Tenía que despertarme a las 3 de la mañana si quería participar en redadas y asedios al castillo porque eso fue todo. Entonces el tiempo es definitivamente una preocupación.
Bueno, sí, el tiempo es una preocupación cuando solo tiene un servidor en la zona horaria incorrecta. Con mi idea, hay personas en línea en todo el mundo. Si quieres participar en esa redada de las 3 a.m., ¡adelante! En este momento, usted es SOL y tiene que esperar hasta que "sus" incursiones en el servidor estén activas, que podrían ser todos los sábados a las 10 p.m., donde no tiene tiempo. Así que vaya a las redadas de la UE a las 3pm. ¿Tiene sentido?
mmlac
2

¿Qué tiene de malo la autoinstalación? Cuando una ubicación se llena demasiado, solo pones a los 1000 jugadores en 10 instancias diferentes.

El problema con eso es que los juegos en línea tienen que ver con la comunidad. ¿Imagina que organizó una reunión con personas que conoció antes, y cuando están todos allí en el momento dado, no se ven porque están en diferentes instancias? Eso es molesto y rompe la inmersión.

¿Cómo se puede prevenir esto? Podría hacerse colocando a cada jugador en la misma instancia en todo momento, de modo que cuando se encuentre con otro jugador una vez, pueda estar seguro de encontrarse con este jugador nuevamente cuando ambos estén en la misma ubicación. Nunca conocerás a esos jugadores asignados a otras instancias.

Pero, ¿qué pasa cuando quieres conocer a alguien de fuera del juego? ¿Como un amigo de la vida real que invitaste a jugar contigo? Para permitir que eso suceda, necesitarías la capacidad de elegir la instancia al crear tu personaje. Me gusta de una lista de instancias con nombres fáciles de memorizar. Desafortunadamente, el nombre "instancia" parece confuso para el usuario promedio. No están acostumbrados a esa palabra. ¿No sería mejor usar un término al que están acostumbrados? Un término como ... ¿ Servidor ?

Philipp
fuente
1
No confunda el término instancia y servidor. Las instancias le permiten cambiar entre sí. Los servidores suelen ser atómicos. No dentro y fuera. Para conocer gente: pon a todos en una instancia y tus capitales tendrán 20,000 personas. Al mismo tiempo. Eso no funcionaría ni sería deseable, por eso es necesario crear instancias de todos modos. Mi línea de pensamiento era hacer que estas instancias fueran globales en lugar de limitarse a un servidor.
mmlac
Pero creo que el punto es que normalmente quieres que las personas tengan una experiencia predecible en las áreas deliberadamente compartidas. Debe particionarlos por razones de rendimiento, pero se supone que deben compartirse con 'todos', por lo que idealmente tiene una partición fija (por ejemplo, servidor) en lugar de variable (por ejemplo, instancia). Muy pocos MMO que conozco incluirán este tipo de área, porque se considera importante por razones de comunidad y agrupación que todos puedan ver a todos allí.
Kylotan