miércoles, 30 de enero de 2013

Las 3 Librerías para programar videojuegos (II): Box2d & TMX-Parser

En la anterior entrada hable sobre las tres librerías fundamentales que nos ayudaran a programar un motor de juegos con el que hacer nuestros proyectos. Hable de SFML 2.0, la piedra angular de nuestro sistema. Hoy le echaremos un vistazo a las otras dos librerías que vamos a utilizar.

Para realizar colisiones entre objetos y controlarlos vamos a utilizar un motor de físicas 2D como es Box2D (existen otros como Chipmunk, es cuestión de gustos ). Para realizar nuestros proyectos conviene tener un editor de niveles, y Tiled es de los mejores, pero necesitamos saber interpretar su sistema de guardado de niveles, y ahí entra TMX-Parser.

 

Box2D

 

Un motor de físicas es básicamente un sistema que se encarga de contener la definición de un “mundo”, con sus características de masa de los objetos, formas, momentos de inercia, etc. y realizar una simulación según las leyes básicas de la física, obteniéndose al final de cada paso de la simulación una posición y rotación de cada uno de los objetos definidos dentro de ese mundo físico virtual.

Es decir le diremos a Box2D donde están las paredes y que características tienen, le añadiremos objetos a los que les aplicaremos fuerzas y momentos para que se muevan, y obtendremos la posición y rotación con la que debemos dibujar los objetos con SFML. Simple!

La forma de organizar el proyecto que te descargas no me gusta mucho, pero la librería es muy buena. Lo que yo he echo es reorganizarla para adaptarla a mi forma de organizar los proyectos, como indique en esta entrada, pero claro eso es una manía mía. Podéis utilizar el código fuente según viene o reorganizar los archivos como he echo yo, el problema que tenéis que estar atento a los posibles cambios para luego copiarlos.

NOTA:

Hablando de cambio en las librerías externas. Mi experiencia me dice que lo mejor es trabajar siempre con una revisión, es decir crear una copia de todo el proyecto en un momento dado y usar esa copia, nunca tratar de trabajar con la ultima, por que pueden darse cambios en los métodos que te obliguen a reescribir todo tu código. Solo actualiza a una versión mas reciente si estas seguro de que no te va ha causar mas problemas que soluciones o si se ha arreglado un bug muy gordo.

Lo que le falta a box2d es un sistema de archivo que nos permita definir los objetos complejos, que tienen múltiples partes con uniones, etc. En realidad es fácil definir un tipo formato de archivo, de echo lo haremos y también haremos una herramienta de edición visual de estos archivos para crear nuestros objetos en box2d.

TMX-Parser

 

Esta librería nos servirá de puente entre el editor de niveles Tiled y nuestro código escrito con Box2D y SFML 2.0. Básicamente Tiled tiene por archivo nativo un archivo en formato XML con tags específicos de Tiled. El formato se puede ver en este link.

NOTA:

Recientemente le he mandado una actualización con los cambios que he hecho a la librería para que soporte la ultima versión de Tiled.

Al igual que pasa con Box2D, he reorganizado los archivos y de esta librería se sacado cuatro librerías para mi proyecto. La razón es que algunas de las librerías que Tamir Atias, el creador de este código, incluye en su proyecto las voy a necesitar en otras partes del mío, así he extraído la parte de base64, la parte de tinyxml, la librería zlib y he creado sus propias librerías ( en realidad he bajado las ultimas versión de tninyxml y zlib ) adaptando después el proyecto de tmx-parser para que usen ese código como externo.

Así la librería de tinyxml la usaremos para leer nuestros propios formatos de archivos, ya que lo necesitamos para leer los archivos de Tiled. La librería de zlib la usaremos para poder usar archivos comprimidos .zip como empaquetado de nuestras aplicaciones, etc. Ya comentaremos mas adelante según vallamos programando.

Bueno, hasta aquí por hoy. Gracias por vuestra atención. Un saludo.

No hay comentarios: