Un plugin para Unreal Engine que dota de ciertas herramientas y métodos para poder gestionar automáticamente diversas optimizaciones sobre los actores Character y sus componentes. Está orientado principalmente a la optimización de entidades con comportamiento complejo y/o animaciones. Su principal cometido es aliviar la carga de la CPU. Es usado extensivamente en la versión de Switch del Xuan Yuan Sword VII.
Los personajes en videojuegos suelen ser las entidades que más recursos consumen de nuestro sistema: inteligencia artificial, animaciones, complejos métodos de movimiento, actualización de variables, etc. Todo esto es lo que los personajes necesitan calcular cada tick. Esto puede llegar a ser muy costoso, especialmente cuando tenemos muchas de estas entidades en nuestra escena o cuando el hardware del que disponemos es muy limitado.
Si el coste temporal del GameThread de tu juego es demasiado alto y el profiling de la CPU apunta a cálculos relacionados con los Characters, este plugin puede ahorrarte mucho trabajo.
El Auto Significance Manager permite tener optimizados los Character en tu proyecto con una sencilla implementación. Una vez activado el plugin, lo único que te queda para tenerlo listo es reparentar la clase del Character que quieras de tu juego para que la clase ASignificanceCharacter del plugin se interponga entre ambos, inyectando los métodos necesarios para gestionar todos los Character del juego.

Diagrama dónde se muestra donde va la clase intermedia.
Anim Budget Allocator
Una de las partes más importantes del sistema. Este subsistema de Unreal permite ajustar dinámicamente la resolución temporal de las animaciones, así como el cálculo de las interpolaciones entre keyframes, de manera que se mantengan por debajo de un frametime dado en milisegundos. Puedes añadir configuraciones concretas para cada plataforma, además de las por defecto.
Otra función muy útil es el Dynamic Budget, que permite ajustar el Budget del Anim Budget Allocator (a.Budget.BudgetMs) en función del frametime actual del GameThread. Intentará ajustarse al Target (Dynamic Budget Target) aprovechando los recursos sobrantes, pero en el momento en que se pase, comenzará a recortar de las animaciones para aumentar el rendimiento, hasta llegar al Dynamic Budget Min. El Dynamic Convergence Rate es una variable que nos permite ajustar cuán rápido se actualiza el Budget al rendimiento actual del juego: cuanto más alto, más suavemente se ajusta. Es recomendable modificarla solo si hay un problema de ruido de CPU.

Configuración del ABA en el Plugin.

Configuración del Dynamic Budget.
Optimización de componentes
Otra importante utilidad que nos ofrece el plugin es el Component Optimization, que nos permite reducir e incluso congelar completamente la ejecución de los habitualmente demasiados componentes de un Character. El funcionamiento de esta utilidad se basa en la generación de campos y un nivel de corte para decidir a qué nivel del campo empezamos a ejercer la operación de optimización (Reduce o Freeze). Esto permite un mayor control in-game del sistema, además de poder, potencialmente, permitir diferentes niveles de “corte”.

Configuración del optimizador de componentes.
El siguiente esquema explica visualmente el funcionamiento de los campos: el radio verde es el ReductionDistanceGradient.X y el radio azul, el ReductionDistanceGradient.Y. El mínimo y el máximo del gradiente, en rojo. La línea amarilla es la distancia correspondiente al valor parametrizado de ReductionParameterLevel: 0 equivale al mínimo y 1 al máximo. A partir de esta distancia, se reduce el número de Ticks que ejecutan los componentes de los Character.
Lo mismo aplica con el Freeze, pero a partir de dicha distancia y si no se están renderizando, los Characters se congelan, no realizando cálculo alguno. Por motivos evidentes se recomienda tener distancias suficientemente altas. Es aconsejable activar esto solo si es realmente necesario, ya que puede traer más problemas que ventajas.

Diagrama dónde se muestra donde se muestra el funcionamiento de los campos.