lunes, 9 de agosto de 2010

Usando tinyXML

Estoy usando Visual C++ 2008 Express Edition, que curiosamente es gratis, y buscando alguna librería para leer XMLs me encontré con un parser XML llamado tinyXML, una librería que hace exactamente lo que necesito.

Probé los ejemplos que vienen con la librería y todo perfecto, el problema surgió cuando intenté añadir esta librería a mi proyecto, me saltó este error al compilar:

1> c:\game\tinystr.cpp(32) : warning C4627: '#include "tinystr.h"':
se omite al buscar el uso del encabezado precompilado
1> Agregar directiva a 'stdafx.h' o volver a generar el encabezado precompilado

 En un foro en inglés encontré el motivo y la solución al problema. El tema era que al tener definido en mi proyecto el uso de encabezados precompilados, el compilador esperaba encontrar la linea #include "stdafx.h"; en todos los archivos .cpp que incluyera en el proyecto, y claro, como tinyXML esta escrita de forma genérica y compatible con múltiples compiladores y SSOO pues daba error.

Se soluciona desactivando el uso de encabezados precompilados: Proyect -> Propiedades -> C/C++ -> Encabezados Precompilados y aqui en "Crear o utilizar encabezado precompilado" ponerlo a "No utilizar encabezados precompilados" y después de eso todo compiló perfecto.

Tal vez a alguien más le sirva esto.

domingo, 8 de agosto de 2010

Blender: primer diseño de la nave

Llevo algunos días peleándome con el Blender.

Primero empecé investigando qué herramienta de diseño 3D podría usar en mi proyecto, y me topé con ésta, Blender 2.5 Beta. Que me convenció por ser gratis y por tener una calidad demostrada. Luego vi que era capaz de exportar sus ficheros en formato texto y no sólo a formatos binarios que no conozco. Pues bien es capaz de exportar en dos formatos de texto distinto; uno llamado X3D Extensible 3D (.x3d) y otro llamado COLLADA (.dae). Aunque el proyecto COLLADA me parece genial y a la larga debería imponerse, también lo veo muy complicado para lo que necesito, mientras que el otro formato lo veo mas fácil de interpretar. Por cierto, ambos formatos están en XML. Creo que usaré .x3d.

Una vez vi Blender como herramienta ideal me puse a mirar algunos vídeos tutorial en youtube, y después de algunas horas, empapándome del manejo del programa me planteé hacer un boceto de la nave, me salió esto:
"Boceto de la nave."


Y después de algunos días con el Blender me salió esto:

"Se nota que no soy diseñador gráfico"

Pero bueno, siempre podré mas adelante mejorar la nave. En la parte de atrás tiene una especie de agujero donde tengo pensado colocar un partícula que haga de fogonazo del propulsor. También tendré que averiguar como encajarle una buena textura y que la cabina del piloto salga en negro, como de cristal ahumado.

El siguiente paso ahora será empezar a programar en C++ las DirectX, volver a familiarizarme con la conmutación a pantalla completa, cambiar de modo gráfico, cargar el modelo de la nave y mostrarlo por pantalla, meterle texturas, empezar a probar el control de la nave, diseñar y desarrollar el entorno de juego, el motor gráfico, diseño de fases, más diseño de obstáculos y las esferas de luz, ponerle fondo que simule el universo, programar algunos efectos de sonido, tal vez alguna musica de fondo, juntarlo todo con la lógica del juego, envolverlo para regalo y ponerle un lacito. Piano piano...

jueves, 5 de agosto de 2010

Conceptos básicos de Telemakhos

Telemakhos será un arcade espacial, donde una nave atrapada en un agujero de gusano deberá ser pilotada correctamente para conseguir salir de ahí.

El agujero de gusano será representado como un enorme tubo, en el cual estará inmersa la nave. El movimiento de avanzar a través del agujero vendrá dado por la propia atracción que ejerce el  agujero, pudiendo la nave solamente corregir su desplazamiento a lo alto y ancho, quedando el movimiento en profundidad "controlado" por el agujero. La nave al desplazarse a lo alto y ancho sufrirá un poco el efecto de la inercia. La nave físicamente corrige su trayectoria con el propulsor trasero, obligándola a cabecear para corregir su trayectoria. Así, si por ejemplo nos dirigimos muy rápido al borde del tubo al corregir la inercia dirigiendo la nave en dirección contraria a la de la inercia, la nave hará una especia de "derrape" dirigiendo el morro de la nave hacia el lugar donde se quiere dirigirla. Esta interacción con la nave y las fuerzas que se dan lugar dentro del agujero tiene que ser lo más suave y natural posible.

Durante el “viaje” irán apareciendo pequeñas rocas que entorpecerán la marcha de la nave, las cuales podrán ser esquivadas o destruidas con el láser de la nave. Si una roca da a la nave su campo de fuerza se debilitará un poco, dependiendo del tamaño de la roca el daño será mayor o menor. De vez en cuando aparecerán bolas de energía que al ser “cogidas” por la nave harán que su campo de fuerza se recupere.

A través de las paredes del agujero se verá un poco el exterior, pudiendo verse el universo y parte del resto del gusano por el cual vamos.

La información que se verá en la pantalla será: en la esquina superior derecha un indicador del nivel actual (Level 5), debajo una barra con la energía del campo de fuerza actual de la nave. Y en la esquina superior izquierda un marcador con la puntuación actual obtenida (Score 01325).

 "Idea de la nave"

miércoles, 4 de agosto de 2010

Nace un proyecto: Telemakhos

Atrás quedaron los años donde cada vez que llegaba a casa me ponía a programar en ensamblador y C, programando diréctamente la interrupción del ratón (INT 13) o mi tarjeta de sonido (una Sound Blaster 16 de aquella época), algunos años después me atreví con el OpenGL e hice un pequeño juego con gráficos 3D y efectos de sonido, también tuve que usar algo de las DirectX para los controles del teclado.

Hoy en día el avance descomunal en la calidad de los videojuegos deja como tonterías lo que yo empezaba a hacer, hace ahora unos 15 años. Y mis conocimientos sobre esos temas están, o desfasados u olvidados. Además este tipo de proyectos son abordados por grandes empresas de software con bastantes recursos monetarios y de personal, así que mi intención no es llegar a esos niveles. Pero si que quiero ponerme al día.

Por eso, intentando aprender y divertirme comienzo el proyecto de un juego. Creo que lo llamaré Telemakhos.

"La Red es Basta e Infinita."