15
7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin" http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 1/15 Space Penguin Bitácora del desarrollo del videojuego "Space Penguin" Descripción general Publicado 20 marzo, 2010 por rabbitbodom Categorías:  General Tags:  descripcion, juego, penguin, plataformas, run and gun, space, space penguin, videojuego Space Penguin, un videojuego del género “Run&Gun”, correrá bajo plataformas Unix y Windows. En general, el género Run&Gun se caracteriza por situar la acción en un entorno de plataformas (normalmente, en 2D), y presentar cierta cantidad de enemigos, que se eliminarán a base de di sparos. El objetivo del juego es llegar al final de cada recorrido (fases) que se presenta, sin haber agotado la barra de golpes del personaje principal. Nota de desarrollo: En principio, no sabemos si incluir un “boss final” al acabar cada fase, lo tendremos en cuenta a medida que avancemos con el proyecto. Space Pengui n intenta condensar la esencia de este frenético género, orientado a toda la comunidad de j ugadores que deseen descargar tensiones a base de tiros en unas partidas rápidas (no más de 5 minutos por nivel). El jugador no tendrá que resolver puzzles, y no necesitará un aprendizaje más all á de los controles del j uego, de tal manera que la diversión está asegurada desde el primer disparo. De momento, sólo tenemos unos esbozos del trasfondo del juego (nuestro máster en historias está aún trabajando en ello), pero podemos adelantar que la temática será de tipo futurista. La primera pantalla, de hecho, se desarrollará en el interior de una nave espacial.  Las características de Space Penguin son:  – Escenarios de plataformas en dos dimensiones, con varios de ellos, y cada uno de los cuales tendrá una temática distinta (dentro del mismo hilo argumental, por supuesto). Podrás disfrutar de cada nivel sin prisas, no habrá límite de tiempo por pantalla, y el scroll no te empujará a acabar la fase: ¡sin tensiones!  – Cada vez que superes un nivel, no tendrás que preocuparte por si pierdes la partida: tendrás un código de acceso, para empezar la siguiente partida desde el ni vel que desees (siempre que hayas ll egado anteriormente a él, y hayas apuntado el códi go, claro).  – Dos tipos de enemigos, incluyendo a aliens del tipo “bicho” (no disparan, únicamente “patrullan”), y otros alienígenas con armas, munición, y mucha mala leche.  – Dos tipos de armas: pistola y metralleta. Porque a veces el armamento básico no es suficiente.  (Pistola de munición infinita, y metralleta con cargadores que se recogerán como items).  – Cuatro items para facilitar las cosas. Nadie dijo que fuera fácil (ni tampoco difícil), pero una ayuda nunca viene mal. El jugador dispondrá de un botiquín pequeño, un botiquín grande, cajas de munici ón para metralleta, y 1UP’s al derrotar a enemigos. Por último, y en caso de que fuera posible, crearemos un editor de niveles para hacer que, si la historia de Space Penguin te supo a poco, puedas crearte tus propias aventuras. Si te estás preguntando ¿por qué “Space Penguin”, si no aparecen pingüinos?, tu pregunta tiene fácil respuesta, pero para ello, tendrás que esperar a vivir la aventura que es Space Penguin. Comments:  Be the first to comment Bienvenido a SpacePenguin Publicado 12 marzo, 2010 por rabbitbodom Categorías:  General Tags:  c++, desarrollo, forja, juego, penguin, run and gun, sdl , space, space penguin, universidad de cadiz, videoj uego Hola a todos. El propósito de este blog es l a de servir de bitácora al proyecto Space Penguin, un videoj uego del género “Run And Gun”, desarrollado para sistemas Windows y GNU/Linux, utilizando el lenguaje de programación C++ y la librería SDL.

Bitácora del desarrollo del videojuego "Space Penguin"

Embed Size (px)

Citation preview

Page 1: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 1/15

Space Penguin

Bitácora del desarrollo del videojuego "Space Penguin"

Descripción general

Publicado 20 marzo, 2010 por rabbitbodom

Categorías: General

Tags: descripcion, juego, penguin, plataformas, run and gun, space, space penguin, videojuego

Space Penguin, un videojuego del género “Run&Gun”, correrá bajo plataformas Unix y Windows.

En general, el género Run&Gun se caracteriza por situar la acción en un entorno de plataformas (normalmente, en 2D), y presentar

cierta cantidad de enemigos, que se eliminarán a base de disparos. El objetivo del juego es llegar al final de cada recorrido (fases)

que se presenta, sin haber agotado la barra de golpes del personaje principal. Nota de desarrollo: En principio, no sabemos si incluir

un “boss final” al acabar cada fase, lo tendremos en cuenta a medida que avancemos con el proyecto.

Space Penguin intenta condensar la esencia de este frenético género, orientado a toda la comunidad de jugadores que deseen

descargar tensiones a base de tiros en unas partidas rápidas (no más de 5 minutos por nivel). El jugador no tendrá que resolver

puzzles, y no necesitará un aprendizaje más allá de los controles del juego, de tal manera que la diversión está asegurada desde el

primer disparo.

De momento, sólo tenemos unos esbozos del trasfondo del juego (nuestro máster en historias está aún trabajando en ello), pero

podemos adelantar que la temática será de tipo futurista. La primera pantalla, de hecho, se desarrollará en el interior de una nave

espacial.

 Las características de Space Penguin son:

 – Escenarios de plataformas en dos dimensiones, con varios de ellos, y cada uno de los cuales tendrá una temática distinta (dentro

del mismo hilo argumental, por supuesto). Podrás disfrutar de cada nivel sin prisas, no habrá límite de tiempo por pantalla, y el scroll

no te empujará a acabar la fase: ¡sin tensiones!

 – Cada vez que superes un nivel, no tendrás que preocuparte por si pierdes la partida: tendrás un código de acceso, para empezar la

siguiente partida desde el nivel que desees (siempre que hayas llegado anteriormente a él, y hayas apuntado el código, claro).

 – Dos tipos de enemigos, incluyendo a aliens del tipo “bicho” (no disparan, únicamente “patrullan”), y otros alienígenas con armas,

munición, y mucha mala leche.

 – Dos tipos de armas: pistola y metralleta. Porque a veces el armamento básico no es suficiente. (Pistola de munición infinita, y

metralleta con cargadores que se recogerán como items).

 – Cuatro items para facilitar las cosas. Nadie dijo que fuera fácil (ni tampoco difícil), pero una ayuda nunca viene mal. El jugador

dispondrá de un botiquín pequeño, un botiquín grande, cajas de munición para metralleta, y 1UP’s al derrotar a enemigos.

Por último, y en caso de que fuera posible, crearemos un editor de niveles para hacer que, si la historia de Space Penguin te supo a

poco, puedas crearte tus propias aventuras.

Si te estás preguntando ¿por qué “Space Penguin”, si no aparecen pingüinos?, tu pregunta tiene fácil respuesta, pero para ello,

tendrás que esperar a vivir la aventura que es Space Penguin.

Comments: Be the first to comment

Bienvenido a SpacePenguin

Publicado 12 marzo, 2010 por rabbitbodom

Categorías: General

Tags: c++, desarrollo, forja, juego, penguin, run and gun, sdl, space, space penguin, universidad de cadiz, videojuego

Hola a todos.

El propósito de este blog es la de servir de bitácora al proyecto Space Penguin, un videojuego del género “Run And Gun”,

desarrollado para sistemas Windows y GNU/Linux, utilizando el lenguaje de programación C++ y la librería SDL.

Page 2: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 2/15

Los desarrolladores del proyecto somos RabbitBodom, Helkadil, y Flipao1982 (nombres de nuestras cuentas en la forja de Rediris

(http://forja.rediris.es/)). Este proyecto es para la asignatura Diseño de Videojuegos, de la titulación Ingeniería Técnica en Informática

de Gestión/Sistema, de la Universidad de Cádiz (http://www.uca.es/).

En sucesivos post, iremos dando información relativa al proyecto, los avances que se vayan produciendo, y las últimas novedades

que surjan respecto al desarrollo de este juego de plataformas con disparos.

¡Permanezcan conectados!

Comments: 3 comentarios

Space PenguinBlog de WordPress.com. El tema Sapphire.

Page 3: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 3/15

Space Penguin

Bitácora del desarrollo del videojuego "Space Penguin"

Release de Space Penguin

Publicado 2 julio, 2010 por rabbitbodomCategorías: EntregasTags: desarrollo, motor, niveles, penguin, release, space, space penguin, videojuego¡Hola a todos!

Después de mucho sudar y poco dormir, estamos muy orgullosos de presentaros la primera release estable de Space Penguin. Estaversión, la 0.1, se publica únicamente para sistemas operativos GNU/Linux (de momento), y contiene dos niveles completos.

Tenemos enemigos, tenemos colisiones, y tenemos items. Le hemos ajustado la dificultad para que, si bien no sea extremadamentedifícil, sí suponga un reto a los jugadores habituales del género Run&Gun.

Sin más preámbulos, aquí dejamos el enlace a Space Penguin v0.1 (http://forja.rediris.es/frs/download.php/1898/spacepenguin-v0.1.tar.gz)

Esperamos que lo probéis y lo disfrutéis, al menos tanto, como hemos disfrutado nosotros desarrollándolo.

El curso acaba aquí, pero puede que el proyecto avance. Si alguien quiere crear sus propios niveles, no tiene más que seguir elmanual que publicaremos próximamente.

No queda más que agradecer a todos los compañeros su ayuda, su apoyo, y las charlas de pasillo, cómo no, que más de una buenaidea ha salido de ahí. También queremos agradecer a nuestro profesor, Manuel Palomo Duarte, la oportunidad que nos ha brindadocon esta asignatura de poder realizar el sueño de todo niño… hacer su propio videojuego. ¡Que éste sea el primer paso de un largocamino, camaradas!

Nada más, cambio y corto. Sed felices

Comments: 7 comentarios

Informe rápido de situación

Publicado 28 junio, 2010 por rabbitbodomCategorías: GeneralTags: desarrollo, juego, penguin, space, space penguin¡Buenas a todos los lectores!

Tal y como reza el título, tenemos la presentación final de Space Penguin a tiro de piedra (concretamente, cuatro días), y antes depreparar la documentación final para el gran día, vamos a echar un vistazo rápido sobre las tareas por hacer:

Prioridad alta:

1. Enemigos (aún no los tenemos, nuestro protagonista se pasea por el escenario pegando tiros a la nada)2. Colisiones (porque si los enemigos no se mueren, y no hacen pupita… pues como que la cosa pierde gracia, ¿no?)

Prioridad baja u opcional:

1. Pantalla de historia antes del inicio de cada nivel.2. Contador de puntos3. Modificar el sistema gráfico para que acepte cualquier resolución, no sólo las actuales 800×600 (panoramico=”0″) o 1060×600

(panoramico=”1″). Este paso es necesario para realizar posibles ports a PSP (¡gracias David por ese magnífico tutorial!) o a Wii.4. Cambiar las canciones de los dos niveles actuales por otras con licencia libre (las que están ahora mismo, insisto, son

provisionales). – Hecho.5. Terminar el segundo nivel, y añadir alguno más (que si no, nos quedamos en “demo”)

En resumen, que muy pronto estaremos dispuestos a presentar oficialmente Space Penguin. (disponible en todas las pantallas a partir

Page 4: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 4/15

del 2 de julio de 2010).

Comments: Be the first to comment

Alpha 2 del pingüino espacial

Publicado 21 junio, 2010 por rabbitbodomCategorías: GeneralTags: alpha, forja, juego, menu, motor, musica, penguin, run and gun, sonido, space, space penguinBuenas a todos. Hoy os presentamos la segunda alpha oficial del Space Penguin.

Estamos muy orgullosos de presentar una versión mucho más avanzada del proyecto, bastante cercana a la conclusión, ya que nosgustaría dejar el videojuego más o menos cerrado al finalizar el curso.

La lista de cambios importantes de esta segunda compilación es la siguiente:

Menú principal definitivo, a falta de un fondo más currado (de momento, seguimos con el provisional)Juego configurable a través de un archivo XML, que permite modificar algunos parámetros de ejecución como la pantallacompleta, el modo de pantalla (4:3 o 16:9) o los fps.Banda sonora (de momento, las pistas de los niveles son provisionales, la del menú es definitiva), y efectos de sonido.

Disparos. ¡Por fin podemos afirmar que estamos haciendo un run and GUN!Arreglados varios bugs relacionados con la gestión de memoria. Confirmamos que ahora no peligra la estabilidad de tu sistema sidejas en ejecución Space Penguin.Por otra parte, confirmamos también los requisitos de memoria y procesador: 32 MB de memoria principal, y un procesador de másde 500 Mhz.

Enlace (sólo versión Gnu/Linux): Space Penguin – Alpha 2 (http://forja.rediris.es/frs/download.php/1876/spacepenguin-v0.02a-linux.tar.gz)

Detallamos a continuación la, cada vez menor, lista de cosas por hacer:

Implementaciones críticas:

1. Enemigos

2. Colisiones (después de los enemigos)3. Documentación de la entrega final (especialmente, manual de usuario, y manual de creación de niveles)

Cambios menores:

1. Fondo de pantalla definitivo para el menú principal2. Segundo nivel (imagen de fondo y plataformas)3. Menú de pausa4. Reparar un bug conocido en el rectángulo de colisiones del jugador, relacionado con la orientación del personaje5. Reparar un bug relacionado con las balas: se deben eliminar de la memoria cuando salen de la pantalla6. Mostrar el código de acceso en la pantalla de inicio de nivel7. Cambiar algún sonido por otro más adecuado (opcional)8. Mostrar pantallas de historia antes del comienzo de cada nivel (opcional)

De momento, y a falta de continuar sacando cosas por pulir (que siempre las habrá, lo reconocemos), esperamos que esta segundaversión de prueba suponga el empujón que le iba haciendo falta al proyecto.

Un saludo a todos, y permaneced atentos.

Comments: Be the first to comment

Códigos de nivel y cadencia de disparos

Publicado 10 junio, 2010 por rabbitbodomCategorías: GeneralTags: c++, desarrollo, fase, juego, penguin, sdl, space, space penguinInformar que, a día de hoy, tenemos el menú principal totalmente operativo, con el inicio de partida desde el primer nivel , y con elacceso a niveles posteriores mediante códigos de nivel de cuatro dígitos.

Por otro lado, se han regularizado las pulsaciones de teclas en el menú, de tal manera que sólo se reconoce una pulsación cada vez,

Page 5: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 5/15

en lugar de una por cada frame si se deja la tecla correspondiente pulsada.

Respecto a los disparos, hemos introducido una limitación parecida: Cuando se tenga equipada la pistola, sólo se disparará una balacada 1,5 segundos, pero cuando consigamos munición, con el fusil dispararemos 3 veces por segundo.

Tareas por hacer:

Fondo de pantalla decente para el menú de la aplicaciónAbstraer el menú y el gestor de niveles en una única clase Aplicación, que gestione las transiciones entre niveles (vamos, quecuando acabes la primera fase, empiece la segunda.)Crear el segundo nivel (y si da tiempo, más)

Añadir enemigosAñadir disparosAñadir efectos de sonido y música (probablemente, el siguiente paso)

Ya estamos cerquita de acabar el proyecto Space Penguin… Seguiremos echando horas, y por supuesto, informando por aquí.Cambio y corto.

Comments: Be the first to comment

Menú Principal y abstracción

Publicado 7 junio, 2010 por rabbitbodomCategorías: GeneralTags: c++, desarrollo, motor, niveles, penguin, sdl, space, space penguin, videojuegoNo nos hemos olvidado del Space Penguin, seguimos currando, sólo que hemos tenido que salvar algunos obstáculos llamadosProgramación Orientada a Objetos, y Análisis de Algoritmos II (obstáculos quiere decir “parciales y prácticas”), entre otros.

Hoy queremos informar de que hemos encapsulado en la clase Juego la gestión de la ejecución de un nivel del juego. Es decir, laclase Juego se compone de un objeto Escenario (que cargará él solito el nivel que se le indique, fondo y plataformas), un objetoJugador (que recibirá como parámetro, para dar una continuidad entre fases al estado del personaje), y ciertas variables más relativasa un nivel jugable en general.

También tenemos la primera versión del menú principal, que es otra clase (Menu), que se encarga de mostrar un fondo de pantalla y

tres opciones al usuario, gestionar el movimiento del cursor de selección, y ejecutar la opción escogida por el jugador. De momento,sólo carga la primera fase.

Tareas por hacer a partir de hoy:

Fondo de pantalla en condiciones para el menú principalOpción de cargar un nivel mediante su código de acceso (esto dentro de menú)Gestor de aplicación: Clase que reciba la opción devuelta por el menú principal, y se encargue de ejecutarla; encargándosetambién de enlazar un nivel terminado con el siguiente, o bien de informar al jugador de que ha perdido todas sus vidas(regresando al menú principal en este caso).Hacer, al menos, un nivel más (que con uno solo vamos cojos)Añadir música y efectos de sonido (esto después de acabar el menú y el gestor de aplicación).Añadir las balas cuando se dispara (se sigue suponiendo que Space Penguin es un juego de disparos, jeje).

Añadir enemigos.Condiciones de fin de nivel: refinarlas (esto iría en Gestor de Aplicación)Colocar timers para controlar el número de pulsaciones en el caso de los disparos (la idea de metralleta no es disparar 15 veces lapistola por segundo), y en el caso del menú principal (ahora mismo es complicado atinar en la opción de enmedio).

Y hasta ahí podemos leer. Más novedades pronto. Gracias por leer.

Comments: Be the first to comment

Tercera entrega – 12 de mayo

Publicado 11 mayo, 2010 por rabbitbodomCategorías: EntregasTags: clases, desarrollo, descripcion, forja, ingenieria, motor, planificacion, plataformas, sdl, space penguin, statsvn, videojuegoAgarraos los cinturones, porque aquí viene un post bastante largo. Se trata de la tercera entrega para la asignatura Diseño deVideojuegos, y como tenemos que recuperar cierto terreno, allá vamos (por partes, como diría Jack el Destripador):

Page 6: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 6/15

Actualización de la planificación:

En la carpeta “doc” de la Forja del proyecto, está nuestro archivo de Planner, debidamente actualizado con las tareas que hemos idodesempeñando a lo largo de estos meses. Cabe decir que las fechas del archivo son erróneas (he rehecho el archivo de nuevo) y losplazos no están ajustados, pero la lista de tareas es más o menos completa. Aquí un extracto:

(https://reader009.{domain}/reader009/html5/0317/5aad11b79bd3e/5aad11beedaee.png)

Cambios en el proyecto y justificación:

 – Las plataformas pasaron a considerarse únicamente como una línea sobre la que pueden caminar los actores. Esto se decidió por lafalta de tiempo, ya que el hecho de ahorrarnos los cálculos de colisiones con el escenario en el movimiento horizontal fue unadecisión crucial para ahorrar tiempo.

 – Decidimos utilizar el sistema de animaciones (clases Animacion, Control_Animacion e Imagen) que se muestra en la wiki de laOsluca sobre libSDL, ya que, tras comprender su funcionamiento, y adaptarlo a nuestras necesidades, ahorramos nuevamente unacantidad de tiempo que, de otra manera, no podríamos haber dedicado al proyecto.

 – Otra decisión fue la de ponernos las pilas con la documentación, tanto a nivel de código (Doxygen) como la que se muestra en esteartículo. Lo estábamos dejando muy descuidado, y se notó en la presentación anterior.

 – Un cambio positivo: en lugar de considerar un vector de plataformas, hemos creado una clase Escenario para que gestione todo lorelativo al escenario de un nivel, desde la carga de las plataformas desde el archivo XML con los datos, hasta el propio fondo del nivelen una superficie SDL. Esto no ha hecho más que facilitarnos increíblemente la labor de trabajar las colisiones con el escenario.

 – Otro más, el uso de TinyXML (de agradecer, y mucho, a los consejos de los compañeros del grupo de la ADVUCA). Gracias a estapequeña librería podemos trabajar cómodamente con nuestros datos, y más aún, nos va a facilitar mucho el trabajo a la hora de hacerel manual de ampliación del videojuego (creador de niveles, por ejemplo).

 – Hay más cambios, pero son relativos, principalmente, a la implementación. Los conceptos se siguen manteniendo.

Modelado del mundo del juego

Jugador 

El jugador estará representado lógicamente por un rectángulo que cubre toda la imagen, que tendrá unas coordenadas x e y con suancho y alto. Además tendrá un estado interno por el cual se sabrá en todo momento el estado del personaje, como corriendo,saltando, agachado etc… Un vector guardara todas las animaciones del personaje. Tendrá una variable que indicara la munición quecontendrá en cada momento de la arma especial y el arma que lleva. Por último tendrá un indicador de orientación para saber cuandoestá mirando a la izquierda o la derecha.

Los métodos que tiene el jugador son de movimiento ya sea correr o saltar y también para modificación de la munición, el armaequipada y las colisiones con el escenario.

Enemigo 

El enemigo al igual que el jugador estará representado por un rectángulo que cubre toda la imagen y unas coordenadas x e y de suposición, así como el ancho y el alto de la imagen.

Un vector guardara todas las animaciones del enemigo. Ya que este personaje lo mueve el sistema automáticamente tendrá solo unestado interno llamado activo que indicara si el personaje esta dentro del rango de la pantalla.

También tendrá una variable que indicara el tipo de enemigo que es, donde según el tipo tendrá una animación u otra.

Los métodos se ejecutaran en función del tipo de enemigo que es, donde tendrá un método que detectara la colisión con losescenarios, un método que disparara el enemigo, para el enemigo disparador, y una función que detecta el final de la plataforma, enel caso del enemigo no disparador.

Plataforma 

Tendrá solamente 3 variables internas donde estarán determinado la coordenada x e y del inicio de la plataforma y el ancho de la

Page 7: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 7/15

misma para saber su longitud. Esta plataforma leerá desde un XML los datos respectivos y creara un vector de plataformas dondeestarán todas aquellas que pertenezcan al nivel que se encuentra actualmente el personaje. Este vector se leerá a través del jugadoro los enemigos para interactuar con ellos.

Bala 

Una bala será una clase que contendrá unas coordenadas x e y de su posición en cada momento para ir actualizando según estaavanza por la pantalla además de un ancho y un alto para la colisión con otros objetos.

Las balas también tendrán una variable que distinguirá las balas enemigas de las amigas para que no se puedan matar los enemigosentre sí o el propio jugador con su propia bala.

Toda bala que se cree se introducirá en un vector que se recorrerá constantemente para determinar el estado de las balas durante el juego.

Una vez una bala salga del rango de la pantalla se destruirá.

Ítem 

Estos objetos corresponden a los ítems que se encontrara el personaje tirados por el suelo que saldrán aleatoriamente de losenemigos con una probabilidad. Como variables internas tendrá unas coordenadas x e y donde aparece el objeto, será la mismacoordenada donde se encontraba el enemigo que lo tenía, y un ancho y alto para realizar la colisión con él.Además tendrá una variable que indicara el tipo de ítem que es el objeto, ya que según el tipo tendrá un efecto u otro. Estos efectospueden ser de curación, munición o vidas extras, que estarán enlazados a una variable porcentaje de cada tipo porque no tiene lamisma probabilidad de salir la munición, a una vida extra. Una vez que el objeto sale del rango de la pantalla, pasa un tiempo

determinado o el personaje lo recoge se destruirá.Ingeniería del proyecto

Mostramos primero el Modelo Conceptual de Datos del sistema, partiendo del Modelado del mundo del videojuego:

(https://reader009.{domain}/reader009/html5/0317/5aad11b79bd3e/5aad11bfc6eb8.png)

En este diagrama, además, se han incluido las clases que se han ido añadiendo a la implementación.

Por otro lado, los casos de Uso, pueden encontrarse en la carpeta “doc” de la Forja. Dejamos aquí un extracto con uno de ellos:

Caso de uso: Mover personaje 

 – Actor principal: Jugador – Precondición: no tiene – Postcondiciones: Modificara la posición del sprite del personaje según la teclapresionada. – Personal involucrado e intereses: El jugador quiere mover el personaje a una posición deseada.Escenario principal1. El jugador desea mover el personaje.2. El jugador pulsa la tecla correspondiente a mover el personaje a algún sitio.3. El sistema actualiza el estado interno del jugador (por ejemplo “corriendo”) a true.4. El sistema realiza los cálculos según el estado interno del personaje.5. El sistema dibuja por pantalla el cambio de localización del personaje respectoal escenario.Escenario Alternativo5a. La posición del personaje sobrepasa el valor de la coordenada x de la pantalla.1. El scroll del mapa avanza tanto como avanza el jugador.5b. La posición del personaje provoca una colisión con una plataforma.1. El personaje no sigue descendiendo y se queda en la coordenada y de laplataforma.

Page 8: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 8/15

Algoritmo general

Esta es la descripción de nuestro main-loop:

Como todo juego que se precie debe tener un bucle principal que se encarga, desde la ejecución del juego hasta que finaliza demantener activo el juego y atender a las peticiones del usuario en todo momento, asi como ejecutar todas las acciones que se vanrealizando, ya sea por parte del usuario o del sistema.

El bucle principal consta de una serie de pasos que se realizan al inicial el juego y se mantienen hasta que este termina, estos pasospodemos resumirlo de la siguiente manera:

1. Inicio del contador de frames:  Inicialización del contador de frames que transcurren en un segundo, para determinar los fps quecorrerá el juego.

2. Actualizar el teclado:  Por cada vuelta del bucle actualiza el estado del teclado, donde actualiza los valores de este con las teclasque se han pulsado en el instante en que se ejecuta la función, esto es para ejecutar las acciones pertinentes al pulsar la tecla leída.

3. Modificar estado interno del personaje:  Según la tecla pulsada, cogida con el actualizar del teclado, si es una de las teclas demovimiento, ya sea derecha, izquierda, salto… se ejecutara la función que realiza tal acción en el personaje. También habrá otrasopciones como son el menú de pausa o salir del juego.

4. Cálculos sobre el jugador:  En este apartado se realizaran todas las operaciones que el jugador vaya requiriendo según avanza enel juego. Uno de los puntos a tratar son las colisiones del jugador respecto a las plataformas que se encuentran en ese momento en lapantalla. También se realizaran los cálculos para el disparo del personaje donde cada disparo se guardara en su susodicho vectorpara su posterior análisis.

5. Calculo sobre los enemigos:  Ya que los enemigos tendrán su inteligencia artificial respecto a los movimientos del personaje, esteapartado se ocupara de calcular las colisiones del mismo, asi como su movimiento y la generar los disparos de aquellos enemigosque disparen. Los enemigos que simplemente andar por una superficie, simplemente se calculara la colisión sobre la plataforma quese encuentra.

6. Calculo del movimiento de las balas:  Ya que cada bala será independiente una de ellas, se calculara el movimiento (velocidad ydirección) de cada una dependiendo de quién lo lance, ya sea enemigo o el personaje, y la posición de la pantalla que se encuentraen ese momento. Estas balas desaparecerán una vez traspase el límite de la pantalla o colisione con algún obstáculo.

7. Calculo de las colisiones:  En este apartado se trataran todas las colisiones entre sprites diferentes. Ya sea el personaje con unobjeto, un enemigo o una bala o el enemigo con el personaje, se ejecutara la acción correspondiente a esta colisión.

8. Dibujar sprites:  Una vez detectado todas las pulsaciones en el momento, calculado respecto a las pulsaciones y ejecutado locorrespondiente a las colisiones, se dibuja por pantalla todos los cambios una vez por frame para que se vea un movimiento fluido delos objetos que se muestran por pantalla. Aquí también se tendrá en cuenta el movimiento del personaje para mover el fondo (scroll)según avanza por el escenario.

9. Calcular el retraso:  Para mantener unos fps constantes en cualquier sistema, se calcula el retraso que tiene éste y se actualiza losframes correspondiente al sistema.

Por supuesto, el documento completo, en la carpeta “doc”

Autómatas para la I.A. de los enemigos (comportamiento)

 – Enemigos disparadores: Estos enemigos, una vez activados, se moverán en línea recta desde su posición inicial hasta que salgande la pantalla. Durante el transcurso de su recorrido, cada cierto tiempo disparara una bala en línea recta desde su frontal, que tendrá

una velocidad mayor a la del enemigo, para abatir a nuestro protagonista. Estas balas no afectaran a otros enemigos, así que soloafectara al protagonista.

 – Enemigos de patrulla: tienen un comportamiento algo diferente al anterior. Estos simplemente estarán asignados a una plataformade la cual no podrán bajarse, esto quiere decir que este enemigo dará vueltas y vueltas sobre la misma plataforma una vez que entraen el rango de la pantalla hasta que sale de la misma. Esto hace que el enemigo detecte siempre el final de ambos extremos de laplataforma para dar la vuelta completamente y dirigirse al lado contrario.

StatSVN

Las estadísticas de nuestro servidor SVN pueden observarse en este gráfico:

Page 9: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 9/15

(https://spacepenguinproject.files.wordpress.com/2010/05/loc_small.png)Decir que este gráfico es de la revisión 25, y vamos ya por la 35, diez más. Desde entonces hemos avanzado a pasos de gigante.

Cabe comentar que nuestras revisiones son menores en número, pero cad vez que hacemos un commit reflejamos una versiónestable del videojuego, con multitud de cambios nuevos. Es por ello que se explica la diferencia del número de aportaciones a laForja respecto a los proyectos de otros compañeros.

Por otra parte, las estadísticas por desarrollador son engañosas. RabbitBodom (Ezequiel ) llevaba aportadas más de dos mil líneas decódigo en la revisión 25 (hoy en día, probablemente muchas más), y Helkadi l sin embargo (Agustín), casi 100. Esto no significa queHelkadil no esté trabajando, ni mucho menos. Se está currando toda la parte de diseño gráfico del proyecto (ahí es “ná”), de ahí suspocas aportaciones en cuanto a código nos referimos. Por otra parte, y para compensar, cuando Rabbit termine de pulir la claseJugador, se intercambiarán los papeles, de ta manera que se proporcione correctamente el número de aportaciones. (Helkadil va adedicarse a implementar las dos clases de enemigos, y quizá la clase Item).

Doxygen

En esta sección sólo comentar que todo lo que llevamos hasta el momento está completamente documentado con Doxygen, hasta laúltima función pública. Se aportan un par de ejemplos de uso en las clases Jugador y Escenario.

Bibliografía

Nombrar por supuesto, la wiki sobre libSDL de la Osluca, y la documentación de TinyXML en su página oficial. Con estos dosmanuales hemos podido dar pasos de gigante, de tal manera que ya tenemos una “beta estable”, sobre la cual hablamos ahora.

Presentación “beta” alpha

Última sección de este repaso a Space Penguin. En la revisión 35, la actual, podemos afirmar que tenemos totalmente operativa una

alpha sin enemigos, pero en la cual se pueden observar todos los movimientos del personaje principal, y la carga de un nivelcompleto. Sólo necesitamos pulir las colisiones con las plataformas para afirmar que el motor está fino.

Aquí está el enlace a la alpha1 de Space Penguin, para sistemas GNU/Linux:http://forja.rediris.es/frs/download.php/1844/space_penguin-beta1.tar.gz (http://forja.rediris.es/frs/download.php/1844/space_penguin-beta1.tar.gz)

Y bueno, hasta aquí podemos contar. Próximamente, el menú principal, la estructura por niveles, y las col isiones con el escenariorefinadas.

Comments: 2 comentarios

Sistema de niveles

Publicado 7 mayo, 2010 por rabbitbodomCategorías: GeneralTags: fase, forja, Gráficos, modelos, nivel, niveles, penguin, plataformas, sdl, space, space penguin, videojuego, youtubePresentamos el último avance de Space Penguin: El sistema de niveles.

Consta, básicamente, de una imagen de fondo en formato bmp, y un archivo XML en el cual se almacenan las características de lasplataformas que componen el nivel.

Las imágenes de fondo, necesariamente, deben medir 600 píxeles de alto, ya que la resolución de nuestro juego es de 800×600, y se

almacenan en la carpeta “imagenes” con el nombre Fase_n.bmp, donde la n es el número de nivel del cual es el fondo.

Por otro lado, el archivo “datos/plataformas.xml” almacena la información de las plataformas de todas las fases del juego, con unformato muy sencillo.

El único inconveniente de este sistema es que, para crear un nivel, hay que incluir manualmente las coordenadas de comienzo decada plataforma, y su anchura. Si tuviéramos tiempo de aquí a fin de curso, intentaremos crear un editor de niveles muy simple, pero

Page 10: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 10/15

que sea efectivo.

Por otra parte, la lista de tareas por hacer a corto plazo, a partir de la revisión 29 de Space Penguin es la siguiente:

Refinar las colisiones del personaje con las plataformas, que aún están un poco verdes.Implementar el scroll, para que el escenario avance junto con el personaje. (Hecho)Abstraer el sistema de carga de un nivel en una sola función (para que así sea más cómodo, y depender de únicamente unafunción), así como crear las variables necesarias para el control de la fase actual. (Hecho)Al cargar un nivel, presentar una pantalla de inicio de fase, de tal manera que el jugador tenga unos segundos para acomodarse.Realizar la documentación y postearla aquí (fecha límite: el miércoles 12).Implementar la condición de victoria (llegar al final de la fase).

De momento, y con gran satisfacción, tenemos el placer de mostrar el segundo vídeo de Space Penguin:

Space Penguin: Personaje y Escena…

Puede apreciarse en el vídeo la interacción del personaje con las plataformas (que como hemos dicho, están aún muy verdes), yalgunos movimientos del jugador. Dentro de poco lo tendremos con scroll, y más pulido, no os lo perdáis.

Actualización a 8 de mayo, 23:00 horas: Ya está implementado el scroll del escenario, y está más fino el sistema de carga de niveles.

Comments: Be the first to comment

Space Penguin

Blog de WordPress.com. El tema Sapphire.

Page 11: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 11/15

Space Penguin

Bitácora del desarrollo del videojuego "Space Penguin"

Avances

Publicado 2 mayo, 2010 por rabbitbodomCategorías: GeneralTags: desarrollo, descripcion, forja, juego, penguin, plataformas, sdl, space, space penguin, videojuegoInformamos de las novedades a dos de mayo:

 – La clase Jugador está prácticamente definida, exceptuando la parte de las colisiones, que será lo último que hagamos.

El funcionamiento de la clase es muy sencillo. A cada iteración del bucle principal, se leen las teclas que hay pulsadas, y se modificael llamado “estado interno” del personaje. Este estado interno se basa en variables booleanas (_corriendo, _saltando, _agachado, _cayendo), que determinan qué acción se debe ejecutar en la iteración actual del bucle.

Posteriormente, se realizan los cálculos necesarios en base al estado interno del personaje, después de ser modificado mediante laspulsaciones de teclas (movimiento horizontal, movimiento vertical, etc.). Por último, y dependiendo una vez más del estado interno delpersonaje, se dibuja el siguiente paso de una animación u otra (la que corresponda).

De momento, nuestro personaje jugador puede correr hacia izquierda y derecha, saltar tanto en vertical, como en movimiento, yagacharse.

 – Documentación: Para paliar la falta de documentación en la anterior presentación de clase, hemos decidido ir pasando todo lo quetenemos en papel a formato digital, el objetivo que tenemos es documentar correctamente lo siguiente:

Casos de uso (al menos el del loop principal).Diagrama de clases (completo, pero abierto a cambios).Modelado completo del mundo del juego.

Descripción del juego, objetivos, etc. (resumen de la primera entrega, mejor condensado).Relación de avances que llevamos hasta la fecha de la presentación.Lista de dificultades surgidas.Demás puntos necesarios para el proyecto.

 – El siguiente avance que tenemos que publicar es que, dentro de poco, tendremos el sistema de niveles, que consistirá en un fondo(imagen), y un sistema de plataformas que se leerán desde un archivo XML, de tal manera que será muy sencilla la creación denuevos niveles. Haremos un minitutorial.

Y de momento poco más, en la forja tenéis la revisión 19, en la cual tenemos al personaje jugador con todos sus movimientosposibles (avance en ambas direcciones, saltar tanto verticalmente, como en movimiento, y agacharse).

Comments: Be the first to comment

Novedades a 21 de Abril

Publicado 21 abril, 2010 por rabbitbodomCategorías: GeneralTags: c++, desarrollo, forja, juego, penguin, sdl, space, space penguin, videojuego, youtubeA día de hoy (o más bien debería decir, a noche de hoy, por aquello de que es la una y media de la mañana), tenemos variasnovedades que presentar sobre el proyecto, a saber:

 – Ya tenemos una versión ejecutable, con un muy verde motor para el juego. Consiste únicamente en el personaje protagonista

moviéndose a izquierda o derecha, según las pulsaciones de teclado que haga el usuario. – Por supuesto, y previo a ello, se ha implementado la clase Jugador, que almacenará todas las variables necesarias para controlar loque nuestro personaje hará durante el desarrollo del juego. De momento sólo es un “almacén” de atributos, pero más adelante se leañadirán métodos, para que no quede la aplicación con poca consistencia.

 – Sobre el papel, tenemos ya el diseño de las clases que participarán en el juego, que son Jugador, Bala, Item, Enemigo

Page 12: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 12/15

(especializada en EnemPatrulla y EnemDisparo) y Plataforma. Para cada una de ellas, excepto Jugador, tendremos un vector quealmacenará los objetos correspondientes. Las plataformas y los enemigos se cargarán desde archivos XML (permitiendo así lacreación de niveles nuevos por parte del usuario).

 – Más cosas. Tenemos, también sobre papel, el diseño de todas las acciones que se realizarán en el juego, y un caso de uso (muysimplón, la verdad), que describe el bucle principal de la aplicación (aunque hay que actualizarlo, para que se adecúe a laimplementación, tal y como está quedando).

 – Mencionar que hemos utilizado el sistema de animación que se propone en el wikiSDL (clases animación, imagen ycontrol_animación) , así como la clase Teclado para controlar las pulsaciones.

Lo próximo por implementar, será perfilar las demás acciones del Jugador aparte del movimiento (salto vertical, salto en movimiento ydisparo), y almacenar dentro de la propia clase Jugador las animaciones correspondientes en un vector, ya que ahora mismo,disponemos de sólo una animación, y la tenemos fuera de la clase.

Más tarde, y cuando el personaje esté plenamente operativo, añadiremos la interfaz gráfica (una zona en la parte baja de la pantalla,donde indicaremos las vidas que quedan, munición, etc.) y las plataformas. Y después de que el personaje interactúe correctamentecon el escenario (las plataformas), introduciremos los enemigos, las balas, y por último, los objetos.

Incluimos un vídeo de nuestros progresos (el código se puede consultar en la Forja del proyecto)

Space Penguin - Movimiento del person…

Comments: Be the first to comment

Forja, sonidos y más

Publicado 5 abril, 2010 por rabbitbodomCategorías: GeneralTags: desarrollo, forja, penguin, planificacion, sdl, sonido, space, space penguinBreve actualización para comentar que, tras el parón de vacaciones de Semana Santa, ya tenemos listos los efectos de sonido paraSpace Penguin. Se encuentran en la forja del proyecto (a partir de la revisión 5), donde ya se ha creado la estructura de directoriospara ir dando forma al juego. Los sonidos se han obtenido, principalmente, de la página de recursos HellSoft.

Comentar también que el análisis sobre papel de Space Penguin está listo ya, así pues, vamos cumpliendo la planificación propuestadesde el principio. El siguiente paso será entrar en materia de código.

Esta semana empezaremos con la SDL en clase, así que el desarrollo dará un buen estirón tras este miércoles. Permanezcanatentos.

Comments: Be the first to comment

Modelos Gráficos II

Publicado 25 marzo, 2010 por rabbitbodomCategorías: GráficosTags: desarrollo, Gráficos, modelos, penguin, sdl, space, space penguin, videojuegoDe la mano de Helkadil, presentamos los modelos gráficos definitivos para el protagonista y los dos enemigos genéricos, yapreparados en modo de rejilla (las animaciones se conseguirán en la implementación mediante las herramientas que proporciona lalibrería SDL).

Page 13: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 13/15

Sin más dilación, presentamos la rejilla de sprites del protagonista del juego:

(https://reader009.{domain}/reader009/html5/0317/5aad11b79bd3e/5aad11ca5e888.png)

Éste es el modelo del enemigo que dispara a nuestro héroe, el Gunner (nombre provisional):

(https://reader009.{domain}/reader009/html5/0317/5aad11b79bd3e/5aad11ca9fac7.png)

Y por último, el enemigo que patrullará los perímetros sin hacer uso de armas a distancia, “a leche limpia”, el Tank (de nuevo, nombreprovisional). Cabe decir que hemos conservado el traje de combate de este enemigo, pero le hemos cambiado la apariencia. Espero

que os guste el cambio.

(https://reader009.{domain}/reader009/html5/0317/5aad11b79bd3e/5aad11cad6f5b.png)

Se puede apreciar que el jugador podrá moverse (obvio), saltar, caer, disparar con dos armas (pistola y fusil), y por supuesto, morir.Por otro lado, los enemigos únicamente pueden avanzar, y en el caso del Gunner, disparar y caer desde una plataforma (el Tankpatrulla de tal manera que, cuando llega al final de una plataforma, da media vuelta y continúa su patrulla).

Hay que mencionar que la historia está en proceso, pero no será revelada hasta que nuestro encargado de trasfondo le dé las últimaspinceladas. Por supuesto, la anunciaremos como es debido.

Nada más por ahora, próximamente, el resto de los modelos (balas, explosiones y objetos), y también los sonidos (la banda sonorallegará después).

Comments: Be the first to comment

Modelos Gráficos

Publicado 23 marzo, 2010 por rabbitbodomCategorías: GráficosTags: desarrollo, Gráficos, modelos, penguin, space, space penguin, videojuegoEn este apartado, vamos a presentar los que, por ahora, son los modelos gráficos principales de Space Penguin.

Nuestro compañero Helkadil encontró hace poco un material (realizado por Rayg, contacto en [email protected]), en el cual suautor especifica que se puede hacer uso de él sin autorización, a condición de que se mencione correctamente la autoría.

Sin más preámbulos, presentamos a nuestro protagonista:

(https://reader009.{domain}/reader009/html5/0317/5aad11b79bd3e/5aad11cb23989.jpg)

Sí, sabemos que se parece extrañamente al protagonista de la serie de juegos Halo. Pero todo parecido, es mera coincidencia.

Page 14: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 14/15

Por otro lado, estos son los enemigos que encontrará nuestro verde amigo en sus aventuras. El primero atacará al protagonista conarmas de fuego (o láser, vaya usted a saber).

(https://reader009.{domain}/reader009/html5/0317/5aad11b79bd3e/5aad11ce6dbf5.jpg)

Y éste otro, intentará acabar con nuestro héroe únicamente a base golpes físicos y mordiscos.

(https://reader009.{domain}/reader009/html5/0317/5aad11b79bd3e/5aad11ce6dbf5.jpg)(https://reader009.{domain}/reader009/html5/0317/5aad11b79bd3e/5aad11ced5386.jpg)

De momento, eso es todo. A medida que vayamos avanzando con el tema de las rejillas para las animaciones, iremos actualizando. Yen caso de que decidiéramos cambiar algún modelo, ídem.

Por lo demás, agradecer a las personas que, como Rayg (el autor de estos modelos), permiten a los demás aprovechar su trabajo deuna manera u otra (en nuestro caso, dándole vida en forma de videojuego).

Comments: Be the first to comment

Planificación

Publicado 22 marzo, 2010 por rabbitbodomCategorías: GeneralTags: desarrollo, Gantt, juego, penguin, planificacion, planner, space, space penguin, videojuegoTal y como reza el título de este artículo, vamos a hablar de la planificación del proyecto.

En clase se nos habló del software Planner (http://live.gnome.org/Planner), para realizar planificaciones de proyectos, diagramas deGantt, y todo lo necesario para distribuir las tareas en un trabajo en equipo, y con la necesidad de ajustarse a unos plazos de tiempo.

De momento tenemos una planificación básica, que iremos perfeccionando a medida que el proyecto avance. A día de hoy,contemplamos acabar el análisis y diseño de Space Penguin (ya refinado y listo para implementar) después de Semana Santa, ydespués, comenzar la implementación del juego, que duraría hasta mediados de Junio en principio.

Comentar que vamos con retraso respecto a la elección de los modelos gráficos y sonidos, esperamos tener algo definitivo antes delmiércoles, de tal manera que la presentación pueda ser completa.

Y respecto a este asunto, poco más. Seguiremos informando. Próxima parada, el miércoles en la presentación de Space Penguin.

Comments: Be the first to comment

Influencias & Referencias

Publicado 20 marzo, 2010 por rabbitbodomCategorías: GeneralTags: ejemplo, juego, penguin, plataformas, run and gun, space, space penguin, youtubeDejo aquí algunos vídeos sobre videojuegos parecidos a lo que será Space Penguin, para que el lector que no esté familiarizado conla jerga del sector, pueda tener una idea acertada sobre el proyecto.

Metal Slug:

Page 15: Bitácora del desarrollo del videojuego "Space Penguin"

7/23/2019 Bitácora del desarrollo del videojuego "Space Penguin"

http://slidepdf.com/reader/full/bitacora-del-desarrollo-del-videojuego-space-penguin 15/15

Jazz JackRabbit

Jazz Jackrabbit

Contra (obviando las “bases”)

Contra (NES) - Part 1 o…

Comments: 1 Comentario

Space Penguin

Blog de WordPress.com. El tema Sapphire.