Tarea 02 - Universidad Simón Bolívar

Anuncio
Universidad Simón Bolívar
Departamento de Computación y Tecnología de la Información
CI6675 Algoritmos y Estructuras Optimizadas para Videojuegos
Enero Marzo 2016
Tarea II
Batalla Espacial - 10%
½Ha comenzado una épica batalla espacial! Una malvada raza alienígena, proveniente del Sistema
Algol, ha invadido el sistema solar mientras toda la ota terrestre estaba en una misión importante
en Alpha Centauri.
La USB (Unión Sideral de Batalla ) te ha encomendado proteger la Tierra en contra de las naves
enemigas, destruyéndolas a todas antes de que sea demasiado tarde. ¾Podrás cargar sólo con el
destino de la Tierra?
1 El Juego
A continuación se describirá el juego a implementar.
1.1
Escenario
El juego se desarrollará en un espacio abierto bidimensional, donde el movimiento se realizará de
forma pseudocontinua. El espacio se llenará con N naves enemigas y M obstáculos estáticos, donde
N y M pueden ser escogidos por el jugador antes de comenzar (con valores entre 1 y 20).
1.2
Jugador
El jugador estará en control de una nave espacial. Esta nave debe poder ir en cualquier dirección
y apuntar a cualquier dirección. La mecánica del movimiento se deja a su discreción. Sin embargo,
una posibilidad es que las echas controlen la dirección y se tenga una tecla adicional (por ejemplo,
la barra espaciadora) que active el impulso de la nave en la dirección a la que está viendo. En todo
caso, el movimiento debe ser inercial. Además, el jugador podrá disparar balas en la dirección a la
que está mirando (con la restricción de que no debe haber nunca más de 5 balas, provenientes del
jugador, en el escenario al mismo tiempo).
1.3
Contrincantes
Las naves espaciales enemigas serán contrincantes y serán controladas enteramente por inteligencia
articial. Esta inteligencia no tiene que ser compleja y puede ser tan sencilla como moverse aleatoriamente en el espacio.
1
1.4
Características de las Naves
Las naves espaciales tendrán diferentes características que las denen; entre ellas:
• Tamaño
• Fuerza
• Resistencia
• Velocidad
Es posible incluír más características a las naves, como habilidad para disparar, color o un tiempo
de respawn. Sin embargo, quedan a criterio del implementador y sólo las cuatro que se mencionan
arriba son obligatorias.
Todos los valores involucrados están entre 1 y 100. Las características para cada nave deben ser
generadas de forma procedural, tanto para las naves enemigas como para la nave del jugador.
1.5
Interacción
A continuación las posibles interacciones entre pares de elementos:
• Cuando dos naves espaciales chocan, a la resistencia de una se le resta la fuerza de la otra.
• Cuando una bala alcanza a una nave espacial, la resistencia de la nave es disminuida en 5
unidades y la bala desaparece.
• Cuando una nave espacial choca con un obstáculo, la resistencia de la nave es disminuida en 30
unidades y el obstáculo desaparece.
• Cuando una bala alcanza a un obstáculo, la bala desaparece y el obstáculo no sufre ningún
cambio.
• En el caso (muy poco probable) de que choquen dos balas, ambas desaparecen.
Nótese que es imposible que choquen dos obstáculos, ya que los mismos son estáticos en el mundo de
juego.
Si en algún momento la resistencia de una nave se hace menor o igual a cero, entonces la nave es
destruida y desaparece del juego.
1.5.1 Detección de Colisiones
La detección de colisiones para la nave del jugador y las balas debe realizarse usando un Bounding Tree
sobre las naves enemigas y obstáculos estáticos. En cada paso se vericará, usando esta estructura, si
la nave del jugador y alguna bala en el mundo tiene alguna colisión con alguna de las naves enemigas
u obstáculos estáticos.
2
El juego debe incluir alguna forma de ver (o dejar de ver) el Bounding Tree construido, así como las
ramas que están activas en un momento dado. Una rama está activa si esa rama está en colisión con
la nave del jugador o alguna bala.
La detección de colisiones entre naves enemigas y de éstas con los obstáculos, puede realizarse usando
el algoritmo de su elección. Tome en cuenta que la eciencia de esta detección es importante. En el
informe, deberá explicar la solución propuesta y su justicación.
1.6
Ganar/Perder
El jugador gana si logra acabar con todas las naves espaciales presentes en el espacio de juego. El
jugador pierde si su propia nave es destruida.
1.7
Menú
El menú principal del juego debe tener alguna manera de ingresar valores para las variables N y M ,
y de comenzar un nuevo juego Los valores por defecto para todas las variables son los mínimos en su
rango permitido.
2 Retos Extra
Para aquellos que deseen un reto adicional (y hasta 3 puntos adicionales), pueden implementar alguna
de estas extensiones sobre sus juegos:
• Incorporar inteligencia articial más elaborada a las naves enemigas, tanto individual como
colectiva. El criterio para cumplir este reto es subjetivo y dependerá de la experiencia de juego,
la explicación de la inteligencia implementada y la complejidad de la propuesta.
hasta 2 puntos extras
• Incorporar gravedad a los obstáculos que afecte la trayectoria de las naves y las balas (los
obstáculos no deben atraerse entre sí).
1 punto extra
Si realizan cualquiera de estas extensiones, deberán incluir una explicación de las estructuras y algoritmos utilizados en su informe.
3
3 Entrega
Ud. debe entregar un correo electrónico con:
• El código fuente en el lenguaje y la herramienta de su elección.
El lenguaje/herramienta en el cual implementar este juego es libre. Sin embargo, la herramienta escogida debe ofrecer facilidades para programar estructuras y algoritmos complejos
e incorporarlos a la lógica del juego.
La componente visual del juego no es importante en esta ocasión. Por ejemplo, los obstácu-
los estáticos podrían ser cuadrados rellenos, y las naves espaciales podrían ser círculos de
diferentes colores. Si se desea hacer un juego más llamativo visualmente, no está prohibido,
más dicha componente no tendrá efecto en la evaluación.
Todo el código debe estar debidamente documentado.
• Un breve video que muestre el juego en funcionamiento, con diferentes conguraciones para las
variables involucradas.
• Un breve informe explicando la implementación de su juego y justicando todo aquello que
considere necesario. En particular, el informe debe presentar una explicación de las estructuras
y algoritmos usados para implementar la detección de colisiones y la inteligencia articial.
Fecha de Entrega: Sábado 20 de Febrero (Semana 9), hasta las 1:00 pm.
Valor: 10%.
R. Monascal / Febrero 2016
4
Descargar