domingo, 27 de junio de 2010

Nuestro Engine

Dentro de poco os colgaremos un vídeo con una demo técnica de lo que permite hacer nuestro engine o quizás incluso os colguemos una release para que lo probéis vosotros mismos.

¿Que se supone que estaréis viendo? Nuestra demostración contiene:

  • Carga y pintado de modelos .ASE
  • Carga  y pintado de texturas
  • Pintado de texto por pantalla
  • Creación de geometría por código
  • Física con colisiones 3D
  • Música y efectos de sonido
  • Iluminación global y spotlight
  • Sistema de motion parallax
  • IA de tipo Torreta y Soldado
  • Sistema de creación de menus
  • Low Poly models
Y todo ello controlado con sus managers tal como hemos explicado en post anteriores, con decir que nuestro main tiene menos de 30 lineas de código...

    viernes, 25 de junio de 2010

    Un problema físico

    Primero de todo disculparnos por no escribir desde hace tiempo, pero los examenes no nos han dejado más opción. Así que os lo intentaremos compensar con varios post en las próximas semanas, aunque no prometemos nada! Así pues empezemos con lo interesante!

    Para dar más realismo a QYK, decidimos en su día tener un módulo de física y para no tener que implementar toda la librería buscamos cuales ya estaban desarrolladas encontrando la Newton, Bullet y ODE entre otras.

    Nos quedamos con la ODE, porque a pesar de tener una documentación horrorosa, su uso parecía relativamente sencillo en comparación a las otras librerías.

    De esta manera, el módulo de física queda:
    • Un PhysicsManager que se encarga de:
      • Inicializar la ODE.
      • Control de colisiones.
      • Callback de actualización de posición/rotación los objetos fisicos.
    • Una clase Object que tiene las propiedades necesarias para cada uno de los objetos fisicos.
      • Body
      • Geometry
      • Mass
    Así, cada clase que queramos que se comporte de una manera realista solo tiene que heredar de la clase Object y inicializar sus propios valores tales como la posición y velocidad iniciales y dejar que la ODE haga magia.

    Pero algo que a simple vista puede parecer tan sencillo y lógico, nos ha dado muchos más problemas de los que creiamos posibles.
    • Los cuerpos traspasaban el plano del suelo a pesar de detectar siempre colisión.
    • Los objetos se fundian unos con otros en vez de rebotar.
    • etc.
    Y la mayoría de estos errores que nos han dado más de un dolor de cabeza vienen principalmente por una única causa:  una mala DOCUMENTACIÓN por parte de ODE.
    Así que para todos aquellos programadores que odian documentar su trabajo, que tengan en cuenta que si quieren que su software llegue a terceros la DOCUMENTACIÓN es básica.