Retirada total: aquel día sin clasificatorias

Por Rumtumtummers

La pretemporada siempre está repleta de emoción por los cambios que trae consigo, pero también nos permite ver todo lo que ha pasado durante el año. Puede que los jugadores de clasificatoria recuerden el error de Riven al usar Retirada que apareció en julio y que forzó el cierre global de la cola de clasificatoria.

A continuación os contaremos la historia de ese error y de los equipos que desde Riot lo dieron todo por solucionarlo.

Relatado en horario del pacífico.

15 de julio de 2015 por la mañana

Un vídeo ganó popularidad rápidamente y llegó a la página principal del subreddit de League of Legends. En él se puede ver un error masivo con Riven: Pulsando la secuencia "adecuada" de botones, Riven podía volver instantáneamente a su base, saltándose así el tiempo de canalización. El día apenas comenzaba para el equipo de Riot, y empezaron a llegar informes sobre el error y sobre su posible impacto.

Donna Mason, directora de lanzamiento

Recibimos informes por todas las vías: mensajes, en persona... todo a la vez. "¿Habéis visto lo de Reddit?"

Scott Hansen, equipo de producción

Alguien colgó un vídeo en Reddit que decía "mirad, he encontrado esto mientras jugaba con Riven."

Tim Isenman, equipo de producción

Tal como vimos la publicación en Reddit nos pusimos a investigar. En ese momento uno de nuestros equipos ya estaba en ello.

Kacee Granke, directora de producción

Ese problema con Riven nos puso instantáneamente en alerta.

Mark Sassenrath, técnico de diseño

Vinieron directamente a mi puesto a decirme: "Tenemos este error urgente con Riven. ¿Puedes solucionarlo?"

Donna Mason

Nos pusimos manos a la obra con el primer paso: intentamos reproducirlo. Nuestro objetivo era descubrir si es algo puntual que surge por chiripa o si es algo que se puede aprovechar en beneficio propio. Eso es lo más importante. Que el juego tenga un error no es bueno. Pero si se trata de un error que confiere una ventaja no natural es mucho peor. Y la diferencia se reduce a un simple "¿puedo reproducirlo?"

Kacee Granke

Nos pusimos a reproducirlo en nuestras oficinas. Por suerte el vídeo era muy claro al respecto. Hay otras veces en las que sabemos a ciencia cierta que el error existe pero no conseguimos reproducirlo fácilmente.

Scott Hansen

Nuestro equipo de QA le pilló el truco rápidamente. Nosotros los del equipo de producción tardamos un poco más, porque no se nos da tan bien el juego como a ellos. Yo solo soy Plata.

Matthew Wittrock, equipo de QA y lanzamiento

Yo lo estaba intentando y, de repente, "mira, me ha salido". Y al momento "ah, vale, ya puedo hacerlo tantas veces como quiera. Es fácil. Tenemos un problema".

Tim Isenman

Les pregunté si, con la información que teníamos, sería mejor desactivar a Riven.

Donna Mason

Dada la información que teníamos y la velocidad a la que el vídeo se estaba volviendo viral, lo que tenía más sentido en ese momento era desactivar a Riven.

15 de julio a las 2:50 p.m.

Riven se desactivó globalmente. Mientras los equipos trabajaban para encontrar una solución empezaron a llegar más informes desde dentro y fuera de la empresa informándonos de que posiblemente el error pudiera aplicarse a más de un campeón.

Tim Isenman

Tras desactivar a Riven, varios de mis compañeros de Riot me dijeron que habían salido nuevos vídeos en los que los jugadores habían encontrado el error de Retirada en otros campeones. Primero con Yasuo, luego Graves, y luego más y más.

Mark Sassenrath

Me vinieron a decir "También sucede con Shen. También con este campeón, y este otro, y este. La bola crecía más y más.

Kacee Granke

Casi de inmediato nos llegó un informe de nuestro equipo de QA que confirmaba que podían reproducir el mismo error con otros campeones.

Mark Sassenrath

A medida que avanzaba el día nos llegaban más informes de jugadores, y nos dimos cuenta de que no se trataba de un error de Riven. Era un error general.

Tim Isenman

Nos dimos cuenta de que una cuarta parte de los campeones podían aprovechar ese error. Y se nos puso el corazón en un puño.

Matthew Wittrock

Incluso en aquel momento estábamos subestimando la magnitud del problema. Pensábamos que los campeones afectados tenían ciertas habilidades en común. En ese momento no sospechábamos que se trataba de todos y cada uno de los campeones del juego.

Tim Isenman

Después nos dimos cuenta de que cualquier campeón con Tiamat o la Hidra podían hacerlo. Ahora afectaba a todos los campeones.

Mark Sassenrath

En ese momento dije "todos los campeones pueden hacerlo. No podemos permitir que se nos vaya de las manos". Necesitábamos un proceso de testing extremadamente preciso.

Scott Hansen

Incluso sin la Hidra, 40 campeones podían llevarlo a cabo.

Donna Mason

Cuando nos dimos cuenta de que el error afectaba a todos los campeones nos invadió un sentimiento de tristeza. En ese momento uno se siente como "******, pasa con todos los campeones. ¿Qué vamos a hacer?"

Matthew Wittrock

Ya habíamos vivido otros errores de los que se podía abusar, solo que no eran realmente beneficiosos. Es decir, abusar del error costaba la partida al jugador y a su equipo. En este caso estaba claro que se podía abusar de este error sin consecuencias negativas.

Donna Mason

Antes de tomar decisiones de este tipo siempre recopilamos toda la información disponible. Primero analizamos hasta qué punto este error generaba una experiencia negativa. En principio solo es una retirada rápida, puede parecer inofensiva. Pero, dada su activación, se puede aprovechar para hacer splitpush tanto como se quiera. Y volver a la base en cualquier momento.

15 de julio por la mañana

El error se volvía cada vez más grande. Los equipos de Riot procedieron con la discusión sobre el mejor modo de mitigar el posible impacto del error de Retirada, que se estaba extendiendo como la pólvora.

Scott Hansen

"¿Cómo podemos preservar la experiencia?", nos preguntábamos. No podíamos solucionarlo bloqueando cierto campeón o cierto objeto; había que desactivar las clasificatorias.

Tim Isenman

Ni siquiera nos plantearíamos la opción de deshabilitar a una cuarta parte de los campeones que la gente utiliza. Sería una de las peores opciones a nuestra disposición, prácticamente como desactivar el juego. Nuestra siguiente mejor opción parecía ser la desactivación de la cola clasificatoria.

Matthew Wittrock

Nos vimos forzados a tomar decisiones sin conocer todos los detalles relacionados, pero los requisitos mínimos estaban claros. Se trataba de un error que afectaba a un montón de campeones, mucha gente lo conocía y tenía un impacto negativo. Y no podíamos mitigarlo deshabilitando cierto campeón o personaje.

Kacee Granke

La siguiente pregunta fue "¿Si no podemos deshabilitar los campeones, qué hacemos?

Tim Isenman

Hicimos un balance de pros y contras; ¿era mejor mantener las colas de clasificatoria activas, pensando que muy poca gente sabría del error? ¿O simplemente esperar un poco más hasta que el error fuera conocido por mucha más gente? En aquel momento la gran mayoría de jugadores creían que solo afectaba a Riven.

Scott Hansen

Llegamos a la conclusión de que podía ser necesario desactivar la cola clasificatoria, pero ahora teníamos que decidir en qué momento hacerlo. ¿Seríamos capaces de solucionar el error antes de que se extendiera masivamente?

Kacee Granke

Decidimos no deshabilitar las clasificatorias todavía, y dejar a Riven deshabilitada hasta que llegara el momento de deshabilitar las clasificatorias.

Tim Isenman

No teníamos motivos para creer que los jugadores conocieran el origen del problema, y tampoco para creer que fueran conscientes de que el error iba mucho más allá de Riven.

Donna Mason

En ese sentido habíamos tenido suerte de que Riven hubiera llegado primero.

Nuestro equipo incluso se puso en contacto con moderadores de Reddit para ver si se podía enlazar cualquier nuevo descubrimiento al vídeo inicial para intentar evitar que se extendiera demasiado rápido.

Kacee Granke

"¿Cómo podemos minimizar la exposición sin impedir que la información fluya?" No tenemos control sobre Reddit ni los foros. Cuanta mayor es la exposición más personas pueden abusar de ello, destruyendo así la experiencia de muchos jugadores. Al mismo tiempo, no obstante, necesitábamos saber qué es lo que veían los jugadores.

Tim Isenman

Pedimos a los moderadores de Reddit que nos ayudaran a consolidar las nuevas publicaciones de errores en el hilo inicial, pero en algún momento de la cadena de comunicación hubo un malentendido. Para nuestra consternación, la publicación se convirtió en un megahilo con una tremenda visibilidad. Todos los vídeos eran publicados en el mismísimo núcleo de la publicación.

Donna Mason

Es una espada de doble filo. Conseguimos información rápidamente, y eso es genial, pero al mismo tiempo todo el mundo lo descubre. Personas que ni siquiera lo habrían sospechado se ponen a probarlo.

Kacee Granke

Inmediatamente todos estuvimos de acuerdo: había que deshabilitar las clasificatorias. No solo se sabía que afectaba a todos los campeones, sino que se especificaba claramente los pasos a seguir.

Cuando Reddit explota, nada puede frenar su avance. Las demás regiones se contagian rápidamente.

Donna Mason

No nos gusta tener que actuar así, pero el potencial de explotación de este error era demasiado elevado. Tuvimos que asumir que los jugadores lo usarían, sobre todo en clasificatoria.

Kacee Granke

No todo el mundo usaría el error en su favor, pero la experiencia de juego sería terrible para los oponentes de quienes lo hicieran.

Tim Isenman

Este error es uno de los mayores que Riot ha tenido que afrontar en vivo. Para muchos jugadores, el objetivo es jugar clasificatorias. Sin ellas, les falta un propósito.

Donna Mason

Como jugadores, nos tuvimos que preguntar "¿cómo me sentiría si me hicieran este error a mí?"

Matthew Wittrock

Hay que ponerse en la piel de los jugadores. No se alegrarán, desde luego, pero comprenderán que hay que preservar la experiencia competitiva.

Kacee Granke

Sería mucho peor que los jugadores pensaran "yo aquí esforzándome y tengo que enfrentarme a tramposos". Por ese motivo desactivamos las clasificatorias y activamos a Riven de nuevo.

15 de julio a las 5:30 p.m.

Con las colas desactivadas oficialmente, los miembros de Riot trabajaban frenéticamente para descubrir el origen del problema, solucionarlo y mandarle la solución al equipo de QA para garantizar que todo está en orden.

Scott Hansen

Teníamos varios frentes abiertos. Había que mantener informados a los jugadores en más de veinte idiomas, y había que determinar y solucionar el problema.

Tim Isenman

El equipo de los campeones se puso manos a la obra con la reescritura de código.

Kacee Granke

Empezábamos a comprender la magnitud del asunto, pero el simple hecho de descubrir qué generaba el error nos llevó mucho tiempo. De hecho, nos llevó horas.

Matthew Wittrock

Recuerdo que nos reunimos varios equipos, y básicamente todo era "esto es lo que sabemos", "qué podemos hacer", y "vale, todos manos a la obra". Tiene su emoción. Era un problema de los grandes, pero teníamos un plan y nos movíamos con energía.

Kacee Granke

Lo primero fue intentar parchearlo como quien pone una tirita en la herida. Cuando creíamos que lo habíamos solucionado encontrábamos nuevos modos de romperlo o descubríamos que nuestra solución tenía efectos secundarios indeseables.

Mark Sassenrath

A medida que avanzaba el día comprendimos la verdadera magnitud del asunto.

Donna Mason

Tras cuatro intentos aparentemente válidos de solucionar el problema fallaron, supimos que algo iba mal.

Kacee Granke

En uno de los casos conseguimos solucionar el problema, pero tener una poción de vida activa cancelaba el proceso de Retirada, cuando no debería ser así. No podíamos permitirlo porque iba en contra de las expectativas de los jugadores.

Mark Sassenrath

Los pasos detallados en los vídeos de los jugadores resultaron de gran ayuda. En vez de solucionarlo paulatinamente a lo largo de unos cuantos días, pudimos solucionarlo mucho más rápido. Agradecimos mucho su ayuda.

Donna Mason

Además fue muy interesante de testear; era importante saber lo que los testers sabían para poder reproducir el error. Solíamos hacerlo en una partida personalizada con los mismos objetos que ellos habían utilizado. Pero si uno no sigue al pie de la letra los pasos, los resultados no son fiables.

Scott Hansen

Cuando sabes exactamente qué es lo que tienes que hacer, la tarea se facilita mucho. Además, es mucho más fácil dirigirse a la persona más adecuada en todo momento.

Tim Isenman

Esperamos hasta tener algo que nos pareció suficientemente bueno y lo enviamos al departamento de testing.

Donna Mason

Tras cinco intentos, creíamos haberlo conseguido. La idea era que QA realizara el testing y probase todas las habilidades, todos los campeones, todos los objetos, etc.

Kacee Granke

Por razones logísticas y de tiempos de entrega, ya no íbamos a saber si había funcionado hasta el día siguiente.

Tim Isenman

Cuando ejecutamos cualquier cambio en el entorno en vivo siempre nos aseguramos de que pase por un riguroso proceso para garantizar que está en condiciones de ser lanzado. Primero tiene que superar una fase preliminar de revisión y testing interno, y a continuación el equipo de QA se encarga del testing destructivo buscando fallos. Este proceso siempre dura como mínimo 12 horas.

Scott Hansen

Publicamos un mensaje que decía "en 12 horas os informaremos sobre el resultado". Supusimos que sobre las 4 o las 5 a.m. sabríamos si habíamos conseguido solucionar el error o no.

Donna Mason

Sobre las 10-11 p.m., mandamos a muchos a dormir. Pedimos al equipo de QA que nos despertase si algo salía mal.

16 de julio a las 2:00 a.m.

Los equipos esperaban con ansias los resultados del proceso de testing destructivo. Si estos no eran positivos, los jugadores tendrían que esperar doce horas más antes de poder jugar partidas clasificatorias, y ya habían pasado 8 horas y media desde que las habíamos deshabilitado.

Tim Isenman

Sobre las 2 a.m. nos informaron de que no había funcionado y que teníamos que reevaluarlo y, posiblemente, empezar desde cero. Reunimos a todos para ver qué había salido mal, cambiarlo y reenviarlo.

Donna Mason

Despertamos a todos: diseño, producción... Todos los equipos involucrados.

Mark Sassenrath

Sabes que algo ha ido mal cuando tu teléfono suena a las 2 a.m., sabes que has pasado algo por alto o que tu solución ha roto otra cosa.

Donna Mason

No nos llamarían si todo hubiera ido bien. Desde luego que no llamarían para decirnos "¡oye, lo habéis solucionado a la perfección!"

Tim Isenman

Creo que Mark Sassenrath ni siquiera salió de la oficina en todo ese tiempo...

Mark Sassenrath

Creíamos que lo habíamos arreglado. Lo enviamos al departamento de testing. Sobre las 3 a.m. nos dijeron que algo todavía estaba mal. A las 4 a.m. volvía a estar en la oficina trabajando en una nueva solución. A esas alturas estaba hecho polvo.

Kacee Granke

Los resultados indicaban que el error seguía ahí. Enviamos una nueva solución y empezamos de nuevo todo el proceso.

Tim Isenman

La nueva versión empezó el ciclo de QA. Además de empezar de cero teníamos que asegurarnos de que cada una de las consecuencias negativas de la primera solución no se reproducían en esta, así que aún nos llevó más tiempo.

Donna Mason

Estábamos en un punto en el que teníamos que comprobarlo todo otra vez, no solo los problemas.

Mark Sassenrath

Queríamos asegurarnos de que el resto de funcionalidades de Retirada permanecían igual. Por eso nuestras primeras soluciones fueron muy cautelosas. Hay muchas cosas que no impiden el proceso de Retirada, y no queríamos alterar ninguna de ellas.

16 de julio por la tarde

Las partidas clasificatorias llevan 19 horas deshabilitadas. Los equipos involucrados intentan mantener a los jugadores informados.

Tim Isenman

Tuvimos que comunicar a los jugadores que el testing seguía en curso. Les dijimos que tendríamos más información pasadas unas horas, ya que así teníamos margen de meter la pata un par de veces más. Cada vez que preguntábamos a QA cómo iban parecía que siempre faltaran dos horas. No sabíamos cuánto iba a durar.

Scott Hansen

También tuvimos conversaciones sobre qué decir a los jugadores. No queríamos poner un límite demasiado lejano para tener margen, pero teníamos que ser realistas. Al final optamos por un "pronto", aunque no es ideal.

Tim Isenman

A las 4 p.m. nos dijeron que el 80-90% de los campeones habían superado la prueba. Eso nos alegró, pero era peligroso avisar a los jugadores. Podría suceder que algunos campeones no funcinaran bien, así que tendríamos que volver a empezar y verificar la nueva solución durante 10 horas mínimo. Por eso no dijimos nada aún.

16 de julio a las 5 p.m.

Más o menos a las 24 horas desde que las clasificatorias fueron deshabilitadas conseguimos verificar que el error había sido solucionado con todos los campeones. Los equipos procedieron a implementar el cambio a nivel global y se aseguraron de que la cola clasificatoria volviera a estar activa.

Tim Isenman

Sobre las 5 p.m. nos informaron de que habían solucionado el error por completo. Ya lo habíamos preparado todo con antelación para poder enviar los cambios directamente al juego con un solo clic. Eso nos ahorró mucho tiempo, e implementamos el cambio región por región.

Donna Mason

Lleva lo suyo efectuar cambios en todos los servidores de cada centro de datos del mundo. Pero lo hicimos bastante rápido.

Matthew Wittrock

Fue uno de nuestros plazos de entrega más rápidos. Todo el mundo cumplió con su parte.

Tim Isenman

Hacia el final, Vietnam estaba tardando bastante. Estábamos todos alrededor del monitor esperando su respuesta. Uno nos respondió y nos dijo "aún tengo el error". Casi perdemos la cabeza.

Matthew Wittrock

Da miedo pensarlo. Habíamos realizado testing de todo lo que se nos había ocurrido, pero aún esperábamos alguna publicación diciendo "hey, el error sigue aquí".

Tim Isenman

Le pedimos que saliera del juego y volviera a entrar. Estábamos impacientes. Esperando. Y cuando nos respondió, nos dijo "ya no lo hace. Creo que está arreglado". Fue un momento de verdadero pánico, porque de lo contrario habría significado que no estaba solucionado para ninguna región.

16 de julio a las 8 p.m.

Tras 28 horas deshabilitadas, se puede volver a jugar clasificatorias. El error estaba oficialmente solucionado.

Tim Isenman

Mantuvimos las clasificatorias desactivadas durante cinco minutos más para asegurarnos internamente de que estaba efectivamente solucionado, y a continuación reactivamos la cola clasificatoria y avisamos a los jugadores de que todo volvía a funcionar con normalidad. Habíamos derrotado a nuestro enemigo.

Matthew Wittrock

En ese momento ya no tiene sentido preocuparse. Si algo sale mal, se sabe al cabo de un par de horas. Hay que ponerse con la siguiente prioridad. Siempre hay algo por hacer.

Donna Mason

Pensé que era el momento de jugar una clasificatoria. Como jugadores, también nos alegramos de que todo volviera a funcionar bien.

Kacee Granke

Y después volvimos a ponernos a trabajar.

Mark Sassenrath

Uno no puede dormirse en los laureles. El trabajo no se hace solo.

A nadie le gustan los errores, pero eliminarlos por completo de un juego tan complejo como League of Legends es un reto de los grandes (y trabajamos en ello día tras día). Cuando aparece un error de tales dimensiones, varios equipos en Riot trabajan juntos para encontrar una solución rápida y efectiva, tratando siempre de tener el menor impacto posible en el juego. En el caso del gran error de Retirada de 2015, docenas de personas contribuyeron durante horas a la solución del problema y a que los jugadores pudieran volver a jugar clasificatorias con normalidad.


3 years ago


Contenido Relacionado