En nuestro diario del desarrollador, echaremos un vistazo a las exploits (trampas) del juego, cómo las resolvimos y qué suponen esas correcciones para futuras trampas.
CALENDARIO
11 Y 12 DE MAYO
- A comienzos de mayo, tres exploits salieron a la luz en la comunidad Rainbow Six Siege: la del escudo de Clash, la de las minas Claymore y las de los escudos desplegables.
- Al revisar la situación en el fin de semana, el equipo tuvo claro que este problema era prioritario.
13 DE MAYO
- El equipo comenzó a investigar las trampas. Nuestro primer paso fue reproducir de precisa y consistentemente las exploits de forma interna para comprender el problema, y entonces identificar el origen del problema.
- La investigación inicial reveló que necesitábamos más tiempo para comprender el alcance del problema, y supimos que una solución inmediata no sería posible.
- A medida que la trampa se extendía por la comunidad, comenzamos a hacer planes para mitigar el impacto a corto plazo.
15 DE MAYO
- Los jefes del proyecto Rainbow Six Siege se sentaron a hablar sobre las exploits. Teníamos que determinar, cuantitativamente conforme a los datos recogidos, el alcance y el impacto exactos de las exploits (trampas) en el juego.
16 DE MAYO
- Tras revisar los datos, la mañana del 16 de mayo decidimos desactivar a Clash, las Claymore y los escudos desplegables.
- Varios equipos dejaron de lado su labor habitual mientras explorábamos opciones para crear e implementar una solución que desactivara a Clash, las minas Claymore y los escudos desplegables.
- Comenzamos a poner a prueba toda solución posible a medida que se iban completando. Identificamos cinco posibles maneras de abordar el problema, y tras varios intentos fracasados, al fin encontramos la solución en nuestro último enfoque.
17 DE MAYO
- Tras dos rondas de pruebas inmediatas que resultaron ser un éxito, activamos los mecanismos que desactivaban a Clash, las Claymore y los escudos desplegables como primera respuesta de urgencia.
24 DE MAYO
- Nos dimos cuenta de que corregirlo completamente nos llevaría más tiempo, ya que afecta a los procesos centrales del sistema, sobre todo al orden en que los paquetes de datos son enviados al servidor. Pero al comprender que desactivar a Clash y los dispositivos fundamentales impactaban en gran medida en el juego, los equipos comenzaron a trabajar en paralelo para crear soluciones a prueba de fallos que pudieran implementarse de forma segura.
JUNIO
- Durante las semanas siguientes, surgieron nuevos informes de trampas.
- Pero con los cambios ya aplicados, éramos capaces de reaccionar rápidamente a los nuevos reportes y desactivar a Clash y a IQ.
- En este momento, el equipo ya había completado una solución operacional para la causa subyacente de las exploits. Las pruebas internas habían arrojado resultados positivos, pero primero teníamos que llevarlos al servidor de pruebas para ser revisados a mayor escala antes de implementar los cambios de forma segura en el servidor operativo.
JUNIO-JULIO
- A finales de junio se despliega la Disposición Global para PC, y más tarde (en julio), para consolas.
- Durante este tiempo, monitoreamos el rendimiento de la Disposición Global y comprobamos si había signos que indicasen alguna regresión.
CAMBIOS Y SOLUCIONES A PRUEBA DE FALLOS
Mientras parte del equipo trabajaba en una solución, otra parte había empezado a desarrollar soluciones a prueba de fallos en el corto plazo al comienzo del proceso para crear una solución inmediata más sostenible. Estos cambios y soluciones tenían como objetivo abordar solo los métodos de las trampas, pero no pretendían ser una solución completa. Al contrario, fue una decisión tomada por el equipo tras sopesar el coste de la desactivación de Clash y dos dispositivos en la salud del juego. Se desplegaron en los servidores operativos poco después con el reto de que la comunidad reportase más casos.
La decisión de desactivar agentes y configurar equipamientos no la tomamos a la ligera. Debemos respetar el tiempo y el esfuerzo que los jugadores llevan empleados en desbloquear contenido del juego, y ser conscientes de lo mucho que impacta haber eliminado mecánicas fundamentales del juego en el objetivo y el ecosistema de Rainbow Six Siege. Pero teniendo en cuenta las circunstancias, sentíamos que corregirlo por completo no sería una solución aceptable: teníamos que anular las exploits y normalizar el estilo de juego para los jugadores de lo más segura y rápidamente posible.
Las soluciones a pruebas de fallos tenían que satisfacer diversos requisitos: tenían que ser “quirúrgicas” (es decir, que no causaran ningún retroceso ni daño colateral no intencionado), fácilmente modificables para una respuesta rápida, y cuyas pruebas pudieran ser las mínimas para desplegar las soluciones rápidamente. Los cambios de agentes y dispositivos fueron nuestra primera respuesta para abordar rápidamente las trampas, pero fuimos conscientes de que era un último recurso y a muy corto plazo, y mientras, preparábamos y poníamos a prueba nuestras soluciones a prueba de fallos.
¿QUÉ ES LA DISPOSICIÓN GLOBAL?
Cada agente, dispositivo, granada, escudo, cámara, pared y planta de Rainbow es un objeto. Cada objeto de Rainbow Six Siege envía un mensaje (paquete) al servidor cuando se da cualquier paso o se realiza cualquier acción. Por ejemplo, cuando te equipas con tu dispositivo, tu agente envía en secuencia los mensajes “Estoy equipándome con mi dispositivo” y “Estoy utilizando mi dispositivo”. Al mismo tiempo, tu dispositivo también está enviando al servidor simultáneamente mensajes como “dispositivo activado” y “dispositivo instalado”. El servidor envía estos mensajes a jugadores que están en tu partida.
Anteriormente, el orden en que se entregaban estos mensajes al servidor solo estaba garantizado por cada objeto del juego. Esto implicaba también la posibilidad de que fallos cuando los mensajes se perdían o se entregaban de forma equivocada al servidor. Las exploits se aprovechaban de ese flujo en nuestro protocolo de red enviando varias acciones simultáneamente (spamming), lo cual aumentaba la probabilidad de que esos mensajes de red no lograran recibirse correctamente. En consecuencia, la réplica equivocada en el servidor hacía que en las partidas no se mostrase correctamente la acción adecuada y esperada.
Nuestra solución al problema, la Disposición Global, modifica el motor de la red para ordenar de manera global todos los mensajes. Los mensajes también se envían en múltiplos, para garantizar que los datos se envían de forma eficaz. Esto significa que ahora, cada partida recibirá la misma secuencia de mensajes, y la réplica estará sincronizada para todos los jugadores de la partida.
Cuando vimos que las trampas existentes estaban relacionadas con este proceso central, sabíamos que debíamos ser muy serios a la hora de abordar la Disposición Global. Debíamos asegurarnos de que no habría daños secundarios a raíz del cambio. Por fin, y a pesar de que el cambio a la Disposición Global conlleva cierta carga adicional sobre el ancho de banda, creemos que los beneficios merecen la pena, ya que esta carga adicional es un pequeño coste, de modo que decidimos seguir adelante.
¿QUÉ SIGNIFICA ESTO PARA EL FUTURO?
Con la Disposición Global aplicada, las acciones se replican de manera uniforme para todos los jugadores de una partida, ya que ahora están ordenados a nivel global y no a nivel de cliente. Hemos valorado y sopesado el coste adicional de ancho de banda, y aunque se incrementará ligeramente, no alterará tu experiencia de juego. Esto debería evitar más problemas en la entrega de mensajes fuera de servicio y exploits similares.
Las trampas y su impacto en la comunidad también resaltaron la importancia de los cambios de agentes y dispositivos, y nuestra necesidad es tener un mayor control sobre la configuración de los agentes y los dispositivos en los servidores operativos. Desde entonces dedicamos más recursos para satisfacer esta necesidad y garantizar que podemos responder rápidamente a la situación en el caso de futuras trampas.