Postmortem (IV)

Desarrollo del resto de módulos

El resto de módulos del proyecto no dieron ningún tipo de problema. Puede que la causa de ello es que con el desarrollo de Vórtice ya teníamos cierta idea a la hora de realizar un videojuego multijugador y aprendimos a corregir los puntos débiles que habíamos cometido.

Aún así, la integración de módulos fue un poco más complicada, ya que era necesario compartir información entre los diferentes módulos. Esto se solucionó mediante el uso del patrón de diseño Singleton. Este patrón permite facilitar el acceso a una instancia de una clase, que además es siempre la misma. La instancia permanece creada desde que se solicita por primera vez una operación sobre ella hasta que finaliza la aplicación, evitando de esta forma el uso de atributos en las clases para mantener punteros a las instancias del resto de clases.

También se utilizó mucho la librería STL de C++. El hecho de utilizar esta librería simplificó mucho el desarrollo, puesto que cuenta con estructuras de datos y algoritmos ya implementados que de otra forma habría que haber implementado de forma manual.

Integración de los modelos de las entidades

Como ya se comentó anteriormente, el elegir a Ogre 3D como motor gráfico del juego, nos obliga a crear los modelos de las entidades en un formato propio de Ogre 3D. Este formato se puede obtener mediante la exportación desde programas de modelado y con el uso de plug-ins ofrecidos por Ogre 3D.

Para la elaboración de los modelos se trabajó con dos programas de modelado. Por una parte 3DS MAX y por otra MilkShape 3D.

3DS MAX se utilizó para modelar las entidades estáticas del juego, como los elementos que componen los niveles (paredes, portales, etc). Una vez diseñado el modelo, hay que exportarlo a un formato 3DS en lugar de MAX. La razón de esto es que 3DS es un formato que manejan muchos programas de modelados, entre ellos MilkShape 3D. Existe disponible un exportador para 3DS MAX a modelos de Ogre 3D, pero no conseguimos que funcionase correctamente con las texturas. Al exportarlo a formato 3DS desde MAX, podemos importarlo posteriormente en MilkShape 3D y de ahí convertirlo a formato de Ogre 3D mediante un plug-in.

La creación de los modelos animados de los personajes requiere un poco más de trabajo. Para empezar, todos los modelos usados pertenecen al formato del juego Quake2. Estos archivos, con extensión md2, contienen la definición de la malla del modelo y sus animaciones. El problema es que este formato está comprimido, por lo que antes de utilizarlo es necesario descomprimirlo. Para ello se utiliza MilkShape 3D. Una vez obtenido el modelo y las animaciones, se unen desde MilkShape 3D y luego se exporta el modelo al formato nativo de Ogre 3D.

Últimas pruebas y finalización del proyecto

Aunque en un principio se pensaba que se producirían más problemas de los previstos, el desarrollo del juego terminó dentro del plazo establecido. Hubo algunos problemas en la integración de las diferentes tecnologías utilizadas, pero el tiempo que llevó solucionar esos problemas fue compensado en otras fases del proyecto.

Si bien no se dispone de un plan de pruebas como tal, las últimas semanas del desarrollo las dedicamos a probar intensivamente la aplicación en busca de fallos. El principal entorno sobre el que se ejecutó el juego fue en una red LAN. Observamos que el juego se ejecuta fluidamente utilizando un ancho de banda aproximado de 1Kb/s, así que debería ir igualmente fluido en Internet. Este entorno no se probó en profundidad, más que nada porque no se disponía de la capacidad de un entorno de desarrollo con varios equipos conectados a Internet. Únicamente disponíamos de dos ordenadores conectados a través de un cable de red cruzado o como mucho en una red LAN.

Para terminar podemos decir que todos los objetivos perseguidos con el proyecto se han alcanzado satisfactoriamente. El objetivo principal era obtener un videojuego multijugador que se desarrollase en tiempo real, y así lo conseguimos.

Los comentarios están cerrados.