Selecciona tus preferencias de cookies
Usamos cookies y herramientas similares para prestar nuestros servicios, saber cómo utilizan los clientes nuestros servicios con el fin de mejorarlos y mostrar anuncios.
Se ha producido un problema al guardar tus preferencias de cookies.
Volver a Novedades

Del otro lado de la pantalla: Rendimiento

J Brian Smith

¡Hola, amigos! Soy J Brian, y lidero el trabajo tecnológico principal del equipo de Crucible. Una de las cosas de las que nuestro equipo es responsable es el rendimiento del juego.

 

Hablando de forma general, el rendimiento hace referencia a cómo de receptivo y agradable resulta el juego. No obstante, los problemas de rendimiento pueden adoptar una gran variedad de formas y tener numerosas causas diferentes. Empecemos hablando de algunos de los componentes clave del rendimiento de un juego y en qué hemos estado trabajando desde mayo. ¡Tras eso, hablaremos sobre algunos de nuestros siguientes pasos a medida que avanzamos hacia un futuro más brillante y eficaz en cuanto a rendimiento!

 


Fotogramas por segundo

Casi todos los jugadores saben que cuantos más fotogramas por segundo (fps), mejor.  Los problemas de fotogramas por segundo pueden adoptar la forma de bajos fotogramas por segundo constantes, o pueden aparecer como "distorsiones" (un único fotograma que tarda mucho más que los fotogramas previos, lo cual resulta irritante). Nuestro objetivo consiste en que, en máquinas que cumplan nuestras especificaciones de sistema recomendadas (usando la configuración gráfica "alta" predeterminada), Crucible se ejecute a una velocidad constante de 60 fps.   En hardware de gama más alta, deberíamos ejecutarlo mucho más rápido, y en hardware de "especificaciones mínimas" con una configuración predeterminada "baja", deberíamos ejecutarlo a una velocidad constante de 30 fps como mínimo. Actualmente, estamos en 60 fps como especificación recomendada en la mayoría de velocidades pero, con demasiada frecuencia, cae por debajo de los 60 fps durante períodos de tiempo o malas velocidades puntuales.

 

En desarrollo, solemos fijarnos en el "tiempo por fotograma" en lugar de en los fotogramas por segundo. Para alcanzar los 60 fps, cada fotograma debe tardar en torno a 16,5 milisegundos o menos. Nuestro trabajo se centra en reducir el tiempo que tarda en completar la simulación y repr esentación de un único fotograma. Hemos hecho más de una docena de microoptimizaciones para fotogramas por segundo y, en general, hemos reducido el tiempo por fotograma más de un 15 % en las máquinas de especificación recomendada desde el lanzamiento, cruzado el umbral crítico en el que la mayoría de nuestros fotogramas tardan menos que el objetivo de 16, 5 milisegundos. La mayoría de estas mejoras se produjeron bien a raíz de crear el motor y sistemas principales que ejecutan nuestra lógica de juego y hacen la representación más eficiente, o bien como resultado del mejor uso de los núcleos inactivos de la unidad central de procesamiento (CPU) en partes de nuestro código que estaban vinculadas de forma innecesaria al uso de un único núcleo de CPU a la vez.

 

Desincronizaciones

 

Cuando tu cliente (la copia del juego que se ejecuta en tu máquina) y el servidor comparten el mismo estado del mundo de juego con precisión, decimos que están sincronizados (están "de acuerdo" en cuanto al estado del mundo). Una desincronización ocurre cuando el ciente y el servidor están en desacuerdo respecto a para qué sirve el estado del mundo en un momento de tiempo dado. Cuando esto sucede, el servidor envía una corrección al cliente, forzándolo a adoptar la verdad del servidor sobre el estado del mundo (el servidor siempre es la "autoridad" del estado del mundo). Esta corrección provoca que el mundo se deforme de modo antinatural de alguna manera desde tu perspectiva. Puede que tú u otro jugador os "estiréis como una banda elástica" hasta un lugar diferente, que una capacidad que pensaste que pudiera o no suceder surta efecto o se cancele, o que cualquier otro valor de mecánica de juego pueda cambiar de forma que parezca y se sienta antinatural. Si sucede la desincronización durante varios fotogramas consecutivos, se nota que algo va bastante mal y puede provocar problemas de ancho de banda y fotogramas por segundo.

 

Las realidades de los modelos de sincronización de redes de baja latencia y tráfico de Internet implican que nunca reduciremos dicha incidencia a cero, pero podemos mejorarlas. Encontramos numerosas situaciones en las que una única desincronización debida a un paquete de Internet perdido o a un error lógico podía resultar en una cadena de docenas de desincronizaciones consecutivas. La reparación de varios de dichos problemas ha reducido nuestra tasa de desincronización general en más de la mitad de como estaba en el lanzamiento.

 

Memoria

Cuando el juego hace un uso cercano a los límites de la memoria de acceso aleatorio del sistema de tu ordenador (RAM) o de la RAM de vídeo, el rendimiento resulta muy afectado, sobre todo si otros programas y sistemas están usando también algunos recursos.  El uso de menos memoria garantiza que sea menos probable que nos acerquemos a dichos límites, mantiene la suavidad del rendimiento y podría finalmente permitirnos ejecutar en un hardware de gama más amplia.

 

Establecimos el objetivo de reducir nuestro uso de memoria desde el lanzamiento en 3 GB (lo cual es mucho, ¡teniendo en cuenta que operamos en máquinas con 8 GB de RAM!) y, desde nuestro lanzamiento el 12 de agosto, ya hemos reducido el uso de memoria en 2,6 GB. El aspecto más complicado de este trabajo fue el de implementar un código de notificación y medida mucho mejor en nuestro motor para dar a los desarrolladores información detallada sobre qué exactamente estaba usando toda la memoria. Armados con información precisa sobre qué sistemas y contenido estaban usando qué memoria, más de la mitad de una docena de áreas clave del juego fueron optimizadas tanto en código como contenido para reducir el uso de memoria considerablemente sin sacrificar la calidad de la experiencia de juego. Este trabajo mejora bastante la experiencia de jugar al juego en el extremo inferior de nuestra gama de hardware compatible.

 

Ancho de banda

La mayoría de conexiones a Internet de la gente fluctúan durante el trascurso de una partida. Cuando un juego necesita enviar o recibir más información de la que tu conexión puede soportar en un momento dado, la información se pierde y tu juego sufre desincronizaciones y alta latencia. La reducción del ancho de banda usado por el juego reduce la frecuencia de dichos problemas.

 

Una de las optimizaciones clave que hemos realizado en este frente hasta el momento lidiaba con unos cuantos sistemas clave que estaban usando mucho más ancho de banda del que era necesario para sincronizar sus datos.

 


Progreso de seguimiento

Ahora que hemos hablado sobre los cuatro factores (fotogramas por segundo, desincronizaciones, memoria y ancho de banda) que conforman la mayoría de la experiencia de rendimiento del jugador, ¿cómo sabemos si nuestros cambios están funcionando?

 

¡Sin una medida consistente de nuestras características de rendimiento, es muy difícil saber si estamos progresando! Hemos estado midiendo el rendimiento minuciosamente a lo largo del desarrollo, y seguimos perfeccionando nuestra capacidad para entender todas las situaciones de rendimiento posibles a lo largo del juego. Hay tres formas principales de supervisar cómo cambia el rendimiento a lo largo del tiempo:

 

  • Hemos mejorado nuestra automatización de pruebas, que examina de forma automática y recopila información detallada sobre el rendimiento del juego una docena de veces al día, para describir más correcta y consistentemente el rendimiento. Esta información nos permite enterarnos rápidamente de cuándo se introducen nuevos problemas y verificar la eficacia de nuevas optimizaciones.

 

  • Complementamos la información automatizada con ejecuciones de rendimiento manual diarias, donde nuestro equipo de control de calidad juega al juego con rendimiento y herramientas especiales grabando código para garantizar que tengamos datos de situaciones de juego reales que a nuestras pruebas automatizadas se les puedan pasar (ya que estas examinan exactamente las mismas condiciones cada vez por diseño).

 

  • Finalmente, supervisamos la información de rendimiento de alto nivel de partidas del mundo real en una página de Internet para comparar lo que los jugadores están realmente experimentando con nuestras expectativas desde las pruebas internas.



 

Futuro

Ahora que hemos cubierto lo que contribuye a la calidad del rendimiento, el estado de cada aspecto para los atributos de  Crucible y cómo los medimos, solo queda un último tema por hoy: ¡lo que está por llegar! Aquí tenéis algunas cosas en las que estamos trabajando ahora mismo, desglosadas por categoría:

 

Fotogramas por segundo

En nuestras pruebas internas sobre las especificaciones recomendadas, seguimos encontrando que en torno al 10 % de nuestros fotogramas tardan 19 ms (recuerda que nuestro objetivo son 16,5 ms o menos), y que el 1 % de nuestros fotogramas tardan 23 ms. En adelante, esperamos hacer mayor uso de los núcleos adicionales de la CPU, lo cual reducirá nuestra duración de fotogramas base, sobre todo en los PC de gamas más altas con más núcleos de CPU. También haremos análisis más profundos de las situaciones que provocan "malos fotogramas" para tratar mejor sus causas concretas. Y, finalmente, trabajaremos en la mejora del equilibrio de la carga del trabajo que necesita hacerse en cualquier fotograma.

 

Aspiramos a poder hacer compatible a la larga una velocidad de 144 fps constantes en hardware de mayor calidad. De corto a medio plazo, estamos centrados principalmente en la compatibilidad de una velocidad consistente de 60 fps en máquinas que cumplan nuestras especificaciones recomendadas, y los beneficios que esto supondrá contribuirán de forma inmediata a posibilitar más fps también en hardware de mayor calidad.

 

Desincronizaciones

A lo largo del siguiente par de meses, estaremos trabajando para reducir la tasa actual de desincronizaciones en más de la mitad, lo que las convertirá en excepcionales y debería tener un notable impacto en la mejora adicional de la sensación del juego en general, sobre todo en situaciones duras de combate. Estas optimizaciones serán el resultado de la mejora de la lógica de predicción en casos donde la predicción existente es necesaria pero frágil, así como de la eliminación de parte de la lógica de predicción innecesaria.

 

Memoria

Como mencioné anteriormente, el objetivo que nos hemos establecido es el de reducir el uso de memoria de Crucible 3 GB, y ya vamos por 2,6 GB. Mediante unas cuantas optimizaciones de contenido y código planificadas (especialmente relacionadas con cómo cargamos la geometría en la memoria), creemos que podemos completar dicho objetivo durante el mes próximo.

 

Ancho de banda

En nuestro próximo lanzamiento, usaremos algunas tecnologías de compresión rápida para reducir más nuestro uso de ancho de banda en un triunfante 30 %. Con ello, cumpliremos consistentemente nuestro objetivo de usar menos de 300 kbit/segundo de ancho de banda de descarga (y la mayoría de las veces usando mucho menos que eso).

 

En dicho punto, habremos prácticamente acabado de optimizar el ancho de banda por el momento, pero echaremos un vistazo a cuánto podemos mejorar el ancho de banda de descarga usado por el juego. Usamos menos subida en general que descarga, pero algunas personas tienen conexiones que están más limitadas a la subida que a la descarga, de manera que puede merecer la pena seguir optimizando aquí si encontramos buenas oportunidades.

 


¡Muchas gracias por leerlo todo y por jugar a Crucible! Sabemos que el rendimiento es crucial para la experiencia de un juego de disparos multijugador competitivo. Nunca estaremos satisfechos del todo, y siempre estaremos buscando nuevas formas de mejorar el rendimiento del juego. Si os entusiasma el rendimiento y tenéis comentarios sobre situaciones de juego detalladas específicas que parezcan tener problemas, nos encantaría escucharos (el canal de "#bugg reports en Discord es un lugar genial para compartir eso).


V2