Droids of Mordor
Objetivo
Proyecto individual para la evaluación final de la asignatura de Gráficos y multimedia del primer semestre de 3º curso del Grado en Ingeniería Informática. El objetivo del proyecto era crear un entorno 3D con cierta interacción utilizando únicamente C y GLUT.
Como reto personal decidí darle mucha importancia a la interacción con el entorno y el resultado final fue el desarrollo de un mini videojuego.
Tecnologías
La programación del videojuego la realicé en C++, utilizando la librería de OpenGL GLUT y la de carga de imágenes DevIL.
Tanto la cámara, las físicas, el mapa, el fuego y la mayoría de las figuras son implementaciones propias (a excepción de los droides, las naves y el árbol).
Descripción
Cámara
La cámara sigue de forma predeterminada al personaje principal a una distancia ajustable, también tiene la opción de desacoplarse del personaje y volar libre por el mapa para poder analizar mejor el mundo.
La implementación de la cámara fue lo que más tiempo invertí ya que necesité mucho tiempo de investigación y aprender sobre coordenadas polares para poder hacer mi propia implementación.
Mapa
El mapa está creado a partir de una imagen en escala de grises, donde el color de cada pixel corresponde a una altura en cada punto del mapa.
Una vez se obtienen los vértices a partir de la imagen, se calculan las normales para poder aplicarle efectos de iluminación.
Personaje principal R2-D2
Este personaje puede desplazarse por el mapa, saltar, disparar y activar un escudo. Está formado por figuras de revolución, los prismas también son figuras de revolución de 4 caras.
Los disparos pueden colisionar con los enemigos para eliminarlos. El escudo se puede activar en cualquier momento y evita recibir disparos de los enemigos, pero también impide que pueda disparar
Enemigos
Hay dos tipos de enemigos: los androides y los droidekas. Modifiqué las figuras para descomponerlas, cargar las diferentes partes por separado y poder articularlas para caminar.
Los enemigos tienen unos puntos de vida y, al recibir un disparo, durante un instante, cambian de color en función de la vida que les falte.
Los androides mueren al tercer disparo, su punto de reaparición se encuentra en las naves y la torre y vuelven a reagruparse a su posición del escuadrón. Al acercarse te persiguen durante una distancia, cuando te pierden la pista vuelven a su posición.
Los droidekas mueren al quinto disparo. Te persiguen por todo el mapa y tienen un escudo que evita todo el daño, lo pueden activar al disparar, pero no lo pueden activar al moverse, por lo que para matarlos hay que separarse de ellos y dispararles desde lejos. Sus puntos de reaparición son las naves y la torre.
Sistema de partículas
Para poder realizar el efecto del fuego y el de la propulsión de R2-D2 al saltar, implementé un sistema de partículas donde cada partícula es un elemento bidimensional enfocado siempre de forma perpendicular a la cámara y tiene un tiempo de vida, un color en función de su vida, una velocidad y dirección.
Otros elementos
Las plantas que se pueden ver por el mapa están formadas partir de dos elementos bidimensionales colocados perpendicularmente de forma que les da sensación de volumen.
La torre con el ojo también está formada a partir de figuras de revolución, el ojo se mueve por todo el mapa con su haz de luz, pero no produce ningún efecto al tocarte.
Conclusiones
Este es el proyecto de la carrera, sin contar el de final de grado, al que más tiempo he dedicado, pero con el que más he aprendido. Invertí muchas horas investigando para lograr reproducir la idea que tenía en la cabeza.
Este proyecto fue mi introducción en el mundo del desarrollo de videojuegos, sobre todo en cuanto a la programación, ya que no hice uso de ninguna librería para darle físicas al mundo ni para animar los elementos.
Tengo pensado rehacer el proyecto, con las tecnologías que conozco ahora y hacerlo multijugador.