Razón Artificial

La ciencia y el arte de crear videojuegos

Generic Game Engine

proyecto personal de un Game Engine para juegos 2D. La idea es que sea modular, que cuente con diferentes módulos: Física, IA, Gestión de recursos, etc. Que sea una capa de abstracción para las bibliotecas que use. En principio solo he decidido una biblioteca y es SFML para le manejo multimedia: Ventana, recursos, E/S. En el futuro pienso usar otras bibliotecas como Box2D para temas de física y es posible que alguna dedicada a la Inteligencia Artificial.

Información

Características

Esta lista no es definitiva pues aún está en una fase temprana de desarrollo, pero estás son algunas de las características que se están pensando implementar.

  • Escrito en C++ sobre bibliotecas consolidadas para el bajo nivel (SFML, PugiXML, Box2D, etc)
  • Gestor de escenas. Cambio fácil y sencillo de diferentes pantallas en un juego.
  • Gestión de recursos. Carga fácil de diferentes tipos de recursos y plantillas para que el usuario puede crear sus propios recursos, estos son algunos de los recursos que cargará por defecto el engine:
    • Imágenes. Formatos conocidos: png, jpg, bmp, gif, psd, etc.
    • Audio. Formatos conocidos: mp3, ogg, midi, etc.
    • Fuentes tipográficas.
    • Ficheros de configuración: cfg, ini.
    • Ficheros XML.
    • Mapas en formato TMX (Tiled Map Editor).
    • Scripts en Python (posibles futuras ampliaciones a otros lenguajes de scripts como Ruby o LUA).
  • Modular. Se diseñará con la idea de que el engine sea modular, según el juego que se cree puede que sea necesario unas características u otras por lo que no tiene sentido cargar los módulos de física o IA si se está creando un clon del tetris. Estos son algunos de los modulos pensados.
    • App: Módulo principal del engine: Bucle del juego, Gestión de escenas, E/S, Control de la ventana, gestión de recursos.
    • Física: basado en Box2D.
    • Inteligencia Artificial: Con algoritmos típicos: FSM, Pathfinding, MinMax, etc.
    • GUI. Creación fácil de interfaces del usuarios.
    • Otros. Será posible añadir nuevos módulos fácilmente a modo de plugins.
  • Abstracción total de las bibliotecas de bajo nivel: Nada de lidiar con SFML, Box2D u otras bibliotecas, el engine será una capa de abstracción de todas estas bibliotecas.
  • Manejo fácil de Animaciones y SpritesSheet.
  • Totalmente documentado en español. El código está documentado con Doxygen en español por tanto toda la referencia de clases está en español. Se elaborarán también tutoriales para el manejo del engine.