[RAGE] La clase App
Esta es la clase principal del engine ya que es la encargada de ponerlo en funcionamiento y de cargar los componentes necesarios. La clase App se encarga de lo siguiente:
- Inicializar y Cerrar la aplicación.
- Inicializar los componentes necesarios.
- Crear y gestionar la ventana de la aplicación.
- Crear y gestionar el log de la aplicación.
Vamos a pasar a analizar cada uno de ellos por separado.
Inicialización y cierre de la aplicación
En algo importante en un sistema como este, se encarga de inicializar el Game Engine, establecer el punto de entrada y por último se encarga de las operaciones de cierre como liberación de memoria y cierre de ficheros.
En motores más complejos contendría la reserva y gestión de memoria, pero es algo no necesario en nuestro engine.
Inicializar los componentes necesarios
RAGE es un software basado en componentes, es decir, varias piezas que se unen para formar un sistema. Hay algunos de estos componentes que se consideran esenciales para el funcionamiento del Engine y son los siguientes.
File System
Se encarga de definir un sistema de archivos confiables para la aplicación. Sirve para acceder a rutas de recursos y directorios donde guardar archivos. Debe ser independiente de la plataforma y sencillo de usar.
La idea es poder usar un sistema sencillo que defina rutas relativas al ejecutable de la aplicación.
Scene Manager
Se trata de un sistema de escenas. Los juegos están basados en escenas diferentes como una pantalla de inicio, un video de introducción, un menú o una pantalla de puntuaciones. Todo esto es mejor gestionarlo por escenas o estados, en otro artículo hablaré más extendidamente del Scene Manager.
Asset Manager
Se encarga de la gestión de recursos. Carga los recursos necesarios buscando en los directorios definidos, evita la carga duplicada de recursos, debe tener varias formas de cargar un recurso.
Log System
El sistema de Log me he basado en el principio KISS (Keep it Simple, Stupid). Así que en lugar de usar logs complicados será un simple ofstream
de la STL redirigido a un fichero.
Estos serían los sistemas básicos a inicializar, pero dependen de otros componentes.
Componentes auxiliares
Strings Utils
Se ha de crear una colección de funciones para el manejo eficiente de cadenas, conversión rápida y eficiente, así como un método de hash para una comparación rápida.
Executable dir
Se debe de obtener un método para obtener la ruta del ejecutable que es con la que opera el sistema de ficheros y a través de este el gestor de recursos para la carga de archivos desde una memoria secundaria (discos duros, cds, dvds, etc).
INI Parser
El Engine se basará en archivos .ini para su configuración por lo que se necesita poder poder leer este tipo de ficheros así como crearlos si no existen.
Todo esto no es más que componentes básicos que se necesitan desde un principio y no los únicos, se ha hecho un repaso por arriba, en futuros artículos hablaremos de cada uno de ellos en profundidad.