Parrot utiliza subsistemas en Unreal Engine. Los subsistemas proporcionan ciclos de vida administrados por el motor y añaden puntos de extensión para funciones comunes. Si utilizaste un patrón singleton en Unity, los subsistemas cumplen una función similar. Los subsistemas están directamente vinculados con los siguientes ámbitos del motor:
Motor
Editor
Instancia de juego
Entorno
Jugador local
Cuando estos ámbitos cambian de estado, los subsistemas también lo hacen y pueden reaccionar en consecuencia.
Un motivo común para usar subsistemas es la necesidad de exponer funcionalidad común de C++ a blueprints, cuando se conoce la duración esperada.
Ejemplo de subsistema de audio
Parrot utiliza un subsistema de audio por los siguientes motivos:
El subsistema está vinculado a la duración de la instancia de juego sin estar en dicha instancia en sí.
El subsistema es accesible en C++ y blueprint.
La configuración de sonido del juego, por ejemplo, el volumen, puede cambiarse en cualquier momento y desde cualquier lugar.
La manipulación de la configuración de audio por medio de un subsistema proporciona un punto de acceso de depuración centralizado.
La configuración de audio se puede guardar en cualquier momento por medio de cualquier sistema externo.
Para ver cómo funciona esto en la práctica, observa UParrotAudioSubsystem. El subsistema de audio interactúa principalmente con los sistemas de IU, ya que es ahí donde el jugador puede manipular el sonido. Sin embargo, es posible modificar el audio desde otro lugar si fuera necesario. Cada vez que añades un sistema a tu juego, plantéate si un subsistema sería una forma útil de abstraer esa funcionalidad.