Conectividad de Diablo II: Resurrected: Actualización 14/10

Cortes en Diablo II: Resurrected: Una explicación acerca de cómo estuvimos trabajando en eso y cómo seguimos adelante.

Hola a todos.

Desde el lanzamiento de Diablo II: Resurrected, hemos tenido varios problemas con los servidores y queríamos ser transparentes respecto a qué está ocasionando estos problemas y los pasos que se han tomado hasta el momento para solucionar esto. También queremos proporcionar algo de perspectiva a cómo seguiremos adelante.

Demasiado largo (no lo leí): Los cortes en nuestros servidores no fueron ocasionados por un solo problema; estamos solucionando cada problema a medida que se presenta, ya sea con soluciones atenuantes o con cambios de arquitectura a largo plazo. Pocos jugadores han sufrido pérdida de progreso de su personaje. A partir de ahora, cualquier pérdida debido a una falla del servidor debería limitarse a unos minutos. Esta no es una solución completa, y seguimos trabajando en este problema. Nuestro equipo, con la ayuda de otros en Blizzard, está trabajando para lograr que la experiencia de juego sea satisfactoria para todos.

Vamos a entrar un poco en detalle aquí con algunas cuestiones específicas de ingeniería, pero esperamos que, en definitiva, esto ayude a comprender el porqué de los cortes que se han producido y lo que estamos haciendo para abordar cada instancia, y también cómo estamos investigando el origen del problema en general. Comencemos por el principio.

Los problemas con los servidores:

Antes de hablar sobre los problemas, les daremos brevemente un poco de contexto respecto al funcionamiento de nuestras bases de datos de servidor. Primero, está nuestra base de datos global, que existe como la única fuente de la verdad de toda la información y progreso de sus personajes. Como pueden imaginar, es una gran tarea para una sola base de datos, y no puede con todo por sí sola. Así que, para aliviar la carga y la latencia en nuestra base de datos global, cada región (Norteamérica, Europa y Asia) tiene bases de datos individuales que también almacenan la información y el progreso de sus personajes. La mayoría de sus acciones en el juego se realizan en función de esta base de datos regional porque es más rápida, y sus personajes están “bloqueados” allí para conservar la integridad de registro de personaje individual. La base de datos global también tiene un respaldo en caso de que falle la principal.

Con eso en mente, para explicar lo que ha estado sucediendo, nos enfocaremos en las instancias de inactividad que se produjeron entre el sábado 9 de octubre hasta ahora.

El sábado a la mañana (hora del Pacífico), sufrimos un corte global debido a un aumento súbito y significativo en el tráfico. Se alcanzó un nuevo límite que nuestros servidores nunca antes habían experimentado, ni siquiera al momento del lanzamiento. Esto se agravó por una actualización que habíamos lanzado el día interior con la finalidad de mejorar el rendimiento relacionado con la creación de partidas. Estos dos factores combinados sobrecargaron nuestra base de datos global, lo que causó que caducara. Decidimos volver atrás esa actualización del viernes que habíamos implementado, con la esperanza de aliviar la carga en los servidores entrando al domingo y, a su vez, tener lugar para investigar en profundidad el origen del problema.

No obstante, el domingo resultó evidente que lo que habíamos hecho el sábado no fue suficiente: notamos un incremento en el tráfico incluso mayor, lo que hizo que se produjera otro corte. Nuestros servidores del juego observaban la desconexión de la base de datos e inmediatamente intentaban volver a conectarse, repetidamente, por lo que la base de datos nunca tuvo tiempo de ponerse al día con el trabajo que habíamos completado porque estaba muy ocupada lidiando con el flujo continuo de intentos de conexión de los servidores del juego. Durante este tiempo, también vimos que podíamos implementar mejoras de configuración en el registro de eventos de nuestra base de datos, lo que es necesario para restaurar a un estado saludable en caso de una falla de la base de datos, así que nos encargamos de eso, y profundizamos el análisis del origen del error.

La espada de doble filo del corte del domingo tuvo lugar porque, debido a lo que habíamos enfrentado el sábado, habíamos creado lo que fue, básicamente, un libro de tácticas de cómo recuperarnos de esa situación rápidamente. Lo que fue bueno.

Pero porque volvimos a estar en línea otra vez rápidamente en un lapso de actividad de jugadores pico, con cientos de miles de partidas en decenas de minutos, nos caímos otra vez. Lo que fue malo.

Así que teníamos muchas correcciones a implementar, incluidas las mejoras de configuración y código, las cuales implementamos en la base de datos global de respaldo. Esto nos lleva al lunes, 11 de octubre, cuando hicimos el cambio entre las bases de datos globales. Esto llevó a otro corte, cuando nuestra base de datos de respaldo seguía erróneamente ejecutando su proceso de respaldo, lo que significa que pasó gran parte de su tiempo intentando copiar desde la otra base de datos cuando debería haber atendido las solicitudes de los servidores. Durante este tiempo, descubrimos más problemas e implementamos más ajustes: encontramos una consulta obsoleta pero agotadora que podíamos eliminar completamente de la base de datos, optimizamos comprobaciones de elegibilidad para cuando los jugadores se unen a una partida, lo que alivió aún más la carga, e implementamos más mejoras de rendimiento que estamos probando en estos momentos. También creemos que solucionamos las tormentas de reconexión de base de datos que habíamos presenciado, ya que no se produjeron el martes.

Entonces el martes, alcanzamos otra oleada de concurrencia de jugadores, con unos cientos de miles de jugadores en una región solamente. Esto hizo que se presentara otro incidente de rendimiento bajo en la base de datos, causa en la que nuestros ingenieros de base de datos están trabajando actualmente. También le solicitamos a otros ingenieros de Blizzard que nos ayudaran con correcciones menores, ya que nuestro equipo estaba enfocado en los problemas de servidor principales, y también pedimos ayuda a socios externos.

¿Por qué está pasando esto?:

Para mantenernos fiel al juego original, mantuvimos mucho del código clásico. Sin embargo, un servicio clásico en particular está luchando para estar a la altura del comportamiento del jugador moderno.

Este servicio, con algunas actualizaciones del original, manipula piezas fundamentales de la funcionalidad del juego, como crear/unirse a partidas, actualizar/leer/filtrar listas de partidas, verificar el estado del servidor del juego y leer personajes de la base de datos para asegurarse de que sus personajes puedan participar en lo que sea que están filtrando. Más importante, este servicio es único, lo que significa que solo puede ejecutarse una instancia del mismo para asegurarse de que todos los jugadores están viendo la lista de partidas más actualizada y correcta en todo momento. Sí optimizamos este servicio de diversas maneras para que se ajustara a tecnología más moderna, pero como mencionamos anteriormente, muchos de nuestros problemas surgen de la creación de partidas.

Mencionamos el “comportamiento de jugador moderno” porque es un punto interesante a tener en cuenta. En 2001, no había tanto contenido en Internet acerca de cómo jugar Diablo II “correctamente” (matar a Baal una y otra vez para obtener PE, o al Granujo/Cloacas Antiguas/etc. para obtener objetos mágicos, etc.). Hoy, sin embargo, un nuevo jugador puede buscar gran cantidad de creadores de contenido increíbles que pueden enseñarle cómo jugar el juego de distintas maneras, y muchas de ellas incluyen gran cantidad de carga a la base de datos en forma de una rápida sucesión de creación, carga y destrucción de partidas. Aunque sí habíamos previsto esto (jugadores creando nuevos personajes en nuevos servidores, trabajando duro para conseguir sus objetos mágicos), subestimamos el alcance que se dedujo de la prueba beta.

Además, en general, estábamos guardando con demasiada frecuencia en la base de datos global: no hay necesidad de hacer esto con tanta frecuencia como antes. Deberíamos realmente guardar sus datos en la base de datos regional, y solo guardarlos en la base de datos global cuando necesitamos hacer un desbloqueo, este es uno de los atenuantes que pusimos en práctica. Ahora estamos escribiendo código para cambiar por completo la manera en que hacemos esto, así que casi nunca vamos a guardar en la base de datos global, lo que reducirá significativamente la carga en ese servidor, pero eso es un rediseño de arquitectura que llevará más tiempo desarrollar, probar y, luego, implementar.

Una nota acerca de la pérdida de progreso:

La pérdida de progreso que algunos jugadores han experimentado se debe a la manera en que hacemos los bloqueos de personaje tanto en las bases de datos regionales como en la global. Bloqueamos sus personajes en la base de datos global cuando se les asigna una región (por ejemplo, cuando juegan en la región US, sus personajes se bloquean en la región US, y la mayoría de las acciones se resuelven en la base de datos de la región US).

El problema fue que, durante un corte del servidor, cuando la base de datos se caía, gran cantidad de personajes quedaron atrapados en la base de datos regional, y no teníamos forma de moverlos a la base de datos global. En ese momento, creíamos que teníamos dos opciones: desbloquear a todos con cambios sin guardar en la base de datos global, por lo que se perdería progreso debido a una sobreescritura que se produciría en la base de datos global, o desconectar el juego completamente por tiempo indeterminado y ejecutar una secuencia de comandos para escribir los datos regionales a la base de datos global.

En ese momento, optamos por la primera opción: sentimos que era más importante mantener el juego activo para que la gente pudiera jugar en lugar de cerrar el juego por un período prolongado para restablecer los datos. Nuestras más sinceras disculpas para todos los jugadores que perdieron un importante progreso u objetos valiosos. Como jugadores, sabemos que es molesto que se restablezca todo a un punto anterior, y lo sentimos realmente.

A futuro, creemos tener una mejor manera de restablecer los personajes, una que no lleva a una significativa pérdida de datos, solo debería limitarse a unos pocos minutos (si es que se pierden datos) en caso de una falla del servidor.

Esto es mejor, pero no lo suficientemente bueno para nosotros.

Lo que estamos haciendo al respecto:

Límite de frecuencia: Estamos limitando la cantidad de operaciones en la base de datos relacionadas con la creación de partidas y la participación en ellas, y sabemos que esto les va a afectar a muchos de ustedes. Por ejemplo, aquellos que quieren matar al Granujo una y otra vez, entrarán y saldrán de la partida y crearán una nueva en un lapso de 20 segundos. En este caso, tendrán un límite de frecuencia en un punto. Cuando esto sucede, el mensaje de error dirá que hay un problema de comunicación con los servidores del juego: esto no significa que los servidores del juego no estén funcionando en esta instancia en particular, solo significa que se aplicó un límite de frecuencia para reducir temporalmente la carga en la base de datos a fin de mantener el juego en funcionamiento. Podemos asegurarles de que esto es solo un atenuante por ahora, y no vemos esto como una solución a largo plazo.

Creación de cola de inicio de sesión: El fin de semana pasado se presentaron una serie de problemas, no el mismo problema una y otra vez. Debido a una base de datos de jugadores revitalizada, la adición de múltiples plataformas y otros problemas asociados con el escalado, es posible que sigamos encontrándonos con pequeños problemas. Para diagnosticarlos y encargarnos de ellos rápidamente, necesitamos asegurarnos de poner fin a la “congestión”, es decir, gran cantidad de jugadores que inician sesión simultáneamente. Para abordar esta situación, tenemos gente trabajando en una cola de inicio de sesión, algo muy parecido a lo que han experimentado en World of Warcraft. Esto mantendrá la cantidad de jugadores al nivel seguro que tenemos actualmente, de modo que podamos supervisar dónde el sistema tiene dificultades y encargarnos de eso antes de que el juego se caiga por completo. Cada vez que solucionemos un problema de saturación, podremos incrementar los límites de jugadores. Esta cola de inicio de sesión ya se ha implementado parcialmente en el backend (ahora se ve como una autenticación fallida en el cliente) y debería implementarse por completo en los próximos días en PC, y más tarde en consolas.

Desglose de piezas fundamentales de la funcionalidad en servicios más pequeños: Este trabajo está parcialmente en curso para las cosas que podemos resolver en menos de un día (algunas ya se han completado esta semana) y también está planificado para proyectos más grandes, como nuevos microservicios (por ejemplo, un servicio de GameList que se encargue únicamente de proporcionar listas de partidas a los jugadores). Una vez que se haya desglosado la funcionalidad fundamental, podremos enfocarnos en ampliar nuestros servicios de gestión de partidas, lo que reducirá el nivel de carga.

Tenemos gente trabajando muy duro para encargarse de los incidentes en tiempo real, diagnosticar problemas e implementar correcciones, no solo del equipo de D2R, pero de todo Blizzard. Este juego significa mucho para todos nosotros. Muchos en el equipo somos jugadores veteranos de D2, jugamos durante el lanzamiento inicial en 2001, algunos somos parte de la comunidad de mods, etc. Podemos asegurarles de que seguiremos trabajando hasta que la experiencia de juego sea satisfactoria para nosotros, no solo como desarrolladores, sino también como jugadores y miembros de la comunidad.

Sigan enviando sus comentarios al foro de Diablo II: Resurrected e informando los errores en nuestro foro de Reporte de Errores, y para solucionar problemas técnicos, visiten nuestro foro de Soporte Técnico. Gracias por comunicarse continuamente con nosotros a través de todos los canales. Sus comentarios nos resultan invaluables mientras trabajamos en estos problemas.

El equipo de la comunidad de Diablo los mantendrá informados respecto a nuestro progreso mediante los foros.

El equipo de desarrollo de Diablo II: Resurrected

Hola , quiero el reembolso de mi dinero , ya perdi bastante tiempo intentando jugar y lo unico que veo es problema tras problema .
Favor indicarme pasos a seguir para el reembolso.

A modo de notificacón solamente.
El tema de la limitación, al parecer está cortando con una de las mecánicas principales del juego. El limite para creación de partidas en periodos de segundos es una buena idea, pero desde que surgio esto, la mayoría del tiempo no se puede siquiera hacer baal runs, y estamos hablando de crear cada aproximadamente 3 minutos…
Otra cosa que no se vio, o no se tomo en cuenta, lamentablemente en LAS sucede mucho, gente que no tiene idea del juego, cuando entra a un run sale antes para crear ellos, cortando con el run en particular (digo LAS porque pasa en el 70% de los casos, mucha gente toxica y/o inexperta que arruina la mecánica). Pero otro problema es que cuando se intenta crear un nuevo juego, y un juego con el mismo nombre ya existe, al parecer pusieron un limitador que toma en cuenta eso como limite de creación, cuando en realidad no se está creando.
Sabemos que estan haciendo mucho trabajo, se agradece. Tratamos de dar feedback para que sea constructivo, sobre temas que quizás no tienen como enterarse si no los informamos.

1 "Me gusta"

Sugiero solicitar un reembolso a través del servicio técnico: Soporte de Blizzard - Contactar a Asistencia al cliente

Pero ten en cuenta que aveces hay condiciones que hacen imposible el reembolso, como que lo hayas comprado hace mucho tiempo.


Y bienvenido SputNico.
(Tu perfil no esta oculto… siempre veo que los Comunity Managers lo tienen oculto )

Hay que revisar el contrato y las condiciones de Blizzard, debe de existir una clausula sobre la disponibilidad del juego. Aún así deberíamos pedir un reembolso masivo o inclusive otra demanda a Blizzard.

No es posible utilizar el contrato de licencia para pedir reembolso por errores en el juego.

Esto es lo que dice punto 5 del contrato de licencia:
(Las mayúsculas no las pongo yo, así es como esta en el contrato)

Garantía limitada. CON EL MÁXIMO ALCANCE PERMITIDO POR LA LEGISLACIÓN APLICABLE, LA PLATAFORMA, LAS CUENTAS Y LOS JUEGOS SE PROPORCIONAN “EN EL ESTADO EN QUE SE ENCUENTRAN” Y “SEGÚN DISPONIBILIDAD”, SIN NINGÚN TIPO DE GARANTÍA EXPRESA O IMPLÍCITA, INCLUIDAS, A MODO ENUNCIATIVO, LAS GARANTÍAS IMPLÍCITAS DE BUEN ESTADO, USO ININTERRUMPIDO O AUSENCIA DE ERRORES, COMERCIABILIDAD, ADECUACIÓN PARA UN FIN ESPECÍFICO, AUSENCIA DE INFRACCIÓN, TÍTULO U OTRAS QUE SURJAN DE LAS PRÁCTICAS COMERCIALES o DURANTE EL CURSO DE LAS NEGOCIACIONES. En este sentido, el usuario asume la totalidad del riesgo derivado del uso o el rendimiento de la Plataforma y los Juegos.

https://www.blizzard.com/es-mx/legal/588783f5-79da-4e1c-89dd-ebe212764dda/contrato-de-licencia-para-usuario-final-de-blizzard

Esto también significa que toda corrección de errores es cortesía de la empresa, ya que no están obligados a dártelas (al menos según este apartado).