PRESENTACIÓN DEL PROYECTO
El presente es la descripción del proyecto de un juego tridimensional a realizarse en Processing puro -sin librerías extra- con dos perspectivas: externa y desde la cámara, utilizando mouse y teclado. Este juego involucra la utilización de todas las primitvas de Processing, los conceptos vistos en el curso de computación gráfica y algo de intuición para organizar la arquitectura de la aplicación, siempre minimizando el número de líneas de código escritas y maximizando la flexibilidad de las clases.
Recuerdese que en computación gráfica, el respeto a los patrones de diseño y la simplicidad en la programación no van necesariamente de la mano y se prefiere la simplicidad a la construcción de una arquitectura estándar. Recuerdese también que las matemáticas poseen herramientas de gran poder para manejar rotaciones, traslaciones, movimiento y colisiones.
DESCRIPCIÓN DEL JUEGO
Se quiere extender la mecánica del juego de Asteroids (Rains y Logg 1979) a tres dimensiones, para tener un juego de destruir asteroides que tienen trayectorias distintas, utilizando una torre de disparo fija en el espacio equipada con distintos tipos de armas, al cual llamaremos provisionalmente BELT.
Asteroids (Atari, 1979)
En esta versión del juego en tres dimensiones, es preciso disponer de dos vistas: una vista de la escena del juego -en el mismo espíritu de asteroids- en la cual debe poderse rotar tanto la escena como la torre de disparos y una vista en primera persona que rota conforme al movimiento de la torre (la cámara está fija en la dirección de la torre).
En esta versión del juego de asteroids en 3D -y al contrario de la mecánica del juego original- los asteroides se destruyen con un solo tiro. Con objeto de simplificar el disparo a los objetos, los asteroides que son de un color básico deben cambiar de color cuando estén en el cono de visión de la mira.
Gana el jugador que en una partida destruya todos los asteroides del cinturón sin ser destruido por alguno de ellos y en un tiempo fijo.
La torre está provista de un radar que avisa en qué direción se encuentra un asteroide en curso irremediable de colisión con la torre, basado en la distancia entre la torre y el asteroide. Al mismo tiempo la torre está equipada con tres tipos de armas:
1. Arma laser: puede hacer tantos tiros como se requieran, solo puede destruir un objeto con un tiro y no necesita recarga.
2. Misiles: Los misiles vienen contados por cada juego, son capaces de destruir todo lo que encuentren en un radio fijo a partir de su explosión que sucede cuando un objeto colisiona con
3. Granadas: Las granadas se lanzan en una dirección y explotan destruyendo todos los asteroides en una región anular desde el punto de impacto de la granada con un asteroide. Las granadas no se dan en el juego sino deben ser obtenidas bien explotando asteroides de color particular ó bien por buen desempeño en una ronda.
1. La rotación de la escena global se puede hacer utilizando los métodos de Processing. La rotación de la torre debe hacerse utilizando cuaterniones. Una clase cuaternion será provista para el proyecto.
RESTRICCIONES TÉCNICAS
2. El movimiento de los asteroides debe ser ó determinado por una curva paramétrica (no necesariamente suave) ó debe estar regulado por movimiento físico. En cualquier caso, cada asteroide debe poseer tanto una velocidad, definida bien por un vector (en el caso del movimiento físico) ó bien como un factor escalar (en el caso del movimiento regulado por un spline). Como restricción se impone utilizar el método de interpolación por polinomios cúbicos de Hermite.
3. Dado que el juego se sitúa en un cinturón de asteroides, será necesario utilizar coordenadas esféricas para el movimiento de los asteroides y de los objetos del juego.
4. En la vista en primera persona del juego debe desplegarse un radar mostrando una mini vista de la escena en la esquina inferior izquierda de la pantalla.
5. El programa debe avisar cuando un asteroide esté a una distancia menor ó igual a tres veces el radio de la torre de disparo. En este momento presionándose la tecla C debe moverse la torre rápidamente hacia la posición del asteroide que está a una distancia peligrosa.
RESTRICCIONES A LA INTERFAZ Y MANEJO DEL PROGRAMA
1. El juego debe permitir el cambio de vista de vista en primera persona desde la torre hacia la vista global del juego presionando la tecla V.
2. En la vista global de la escena, debe ser posible rotar toda la escena utilizando click sostenido (con el botón izquierdo).
3. Tanto en la vista global como la vista en primera persona, el movimiento de la torre debe hacerse con las flechas (izquierda-derecha para rotar sobre el plano xy, arriba-abajo para rotar la torre hacia arriba ó hacia abajo).
4. Para disparar debe poderse utilizar la barra espaciadora y para cambiar de arma debe poderse utilizar los números entre 1 y 3.
5. No se puede utilizar librerías de Processing que hagan manejo de la cámara (Proscene o Peasy-Cam). Sin embargo, utilícese Minim para el manejo de los sonidos del juego y OBJLoader para graficar objetos producidos por .obj
6. El motor de renderizado del programa debe ser P3D.
7. Escríbase el juego en un IDE externo a Processing (Por facilidad) como Netbeans ó Eclipse.
