in , ,

BlizzCon 2015 – Ingeniería de los juegos Community Amphitheater

 

Al Community Amphitheather acudieron varios ingenieros de World of Warcraft, Heroes of the Storm, Overwatch y Battle.net para charlar sobre la parte de hardware y software implicadas en nuestros juegos favoritos. Esta charla no se pudo ver por el Pase virtual por lo que aquí os dejamos en español la traducción del mismo y el vídeo grabado por los chicos de MMO-Champion durante el evento.

Traducción realizada por Ravena

  • El equipo de Overwatch hizo una demo para China, pero se olvidó de que no podía haber nada de sangre. El juego tenía que ser parcheado a través de una débil conexión Wifi en china para deshacerse de la sangre, se dieron cuenta de que había un punto en el cliente en el cual este determinaba si habías disparado a otra unidad o al entorno, un simple If. Se dieron cuenta de que cambiando un simple byte del ejecutable podían deshacerse de la sangre. Escribieron un ejecutable para que encontrase ese byte en el cliente y lo cambiase de valor, luego guardaron el cliente modificado. Funcionó y Chinajoy tuvo su beta de Overwatch.
  • En el lanzamiento de Warlords, las cosas estaban un poco en pañales. El equipo tenía todo el Hardware que necesitaban, pero al ser el WoW un juego más viejo, cada blade (Tipo de computador para los Centros de Datos) se tuvo que dedicar a distintas zonas del juego. El equipo configuró las blade de la forma que ellos creían que funcionaría todo perfectamente, pero no estaban muy seguros de qué tipo de blades estaba en cada parte. No tenían suficientes blades de gran memoria para las instancias, con lo que se quedaron sin memoria. Entrar en tu Ciudadela crearía una nueva instancia, con el resultado de cientos de miles de instancias. Le costó al equipo unas 8 horas el ir a los Centros de Datos y sacar las blades, añadirles más memoria, y mover las blades entre los clusters. Esto repercutió como un tiempo de inactividad, pero una vez todo volvió a estar otra vez funcionando era mucho más estable. Después de eso los errores fueron únicamente de Software.
  • El motor de Heroes es el mismo que el de Starcraft, con lo que cuando el equipo quiere hacer un cambio tienen que pensar también en todos los mods que usan los usuarios que podrían utilizar lo que quieren cambiar. No pueden cambiar cosas que dañarían los mods de los usuarios en el modo Arcade. Por lo que muchas restricciones han sido creadas a la hora de tocar ese motor, pero todo el mundo está de acuerdo con ello. Por suerte nadie se va del Equipo 1, con lo que todos los que trabajan en él están ya familiarizado con las cosas.
  • El equipo original de desarrolladores de WoW decidió que el inventario fuese tratado como un Array. Las primeras entradas del Array serían para el equipo de Cabeza, piernas, y demás. Después venia el inventario, luego quisieron añadir un banco al juego, con lo que lo pusieron al final de Array. Los jugadores no deberían de poder acceder a su banco en cualquier zona del juego, pues se cargaría el código. Esto se arregló añadiendo múltiples cambios en distintas partes del código, definiendo en cada momento donde terminaba el array y donde comenzaba el banco. Estos valores fueron añadidos al código, pero no era una simple búsqueda para encontrarlos a todos. Si se quieren añadir más huecos en las mochilas, ¿Cómo sabemos que no vamos a romper nada? Se convierte en algo muy fácilmente buggeable y propenso a errores, y lo más probable es que se cometan errores. Estos errores significan “romper” el juego. Como resultado de todo esto, tenían que poner en esta tarea a ingenieros increíbles que pudiesen trabajar en estas nuevas características buscando a través de miles de líneas de código para encontrar todos los posibles casos donde pudiese ocurrir un problema, el departamento de Control de Calidad probo todos los casos y posibilidades existentes para garantizar que ningún cambio realizado rompería algo. Así es como terminamos con una mochila de tamaño fijo.
  • El equipo prefiere arreglar las cosas cuando vuelven de trabajar en nuevas características del juego relacionadas con estas. Cuando trabajaron en las zonas entre reino, se replantearon cómo manejar a los personajes entre reinos. Quitaron mucha cantidad de código antiguo y lo rehicieron, resultando en ser capaz de añadir nuevas características en el futuro sin tener que preocuparse de bugs como los relacionados con los 16 huecos de la mochila. Esto permitió la creación de instancias sin fisuras para ciudadelas, junto con algunas cosas nuevas en Legión que aún no se han revelado.
  • Todos los juegos fueron como un código heredado que el equipo de Battle.Net tuvo que dar soporte. Cuando el equipo quiso incrementar el número de amigos que podías tener en Battle.Net, tuvieron que encontrar todas las partes de código en diferentes juegos que tenían alguna restricción al respecto. La interfaz de todos los distintos juegos también podría suponer un problema en cuanto a cuantos amigos podías tener y ver. Todos los juegos tuvieron que ser parcheados para poder soportar todos los nuevos cambios. Ele quipo nunca puede hacer algo que requiera que todos los juegos se parcheen al mismo tiempo, con lo que los cambios tienen que ser de alguna manera compatibles con lo que ya existe.
  • Es razonable pensar que el equipo de WoW está mirando hacia nuevas tecnologías, incluyendo DirectX 12. No tenemos ninguna fecha para anuncios de este tipo a la vista.
  • Héroes de la Tormenta es un juego muy dependiente de los datos. El equipo de diseño se acercó al de sistemas y les dijo que querían hacer algo divertido, como un héroe que fuese controlado por dos jugadores diferentes (y así poder enseñarlo en la Blizzcon). El equipo entró en pánico al principio, después pensaron en cómo hacerlo, y lo hicieron.
  • Los ingenieros nunca quieren decir que no al diseño. Los diseñadores son increíbles en lo que hacen y tienen ideas creativas muy buenas, con lo que nadie quiere decirles que no. Especialmente cuando los diseñadores encuentran cómo hacerlo. Hay una imagen de un cubo de basura con un trozo de hierro encima. El hierro estaba caliente y había una cafetera encima, con espaguetis en la cafetera. Problema resuelto, pueden hacer espaguetis.
  • Es muy importante darse cuenta de cuando los diseñadores están bajo mucha presión mientras diseñan un juego e intentar hacer que esa presión desaparezca. Tan pronto como te encuentras aun diseñador mirando un cuadro de dialogo con 128 casillas, no están ya pensando en cómo de fantástica tiene que ser la experiencia que quieren hacer, están pensando entre las diferencias entre LEAVE_WORLD_CANCELS y ENTER_WORLD_CANCELS. (¡¿Dónde están los personajes cuando no están en el mundo?!)
  • Overwatch tiene distintos equipos “de ataque”, mucha gente de distintas disciplinas se unen para conseguir hacer una característica nueva. Con Overwatch, normalmente es un héroe. Necesitaron a los ingenieros de juego, programadores, diseñadores, animadores y artistas de efectos trabajando juntos para conseguir hacer a Hanzo. Tuvieron que traer al equipo de sonido que siempre está estresado. Todo el mundo trabajó en conjunto para conseguir una jugabilidad perfecta, obteniendo todos los distintos puntos de vista que cada equipo puede ofrecer, finalizando con la retroalimentación que ofrecen el resto de personal de Blizzard y los que prueban la beta. Mucho de este último trabajo conlleva el sentarse delante del juego y probar todo en lo que has estado trabajando.
  • Hay dos tipos de héroes en Overwatch: D.Va y los que no son D.Va. Empezaron a trabajar en ella hace unos meses, sin pensar que tardarían tanto en completarla.
  • El equipo decidió que los diseñadores querrían en un futuro hacer algo así como un cohete que pudieras lanzar y luego controlarlo, con lo que se adelantaron y escribieron un código para poder hacer algo así. Junkrat llegó y pensaron que lo tenían cubierto gracias a eso y todo sería genial. Al final resultó que todo tendría que ser re hecho para D.Va tuvo muchos bugs a la hora de salirse del robot, pero aún tuvieron más a la hora de todo lo que conlleva el capturar el convoy, cambiando de tema. Otro bug hizo que la cámara se fuera a la posición 0,0,0 cuando salías del robot, dejándote sin poder controlar absolutamente nada.
  • Los ingenieros y los diseñadores tienen objetivos complementarios. El objetivo de los diseñadores es conseguir que la mayor cantidad de jugadores consigan la mejor de las experiencias. El objetivo de los ingenieros es asegurarse que ninguno tenga una experiencia mala. Pensar en todos los casos extremos para asegurarse que el código puede cubrirlos.
  • Que aparecer como Desconectado no esté disponible es debido a este código heredado. Es difícil diseñarlo de manera consistente para todos los juegos debido a esto. No es difícil técnicamente hablando. ¿Qué haces cuando tu amigo aparece como desconectado pero lo tienes delante de ti en el juego? Aparecer como desconectado en verdad significa “Quiero esconderme de mis amigos para poder jugar al D3 en vez de ir de raid”, pero cuando los dos estáis delante de la casa de subasta…
  • El equipo utiliza muchas herramientas estándar como VTune junto con las desarrolladas internamente. Hay mucha automatización a la hora de testear cosas, como poner 10 heroes en un mapa y hacerlos luchar entre ellos para comparar el funcionamiento de las distintas versiones. Los héroes cambian de versión a versión, pero gracias a estas pruebas podemos conseguir un rendimiento general, evitando así errores catastróficos.
  • Overwatch utiliza herramientas de perfiles similares.
  • Cada vez que se optimiza el código hay intercambios. El conocimiento sobre optimización, el tiempo que se tarda en escribir estas optimizaciones, como de mantenible va a ser el código, y que tipo de impedimentos va a poner tu código para los demás ingenieros y el resto de equipos a la hora de resolver problemas.
  • El equipo ha tenido que hacer muchas optimizaciones hablando con los artistas para poder simplificar la geometría de colisión. No hay superficies planas en los cuerpos, con lo que se necesita realizar algunas optimizaciones de rendimiento.
  • Cuando el equipo está intentando resolver algunos problemas de diseño, consideran la fantasía que están intentando crear, no cuál es la solución que están intentando escribir. Quieren tener en consideración la experiencia del jugador que están intentando recrear.
  • En un punto en su anterior vida como un ingeniero HFT @kurtismcc ahorró 120 ns en una función hash y las personas estaban emocionadas, fue una gran victoria.
  • El equipo de WoW pasó mucho tiempo viendo si leer datos de una tabla estática conseguiría acelerar las cosas 4 o 5 veces, después de esto se dieron un golpecito en la espalda. Después hicieron algo como lanzar Warlods, crear cientos de miles de instancias, y darse cuenta de que cuando querían cerrar una instancia tenías que arrastrarte por toda la linked list hasta encontrar la que querías borrar. Alguien decidió que las tablas Hash tomarían demasiado tiempo con lo que las pusieron en una linked list.
  • Los equipos han tenido que escribir 5 o 6 perfiles para poder cumplir las necesidades de cada equipo.
  • Blizzard quiere hacer que los juegos estén más tiempo online. Quieren pensar menos en la ingeniería y más en la forma de llegar a conseguir los tres nueves. Han estado intentando conseguir esto internamente, sobre todo con el WoW, pero se trata de una infraestructura vieja. Battle.Net también tiene muchas partes de su infraestructura antiguas. El equipo recientemente ha intentado llegar a un ciclo de parches de 1 hora de duración y al final se quedó en 1 hora y 45 minutos en NA y 53 minutos en EU. Son cada vez más rápidos y sería bonito poder llegar a implementar un parche en vivo sin tiempo de mantenimiento.
  • Hay muchos datos estáticos que hacen que funcione el juego, con lo que los días de parche requieren copiar muchos datos de forma muy ineficiente a muchos sitios. Están trabajando en mejorar ese proceso. Una gran parte del mantenimiento se emplea en mover de forma ineficiente el código y los binarios actualizados desde los Centros de Datos remotos. Después de eso se necesitan hacer tests en vivo, ya que hasta después de testear todos los entornos no quedarán tan fantásticos como deberían. También tienen que desconectar y volver a conectar los servidores en un orden determinado. El equipo tiene ambientes de desarrollo donde se pueden testear todas estas cosas, pero todo tiene que ser replicado en el entorno real, esperando que todos los testeos realizados cubran todas las posibilidades.
  • A muchas personas de blizzard les encanta la realidad virtual, pero trabajan en ideas fantásticas de juegos, no se puede añadir tecnología increíble sin una buena idea. Cuando y si acaso se les ocurriese una buena aplicación para la realidad virtual, se exploraría. Si la realidad virtual ayudase al jugador en su inmersión en el juego, sería muy divertido.
  • El equipo utiliza Perforce en Overwatch, así como también código propio para el control de software.
  • Battle.Net utiliza Git para todo su código y Jenkins
  • El equipo de servidores de WoW utiliza Subversion todavía, pero se ha hablado de moverlo todo a Git donde hay mucho código compartido.
  • El equipo 1 utiliza Git, Perforce,Jenkins. (No es Leeroy)
  • El equipo de interfaz de WoW mira el código fuente para averiguar que funciona y que no, en ocasiones utilizan WoWPedia. Existe cierta documentación en el lado del servidor Lua, pero no tanta en el lado del cliente.
  • El motor de Lua que corre en el lado del servidor es peor que no tener documentación, ya que busca activamente en el código nuevas funciones para añadir, para que de esta forma los diseñadores tengan más flexibilidad. Esto significa que podemos terminar con 17 funciones llamadas teleport sin saber cuál es la correcta. Si para los desarrolladores de Addons es malo, internamente es mucho peor.
  • WoW no utiliza mucho desarrollo ágil. Algunos del equipo se están moviendo a metodologías scrum. Blizzard no tiene mucha coherencia entre los equipos internos.
  • El equipo de Overwatch estaba preocupado por la minería de datos. Encontramos el modo de progreso 2.0 e incluso aunque se podía ver en la demo de la Blizzcon, era algo que se había desechado 2 días antes de la beta.
  • El equipo de WoW sabe que tan pronto como se ponen los datos en el CDN va a ser minado y se va a mirar con lupa. Cuando hablaban de cambiar el sistema para adaptarlo al nuevo se habló de cifrar absolutamente todo para mantenerlo en secreto el mayor tiempo posible. Cifrarlo todo significa que no pueden hacer ningún arreglo, por lo que si se quisiera modificar algo se tendría que volver a descargar todo el contenido, con lo que se decidieron por no cifrar todo.
  • Es todo un reto crear un entorno seguro y cerrado que permita una rápida iteración. La iteración es muy importante, tanto para la ingeniería como para el diseño del juego, por lo que a veces se les da prioridad sobre otras cosas.
  • Los juegos de Blizzard operan en una escala en la cual una decisión a priori inocua puede acabar dándote grandes problemas. Queremos dejar que los jugadores pueden hacer la consulta de /quien para saber si alguien está online. Los servidores estaban gastando un 85% de su tiempo en responder a estas consultas porque había muchos jugadores online. Es un buen ejemplo del problema de n al cuadrado. El equipo tiene que tener en cuenta estas cosas, ya que no existen los límites de población que tienen otros juegos.
  • Legion está reescribiendo mucho código, resultando en servidores con más capacidad de respuesta. Durante la fiesta de la Cerveza, la misión de la carrera de carneros no era muy divertida, ya que nunca podías ver los cubos. El servidor solo actualiza tu área de interés cada 5 6 segundos, con lo que podías llegar donde estaba el cubo antes de que se actualizara y cargase el cubo. El equipo está tratando de mejorar esto para Legion, pero es mucho trabajo.
  • Equipo 1 – SC2 y Heroes, Equipo 2 – WoW, Equipo 3 – Diablo, Equipo 4 – Overwatch, Equipo 5 – Hearthstone
  • Todos los equipos quieren tener más presencia en el entorno móvil. Hearthstone ha demostrado que blizzard puede estar en el entorno móvil. Muchas personas querían poder hacer las misiones de las Ciudadelas desde dispositivos móviles y el equipo también quería poder hacerlo.
  • Blizzard hace revisiones de código a través de la mayor parte de los equipos, y aprovecha las nuevas características de C++ para hacer el código más legible. La legibilidad y mantenibilidad es un valor muy importante para Blizzard. Los productos tienen que poder vivir mucho tiempo, por lo cual esto es muy importante.
  • Hay una solución barata y otra correcta, se supone que el equipo siempre tiene que decantarse por la solución correcta, incluso aunque tarde más. No querrás tener que volver atrás y arreglar las cosas que se han hecho de manera pobre.
  • Hay una tensión entre querer comprender el código y reescribir el código que parece que está lioso. Si hay código con claras formas de extenderlo, ese código es genial, incluso aunque sea código antiguo.
  • Overwatch tenía una gran cantidad de personas que se apuntaron a la beta limitada. Una de las cosas que querían comprobar es si el código funcionaba en diferentes tipos de redes. Una persona que asistió a la Blizzcon dijo que jugaba desde Chile y que funcionaba perfectamente. El equipo incluso ha intentado jugar mediante internet compartido por el teléfono y todo funcionó bien.
  • Los fines de semana de beta abierta son buenos para crashear los servidores y exponer bugs. Las betas abiertas de Diablo 3 ayudaron a descubrir errores.
  • Las opciones tecnológicas que se pueden obtener de fuera son genéricas y no siempre resuelven los problemas que tiene Blizzard desarrollando juegos. El equipo prefiere tener que trabajar con las limitaciones que generan el construir ellos mismos las herramientas que las limitaciones que vienen dadas por herramientas genéricas.
  • Si hay código abierto que pueda solucionar un problema con el equipo de servidores de WoW, lo utilizarán. Si miras las descripciones legales en el cliente se puede ver una gran cantidad de licencias de código abierto de las librerías que utilizan. Tratando siempre de no reinventar la rueda.
  • Tener un juego completo es una gran experiencia si buscas que poner en tu currículum. La pasión por el aprendizaje y la variedad en lo que se hace también es muy bueno.

Otros paneles y artículos de BlizzCon 2015

 

 

Written by Epsilon

Deja una respuesta

Entrevista de MMO-C a Hazzikostas sobre Legion en BlizzCon2015

BlizzCon 2015: ¡Probando el Cazador de Demonios! (Exp. de Juego)