Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ndice
Introduccin!
Origen del proyecto ! Objetivos del proyecto ! Riesgos ! Stakeholders ! Fechas de entrega ! Grupo de desarrollo !
5
5 6 6 7 7 7
8
8
8
Requisitos organizativos !
RO-1: Repositorio de versiones ! RO-2: Repositorio generalista ! RO-3: Software gestor de proyectos! RO-4: Software de modelado UML y Casos de usos !
9
9 9 9 10
10
10
10 11 19 19 21
Piratas del Espacio: El caso Norby AMS-7: Anlisis Mdulo IA ! AMS-8: Anlisis Mdulo Efectos grcos! AMS-9: Anlisis Mdulo Sonido! AMS-10: Anlisis Mdulo DB ! AMS-11: Anlisis Mdulo Men! 23 23 24 24 25
25
26 27 28 29 30 30 32 33 35 36 37 38 39 42 44 45 46 47 49 50 52
Piratas del Espacio: El caso Norby DC2-5 Desarrollo de caso de uso Abajo! DC2-6 Desarrollo de caso de uso Derecha! DC2-7 Desarrollo de caso de uso Disparar ! DC2-8 Desarrollo de caso de uso Colisionar con la nave enemiga! DC2-9 Desarrollo de caso de uso Ser disparado por el enemigo! DC2-10 Desarrollo de caso de uso La nave colisiona con el enemigo! DC2-11 Desarrollo de caso de uso Cargar Sonido! DC2-12 Desarrollo de caso de uso Generar Skybox ! DC2-13 Desarrollo de caso de uso Gestin Nivel! DC2-14 Desarrollo de caso de uso Crear Naves ! DC3-1 Desarrollo de caso de uso Msica de Nivel! DC3-2 Desarrollo de caso de uso Efectos Sonoros! DC3-3 Desarrollo de caso de uso Duracin Nivel! DC3-4 Desarrollo de caso de uso Gestin IA! DC3-5 Desarrollo de caso de uso Crear Nave Principal! DC3-6 Desarrollo de caso de uso Crear Bombardero! DC3-7 Desarrollo de caso de uso Crear Kamikaze! DC3-8 Desarrollo de caso de uso Crear Clon! DC3-9 Desarrollo de caso de uso Crear Hunter! 54 55 57 59 61 63 65 65 66 67 67 69 70 72 74 76 78 80 82
84
Diagramas de secuencia!
Controlar la nave ! Crear nivel! Ganar Partida ! Generar Skybox ! Guardar Puntacin! Matar Enemigo !
4
86
87 89 91 93 94 95
96 98 99
100 101
Introduccin
Piratas del Espacio: El caso Norby ! Para el curso 2009-2010 la asignatura Ingeniera del software de gestin II plantea la ejecucin de un proyecto de mediana envergadura. Nuestro grupo de desarrollo propone crear una versin actualizada de UPO: The Game. !
Riesgos
! Los principales riesgos que amenazan a nuestro proyecto son:
Tiempo: Tenemos una fecha lmite 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. Implementacin: La implementacin es bastante compleja y la informacin es escasa, y en algunos casos nula, tanto en material fsico como digital. Tamao: Los integrantes del grupo son tan slo dos personas y el proyecto es mucho ms grande de lo que est previsto para el tiempo estipulado.
6
Piratas del Espacio: El caso Norby Portabilidad: El proyecto deber ser portable a los sistemas operativos ms comunes de hoy en da, tales como los pertenecientes a Linus, Mac, Windows. Concurso: Participamos en el concurso de software libre de Espaa. Por lo que debemos adaptar todas la documentacin a su formato y al de la asignatura a la vez. Lejana: 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 especcas del proyecto como diseo grco 3D, diseo grco 2D y guin. No es factible la posibilidad de participar todos fsicamente y crear un ambiente de equipo correcto, por lo que un miembro del equipo deber encargarse de la organizacin de todo el personal participante.
Stakeholders
Norberto Daz Daz y Francisco Antonio Gmez Vela: es el destinatario del software. Tendr acceso al repositorio de datos, a los documentos y recursos. Jugador: ser el usuario de la aplicacin. Jose Vzquez Infantes y Gonzalo Rodrguez-Baltans Daz: son los responsables del desarrollo.
Fechas de entrega
16 Octubre: 1 Entrega Documento de visin. 6 Noviembre: 2 Entrega Iteracin de comienzo. 27 Noviembre: 3 Entrega Iteracin de Elaboracin. 18 Diciembre: 4 Entrega Iteracin de construccin . 22 Enero: Entrega Final Iteracin de transicin.
Grupo de desarrollo
Concepto, Anlisis, Diseo e Implementacin: Gonzalo Rodrguez-Baltans Daz y Jos Vzquez Infantes.
7
Piratas del Espacio: El caso Norby Equipo de Diseo Grco 3D: Jos Carlos Sendino Fernndez y Antonio Herrera Prez. Diseo Grco 2D: Carlos Atienza Gmez. Guin: Vicente Llorent Vaquero. Msica: Julio Marn Daz. Cine: Daniel Amat.
Dependencias de Software
Engine 3D ! Dado el lmite de tiempo que tenemos y la complejidad del proyecto se hace necesaria la utilizacin de una engine. La engine deber ser capaz de abstraer el renderizado de objetos tridimensionales, colisiones bsicas, sonido, efectos grcos y transformaciones. ! La engine deber ser compatible con el lenguaje Java. Deber tener documentacin y tutoriales que permitan un desarrollo continuo sencillo.
8
Piratas del Espacio: El caso Norby ! Tras considerar las opciones hemos llegado a la conclusin de que la engine que ms 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
RO-1: Repositorio de versiones ! 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 cdigo fuente. ! Tras evaluar las caractersticas de Subversion, Mercurial y CVS hemos llegado a la conclusin de que Mercurial es el ms idneo, por su rapidez y documentacin disponible. ! Para utilizar este software de gestin de versiones se necesita un servidor que est disponible las 24 horas del da 7 das a la semana 365 das al ao. Se usar Kenai para esta tarea, ya que es gratuito y tiene una perfecta integracin con Netbeans.
RO-2: Repositorio generalista ! El grupo de desarrollo cuenta con aportaciones de gente no tcnica. As mismo existen aportaciones que no son parte del cdigo y no hace falta controlar su versin. Para estos casos se ha habilitar un segundo repositorio de carcter 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, eciente y efectivo, adems de gratuito, por lo que Dropbox es idneo para la tarea.
Piratas del Espacio: El caso Norby ! 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 distribucin de tareas y la gestin de tiempo. ! En Windows el mejor software de gestin 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 ms sencillo, ms barato y adems tiene grandes opciones de exportacin, permitiendo crear informes automatizados, diagramas de Gantt y diagramas de distribucin de tareas. ! OmniPlan permite compatibilidad con cheros de Project. Ser usado como gestor de proyectos principal.
RO-4: Software de modelado UML y Casos de usos ! Se necesita un software capaz de ayudar al modelado de casos de usos y diagramas UML para las clases. Se usar una combinacin de Microsoft Visio y OmniGra"e. ! Microsoft Visio se ejecutar en plataformas Windows 7 y Windows Vista y OmniGra"e en Mac Os Snow Leopard.
10
Piratas del Espacio: El caso Norby ! La asignacin de las teclas para el control de la nave es el siguiente:
Controles Tecla
Wo# Ao$ Do% So& Espacio L K !
Accin
La nave se mueve hacia arriba La nave se mueve hacia la izquierda La nave se mueve hacia la derecha La nave se mueve hacia abajo La nave se dispara La nave hace un trompo a la derecha La nave hace un trompo a la izquierda
AMS-2: Anlisis Mdulo Naves ! El mdulo Naves debe proporcionar toda la funcionalidad relacionada con las naves. Debe permitir la creacin sencilla de las Naves. El juego consta de 5 tipos de naves. Las naves tienen una serie de atributos que las denen, adems de un aspecto propio.
Velocidad
70
Armas
Cargas explosivas
Puntuacin
200
Dao de colisin
100
11
Velocidad
65 70 80 100
Armas
Can de fotones Can de Gauss Can de plasma Caones Alfa
Puntuacin
300 500 250 -
Dao de colisin
50 50 70 400
Armas
Tipos de armas
Descripcin
Son cargas de plutonio en estado de semi-sin. Al leve impacto, explotan.
Dao
100
Cargas Explosivas
12
Armas
Tipos de armas
Descripcin
El can de fotn es un arma equilibrada. Disparos rpidos y potencia media Tecnologa punta, disparo rpido y potencia media-alta
Dao
20
Can de fotones
30 50
Bombardero
13
Clon
14
Hunter
15
Jugador
16
Kamikaze
17
18
Piratas del Espacio: El caso Norby AMS-4: Anlisis Mdulo Niveles ! El mdulo 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 dene cmo es el universo, qu tipo de enemigos hay y su cantidad.
Niveles Nivel
1 2 3 4 5 6 7
Tiempo(min)
1 2 2 2 2 2 5
Enemigos
Kamikazes Clones Clones, Hunter Clones, Hunter, Kamikazes Hunters, Bombarderos Bombardero, Clones, Kamikaze Hunter, Bombarderos, Clon, Kamikaze
AMS-5: Anlisis Mdulo Fsicas ! El mdulo Fsicas se encarga de proporcionar toda la funcionalidad relacionada con las colisiones entre los entes del juego.
Misiles enemigos
" !
Enemigos
" "
19
Misiles enemigos
!
Enemigos
!
"
"
Efecto
Se resta a la vida del jugador el valor del dao del arma que produjo el misil Se resta a la vida del enemigo el valor del dao del arma del jugador Se resta a la vida del jugador el valor del dao de colisin del enemigo. Se resta a la vida del enemigo el dao de colisin del jugador.
20
AMS-6: Anlisis Mdulo Hud ! El mdulo HUD contiene toda la funcionalidad que permite representar por pantalla informacin grca para el usuario mientras est en los niveles.
Explicacin
Cada vida te permite seguir jugando cuando eres destruido Representa el estado de la nave. La puntuacin que llevas conseguida Aparece cada vez que inicias un nuevo nivel
21
22
AMS-7: Anlisis Mdulo IA ! El mdulo IA, o de Inteligencia Articial, 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:
Comportamiento
Movimiento aleatorio vertical y horizontal. Siguen una trayectoria rectilnea y disparan continuamente. Se mueve vertical y horizontalmente de manera que tenga a tiro al jugador Movimiento lento y rectilneo.
Hunter
Bombardero
AMS-8: Anlisis Mdulo Efectos grcos ! El mdulo de efectos grcos se encarga de aadir efectos que muestren un escenario ms atractivo. Las tecnologas 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 innita. En nuestro caso, constelaciones en la lejana.
23
AMS-9: Anlisis Mdulo Sonido ! El mdulo sonido deber encargarse de la tarea de introducir efectos sonoros y msica. Msica Men Partida Crditos Game Over Efectos sonoros Disparo Explosin Motores
AMS-10: Anlisis Mdulo DB ! El mdulo de la base de datos proporciona al juego la posibilidad de tener un registro sobre los jugadores y la puntuacin nal de las partidas. ! Las interacciones con la base de datos se centrarn en las funciones de: Guardar nickname, puntuacin. Consultar lista de puntuacion-nickname
24
A M S - 11 : A n l i s i s M d u l o M e n
25
DC1-1 Desarrollo caso de uso del Subsistema Men ! Nombre: Men. Precondicin: El programa deber ser inicializado.
26
Piratas del Espacio: El caso Norby Postcondicin: 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.
Ver Controles tiene una relacin de <include> en el Caso de Uso de Men. Nombre: Salir. Precondicin: La ventana MENU deber estar en pantalla. Postcondicin: Flujo Normal: - El usuario pulsa el botn SALIR. - Se cierra la ventana MENU. - El sistema termina. Flujo Alternativo:
27
El mdulo Controles aporta la funcionalidad que posibilita al usuario interactuar con el sistema, por medio del teclado y el ratn. El ratn 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 relacin de <include> en el Caso de Uso de Men.
Nombre: Ver Controles. Precondicin: La ventana MENU deber estar en pantalla. Postcondicin: Se mostrar una ventana en la que se muestren los controles. Flujo Normal: 1.- El usuario pulsa el botn VER CONTROLES. 2.- Se cierra la ventana MENU. 3.- Aparece la ventana VER CONTROLES con los controles necesarios para jugar al juego. Flujo Alternativo:
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 relacin de <include> en el Caso de Uso de Men. Nombre: Ver Puntuaciones. Precondicin: La ventana MENU deber estar en pantalla. Postcondicin: Se mostrar una ventana en la que se muestren las puntuaciones. Flujo Normal: 1.- El usuario pulsa el botn 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:
29
Piratas del Espacio: El caso Norby DC1-5 Desarrollo de caso de uso Cargar Sonido
Cargar Sonido tiene una relacin de <include> en el Caso de Uso de Men. Nombre: Cargar Sonido. Precondicin: La ventana MENU deber estar en pantalla. Postcondicin: Flujo Normal: 1- Se reproduce por los altavoces la cancin oficial del juego. 2- Si termina la cancin se volver a repetir. 3- La cancin terminar cuando se pulse el botn 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 )
30
Atrs tiene una relacin de <include> en el Caso de Uso Ver Puntuacin. Nombre: Atrs. Precondicin: El usuario deber haber pulsado el botn de VER PUNTUACIONES. Postcondicin: Flujo Normal: - El usuario pulsa el boton ATRAS. - Se cierra la ventana VER PUNTUACIONES. - Se abre la ventana MENU.
31
Atrs tiene una relacin de <include> en el Caso de Uso de Ver Controles . Nombre: Atrs. Precondicin: El usuario deber haber pulsado el botn de VER CONTROLES.
32
Piratas del Espacio: El caso Norby Postcondicin: Flujo Normal: - El usuario pulsa el boton ATRAS. - Se cierra la ventana VER CONTROLES - Se abre la ventana MENU. Flujo Alternativo:
DC1-1 Desarrollo caso de uso del Subsistema Nueva Partida ! Nombre: Nueva Partida. Precondicin: La ventana MENU deber estar en pantalla. Postcondicin: La partida habr comenzado.
33
Piratas del Espacio: El caso Norby 1- Se reproduce un vdeo dentro del juego en el que se muestre la introduccin a la historia del juego. 2- El primer nivel empieza. 3- Se crea la nave principal. 4- Se empiezan a generar las naves conforme a sus probabilidades de aparicin en el grafo de escena. 5- Cuando el nivel termina debido a que su duracin ha llegado a su lmite, se carga el siguiente el nivel, excepto en caso de que al final del nivel tenga que reproducirse un vdeo. 6- Se vuelven a crear las naves conforme a sus probabilidades de aparicin. 7- Se repiten las operaciones anteriores hasta finalizar todos los niveles 8- Al trmino de los niveles 2, 4, 5 y 7 se reproducirn los vdeos Llegada a la base, Enfrentamientos con la polica, Llegada al planeta principal, Ending. 9- Al trmino 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 puntuacin. Flujo Alternativo:
34
Piratas del Espacio: El caso Norby DC1-2 Desarrollo de caso de uso Controlar la Nave
Controlar la Nave tiene una relacin de <include> en el Caso de Uso de Nueva Partida. Nombre: Controlar la nave. Precondicin: - Se ha creado una nueva partida. - La nave ha sido creada. Postcondicin: La nave habr cambiado su posicin.
35
Piratas del Espacio: El caso Norby Flujo Normal: 1. El usuario pulsa las teclas adecuadas. 2. La nave cambia su posicin segn la/s tecla/s pulsada. 3. La nave seguir cambiando su posicin 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 pulsacin de tecla.
Gestin de elementos del HUD tiene una relacin de <include> en el Caso de Uso de Nueva Partida. Nombre: Gestin de elementos del HUD. Precondicin: - Se ha creado una nueva partida. - La nave ha sido creada. Postcondicin: Flujo Normal: 1. La informacin se representa en la pantalla. 2. La vida y las vidas irn en la parte superior izquierda. 3. La puntuacin actual se situar en la parte superior derecha. Flujo Alternativo:
36
Piratas del Espacio: El caso Norby DC1-4 Desarrollo de caso de uso Matar
Nombre: Matar. Precondicin: - Se ha creado una nueva partida. - La nave ha sido creada.
37
Piratas del Espacio: El caso Norby Postcondicin: Habr una nave enemiga menos. Flujo Normal: - La nave enemiga explota. - Se guardar en una variable la puntuacin para al final del juego guardarla en la base de datos. Flujo Alternativo:
38
Piratas del Espacio: El caso Norby Morir tiene una relacin de <include> en el Caso de Uso de Nueva Partida.
Nombre: Morir. Precondicin: - Se ha creado una nueva partida. - La nave ha sido creada. Postcondicin: Habr una nave enemiga menos. Flujo Normal: - La nave enemiga explota. - Se guardar en una variable la puntuacin para al final del juego guardarla en la base de datos. Flujo Alternativo:
39
Salir HUD tiene una relacin de <include> en el Caso de Uso de Nueva Partida.
Nombre: Salir. Precondicin: -Se ha creado una nueva partida. - El sistema ir al caso de uso GUARDAR PUNTUACIN. Postcondicin:
40
Piratas del Espacio: El caso Norby Flujo Normal: - El usuario podr pulsar la tecla ESCAPE. - Se pide un nickname con una ventana. - La puntuacin actual se guarda en la base de datos junto al nickname introducido. Flujo Alternativo:
41
Piratas del Espacio: El caso Norby DC1-7 Desarrollo de caso de uso Pausa
Nombre: Pausa Precondicin: Se ha creado una nueva partida. Postcondicin: El sistema quedar pausado.
42
Piratas del Espacio: El caso Norby 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.
43
Piratas del Espacio: El caso Norby DC1-8 Desarrollo de caso de uso Ganar Partida
Ganar Partida tiene una relacin de <include> en el Caso de Uso de Nueva Partida.
Nombre: Ganar Partida. Precondicin: - Se ha creado una nueva partida. - La nave ha sido creada.
44
Piratas del Espacio: El caso Norby Postcondicin: El sistema ir al caso de uso GUARDAR PUNTUACIN. 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.
45
Piratas del Espacio: El caso Norby Guardar Puntuacin tiene una relacin de <include> en el Caso de Uso de Nueva Partida.
Nombre: Guardar Puntuacin. Precondicin: - Se ha creado una nueva partida. - La nave ha sido creada. Postcondicin: El sistema finalizar. Flujo Normal: 1- Mediante un cuadro de dilogo se le pedir al usuario que introduzca un nickname. 2- El sistema introducir en la base de datos ese nickname junto a su puntuacin. Flujo Alternativo:
DC1-10 Desarrollo de caso de uso Cargar Nivel Cargar Nivel tiene una relacin de <include> en el Caso de Uso de Nueva Partida.
Nombre: Cargar Nivel. Precondicin: Habr comenzado una nueva partida. Postcondicin: Un nivel quedar cargado y listo para jugarlo. Flujo Normal: - Se crear la nave principal. - Se generar el Skybox. - Se cargar el sonido. - Se crearn el resto de las naves de acuerdo a cada nivel. - Se gestionar la IA de las naves enemigas. - Se gestionar la duracin 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.
46
Piratas del Espacio: El caso Norby Flujo Alternativo 3: - La duracin 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 relacin de <extends> en el Caso de Uso de Controlar la Nave.
47
Nombre: Trompo a la derecha Precondicin: Se ha creado una nueva partida. Postcondicin: La nave cambiar su posicin. 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.
48
Piratas del Espacio: El caso Norby Flujo Alternativo: - La nave llega a cualquiera de los lmites 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 relacin de <extends> en el Caso de Uso de Controlar la Nave.
Piratas del Espacio: El caso Norby Precondicin: Se ha creado una nueva partida. Postcondicin: La nave cambiar su posicin. 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 lmites de la pantalla. - La nave se detiene. - La nave no vuelve a su estado inicial.
DC2-3 Desarrollo de caso de uso Arriba Arriba tiene una relacin de <extends> en el Caso de Uso de Controlar la Nave.
50
Nombre: Arriba. Precondicin: Se ha creado una nueva partida. Postcondicin: La nave cambiar su posicin 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.
51
Piratas del Espacio: El caso Norby Flujo Alternativo: - La nave llega al lmite superior de la pantalla. - La nave se detiene en su ascenso por la pantalla.
DC2-4 Desarrollo de caso de uso Izquierda Izquierda tiene una relacin de <extends> en el Caso de Uso de Controlar la Nave.
52
Nombre: Izquierda. Precondicin: Se ha creado una nueva partida. Postcondicin: La nave cambiar su posicin 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.
53
Piratas del Espacio: El caso Norby Flujo Alternativo: - La nave llega al lmite izquierdo de la pantalla. - La nave se detiene en su movimiento lateral a la izquierda por la pantalla. DC2-5 Desarrollo de caso de uso Abajo Abajo tiene una relacin de <extends> en el Caso de Uso de Controlar la Nave.
54
Piratas del Espacio: El caso Norby Nombre: Abajo. Precondicin: Se ha creado una nueva partida. Postcondicin: La nave cambiar su posicin 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 lmite inferior de la pantalla. - La nave se detiene en su descenso por la pantalla. DC2-6 Desarrollo de caso de uso Derecha Derecha tiene una relacin de <extends> en el Caso de Uso de Controlar la Nave.
55
Nombre: Derecha. Precondicin: Se ha creado una nueva partida. Postcondicin: La nave cambiar su posicin 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.
56
Piratas del Espacio: El caso Norby Flujo Alternativo: - La nave llega al lmite derecho de la pantalla. - La nave se detiene en su movimiento lateral a la derecha por la pantalla.
DC2-7 Desarrollo de caso de uso Disparar Disparar tiene una relacin de <extends> en el Caso de Uso de Matar.
57
Nombre: Disparar. Precondicin: - Se ha creado una nueva partida. - La nave ha sido creada. Postcondicin: Habr un modelo en 3D con forma de misil en el grafo de escena.
58
Piratas del Espacio: El caso Norby Flujo Normal: - El usuario podr pulsar la tecla ESPACIO. - Se crea un objeto en 3D con forma de misil. - Ese misil ir actualizando su posicin en el eje de la Z a ms velocidad que la de la nave principal. Flujo Alternativo: - El usuario deja pulsada la tecla ESPACIO. - El sistema ignorar esa peticin hasta pasado un tiempo.
DC2-8 Desarrollo de caso de uso Colisionar con la nave enemiga Colisionar con la nave enemiga tiene una relacin de <extends> en el Caso de Uso de Matar.
59
Nombre: Colisionar con la nave enemiga. Precondicin: - Se ha creado una nueva partida. - La nave ha sido creada. Postcondicin:
60
Piratas del Espacio: El caso Norby Flujo Normal: - Se hace un recuento de daos por colisin. - La nave enemiga explota. - Se guardar en una variable la puntuacin para al final del juego guardarla en la base de datos. Flujo Alternativo: - La nave enemiga tiene ms vida que nuestro dao por colisin. - Las naves seguirn chocando hasta que alguna muera por colisin.
DC2-9 Desarrollo de caso de uso Ser disparado por el enemigo Ser Disparado tiene una relacin de <extends> en el Caso de Uso de Morir.
61
Nombre: Ser disparado por el enemigo. Precondicin: - Se ha creado una nueva partida. - La nave ha sido creada. Postcondicin: 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 puntuacin en la base de datos.
62
DC2-10 Desarrollo de caso de uso La nave colisiona con el enemigo La nave colisiona con el enemigo tiene una relacin de <extends> en el Caso de Uso de Morir.
63
Nombre: La nave nave colisiona con enemigo. Precondicin: - Se ha creado una nueva partida. - La nave ha sido creada. Postcondicin:
64
Piratas del Espacio: El caso Norby 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 puntuacin 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 relacin de <include> en el Caso de Uso de Cargar Nivel.
Nombre: Cargar Sonido. Precondicin: - Se ha creado una nueva partida. Postcondicin: Flujo Normal: - Se gestionar cundo se necesita, dentro de la partida, reproducir un sonido. Flujo Alternativo:
DC2-12 Desarrollo de caso de uso Generar Skybox Skybox tiene una relacin de <include> en el Caso de Uso de Cargar Nivel.
65
Nombre: Generar Skybox. Precondicin: - Se ha creado una nueva partida. Postcondicin: 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 tendrn la misma imagen. Flujo Alternativo:
DC2-13 Desarrollo de caso de uso Gestin Nivel Gestin Nivel tiene una relacin de <include> en el Caso de Uso de Cargar Nivel.
Nombre: Gestin Nivel. Precondicin: - Se ha creado una nueva partida. - Se ha creado la nave principal. - Se han empezado a crear las naves enemigas. Postcondicin: El nivel terminar.
66
Piratas del Espacio: El caso Norby Flujo Normal: - Se gestionar cada nivel. Flujo Alternativo:
DC2-14 Desarrollo de caso de uso Crear Naves Crear Naves tiene una relacin de <include> en el Caso de Uso de Cargar Nivel.
Nombre: Crear Naves. Precondicin: - Se ha creado una nueva partida. Postcondicin: Flujo Normal: - Se crear la nave precisa para cada momento del juego. Flujo Alternativo:
DC3-1 Desarrollo de caso de uso Msica de Nivel Musica de nivel tiene una relacin de <extends> en el Caso de Uso de Cargar Sonido.
67
Nombre: Msica de nivel. Precondicin: - Se ha creado una nueva partida. Postcondicin: Flujo Normal: - Se reproducir una cancin diseada para los niveles. Flujo Alternativo:
68
Piratas del Espacio: El caso Norby DC3-2 Desarrollo de caso de uso Efectos Sonoros Efectos Sonoros tiene una relacin de <extends> en el Caso de Uso de Cargar Sonido.
Nombre: Efectos sonoros. Precondicin: - Se ha creado una nueva partida. - La nave ha sido creada. Postcondicin:
69
Piratas del Espacio: El caso Norby Flujo Normal: - Se reproducirn los efectos sonoros acorde a la situacin. - Si la nave dispara se reproducir un sonido de disparo. - Si alguna nave explota se reproducir un sonido de explosin. - Si se produce una colisin se reproducir un sonido de colisin. Flujo Alternativo:
DC3-3 Desarrollo de caso de uso Duracin Nivel Duracin Nivel tiene una relacin de <extends> en el Caso de Uso de Getin Nivel.
70
Nombre: Duracin Nivel. Precondicin: - Se ha creado una nueva partida. Postcondicin: El nivel terminar.
71
Piratas del Espacio: El caso Norby Flujo Normal: - Se mira si el nivel ha llegado a su lmite de tiempo y termina. - Si el nivel an no ha terminado se actualiza el tiempo restante y se repite la operacin 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.
72
73
Piratas del Espacio: El caso Norby Precondicin: - Se ha creado una nueva partida. - Se ha creado la nave principal. - Se han empezado a crear las naves enemigas. Postcondicin: Flujo Normal: - Para cada tipo de nave se gestionar su IA. Flujo Alternativo:
DC3-5 Desarrollo de caso de uso Crear Nave Principal Crear Nave Principal tiene una relacin de <extends> en el Caso de Uso de Crear Naves.
74
Nombre: Crear Nave Principal. Precondicin: - Se ha creado una nueva partida. Postcondicin: Se habr creado la nave principal.
75
Piratas del Espacio: El caso Norby Flujo Normal: - Se crear la nave principal del jugador. - Se aadir al grafo de escena. Flujo Alternativo: - Si no se crea la nave principal se abortar el juego.
DC3-6 Desarrollo de caso de uso Crear Bombardero Crear Bombardero tiene una relacin de <extends> en el Caso de Uso de Crear Naves.
76
Nombre: Crear Bombardero. Precondicin: - Se ha creado una nueva partida. - Se ha creado la nave principal.
77
Piratas del Espacio: El caso Norby Postcondicin: Se habr creado un bombadero. Flujo Normal: - Se crear un Bombardero. - Se aadir al grafo de escena. Flujo Alternativo:
DC3-7 Desarrollo de caso de uso Crear Kamikaze Crear Kamikaze tiene una relacin de <extends> en el Caso de Uso de Crear Naves.
78
Nombre: Crear Kamikaze. Precondicin: - Se ha creado una nueva partida. - Se ha creado la nave principal.
79
Piratas del Espacio: El caso Norby Postcondicin: Se habr creado un Kamikaze. Flujo Normal: - Se crear un Kamikaze. - Se aadir al grafo de escena. Flujo Alternativo:
DC3-8 Desarrollo de caso de uso Crear Clon Crear Clon tiene una relacin de <extends> en el Caso de Uso de Crear Naves.
80
Nombre: Crear Clon. Precondicin: - Se ha creado una nueva partida. - Se ha creado la nave principal.
81
Piratas del Espacio: El caso Norby Postcondicin: Se habr creado un Clon. Flujo Normal: - Se crear un Clon. - Se aadir al grafo de escena. Flujo Alternativo:
DC3-9 Desarrollo de caso de uso Crear Hunter Crear Hunter tiene una relacin de <extends> en el Caso de Uso de Crear Naves.
82
Nombre: Crear Hunter. Precondicin: - Se ha creado una nueva partida. - Se ha creado la nave principal. Postcondicin: Se habr creado un Hunter.
83
Piratas del Espacio: El caso Norby Flujo Normal: - Se crear un Hunter. - Se aadir al grafo de escena. Flujo Alternativo:
Piratas del Espacio: El caso Norby 31. Efectos sonoros 2. Men 1. Salir 2. Ver puntuacin 3. Ver Controles 4. Atrs 5. Cargar Sonido
85
Diagramas de secuencia
86
Controlar la nave
87
Flujo alternativo
88
Crear nivel
89
90
Ganar Partida
91
92
Generar Skybox
93
Guardar Puntacin
94
Matar Enemigo
95
Pausa
96
97
Salir
98
Ver puntuaciones
99
Diagrama de clases
Ver archivo Diagramas/Diagramas de clases
100
Glosario
1. SimpleGame ! ! Es una clase que permite un rpido funcionamiento de un juego en Jmonkey, un prototipo con todas las funcionalidades bsicas.
2. DisplaySystem ! ! Provee una forma de conectarse con el sistema de ventanas. 3. BaseGame: Es una clase que tiene una serie de mtodos que se repiten en un bucle innito en este orden: a. initSystem(): En este mtodo se llaman y crean los hilos oportunos (en nuestro caso no realizaremos programacin multi-hilos). Tambin se inicializa Display System o se lanzar una excepcin. 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(oat): Se llama con un argumento cuyo valor es -1.0F. Este valor no tiene sentido mientras la CPU y la tarjeta grca puedan trabajar sin problemas. ste mtodo se encarga de actualizar el programa. d. Render(oat): El argumento es lo mismo que en el mtodo Update(oat). ste mtodo se encarga de renderizar el grafo de escena.Thread.yield(): Si existe otro proceso, ste mtodo lo invoca.Si el juego no ha terminado se volvera al mtodo Update(oat). e. CleanUp(): Cuando el juego est acabando se llama a este mtodo. Aqu se implementa la limpieza. f. Quit(): ste mtodo se invoca cuando el juego est terminando y si no hay otro proceso pendiente se llama al mtodo exit() y se sale de la ejecucin. 4. Quaterniones: Son un subconjunto de nmeros 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.
101
Piratas del Espacio: El caso Norby 6. Grafo de escena: Es el grafo donde se irn aadiendo nodos. Ese grafo se renderizar en pantalla. 7. Main-game-loop: El bucle principal del juego consiste en actualizar tan rpido como sea posible el grafo de escena y hacer todos los clculos necesarios para su actualizacin. Es de vital importancia que el bucle sea rpido, consistente y continuo. El bucle principal del juego se divide en varias fases: a. Inicializacin: Esta fase tiene la funcin de inicializar los requisitos bsicos para el funcionamiento del programa. b. Actualizacin: 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 mtodos necesarios para el manejo de los controles, la cmara (en el caso de que se mueva durante el juego), nuevos objetos o cualquier otra actualizacin. 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 nalizar el programa se utiliza para guardar los valores necesarios antes de cerrar el programa. 8. Bounding Box: Es un cubo con todos sus vrtices, el cual nos permite un nivel alto de velocidad en clculos y en el que se encapsulan algunos objetos. 9. Vector3f: es un vector de 3 coordenadas. 10. Camera: la cmara es una forma de dibujar en pantalla solamente los objetos que se precisan ver en un determinado momento. La cmara tiene una direccin, una posicin con respecto a la izquierda y otra posicin respecto a la altura. 11. ChaseCamera: es la funcionalidad de la cmara que permite que la cmara siga al jugador. 12.Frustum Culling: cuando usamos frustum culling conseguimos que los objetos no focalizados por la cmara no se tengan que tener renderizados y as los recursos no estarn tan sobrecargados. 13.InputSystem: Aqu estn implementados el ratn, el teclado o el joystick. 14.InputHandlers: Son los eventos que sirven como controles a la disposicin del jugador. 15.Texture: dene un tipo de dato en un objeto de JME. sta encapsulacin permite cargar la textura de una gura geomtrica o modelo 3D.
102
Piratas del Espacio: El caso Norby 16.TextureState: dene un RenderState que maneja un Texture para un Spatial. 17.RenderState: dene las cualidades de una gura geomtrica del grafo de escena. 18.Spatial: es la clase bsica de un objeto que se encuentra en un nodo del grafo. 19.SkyBox: es una tcnica que permite crear la ilusin de que el entorno 3D es innito. Para ello es necesario utilizar 6 imgenes que se colocan en las 6 caras de un cubo. ste cubo tiene una posicin relativa a la cmara de manera que la cmara siempre est dentro del cubo. 20.Zbu'erState: es una clase que permite que los objetos ms cercanos se rendericen por encima de los ms alejados, de forma que las partes de un objeto que se encuentren detrs 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 traslcidos, la parte externa de los objetos traslcidos y objetos ortogonales. 22.SharedMesh: es muy til para renderizar varias instancias del mismo objeto. De esta forma podemos tener un slo objeto, pero renderizado tantas veces como se quiera. Es muy til ya que no es necesario repetir cdigo si tenemos que introducir varios objetos de las mismas caractersticas. 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
103
Piratas del Espacio: El caso Norby i. Dodecahedron j. Dome k. Hexagon l. Icosahedron m.Octahedron n. Pyramid o. Quad p. Sphere q. Geosphere r. Teapot s. Torus
104