Documento de Diseno3

104
Piratas del Espacio : El Caso Norby Autores: José Vázquez Infantes Gonzalo Rodríguez-Baltanás Díaz 1

Transcript of Documento de Diseno3

Piratas del Espacio : El Caso Norby

Autores:

José Vázquez InfantesGonzalo Rodríguez-Baltanás Díaz

1

Índice

Introducción! 5Origen del proyecto ! 5

Objetivos del proyecto! 6

Riesgos ! 6

Stakeholders! 7

Fechas de entrega! 7

Grupo de desarrollo ! 7

Requisitos funcionales del proyecto! 8Dependencias de Software! 8

Engine 3D! 8

Requisitos organizativos ! 9

RO-1: Repositorio de versiones! 9

RO-2: Repositorio generalista! 9

RO-3: Software gestor de proyectos! 9

RO-4: Software de modelado UML y Casos de usos! 10

Requisitos funcionales de la aplicación! 10Análisis de módulos del sistema ! 10

AMS-1: Análisis Módulo Controles! 10

AMS-2: Análisis Módulo Naves! 11

AMS-4: Análisis Módulo Niveles! 19

AMS-5: Análisis Módulo Físicas! 19

AMS-6: Análisis Módulo Hud! 21

Piratas del Espacio: El caso Norby

2

AMS-7: Análisis Módulo IA! 23

AMS-8: Análisis Módulo Efectos gráficos! 23

AMS-9: Análisis Módulo Sonido! 24

AMS-10: Análisis Módulo DB! 24

AMS-11: Análisis Módulo Menú! 25

Diagramas de casos de uso! 25DC1-1 Desarrollo caso de uso del Subsistema Menú! 26

DC1-2 Desarrollo de caso de uso Salir! 27

DC1-3 Desarrollo de caso de uso Ver Controles! 28

DC1-4 Desarrollo de caso de uso Ver Puntuaciones! 29

DC1-5 Desarrollo de caso de uso Cargar Sonido! 30

DC2-1 Desarrollo de caso de uso Atrás (Ver puntuaciones)! 30

DC2-2 Desarrollo de caso de uso Atrás (Ver controles)! 32

DC1-1 Desarrollo caso de uso del Subsistema Nueva Partida! 33

DC1-2 Desarrollo de caso de uso Controlar la Nave! 35

DC1-3 Desarrollo casos de uso Gestión de elementos del HUD! 36

DC1-4 Desarrollo de caso de uso Matar! 37

DC1-5 Desarrollo de caso de uso Morir! 38

DC1-6 Desarrollo de caso de Salir! 39

DC1-7 Desarrollo de caso de uso Pausa! 42

DC1-8 Desarrollo de caso de uso Ganar Partida! 44

DC1-9 Desarrollo de caso de uso Guardar Puntuación! 45

DC1-10 Desarrollo de caso de uso Cargar Nivel! 46

DC2-1 Desarrollo de caso de uso Trompo a la derecha! 47

DC2-2 Desarrollo de caso de uso Trompo a la izquierda! 49

DC2-3 Desarrollo de caso de uso Arriba! 50

DC2-4 Desarrollo de caso de uso Izquierda! 52

Piratas del Espacio: El caso Norby

3

DC2-5 Desarrollo de caso de uso Abajo! 54

DC2-6 Desarrollo de caso de uso Derecha! 55

DC2-7 Desarrollo de caso de uso Disparar! 57

DC2-8 Desarrollo de caso de uso Colisionar con la nave enemiga! 59

DC2-9 Desarrollo de caso de uso Ser disparado por el enemigo! 61

DC2-10 Desarrollo de caso de uso La nave colisiona con el enemigo! 63

DC2-11 Desarrollo de caso de uso Cargar Sonido! 65

DC2-12 Desarrollo de caso de uso Generar Skybox! 65

DC2-13 Desarrollo de caso de uso Gestión Nivel! 66

DC2-14 Desarrollo de caso de uso Crear Naves! 67

DC3-1 Desarrollo de caso de uso Música de Nivel! 67

DC3-2 Desarrollo de caso de uso Efectos Sonoros! 69

DC3-3 Desarrollo de caso de uso Duración Nivel! 70

DC3-4 Desarrollo de caso de uso Gestión IA! 72

DC3-5 Desarrollo de caso de uso Crear Nave Principal! 74

DC3-6 Desarrollo de caso de uso Crear Bombardero! 76

DC3-7 Desarrollo de caso de uso Crear Kamikaze! 78

DC3-8 Desarrollo de caso de uso Crear Clon! 80

DC3-9 Desarrollo de caso de uso Crear Hunter! 82

Priorización de casos de uso! 84

Diagramas de secuencia! 86Controlar la nave ! 87

Crear nivel! 89

Ganar Partida ! 91

Generar Skybox! 93

Guardar Puntación! 94

Matar Enemigo ! 95

Piratas del Espacio: El caso Norby

4

Pausa! 96

Salir! 98

Ver puntuaciones ! 99

Diagrama de clases! 100

Glosario! 101

Introducción

Origen del proyecto

Este proyecto surge de la idea de un videojuego escrito en Python sobre guerras entre naves espaciales llamado “UPO: The Game”, ese proyecto se inspiraba en el clásico juego de “marcianitos”, pero una versión más moderna y sofisticada.

UPO: The Game fue creado entre abril y junio del 2009 como parte de la asignatura de libre configuración Proyecto informática. El proyecto fue tutorizado por Domingo Savio Rodríguez Baena y calificado por sobresaliente.

Piratas del Espacio: El caso Norby

5

Para el curso 2009-2010 la asignatura Ingeniería del software de gestión II plantea la ejecución de un proyecto de mediana envergadura. Nuestro grupo de desarrollo propone crear una versión actualizada de UPO: The Game.

Objetivos del proyecto

El objetivo del proyecto es el de desarrollar un videojuego en 3 dimensiones que sea estable, que maneje una base de datos y, principalmente, que sea divertido.

Nuestros objetivos personales son claros, queremos aprender y formarnos en el arte de la creación de videojuegos. Estamos dispuestos a demostrar la eficacia y eficiencia del lenguaje JAVA aplicado al nuevo motor gráfico “JMonkey”, del cual actualmente hay muy poca información y escasez de tutoriales en español.

Pretendemos obtener información suficiente para posteriormente crear un tutorial en español para otros españoles dispuestos a seguir nuestros pasos y crear videojuegos en este motor que tanto nos gusta.

Riesgos

Los principales riesgos que amenazan a nuestro proyecto son:

•Tiempo: Tenemos una fecha límite de entrega inamovible que es entre el 18 y el 22 de Enero. •Conocimientos: El proyecto requiere de unos conocimientos no asimilados previamente y se requiere de un tiempo extra para el aprendizaje de dichos conocimientos.

•Implementación: La implementación es bastante compleja y la información es escasa, y en algunos casos nula, tanto en material físico como digital.

•Tamaño: Los integrantes del grupo son tan sólo dos personas y el proyecto es mucho más grande de lo que está previsto para el tiempo estipulado.

Piratas del Espacio: El caso Norby

6

•Portabilidad: El proyecto deberá ser portable a los sistemas operativos más comunes de hoy en día, tales como los pertenecientes a Linus, Mac, Windows.

•Concurso: Participamos en el concurso de software libre de España. Por lo que debemos adaptar todas la documentación a su formato y al de la asignatura a la vez.

•Lejanía: Los integrantes del grupo viven en poblaciones distintas y no es posible quedar frecuentemente para debatir las ideas.

•Participaciones: Hemos dotado al proyecto de participaciones en partes específicas del proyecto como diseño gráfico 3D, diseño gráfico 2D y guión. No es factible la posibilidad de participar todos físicamente y crear un ambiente de equipo correcto, por lo que un miembro del equipo deberá encargarse de la organización de todo el personal participante.

Stakeholders

Norberto Díaz Díaz y Francisco Antonio Gómez Vela: es el destinatario del software. Tendrá acceso al repositorio de datos, a los documentos y recursos.

Jugador: será el usuario de la aplicación.

Jose Vázquez Infantes y Gonzalo Rodríguez-Baltanás Díaz: son los responsables del desarrollo.

Fechas de entrega

16 Octubre: 1º Entrega “Documento de visión”.

6 Noviembre: 2º Entrega “Iteración de comienzo”.

27 Noviembre: 3º Entrega “Iteración de Elaboración”.

18 Diciembre: 4º Entrega “Iteración de construcción” .

22 Enero: Entrega Final “Iteración de transición”.

Grupo de desarrollo

Concepto, Análisis, Diseño e Implementación: Gonzalo Rodríguez-Baltanás Díaz y José Vázquez Infantes.

Piratas del Espacio: El caso Norby

7

Equipo de Diseño Gráfico 3D: José Carlos Sendino Fernández y Antonio Herrera Pérez.

Diseño Gráfico 2D: Carlos Atienza Gómez.

Guión: Vicente Llorent Vaquero.

Música: Julio Marín Díaz.

Cine: Daniel Amat.

Requisitos funcionales del proyecto

Dependencias de Software

E n g i n e 3 D

Dado el límite de tiempo que tenemos y la complejidad del proyecto se hace necesaria la utilización de una engine. La engine deberá ser capaz de abstraer el renderizado de objetos tridimensionales, colisiones básicas, sonido, efectos gráficos y transformaciones.

La engine deberá ser compatible con el lenguaje Java. Deberá tener documentación y tutoriales que permitan un desarrollo continuo sencillo.

Piratas del Espacio: El caso Norby

8

Tras considerar las opciones hemos llegado a la conclusión de que la engine que más de adapta a nuestras necesidades es JMonkey. JMonkey es una engine 3D opensource con un estado de desarrollo maduro. Cuenta con un foro activo y canal de chat con desarrolladores los que preguntar dudas.

Requisitos organizativos

R O - 1 : R e p o s i t o r i o d e v e r s i o n e s

Dado que el grupo de desarrollo es multiusuario y la complejidad del proyecto se hace necesario utilizar un software de control de versiones. Este software deberá permitir de manera ágil y sencilla que todos los miembros del proyecto tengan acceso al código fuente.

Tras evaluar las características de Subversion, Mercurial y CVS hemos llegado a la conclusión de que Mercurial es el más idóneo, por su rapidez y documentación disponible.

Para utilizar este software de gestión de versiones se necesita un servidor que esté disponible las 24 horas del día 7 días a la semana 365 días al año. Se usará Kenai para esta tarea, ya que es gratuito y tiene una perfecta integración con Netbeans.

R O - 2 : R e p o s i t o r i o g e n e r a l i s t a

El grupo de desarrollo cuenta con aportaciones de gente no técnica. Así mismo existen aportaciones que no son parte del código y no hace falta controlar su versión. Para estos casos se ha habilitará un segundo repositorio de carácter general.

El servicio encargado de este repositorio es Dropbox. Este servicio permite disponer de 2GB de almacenamiento online. Para utilizarlo entre todos los usuarios del grupo de desarrollo crearemos una carpeta compartida.

Esta carpeta sincronizará los datos con todos los miembros del grupo. Es simple, eficiente y efectivo, además de gratuito, por lo que Dropbox es idóneo para la tarea.

R O - 3 : S o f t w a r e g e s t o r d e p r o y e c t o s

Piratas del Espacio: El caso Norby

9

Dada la complejidad del proyecto, la cantidad de personas involucrada y los requisitos de los stakeholders se hace necesario utilizar un software que ayude a la distribución de tareas y la gestión de tiempo.

En Windows el mejor software de gestión de proyectos es Project, de Microsoft. Se utilizará como herramienta secundaria.

En Mac se dispone de Merlin y de OmniPlan. Se usará OmniPlan porque resulta más sencillo, más barato y además tiene grandes opciones de exportación, permitiendo crear informes automatizados, diagramas de Gantt y diagramas de distribución de tareas.

OmniPlan permite compatibilidad con ficheros de Project. Será usado como gestor de proyectos principal.

R O - 4 : S o f t w a r e d e m o d e l a d o U M L y C a s o s d e u s o s

Se necesita un software capaz de ayudar al modelado de casos de usos y diagramas UML para las clases. Se usará una combinación de Microsoft Visio y OmniGraffle.

Microsoft Visio se ejecutará en plataformas Windows 7 y Windows Vista y OmniGraffle en Mac Os Snow Leopard.

Requisitos funcionales de la aplicación

Análisis de módulos del sistema

A M S - 1 : A n á l i s i s M ó d u l o C o n t r o l e s

El módulo Controles aporta la funcionalidad que posibilita al usuario interactuar con el sistema, por medio del teclado y el ratón.

El ratón se utiliza mientras el usuario está en el menú del videojuego. El teclado se utiliza cuando el usuario está jugando un nivel para controlar a la nave.

Piratas del Espacio: El caso Norby

10

La asignación de las teclas para el control de la nave es el siguiente:

ControlesControles

Tecla Acción

W o ↑ La nave se mueve hacia arriba

A o ← La nave se mueve hacia la izquierda

D o → La nave se mueve hacia la derecha

S o ↓ La nave se mueve hacia abajo

Espacio La nave se dispara

L La nave hace un trompo a la derecha

K La nave hace un trompo a la izquierda

A M S - 2 : A n á l i s i s M ó d u l o N a v e s

El módulo Naves debe proporcionar toda la funcionalidad relacionada con las naves. Debe permitir la creación sencilla de las Naves. El juego consta de 5 tipos de naves. Las naves tienen una serie de atributos que las definen, además de un aspecto propio.

Propiedades básicas

Nave

Propiedades básicasPropiedades básicasPropiedades básicasPropiedades básicasPropiedades básicas

Vida Velocidad Armas Puntuación Daño de colisión

Kamikaze 100 70 Cargas explosivas

200 100

Piratas del Espacio: El caso Norby

11

Propiedades básicas

Nave

Propiedades básicasPropiedades básicasPropiedades básicasPropiedades básicasPropiedades básicas

Vida Velocidad Armas Puntuación Daño de colisión

Clon

Hunter

Bombardero

Jugador

200 65 Cañón de fotones

300 50

230 70 Cañón de Gauss

500 50

180 80 Cañón de plasma

250 70

1000 100 Cañones Alfa

- 400

Armas

Tipos de armas

ArmasArmas

Descripción Daño

Cargas Explosivas Son cargas de plutonio en estado de semi-fisión. Al leve impacto, explotan.

100

Piratas del Espacio: El caso Norby

12

Armas

Tipos de armas

ArmasArmas

Descripción Daño

Cañón de fotones

Cañón Gauss

Cañones Alfa

El cañón de fotón es un arma equilibrada.

20

Disparos rápidos y potencia media

30

Tecnología punta, disparo rápido y

potencia media-alta

50

Bombardero

Piratas del Espacio: El caso Norby

13

Clon

Piratas del Espacio: El caso Norby

14

Hunter

Piratas del Espacio: El caso Norby

15

Jugador

Piratas del Espacio: El caso Norby

16

Kamikaze

Piratas del Espacio: El caso Norby

17

Piratas del Espacio: El caso Norby

18

A M S - 4 : A n á l i s i s M ó d u l o N i v e l e s

El módulo Niveles se encarga de proporcionar toda la funcionalidad relacionada con la carga y puesta en escena de niveles. El juego dispondrá de 7 niveles. Cada nivel define cómo es el universo, qué tipo de enemigos hay y su cantidad.

NivelesNivelesNiveles

Nivel Tiempo(min) Enemigos

1 1 Kamikazes

2 2 Clones

3 2 Clones, Hunter

4 2 Clones, Hunter, Kamikazes

5 2 Hunters, Bombarderos

6 2 Bombardero, Clones, Kamikaze

7 5 Hunter, Bombarderos, Clon, Kamikaze

A M S - 5 : A n á l i s i s M ó d u l o F í s i c a s

El módulo Físicas se encarga de proporcionar toda la funcionalidad relacionada con las colisiones entre los entes del juego.

Colisiones que se deben controlarColisiones que se deben controlarColisiones que se deben controlarColisiones que se deben controlarColisiones que se deben controlar

Jugador Misiles del jugador

Misiles enemigos

Enemigos

Jugador

Misiles del jugador

✖ ✖ ✔ ✔

✖ ✖ ✖ ✔

Piratas del Espacio: El caso Norby

19

Colisiones que se deben controlarColisiones que se deben controlarColisiones que se deben controlarColisiones que se deben controlarColisiones que se deben controlar

Jugador Misiles del jugador

Misiles enemigos

Enemigos

Misiles enemigos

Enemigos

✔ ✖ ✖ ✖

✔ ✔ ✖ ✖

Efectos de colisionesEfectos de colisiones

Colisión Efecto

Jugador <-> Misil enemigo Se resta a la vida del jugador el valor del daño del arma que produjo el

misil

Misil del Jugador <-> Enemigo Se resta a la vida del enemigo el valor del daño del arma del

jugador

Jugador <-> Enemigo Se resta a la vida del jugador el valor del daño de colisión del enemigo.

Se resta a la vida del enemigo el daño de colisión del jugador.

Piratas del Espacio: El caso Norby

20

A M S - 6 : A n á l i s i s M ó d u l o H u d

El módulo HUD contiene toda la funcionalidad que permite representar por pantalla información gráfica para el usuario mientras está en los niveles.

Información que representarInformación que representar

Indicador Explicación

Vidas Cada vida te permite seguir jugando cuando

eres destruido

Vida Representa el estado de la nave.

Puntuación La puntuación que llevas conseguida

Nivel Aparece cada vez que inicias un nuevo nivel

Piratas del Espacio: El caso Norby

21

La posición de los elementos del HUD será la siguiente:

Piratas del Espacio: El caso Norby

22

A M S - 7 : A n á l i s i s M ó d u l o I A

El módulo IA, o de Inteligencia Artificial, proporciona al juego una variabilidad y una inteligencia a las naves, de tal forma que nadie pueda predecir su movimiento. Cada nave tendrá un movimiento particular:

IA de las navesIA de las naves

Nave Comportamiento

Kamikaze Movimiento aleatorio vertical y horizontal.

Clon Siguen una trayectoria rectilínea y disparan

continuamente.

Hunter Se mueve vertical y horizontalmente de

manera que tenga a tiro al jugador

Bombardero Movimiento lento y rectilíneo.

A M S - 8 : A n á l i s i s M ó d u l o E f e c t o s g r á fi c o s

El módulo de efectos gráficos se encarga de añadir efectos que muestren un escenario más atractivo. Las tecnologías que vamos a utilizar son:

• Motion Blur: Los objetos renderizados en pantalla muestran una estela al moverse.

• SkyBox: Los espacios exteriores contienen elementos a una distancia infinita. En nuestro caso, constelaciones en la lejanía.

Piratas del Espacio: El caso Norby

23

A M S - 9 : A n á l i s i s M ó d u l o S o n i d o

El módulo sonido deberá encargarse de la tarea de introducir efectos sonoros y música.

•Música•Menú•Partida•Créditos•Game Over

•Efectos sonoros•Disparo•Explosión•Motores

A M S - 1 0 : A n á l i s i s M ó d u l o D B

El módulo de la base de datos proporciona al juego la posibilidad de tener un registro sobre los jugadores y la puntuación final de las partidas.

Las interacciones con la base de datos se centrarán en las funciones de:

•Guardar nickname, puntuación.•Consultar lista de puntuacion-nickname

Piratas del Espacio: El caso Norby

24

A M S - 11 : A n á l i s i s M ó d u l o M e n ú

Diagramas de casos de uso

Piratas del Espacio: El caso Norby

25

D C 1 - 1 D e s a r r o l l o c a s o d e u s o d e l S u b s i s t e m a M e n ú Nombre: Menú.Precondición: El programa deberá ser inicializado.

Piratas del Espacio: El caso Norby

26

Postcondición: Una ventana llamada MENU aparecerá en pantalla. 1- Aparece una ventana en pantalla. 2- Se dibujan los botones. 3- Se dibuja el fondo.Flujo Alternativo: 1- Si no se dibujase algo correctamente, aparecerá su color por defecto.

D C 1 - 2 D e s a r r o l l o d e c a s o d e u s o S a l i r

Ver Controles tiene una relación de <include> en el Caso de Uso de Menú.

Nombre: Salir.Precondición: La ventana MENU deberá estar en pantalla.

Postcondición:Flujo Normal:- El usuario pulsa el botón SALIR.- Se cierra la ventana MENU.- El sistema termina.Flujo Alternativo:

Piratas del Espacio: El caso Norby

27

D C 1 - 3 D e s a r r o l l o d e c a s o d e u s o Ve r C o n t r o l e s

El módulo Controles aporta la funcionalidad que posibilita al usuario interactuar con el sistema, por medio del teclado y el ratón.

El ratón se utiliza mientras el usuario está en el menú del videojuego. El teclado se utiliza cuando el usuario está jugando un nivel para controlar a la nave.

Ver Controles tiene una relación de <include> en el Caso de Uso de Menú.

Nombre: Ver Controles.Precondición: La ventana MENU deberá estar en pantalla.Postcondición: Se mostrará una ventana en la que se muestren los controles.Flujo Normal:1.- El usuario pulsa el botón VER CONTROLES.2.- Se cierra la ventana MENU.3.- Aparece la ventana VER CONTROLES con los controles necesarios para jugar al juego.Flujo Alternativo:

Piratas del Espacio: El caso Norby

28

D C 1 - 4 D e s a r r o l l o d e c a s o d e u s o Ve r P u n t u a c i o n e s

Puntuaciones tiene una relación de <include> en el Caso de Uso de Menú.

Nombre: Ver Puntuaciones.Precondición: La ventana MENU deberá estar en pantalla.Postcondición: Se mostrará una ventana en la que se muestren las puntuaciones.Flujo Normal:1.- El usuario pulsa el botón VER PUNTUACIONES.2.- Se cierra la ventana MENU.3.- Aparece la ventana VER PUNTUACIONES con las puntuaciones y los nicknames de los jugadores que hayan jugado anteriormente.

Flujo Alternativo:

Piratas del Espacio: El caso Norby

29

D C 1 - 5 D e s a r r o l l o d e c a s o d e u s o C a r g a r S o n i d o

Cargar Sonido tiene una relación de <include> en el Caso de Uso de Menú.

Nombre: Cargar Sonido.Precondición: La ventana MENU deberá estar en pantalla.Postcondición: Flujo Normal: 1- Se reproduce por los altavoces la canción oficial del juego. 2- Si termina la canción se volverá a repetir. 3- La canción terminará cuando se pulse el botón NUEVA PARTIDA o SALIR.

Flujo Alternativo:

D C 2 - 1 D e s a r r o l l o d e c a s o d e u s o A t r á s ( Ve r p u n t u a c i o n e s )

Piratas del Espacio: El caso Norby

30

Atrás tiene una relación de <include> en el Caso de Uso Ver Puntuación.

Nombre: Atrás.Precondición: El usuario deberá haber pulsado el botón de VER PUNTUACIONES.

Postcondición:Flujo Normal:- El usuario pulsa el boton ATRAS.- Se cierra la ventana VER PUNTUACIONES.- Se abre la ventana MENU.

Piratas del Espacio: El caso Norby

31

Flujo Alternativo:

D C 2 - 2 D e s a r r o l l o d e c a s o d e u s o A t r á s ( Ve r c o n t r o l e s )

Atrás tiene una relación de <include> en el Caso de Uso de Ver Controles .

Nombre: Atrás.Precondición: El usuario deberá haber pulsado el botón de VER CONTROLES.

Piratas del Espacio: El caso Norby

32

Postcondición:Flujo Normal:- El usuario pulsa el boton ATRAS.- Se cierra la ventana VER CONTROLES- Se abre la ventana MENU.Flujo Alternativo:

D C 1 - 1 D e s a r r o l l o c a s o d e u s o d e l S u b s i s t e m a N u e v a P a r t i d a

Nombre: Nueva Partida.Precondición: La ventana MENU deberá estar en pantalla.Postcondición: La partida habrá comenzado.

Piratas del Espacio: El caso Norby

33

1- Se reproduce un vídeo dentro del juego en el que se muestre la introducción a la historia deljuego. 2- El primer nivel empieza. 3- Se crea la nave principal. 4- Se empiezan a generar las naves conforme a sus probabilidades de aparición en el grafo de escena. 5- Cuando el nivel termina debido a que su duración ha llegado a su límite, se carga el siguiente elnivel, excepto en caso de que al final del nivel tenga que reproducirse un vídeo. 6- Se vuelven a crear las naves conforme a sus probabilidades de aparición. 7- Se repiten las operaciones anteriores hasta finalizar todos los niveles 8- Al término de los niveles 2, 4, 5 y 7 se reproducirán los vídeos “Llegada a la base”,“Enfrentamientos con la policía”, “Llegada al planeta principal”, “Ending”. 9- Al término de la partida aparecerá una ventana para que el usuario pueda introducir su nickname y éste se guarde en la base de datos junto a su puntuación.Flujo Alternativo:

Piratas del Espacio: El caso Norby

34

D C 1 - 2 D e s a r r o l l o d e c a s o d e u s o C o n t r o l a r l a N a v e

Controlar la Nave tiene una relación de <include> en el Caso de Uso de Nueva Partida.

Nombre: Controlar la nave.Precondición: - Se ha creado una nueva partida.- La nave ha sido creada.Postcondición: La nave habrá cambiado su posición.

Piratas del Espacio: El caso Norby

35

Flujo Normal: 1. El usuario pulsa las teclas adecuadas.2. La nave cambia su posición según la/s tecla/s pulsada.3. La nave seguirá cambiando su posición hasta que la/s tecla/s deja/n de ser pulsada/s.Flujo Alternativo:- El usuario pulsa una tecla no reconocida por el sistema.- El sistema ignora esa pulsación de tecla.

D C 1 - 3 D e s a r r o l l o c a s o s d e u s o G e s t i ó n d e e l e m e n t o s d e l H U D

Gestión de elementos del HUD tiene una relación de <include> en el Caso de Uso de Nueva Partida.

Nombre: Gestión de elementos del HUD.Precondición:- Se ha creado una nueva partida.- La nave ha sido creada.Postcondición: Flujo Normal:1. La información se representa en la pantalla.2. La vida y las vidas irán en la parte superior izquierda.3. La puntuación actual se situará en la parte superior derecha.Flujo Alternativo:

Piratas del Espacio: El caso Norby

36

D C 1 - 4 D e s a r r o l l o d e c a s o d e u s o M a t a r

Matar tiene una relación de <include> en el Caso de Uso de Nueva Partida.

Nombre: Matar.Precondición: - Se ha creado una nueva partida.- La nave ha sido creada.

Piratas del Espacio: El caso Norby

37

Postcondición: Habrá una nave enemiga menos.Flujo Normal:- La nave enemiga explota.- Se guardará en una variable la puntuación para al final del juego guardarla en la base de datos.Flujo Alternativo:

D C 1 - 5 D e s a r r o l l o d e c a s o d e u s o M o r i r

Piratas del Espacio: El caso Norby

38

Morir tiene una relación de <include> en el Caso de Uso de Nueva Partida.

Nombre: Morir.Precondición: - Se ha creado una nueva partida.- La nave ha sido creada.Postcondición: Habrá una nave enemiga menos.Flujo Normal:- La nave enemiga explota.- Se guardará en una variable la puntuación para al final del juego guardarla en la base de datos.Flujo Alternativo:

D C 1 - 6 D e s a r r o l l o d e c a s o d e S a l i r

Piratas del Espacio: El caso Norby

39

Salir HUD tiene una relación de <include> en el Caso de Uso de Nueva Partida.

Nombre: Salir.Precondición: -Se ha creado una nueva partida.- El sistema irá al caso de uso GUARDAR PUNTUACIÓN.Postcondición:

Piratas del Espacio: El caso Norby

40

Flujo Normal:- El usuario podrá pulsar la tecla ESCAPE.- Se pide un nickname con una ventana.- La puntuación actual se guarda en la base de datos junto al nickname introducido.

Flujo Alternativo:

Piratas del Espacio: El caso Norby

41

D C 1 - 7 D e s a r r o l l o d e c a s o d e u s o P a u s a

Pausa tiene una relación de <include> en el Caso de Uso de Nueva Partida.

Nombre: PausaPrecondición: Se ha creado una nueva partida.Postcondición: El sistema quedará pausado.

Piratas del Espacio: El caso Norby

42

Flujo Normal:- El usuario podrá pulsar la tecla P.- El sistema quedará pausado.Flujo Alternativo:- En caso de que el sistema está pausado.- El sistema se restablecerá y dejará de estar pausado.

Piratas del Espacio: El caso Norby

43

D C 1 - 8 D e s a r r o l l o d e c a s o d e u s o G a n a r P a r t i d a

Ganar Partida tiene una relación de <include> en el Caso de Uso de Nueva Partida.

Nombre: Ganar Partida.Precondición:- Se ha creado una nueva partida.- La nave ha sido creada.

Piratas del Espacio: El caso Norby

44

Postcondición: El sistema irá al caso de uso GUARDAR PUNTUACIÓN.Flujo Normal: 1- Se comprobará que el usuario ha terminado todos los niveles. 2- Se reproducirá el video final.Flujo Alternativo:- Si no encuentra el video para reproducirlo, ignora esa parte y se la salta.

D C 1 - 9 D e s a r r o l l o d e c a s o d e u s o G u a r d a r P u n t u a c i ó n

Piratas del Espacio: El caso Norby

45

Guardar Puntuación tiene una relación de <include> en el Caso de Uso de Nueva Partida.

Nombre: Guardar Puntuación.Precondición:- Se ha creado una nueva partida.- La nave ha sido creada.Postcondición: El sistema finalizará.Flujo Normal: 1- Mediante un cuadro de diálogo se le pedirá al usuario que introduzca un nickname. 2- El sistema introducirá en la base de datos ese nickname junto a su puntuación.Flujo Alternativo:

D C 1 - 1 0 D e s a r r o l l o d e c a s o d e u s o C a r g a r N i v e l

Cargar Nivel tiene una relación de <include> en el Caso de Uso de Nueva Partida.

Nombre: Cargar Nivel.Precondición: Habrá comenzado una nueva partida.Postcondición: Un nivel quedará cargado y listo para jugarlo.Flujo Normal:- Se creará la nave principal.- Se generará el Skybox.- Se cargará el sonido.- Se crearán el resto de las naves de acuerdo a cada nivel.- Se gestionará la IA de las naves enemigas.- Se gestionará la duración del nivel.Flujo Alternativo 1:- La nave principal no se carga.- El juego se aborta.Flujo Alternativo 2:- Las naves enemigas no se generan.- El juego se aborta.

Piratas del Espacio: El caso Norby

46

Flujo Alternativo 3:- La duración del nivel es mayor de la estimada.- Se carga el siguiente nivel

D C 2 - 1 D e s a r r o l l o d e c a s o d e u s o Tr o m p o a l a d e r e c h a

Trompo a la derecha tiene una relación de <extends> en el Caso de Uso de Controlar la Nave.

Piratas del Espacio: El caso Norby

47

Nombre: Trompo a la derechaPrecondición: Se ha creado una nueva partida.Postcondición: La nave cambiará su posición.Flujo Normal:- El usuario podrá pulsar la tecla E.- La nave realizará un trompo en el sentido de las agujas del reloj por la pantalla.

Piratas del Espacio: El caso Norby

48

Flujo Alternativo:- La nave llega a cualquiera de los límites de la pantalla.- La nave se detiene.- La nave no vuelve a su estado inicial.

D C 2 - 2 D e s a r r o l l o d e c a s o d e u s o Tr o m p o a l a i z q u i e r d a

Trompo a la izquierda tiene una relación de <extends> en el Caso de Uso de Controlar la Nave.

Nombre: Trompo a la izquierda

Piratas del Espacio: El caso Norby

49

Precondición: Se ha creado una nueva partida.Postcondición: La nave cambiará su posición.Flujo Normal:- El usuario podrá pulsar la tecla Q.- La nave realizará un trompo al contrario de las agujas del reloj por la pantalla.Flujo Alternativo:- La nave llega a cualquiera de los límites de la pantalla.- La nave se detiene.- La nave no vuelve a su estado inicial.

D C 2 - 3 D e s a r r o l l o d e c a s o d e u s o A r r i b a

Arriba tiene una relación de <extends> en el Caso de Uso de Controlar la Nave.

Piratas del Espacio: El caso Norby

50

Nombre: Arriba.Precondición: Se ha creado una nueva partida.Postcondición: La nave cambiará su posición hacia arriba.Flujo Normal:- El usuario podrá pulsar las teclas W o _- La nave se mueve hacia arriba mientras cualquiera de las dos teclas posibles sigan estando pulsadas.

Piratas del Espacio: El caso Norby

51

Flujo Alternativo:- La nave llega al límite superior de la pantalla.- La nave se detiene en su ascenso por la pantalla.

D C 2 - 4 D e s a r r o l l o d e c a s o d e u s o I z q u i e r d a

Izquierda tiene una relación de <extends> en el Caso de Uso de Controlar la Nave.

Piratas del Espacio: El caso Norby

52

Nombre: Izquierda.Precondición: Se ha creado una nueva partida.Postcondición: La nave cambiará su posición hacia la izquierda.Flujo Normal:- El usuario podrá pulsar las teclas A o _- La nave se mueve hacia la izquierda mientras cualquiera de las dos teclas posibles sigan estando pulsadas.

Piratas del Espacio: El caso Norby

53

Flujo Alternativo:- La nave llega al límite izquierdo de la pantalla.- La nave se detiene en su movimiento lateral a la izquierda por la pantalla.

D C 2 - 5 D e s a r r o l l o d e c a s o d e u s o A b a j o

Abajo tiene una relación de <extends> en el Caso de Uso de Controlar la Nave.

Piratas del Espacio: El caso Norby

54

Nombre: Abajo.Precondición: Se ha creado una nueva partida.Postcondición: La nave cambiará su posición hacia abajo.Flujo Normal:- El usuario podrá pulsar las teclas S o _- La nave se mueve hacia abajo mientras cualquiera de las dos teclas posibles sigan estando pulsadas.Flujo Alternativo:- La nave llega al límite inferior de la pantalla.- La nave se detiene en su descenso por la pantalla.

D C 2 - 6 D e s a r r o l l o d e c a s o d e u s o D e r e c h a

Derecha tiene una relación de <extends> en el Caso de Uso de Controlar la Nave.

Piratas del Espacio: El caso Norby

55

Nombre: Derecha.Precondición: Se ha creado una nueva partida.Postcondición: La nave cambiará su posición hacia la derecha.Flujo Normal:- El usuario podrá pulsar las teclas D o _- La nave se mueve hacia la derecha mientras cualquiera de las dos teclas posibles sigan estando pulsadas.

Piratas del Espacio: El caso Norby

56

Flujo Alternativo:- La nave llega al límite derecho de la pantalla.- La nave se detiene en su movimiento lateral a la derecha por la pantalla.

D C 2 - 7 D e s a r r o l l o d e c a s o d e u s o D i s p a r a r

Disparar tiene una relación de <extends> en el Caso de Uso de Matar.

Piratas del Espacio: El caso Norby

57

Nombre: Disparar.Precondición: - Se ha creado una nueva partida.- La nave ha sido creada.Postcondición: Habrá un modelo en 3D con forma de misil en el grafo de escena.

Piratas del Espacio: El caso Norby

58

Flujo Normal:- El usuario podrá pulsar la tecla ESPACIO.- Se crea un objeto en 3D con forma de misil.- Ese misil irá actualizando su posición en el eje de la Z a más velocidad que la de la nave principal.Flujo Alternativo:- El usuario deja pulsada la tecla ESPACIO.- El sistema ignorará esa petición hasta pasado un tiempo.

D C 2 - 8 D e s a r r o l l o d e c a s o d e u s o C o l i s i o n a r c o n l a n a v e e n e m i g a

Colisionar con la nave enemiga tiene una relación de <extends> en el Caso de Uso de Matar.

Piratas del Espacio: El caso Norby

59

Nombre: Colisionar con la nave enemiga.Precondición: - Se ha creado una nueva partida.- La nave ha sido creada.Postcondición:

Piratas del Espacio: El caso Norby

60

Flujo Normal:- Se hace un recuento de daños por colisión.- La nave enemiga explota.- Se guardará en una variable la puntuación para al final del juego guardarla en la base de datos.Flujo Alternativo:- La nave enemiga tiene más vida que nuestro daño por colisión.- Las naves seguirán chocando hasta que alguna muera por colisión.

D C 2 - 9 D e s a r r o l l o d e c a s o d e u s o S e r d i s p a r a d o p o r e l e n e m i g o

Ser Disparado tiene una relación de <extends> en el Caso de Uso de Morir.

Piratas del Espacio: El caso Norby

61

Nombre: Ser disparado por el enemigo.Precondición: - Se ha creado una nueva partida.- La nave ha sido creada.Postcondición:Flujo Normal:- La vida de la nave principal llega a cero.- La nave principal explota.- El juego termina.- Sale una ventana en la que introduces tu nickname y se guarda tu puntuación en la base de datos.

Piratas del Espacio: El caso Norby

62

Flujo Alternativo:

D C 2 - 1 0 D e s a r r o l l o d e c a s o d e u s o L a n a v e c o l i s i o n a c o n e l e n e m i g o

La nave colisiona con el enemigo tiene una relación de <extends> en el Caso de Uso de Morir.

Piratas del Espacio: El caso Norby

63

Nombre: La nave nave colisiona con enemigo.Precondición: - Se ha creado una nueva partida.- La nave ha sido creada.Postcondición:

Piratas del Espacio: El caso Norby

64

Flujo Normal: - La nave enemiga colisiona con la nave principal.- La vida de la nave principal llega a cero.- La nave principal explota.- El juego termina.- Sale una ventana en la que introduces tu nickname y se guarda tu puntuación en la base de datos.

Flujo Alternativo:

D C 2 - 11 D e s a r r o l l o d e c a s o d e u s o C a r g a r S o n i d o

Cargar Sonido tiene una relación de <include> en el Caso de Uso de Cargar Nivel.

Nombre: Cargar Sonido.Precondición: - Se ha creado una nueva partida.Postcondición:Flujo Normal: - Se gestionará cuándo se necesita, dentro de la partida, reproducir un sonido.

Flujo Alternativo:

D C 2 - 1 2 D e s a r r o l l o d e c a s o d e u s o G e n e r a r S k y b o x

Skybox tiene una relación de <include> en el Caso de Uso de Cargar Nivel.

Piratas del Espacio: El caso Norby

65

Nombre: Generar Skybox.Precondición: - Se ha creado una nueva partida.Postcondición:Flujo Normal: - Se creará la cara norte del cubo.- Se creará la cara sur del cubo.- Se creará la cara este del cubo.- Se creará la cara oeste del cubo.- Se creará la cara superior del cubo.- Se creará la cara inferior del cubo.- Todas las caras tendrán la misma imagen.Flujo Alternativo:

D C 2 - 1 3 D e s a r r o l l o d e c a s o d e u s o G e s t i ó n N i v e l

Gestión Nivel tiene una relación de <include> en el Caso de Uso de Cargar Nivel.

Nombre: Gestión Nivel.Precondición: - Se ha creado una nueva partida.- Se ha creado la nave principal.- Se han empezado a crear las naves enemigas.Postcondición: El nivel terminará.

Piratas del Espacio: El caso Norby

66

Flujo Normal: - Se gestionará cada nivel.

Flujo Alternativo:

D C 2 - 1 4 D e s a r r o l l o d e c a s o d e u s o C r e a r N a v e s

Crear Naves tiene una relación de <include> en el Caso de Uso de Cargar Nivel.

Nombre: Crear Naves.Precondición: - Se ha creado una nueva partida.Postcondición:Flujo Normal: - Se creará la nave precisa para cada momento del juego.

Flujo Alternativo:

D C 3 - 1 D e s a r r o l l o d e c a s o d e u s o M ú s i c a d e N i v e l

Musica de nivel tiene una relación de <extends> en el Caso de Uso de Cargar Sonido.

Piratas del Espacio: El caso Norby

67

Nombre: Música de nivel.Precondición: - Se ha creado una nueva partida.Postcondición:Flujo Normal: - Se reproducirá una canción diseñada para los niveles.

Flujo Alternativo:

Piratas del Espacio: El caso Norby

68

D C 3 - 2 D e s a r r o l l o d e c a s o d e u s o E f e c t o s S o n o r o s

Efectos Sonoros tiene una relación de <extends> en el Caso de Uso de Cargar Sonido.

Nombre: Efectos sonoros.Precondición: - Se ha creado una nueva partida.- La nave ha sido creada.Postcondición:

Piratas del Espacio: El caso Norby

69

Flujo Normal: - Se reproducirán los efectos sonoros acorde a la situación.- Si la nave dispara se reproducirá un sonido de disparo.- Si alguna nave explota se reproducirá un sonido de explosión.- Si se produce una colisión se reproducirá un sonido de colisión.Flujo Alternativo:

D C 3 - 3 D e s a r r o l l o d e c a s o d e u s o D u r a c i ó n N i v e l

Duración Nivel tiene una relación de <extends> en el Caso de Uso de Getión Nivel.

Piratas del Espacio: El caso Norby

70

Nombre: Duración Nivel.Precondición: - Se ha creado una nueva partida.Postcondición: El nivel terminará.

Piratas del Espacio: El caso Norby

71

Flujo Normal: - Se mira si el nivel ha llegado a su límite de tiempo y termina.- Si el nivel aún no ha terminado se actualiza el tiempo restante y se repite la operación anterior.- Cuando el tiempo restante es cero, se pasa al siguiente nivel.

Flujo Alternativo:- Si el tiempo restante es menor que cero, se pasa el siguiente nivel.

D C 3 - 4 D e s a r r o l l o d e c a s o d e u s o G e s t i ó n I A

Gestión IA tiene una relación de <extends> en el Caso de Uso de Getión Nivel.

Piratas del Espacio: El caso Norby

72

Nombre: Gestión IA.

Piratas del Espacio: El caso Norby

73

Precondición: - Se ha creado una nueva partida.- Se ha creado la nave principal.- Se han empezado a crear las naves enemigas.Postcondición:Flujo Normal: - Para cada tipo de nave se gestionará su IA.

Flujo Alternativo:

D C 3 - 5 D e s a r r o l l o d e c a s o d e u s o C r e a r N a v e P r i n c i p a l

Crear Nave Principal tiene una relación de <extends> en el Caso de Uso de Crear Naves.

Piratas del Espacio: El caso Norby

74

Nombre: Crear Nave Principal.Precondición: - Se ha creado una nueva partida.Postcondición: Se habrá creado la nave principal.

Piratas del Espacio: El caso Norby

75

Flujo Normal: - Se creará la nave principal del jugador.- Se añadirá al grafo de escena.

Flujo Alternativo:- Si no se crea la nave principal se abortará el juego.

D C 3 - 6 D e s a r r o l l o d e c a s o d e u s o C r e a r B o m b a r d e r o

Crear Bombardero tiene una relación de <extends> en el Caso de Uso de Crear Naves.

Piratas del Espacio: El caso Norby

76

Nombre: Crear Bombardero.Precondición: - Se ha creado una nueva partida.- Se ha creado la nave principal.

Piratas del Espacio: El caso Norby

77

Postcondición: Se habrá creado un bombadero.Flujo Normal: - Se creará un Bombardero.- Se añadirá al grafo de escena.

Flujo Alternativo:

D C 3 - 7 D e s a r r o l l o d e c a s o d e u s o C r e a r K a m i k a z e

Crear Kamikaze tiene una relación de <extends> en el Caso de Uso de Crear Naves.

Piratas del Espacio: El caso Norby

78

Nombre: Crear Kamikaze.Precondición: - Se ha creado una nueva partida.- Se ha creado la nave principal.

Piratas del Espacio: El caso Norby

79

Postcondición: Se habrá creado un Kamikaze.Flujo Normal: - Se creará un Kamikaze.- Se añadirá al grafo de escena.

Flujo Alternativo:

D C 3 - 8 D e s a r r o l l o d e c a s o d e u s o C r e a r C l o n

Crear Clon tiene una relación de <extends> en el Caso de Uso de Crear Naves.

Piratas del Espacio: El caso Norby

80

Nombre: Crear Clon.Precondición: - Se ha creado una nueva partida.- Se ha creado la nave principal.

Piratas del Espacio: El caso Norby

81

Postcondición: Se habrá creado un Clon.Flujo Normal: - Se creará un Clon.- Se añadirá al grafo de escena.

Flujo Alternativo:

D C 3 - 9 D e s a r r o l l o d e c a s o d e u s o C r e a r H u n t e r

Crear Hunter tiene una relación de <extends> en el Caso de Uso de Crear Naves.

Piratas del Espacio: El caso Norby

82

Nombre: Crear Hunter.Precondición: - Se ha creado una nueva partida.- Se ha creado la nave principal.Postcondición: Se habrá creado un Hunter.

Piratas del Espacio: El caso Norby

83

Flujo Normal: - Se creará un Hunter.- Se añadirá al grafo de escena.

Flujo Alternativo:

Priorización de casos de uso

1. Nueva Partida

1. Crear Nave Principal2. Salir (en juego)3. Controlar la Nave4. Arriba5. Abajo6. Izquierda7. Derecha8. Trompo izquierda9. Trompo derecha10.Cargar Nivel11. Generar SkyBox12. Crear Naves13. Crear Bombardero14. Crear Kamikaze 15. Crear Hunter16. Crear Clón17. Gestión IA18. Disparar19. Colisionar con nave enemiga20. Morir21. Ser disparado 22. La Nave colisiona con enemigo23. Pausa24. Gestión elementos del HUD25. Gestión del Nivel26. Duración Nivel27. Ganar Partida28. Guardar Puntuación29. Cargar Sonido30. Música de Nivel

Piratas del Espacio: El caso Norby

84

31. Efectos sonoros2. Menú

1. Salir2. Ver puntuación3. Ver Controles4. Atrás5. Cargar Sonido

Piratas del Espacio: El caso Norby

85

Diagramas de secuencia

Piratas del Espacio: El caso Norby

86

Controlar la nave

Piratas del Espacio: El caso Norby

87

Flujo alternativo

Piratas del Espacio: El caso Norby

88

Crear nivel

Piratas del Espacio: El caso Norby

89

Piratas del Espacio: El caso Norby

90

Ganar Partida

Piratas del Espacio: El caso Norby

91

Flujo alternativo

Piratas del Espacio: El caso Norby

92

Generar Skybox

Piratas del Espacio: El caso Norby

93

Guardar Puntación

Piratas del Espacio: El caso Norby

94

Matar Enemigo

Piratas del Espacio: El caso Norby

95

Pausa

Piratas del Espacio: El caso Norby

96

Pausa Flujo alternativo

Piratas del Espacio: El caso Norby

97

Salir

Piratas del Espacio: El caso Norby

98

Ver puntuaciones

Piratas del Espacio: El caso Norby

99

Diagrama de clases

Ver archivo Diagramas/Diagramas de clases

Piratas del Espacio: El caso Norby

100

Glosario

1. SimpleGame

Es una clase que permite un rápido funcionamiento de un juego en Jmonkey, un prototipo con todas las funcionalidades básicas.

2. DisplaySystem Provee una forma de conectarse con el sistema de ventanas.

3. BaseGame: Es una clase que tiene una serie de métodos que se repiten en un bucle infinito en este orden:

a. initSystem(): En este método se llaman y crean los hilos oportunos (en nuestro caso no realizaremos programación multi-hilos). También se inicializa Display System o se lanzará una excepción.

b. InitGame(): Se llama despues de que termine initSystem(). Aquí es donde el grafo de escena se carga y donde se inicializa el juego.

c. Update(float): Se llama con un argumento cuyo valor es -1.0F. Este valor no tiene sentido mientras la CPU y la tarjeta gráfica puedan trabajar sin problemas. Éste método se encarga de actualizar el programa.

d. Render(float): El argumento es lo mismo que en el método Update(float). Éste método se encarga de renderizar el grafo de escena.Thread.yield(): Si existe otro proceso, éste método lo invoca.Si el juego no ha terminado se volvería al método Update(float).

e. CleanUp(): Cuando el juego está acabando se llama a este método. Aquí se implementa la limpieza.

f. Quit(): Éste método se invoca cuando el juego está terminando y si no hay otro proceso pendiente se llama al método exit() y se sale de la ejecución.

4. Quaterniones: Son un subconjunto de números hipercomplejos que sirven para rotar un objeto en el espacio 3D. Sus cuatro valores se miden en radianes.

5. Renderizar: Dibujar un objeto en la pantalla del juego.

Piratas del Espacio: El caso Norby

101

6. Grafo de escena: Es el grafo donde se irán añadiendo nodos. Ese grafo se renderizará en pantalla.

7. Main-game-loop: El bucle principal del juego consiste en actualizar tan rápido como sea posible el grafo de escena y hacer todos los cálculos necesarios para su actualización. Es de vital importancia que el bucle sea rápido, consistente y continuo. El bucle principal del juego se divide en varias fases:

a. Inicialización: Esta fase tiene la función de inicializar los requisitos básicos para el funcionamiento del programa.

b. Actualización: Esta fase es muy importante ya que se utiliza para actualizar los valores necesarios para actuar frente a posibles cambios en el programa. Suele utilizar una variable tiempo. En esta fase se introducen los métodos necesarios para el manejo de los controles, la cámara (en el caso de que se mueva durante el juego), nuevos objetos o cualquier otra actualización.

c. Dibujo: En esta fase se renderizan todos los objetos o nodos del grafo de escena.

d. Limpieza: Se eliminan los nodos necesarios del grafo de escena. Sin embargo, si se usa para finalizar el programa se utiliza para guardar los valores necesarios antes de cerrar el programa.

8. Bounding Box: Es un cubo con todos sus vértices, el cual nos permite un nivel alto de velocidad en cálculos y en el que se encapsulan algunos objetos.

9. Vector3f: es un vector de 3 coordenadas.

10. Camera: la cámara es una forma de dibujar en pantalla solamente los objetos que se precisan ver en un determinado momento. La cámara tiene una dirección, una posición con respecto a la izquierda y otra posición respecto a la altura.

11. ChaseCamera: es la funcionalidad de la cámara que permite que la cámara siga al jugador.

12.Frustum Culling: cuando usamos frustum culling conseguimos que los objetos no focalizados por la cámara no se tengan que tener renderizados y así los recursos no estarán tan sobrecargados.

13.InputSystem: Aquí están implementados el ratón, el teclado o el joystick.

14.InputHandlers: Son los eventos que sirven como controles a la disposición del jugador.

15.Texture: define un tipo de dato en un objeto de JME. Ésta encapsulación permite cargar la textura de una figura geométrica o modelo 3D.

Piratas del Espacio: El caso Norby

102

16.TextureState: define un RenderState que maneja un Texture para un Spatial.

17.RenderState: define las cualidades de una figura geométrica del grafo de escena.

18.Spatial: es la clase básica de un objeto que se encuentra en un nodo del grafo.

19.SkyBox: es una técnica que permite crear la ilusión de que el entorno 3D es infinito. Para ello es necesario utilizar 6 imágenes que se colocan en las 6 caras de un cubo. Éste cubo tiene una posición relativa a la cámara de manera que la cámara siempre está dentro del cubo.

20.ZbufferState: es una clase que permite que los objetos más cercanos se rendericen por encima de los más alejados, de forma que las partes de un objeto que se encuentren detrás de otro no se puedan ver.

21.RenderQueue: es una cola de objetos renderizados que contiene los objetos ordenados para ser renderizados en el siguiente orden: objetos opacos, la parte interior de los objetos traslúcidos, la parte externa de los objetos traslúcidos y objetos ortogonales.

22.SharedMesh: es muy útil para renderizar varias instancias del mismo objeto. De esta forma podemos tener un sólo objeto, pero renderizado tantas veces como se quiera. Es muy útil ya que no es necesario repetir código si tenemos que introducir varios objetos de las mismas características.

23.Third Person Handler: Son los controles manejados por el usuario en tercera persona.

24.Tipos de Shapes:

a. Arrow

b. Axis Rods

c. Box

d. Rounded Box

e. Capsule

f. Cone

g. Cylinder

h. Disk

Piratas del Espacio: El caso Norby

103

i. Dodecahedron

j. Dome

k. Hexagon

l. Icosahedron

m.Octahedron

n. Pyramid

o. Quad

p. Sphere

q. Geosphere

r. Teapot

s. Torus

Piratas del Espacio: El caso Norby

104