martes, 29 de enero de 2008

Manos a la obra


Bueno, lo primero que he empezado a hacer es diseñar una clase que lee un fichero xml y lo convierte en una especie de arbol de configuraciones. Como la lectura de los ficheros de configuración se hará al principio, no me he preocupado demasiado de si se tarda mucho o poco en recoger los datos.

Para no liarme demasiado leyendo y parseando XML, he utilizado la libreria expat. Con esta librería, creas un manipulador de parser XML, y asocias una serie de callbacks que se disparan cuando se cumplen una serie de condiciones (se encuentra un nuevo tag, se encuentra un atributo nuevo,...)

El mayor problema que he encontrado es que los textos que devuelve expat están codificados en utf8, y parece ser que a mi windows no le acaba de gustar enseñarme cadenas en utf8... así que nada, a convertir a unicode toca. Para esto he utilizado una libreria llamada iconv. La gracia de está libreria es que es capaz de convertir entre diversas codificaciones de una forma muy sencilla. Aunque la solución con esta libreria es muy simple, la verdad es que estuve varias horas intentando aclararme con la ayuda en MSDN, pero parece que la cosa cada vez está peor para aclararse... sobre todo si no se usa el puñetero .NET

Pues bien. a partir de ahora ya puedo recoger datos de configuración de una forma facil, así que toca ir a sobar un rato

Buenas nocheas, seais lo que seais

martes, 22 de enero de 2008

std::cout << "Hello World!" << std::endl;















Bueno, parece ser que al final he caido y he abierto un blog...

La intención de este blog es ir registrando los progresos que voy teniendo en un motor multiplataforma para juegos en 3D que ya llevo tiempo intentando hacer.

Lo de "intentando" tiene un significado más profundo de lo que parece, pues ya debe ser la 5ª o 6ª vez que mando practicamente todo a la basura, cambio la arquitectura y lo empiezo a escribir de nuevo, así que puede que este intento acabe igual que los demás, o puede que avance algo más. Lo bueno de estos "intentos" es que poco a poco se van aclarando más aspectos de como debe ser y que debe hacer. A grandes rasgos, la intención es hacer un motor que:

-Sea configurable mediante XML
-Pueda gestionar sus recursos dinamicamente(audio,texturas,modelos,fuentes,shaders,...)
-Tenga soporte tanto para 2D como para 3D
-Pueda reproducir videos
-Tenga soporte para juego en red
-Tenga soporte para audio posicional
-Tenga soporte para simulaciones físicas
-Sea lo suficientemente flexible para poder hacer practicamente cualquier tipo de demo/juego
-Tenga una API de programación de interfaces de usuario
-Soporte algún tipo de scripting
-Utilice librerias de código abierto(de hecho, cuando termine algún dia, colgaré el código por ahí)


Al final tampoco es pedir mucho, pero es bastante trabajo para un friki solo. Además, si algún dia está completo o relativamente completo, habrá que desarrollar herramientas para el flujo de trabajo posterior, es decir, como se integra el trabajo artistico realizado con el motor, que convertidores hacen falta, etc... vamos, que va pa más tiempo que la sagrada familia

Por lo pronto, el lenguaje de programación que utilizo es C++, y la plataforma en la que desarrollo Windows, aunque en breve me pondré con Linux, que tengo mi Debian calentita y esperando :D

Respecto a librerias utilizadas hasta el momento: OpenGL, STL, Boost, Expat, Freetype,ODE

En las proximas entradas supongo que iré poniendo reflexiones y cosas que me vaya encontrando en el camino, así como iré comentando la arquitectura que tengo en mente

Sin más que añadir hoy, un saludo a todo aquel que pase por aquí.

Drink Beer, My Friend