Razón Artificial

La ciencia y el arte de crear videojuegos

Haciendo un Game Engine 2D básico

Escrito por adrigm el 23 de septiembre de 2011 en Desarrollo Videojuegos, Programación, Proyectos | 3 Comentarios.

Hace tiempo vengo planeando hacer un Game Engine básico para juegos 2D, Se que existen muchos en la red y que uno más no va a aportar nada. La idea de hacer uno propio es aprender y ver como se hacen las cosas, de paso iré publicando los avances por si puedo ayudar a alguien.

Yo no tengo experiencia en este tema y probablemente haga burradas y no haga las cosas de la manera más eficiente posible o las diseñe mal, estaría encantado de recibir sugerencias y/o críticas en los comentarios así todos aprendemos más y buscamos los mejores métodos para hacer las cosas.

El Engine

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.

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.
    • AssetManager: El manejador de recursos, lo que permite cargar todo lo del punto anterior y definir nuevos tipos 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.

3 Comentarios en "Haciendo un Game Engine 2D básico"

  1. Ariel dice:

    Perfecto!! esperando con ansías el articulo.
    Felicitaciones por la pagina ;D
    Saludos.

  2. Mario dice:

    Excelente la Iniciativa, Tambien ando animado para desarrollar uno para entorno web en PHP que creo que a la final era en HTML5 y que tenga un entorno WYSIWYG, claro que hasta le momento solo he realizado uno que otro juego en PHP (Q dolor de cabeza), en fin estare pendiente de los avances y si se anima en un futuro implementarle lo del entorno web, no dude en contactarme ;)

    Por cierto, muy buen sitio

  3. James dice:

    Excelente post amigo!, crear engines permite asimilar mejor los conocimientos en programación de videojuegos y tambien sacarle provecho a las engines comerciales. En este momento ando programando con Directx y tambien deseo crear una engine 3D, espero podamos hablar algun dia.

    Saludos desde http://desarrollodevideojuegosdirectx.blogspot.com/

Deja un comentario