Vous êtes sur la page 1sur 15

Space Penguin

Bitcora del desarrollo del videojuego "Space Penguin"

Descripcin general
Publicado 20 marzo, 2010 por rabbitbodom
Categoras: General
Tags: descripcion, juego, penguin, plataformas, run and gun, space, space penguin, videojuego
Space Penguin, un videojuego del gnero Run&Gun, correr bajo plataformas Unix y Windows.
En general, el gnero Run&Gun se caracteriza por situar la accin en un entorno de plataformas (normalmente, en 2D), y presentar
cierta cantidad de enemigos, que se eliminarn 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 frentico gnero, orientado a toda la comunidad de jugadores que deseen
descargar tensiones a base de tiros en unas partidas rpidas (no ms de 5 minutos por nivel). El jugador no tendr que resolver
puzzles, y no necesitar un aprendizaje ms all de los controles del juego, de tal manera que la diversin est asegurada desde el
primer disparo.
De momento, slo tenemos unos esbozos del trasfondo del juego (nuestro mster en historias est an trabajando en ello), pero
podemos adelantar que la temtica ser de tipo futurista. La primera pantalla, de hecho, se desarrollar en el interior de una nave
espacial.
Las caractersticas de Space Penguin son:
Escenarios de plataformas en dos dimensiones, con varios de ellos, y cada uno de los cuales tendr una temtica distinta (dentro
del mismo hilo argumental, por supuesto). Podrs disfrutar de cada nivel sin prisas, no habr lmite de tiempo por pantalla, y el scroll
no te empujar a acabar la fase: sin tensiones!
Cada vez que superes un nivel, no tendrs que preocuparte por si pierdes la partida: tendrs un cdigo de acceso, para empezar la
siguiente partida desde el nivel que desees (siempre que hayas llegado anteriormente a l, y hayas apuntado el cdigo, claro).
Dos tipos de enemigos, incluyendo a aliens del tipo bicho (no disparan, nicamente patrullan), y otros aliengenas con armas,
municin, y mucha mala leche.
Dos tipos de armas: pistola y metralleta. Porque a veces el armamento bsico no es suficiente. (Pistola de municin infinita, y
metralleta con cargadores que se recogern como items).
Cuatro items para facilitar las cosas. Nadie dijo que fuera fcil (ni tampoco difcil), pero una ayuda nunca viene mal. El jugador
dispondr de un botiqun pequeo, un botiqun grande, cajas de municin para metralleta, y 1UPs 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 ests preguntando por qu Space Penguin, si no aparecen pinginos?, tu pregunta tiene fcil respuesta, pero para ello,
tendrs 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
Categoras: General
Tags: c++, desarrollo, forja, juego, penguin, run and gun, sdl, space, space penguin, universidad de cadiz, videojuego
Hola a todos.
El propsito de este blog es la de servir de bitcora al proyecto Space Penguin, un videojuego del gnero Run And Gun,
desarrollado para sistemas Windows y GNU/Linux, utilizando el lenguaje de programacin C++ y la librera SDL.

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 Diseo de Videojuegos, de la titulacin Ingeniera Tcnica en Informtica
de Gestin/Sistema, de la Universidad de Cdiz (http://www.uca.es/).
En sucesivos post, iremos dando informacin 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 Penguin

Blog de WordPress.com. El tema Sapphire.

Space Penguin
Bitcora del desarrollo del videojuego "Space Penguin"

Release de Space Penguin


Publicado 2 julio, 2010 por rabbitbodom
Categoras: Entregas
Tags: desarrollo, motor, niveles, penguin, release, space, space penguin, videojuego
Hola a todos!
Despus de mucho sudar y poco dormir, estamos muy orgullosos de presentaros la primera release estable de Space Penguin. Esta
versin, 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 extremadamente
difcil, s suponga un reto a los jugadores habituales del gnero Run&Gun.
Sin ms prembulos, aqu dejamos el enlace a Space Penguin v0.1 (http://forja.rediris.es/frs/download.php/1898/spacepenguinv0.1.tar.gz)
Esperamos que lo probis y lo disfrutis, al menos tanto, como hemos disfrutado nosotros desarrollndolo.
El curso acaba aqu, pero puede que el proyecto avance. Si alguien quiere crear sus propios niveles, no tiene ms que seguir el
manual que publicaremos prximamente.
No queda ms que agradecer a todos los compaeros su ayuda, su apoyo, y las charlas de pasillo, cmo no, que ms de una buena
idea ha salido de ah. Tambin queremos agradecer a nuestro profesor, Manuel Palomo Duarte, la oportunidad que nos ha brindado
con esta asignatura de poder realizar el sueo de todo nio hacer su propio videojuego. Que ste sea el primer paso de un largo
camino, camaradas!
Nada ms, cambio y corto. Sed felices
Comments: 7 comentarios

Informe rpido de situacin


Publicado 28 junio, 2010 por rabbitbodom
Categoras: General
Tags: desarrollo, juego, penguin, space, space penguin
Buenas a todos los lectores!
Tal y como reza el ttulo, tenemos la presentacin final de Space Penguin a tiro de piedra (concretamente, cuatro das), y antes de
preparar la documentacin final para el gran da, vamos a echar un vistazo rpido sobre las tareas por hacer:
Prioridad alta:
1. Enemigos (an 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 puntos
3. Modificar el sistema grfico para que acepte cualquier resolucin, no slo las actuales 800600 (panoramico=0) o 1060600
(panoramico=1). Este paso es necesario para realizar posibles ports a PSP (gracias David por ese magnfico tutorial!) o a Wii.
4. Cambiar las canciones de los dos niveles actuales por otras con licencia libre (las que estn ahora mismo, insisto, son
provisionales). Hecho.
5. Terminar el segundo nivel, y aadir alguno ms (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

del 2 de julio de 2010).


Comments: Be the first to comment

Alpha 2 del pingino espacial


Publicado 21 junio, 2010 por rabbitbodom
Categoras: General
Tags: alpha, forja, juego, menu, motor, musica, penguin, run and gun, sonido, space, space penguin
Buenas a todos. Hoy os presentamos la segunda alpha oficial del Space Penguin.
Estamos muy orgullosos de presentar una versin mucho ms avanzada del proyecto, bastante cercana a la conclusin, ya que nos
gustara dejar el videojuego ms o menos cerrado al finalizar el curso.
La lista de cambios importantes de esta segunda compilacin es la siguiente:
Men principal definitivo, a falta de un fondo ms currado (de momento, seguimos con el provisional)
Juego configurable a travs de un archivo XML, que permite modificar algunos parmetros de ejecucin como la pantalla
completa, 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 gestin de memoria. Confirmamos que ahora no peligra la estabilidad de tu sistema si
dejas en ejecucin Space Penguin.
Por otra parte, confirmamos tambin los requisitos de memoria y procesador: 32 MB de memoria principal, y un procesador de ms
de 500 Mhz.
Enlace (slo versin Gnu/Linux): Space Penguin Alpha 2 (http://forja.rediris.es/frs/download.php/1876/spacepenguin-v0.02alinux.tar.gz)
Detallamos a continuacin la, cada vez menor, lista de cosas por hacer:
Implementaciones crticas:
1. Enemigos
2. Colisiones (despus de los enemigos)
3. Documentacin de la entrega final (especialmente, manual de usuario, y manual de creacin de niveles)
Cambios menores:
1.
2.
3.
4.
5.
6.
7.
8.

Fondo de pantalla definitivo para el men principal


Segundo nivel (imagen de fondo y plataformas)
Men de pausa
Reparar un bug conocido en el rectngulo de colisiones del jugador, relacionado con la orientacin del personaje
Reparar un bug relacionado con las balas: se deben eliminar de la memoria cuando salen de la pantalla
Mostrar el cdigo de acceso en la pantalla de inicio de nivel
Cambiar algn sonido por otro ms adecuado (opcional)
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 segunda
versin de prueba suponga el empujn que le iba haciendo falta al proyecto.
Un saludo a todos, y permaneced atentos.
Comments: Be the first to comment

Cdigos de nivel y cadencia de disparos


Publicado 10 junio, 2010 por rabbitbodom
Categoras: General
Tags: c++, desarrollo, fase, juego, penguin, sdl, space, space penguin
Informar que, a da de hoy, tenemos el men principal totalmente operativo, con el inicio de partida desde el primer nivel, y con el
acceso a niveles posteriores mediante cdigos de nivel de cuatro dgitos.
Por otro lado, se han regularizado las pulsaciones de teclas en el men, de tal manera que slo se reconoce una pulsacin cada vez,

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


Respecto a los disparos, hemos introducido una limitacin parecida: Cuando se tenga equipada la pistola, slo se disparar una bala
cada 1,5 segundos, pero cuando consigamos municin, con el fusil dispararemos 3 veces por segundo.
Tareas por hacer:
Fondo de pantalla decente para el men de la aplicacin
Abstraer el men y el gestor de niveles en una nica clase Aplicacin, que gestione las transiciones entre niveles (vamos, que
cuando acabes la primera fase, empiece la segunda.)
Crear el segundo nivel (y si da tiempo, ms)
Aadir enemigos
Aadir disparos
Aadir efectos de sonido y msica (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 abstraccin


Publicado 7 junio, 2010 por rabbitbodom
Categoras: General
Tags: c++, desarrollo, motor, niveles, penguin, sdl, space, space penguin, videojuego
No nos hemos olvidado del Space Penguin, seguimos currando, slo que hemos tenido que salvar algunos obstculos llamados
Programacin Orientada a Objetos, y Anlisis de Algoritmos II (obstculos quiere decir parciales y prcticas), entre otros.
Hoy queremos informar de que hemos encapsulado en la clase Juego la gestin de la ejecucin de un nivel del juego. Es decir, la
clase Juego se compone de un objeto Escenario (que cargar l solito el nivel que se le indique, fondo y plataformas), un objeto
Jugador (que recibir como parmetro, para dar una continuidad entre fases al estado del personaje), y ciertas variables ms relativas
a un nivel jugable en general.
Tambin tenemos la primera versin 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 seleccin, y ejecutar la opcin escogida por el jugador. De momento,
slo carga la primera fase.
Tareas por hacer a partir de hoy:
Fondo de pantalla en condiciones para el men principal
Opcin de cargar un nivel mediante su cdigo de acceso (esto dentro de men)
Gestor de aplicacin: Clase que reciba la opcin devuelta por el men principal, y se encargue de ejecutarla; encargndose
tambin 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 ms (que con uno solo vamos cojos)
Aadir msica y efectos de sonido (esto despus de acabar el men y el gestor de aplicacin).
Aadir las balas cuando se dispara (se sigue suponiendo que Space Penguin es un juego de disparos, jeje).
Aadir enemigos.
Condiciones de fin de nivel: refinarlas (esto ira en Gestor de Aplicacin)
Colocar timers para controlar el nmero de pulsaciones en el caso de los disparos (la idea de metralleta no es disparar 15 veces la
pistola por segundo), y en el caso del men principal (ahora mismo es complicado atinar en la opcin de enmedio).
Y hasta ah podemos leer. Ms novedades pronto. Gracias por leer.
Comments: Be the first to comment

Tercera entrega 12 de mayo


Publicado 11 mayo, 2010 por rabbitbodom
Categoras: Entregas
Tags: clases, desarrollo, descripcion, forja, ingenieria, motor, planificacion, plataformas, sdl, space penguin, statsvn, videojuego
Agarraos los cinturones, porque aqu viene un post bastante largo. Se trata de la tercera entrega para la asignatura Diseo de
Videojuegos, y como tenemos que recuperar cierto terreno, all vamos (por partes, como dira Jack el Destripador):

Actualizacin de la planificacin:
En la carpeta doc de la Forja del proyecto, est nuestro archivo de Planner, debidamente actualizado con las tareas que hemos ido
desempeando a lo largo de estos meses. Cabe decir que las fechas del archivo son errneas (he rehecho el archivo de nuevo) y los
plazos no estn ajustados, pero la lista de tareas es ms o menos completa. Aqu un extracto:

(https://spacepenguinproject.files.wordpress.com/2010/05/pantallazo.png)
Cambios en el proyecto y justificacin:
Las plataformas pasaron a considerarse nicamente como una lnea sobre la que pueden caminar los actores. Esto se decidi por la
falta de tiempo, ya que el hecho de ahorrarnos los clculos de colisiones con el escenario en el movimiento horizontal fue una
decisin crucial para ahorrar tiempo.
Decidimos utilizar el sistema de animaciones (clases Animacion, Control_Animacion e Imagen) que se muestra en la wiki de la
Osluca sobre libSDL, ya que, tras comprender su funcionamiento, y adaptarlo a nuestras necesidades, ahorramos nuevamente una
cantidad de tiempo que, de otra manera, no podramos haber dedicado al proyecto.
Otra decisin fue la de ponernos las pilas con la documentacin, tanto a nivel de cdigo (Doxygen) como la que se muestra en este
artculo. Lo estbamos dejando muy descuidado, y se not en la presentacin anterior.
Un cambio positivo: en lugar de considerar un vector de plataformas, hemos creado una clase Escenario para que gestione todo lo
relativo al escenario de un nivel, desde la carga de las plataformas desde el archivo XML con los datos, hasta el propio fondo del nivel
en una superficie SDL. Esto no ha hecho ms que facilitarnos increblemente la labor de trabajar las colisiones con el escenario.
Otro ms, el uso de TinyXML (de agradecer, y mucho, a los consejos de los compaeros del grupo de la ADVUCA). Gracias a esta
pequea librera podemos trabajar cmodamente con nuestros datos, y ms an, nos va a facilitar mucho el trabajo a la hora de hacer
el manual de ampliacin del videojuego (creador de niveles, por ejemplo).
Hay ms cambios, pero son relativos, principalmente, a la implementacin. Los conceptos se siguen manteniendo.
Modelado del mundo del juego
Jugador
El jugador estar representado lgicamente por un rectngulo que cubre toda la imagen, que tendr unas coordenadas x e y con su
ancho y alto. Adems 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 municin que
contendr en cada momento de la arma especial y el arma que lleva. Por ltimo tendr un indicador de orientacin para saber cuando
est mirando a la izquierda o la derecha.
Los mtodos que tiene el jugador son de movimiento ya sea correr o saltar y tambin para modificacin de la municin, el arma
equipada y las colisiones con el escenario.
Enemigo
El enemigo al igual que el jugador estar representado por un rectngulo que cubre toda la imagen y unas coordenadas x e y de su
posicin, 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 automticamente tendr solo un
estado interno llamado activo que indicara si el personaje esta dentro del rango de la pantalla.
Tambin tendr una variable que indicara el tipo de enemigo que es, donde segn el tipo tendr una animacin u otra.
Los mtodos se ejecutaran en funcin del tipo de enemigo que es, donde tendr un mtodo que detectara la colisin con los
escenarios, un mtodo que disparara el enemigo, para el enemigo disparador, y una funcin que detecta el final de la plataforma, en
el caso del enemigo no disparador.
Plataforma
Tendr solamente 3 variables internas donde estarn determinado la coordenada x e y del inicio de la plataforma y el ancho de la

misma para saber su longitud. Esta plataforma leer desde un XML los datos respectivos y creara un vector de plataformas donde
estarn todas aquellas que pertenezcan al nivel que se encuentra actualmente el personaje. Este vector se leer a travs del jugador
o los enemigos para interactuar con ellos.
Bala
Una bala ser una clase que contendr unas coordenadas x e y de su posicin en cada momento para ir actualizando segn esta
avanza por la pantalla adems de un ancho y un alto para la colisin con otros objetos.
Las balas tambin tendrn una variable que distinguir las balas enemigas de las amigas para que no se puedan matar los enemigos
entre 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 saldrn aleatoriamente de los
enemigos con una probabilidad. Como variables internas tendr unas coordenadas x e y donde aparece el objeto, ser la misma
coordenada donde se encontraba el enemigo que lo tena, y un ancho y alto para realizar la colisin con l.
Adems tendr una variable que indicara el tipo de tem que es el objeto, ya que segn el tipo tendr un efecto u otro. Estos efectos
pueden ser de curacin, municin o vidas extras, que estarn enlazados a una variable porcentaje de cada tipo porque no tiene la
misma probabilidad de salir la municin, 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.
Ingeniera del proyecto
Mostramos primero el Modelo Conceptual de Datos del sistema, partiendo del Modelado del mundo del videojuego:

(https://spacepenguinproject.files.wordpress.com/2010/05/diagrama-clases.png)
En este diagrama, adems, se han incluido las clases que se han ido aadiendo a la implementacin.
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
Precondicin: no tiene
Postcondiciones: Modificara la posicin del sprite del personaje segn la tecla
presionada.
Personal involucrado e intereses: El jugador quiere mover el personaje a una posicin deseada.
Escenario principal
1. El jugador desea mover el personaje.
2. El jugador pulsa la tecla correspondiente a mover el personaje a algn sitio.
3. El sistema actualiza el estado interno del jugador (por ejemplo corriendo) a true.
4. El sistema realiza los clculos segn el estado interno del personaje.
5. El sistema dibuja por pantalla el cambio de localizacin del personaje respecto
al escenario.
Escenario Alternativo
5a. La posicin 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 posicin del personaje provoca una colisin con una plataforma.
1. El personaje no sigue descendiendo y se queda en la coordenada y de la
plataforma.

Algoritmo general
Esta es la descripcin de nuestro main-loop:
Como todo juego que se precie debe tener un bucle principal que se encarga, desde la ejecucin del juego hasta que finaliza de
mantener activo el juego y atender a las peticiones del usuario en todo momento, asi como ejecutar todas las acciones que se van
realizando, 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 pasos
podemos resumirlo de la siguiente manera:
1. Inicio del contador de frames: Inicializacin del contador de frames que transcurren en un segundo, para determinar los fps que
correr el juego.
2. Actualizar el teclado: Por cada vuelta del bucle actualiza el estado del teclado, donde actualiza los valores de este con las teclas
que se han pulsado en el instante en que se ejecuta la funcin, esto es para ejecutar las acciones pertinentes al pulsar la tecla leda.
3. Modificar estado interno del personaje: Segn la tecla pulsada, cogida con el actualizar del teclado, si es una de las teclas de
movimiento, ya sea derecha, izquierda, salto se ejecutara la funcin que realiza tal accin en el personaje. Tambin habr otras
opciones como son el men de pausa o salir del juego.
4. Clculos sobre el jugador: En este apartado se realizaran todas las operaciones que el jugador vaya requiriendo segn avanza en
el juego. Uno de los puntos a tratar son las colisiones del jugador respecto a las plataformas que se encuentran en ese momento en la
pantalla. Tambin se realizaran los clculos para el disparo del personaje donde cada disparo se guardara en su susodicho vector
para su posterior anlisis.
5. Calculo sobre los enemigos: Ya que los enemigos tendrn su inteligencia artificial respecto a los movimientos del personaje, este
apartado se ocupara de calcular las colisiones del mismo, asi como su movimiento y la generar los disparos de aquellos enemigos
que disparen. Los enemigos que simplemente andar por una superficie, simplemente se calculara la colisin sobre la plataforma que
se encuentra.
6. Calculo del movimiento de las balas: Ya que cada bala ser independiente una de ellas, se calculara el movimiento (velocidad y
direccin) de cada una dependiendo de quin lo lance, ya sea enemigo o el personaje, y la posicin de la pantalla que se encuentra
en ese momento. Estas balas desaparecern una vez traspase el lmite de la pantalla o colisione con algn obstculo.
7. Calculo de las colisiones: En este apartado se trataran todas las colisiones entre sprites diferentes. Ya sea el personaje con un
objeto, un enemigo o una bala o el enemigo con el personaje, se ejecutara la accin correspondiente a esta colisin.
8. Dibujar sprites: Una vez detectado todas las pulsaciones en el momento, calculado respecto a las pulsaciones y ejecutado lo
correspondiente a las colisiones, se dibuja por pantalla todos los cambios una vez por frame para que se vea un movimiento fluido de
los objetos que se muestran por pantalla. Aqu tambin se tendr en cuenta el movimiento del personaje para mover el fondo (scroll)
segn 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 los
frames correspondiente al sistema.
Por supuesto, el documento completo, en la carpeta doc
Autmatas para la I.A. de los enemigos (comportamiento)
Enemigos disparadores: Estos enemigos, una vez activados, se movern en lnea recta desde su posicin inicial hasta que salgan
de la pantalla. Durante el transcurso de su recorrido, cada cierto tiempo disparara una bala en lnea 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 solo
afectara al protagonista.
Enemigos de patrulla: tienen un comportamiento algo diferente al anterior. Estos simplemente estarn asignados a una plataforma
de la cual no podrn bajarse, esto quiere decir que este enemigo dar vueltas y vueltas sobre la misma plataforma una vez que entra
en el rango de la pantalla hasta que sale de la misma. Esto hace que el enemigo detecte siempre el final de ambos extremos de la
plataforma para dar la vuelta completamente y dirigirse al lado contrario.
StatSVN
Las estadsticas de nuestro servidor SVN pueden observarse en este grfico:

(https://spacepenguinproject.files.wordpress.com/2010/05/loc_small.png)
Decir que este grfico es de la revisin 25, y vamos ya por la 35, diez ms. Desde entonces hemos avanzado a pasos de gigante.
Cabe comentar que nuestras revisiones son menores en nmero, pero cad vez que hacemos un commit reflejamos una versin
estable del videojuego, con multitud de cambios nuevos. Es por ello que se explica la diferencia del nmero de aportaciones a la
Forja respecto a los proyectos de otros compaeros.
Por otra parte, las estadsticas por desarrollador son engaosas. RabbitBodom (Ezequiel) llevaba aportadas ms de dos mil lneas de
cdigo en la revisin 25 (hoy en da, probablemente muchas ms), y Helkadil sin embargo (Agustn), casi 100. Esto no significa que
Helkadil no est trabajando, ni mucho menos. Se est currando toda la parte de diseo grfico del proyecto (ah es n), de ah sus
pocas aportaciones en cuanto a cdigo nos referimos. Por otra parte, y para compensar, cuando Rabbit termine de pulir la clase
Jugador, se intercambiarn los papeles, de ta manera que se proporcione correctamente el nmero de aportaciones. (Helkadil va a
dedicarse a implementar las dos clases de enemigos, y quiz la clase Item).
Doxygen
En esta seccin slo comentar que todo lo que llevamos hasta el momento est completamente documentado con Doxygen, hasta la
ltima funcin pblica. Se aportan un par de ejemplos de uso en las clases Jugador y Escenario.
Bibliografa
Nombrar por supuesto, la wiki sobre libSDL de la Osluca, y la documentacin de TinyXML en su pgina oficial. Con estos dos
manuales hemos podido dar pasos de gigante, de tal manera que ya tenemos una beta estable, sobre la cual hablamos ahora.
Presentacin beta alpha
ltima seccin de este repaso a Space Penguin. En la revisin 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 nivel
completo. Slo 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_penguinbeta1.tar.gz)
Y bueno, hasta aqu podemos contar. Prximamente, el men principal, la estructura por niveles, y las colisiones con el escenario
refinadas.
Comments: 2 comentarios

Sistema de niveles
Publicado 7 mayo, 2010 por rabbitbodom
Categoras: General
Tags: fase, forja, Grficos, modelos, nivel, niveles, penguin, plataformas, sdl, space, space penguin, videojuego, youtube
Presentamos el ltimo avance de Space Penguin: El sistema de niveles.
Consta, bsicamente, de una imagen de fondo en formato bmp, y un archivo XML en el cual se almacenan las caractersticas de las
plataformas que componen el nivel.
Las imgenes de fondo, necesariamente, deben medir 600 pxeles de alto, ya que la resolucin de nuestro juego es de 800600, y se
almacenan en la carpeta imagenes con el nombre Fase_n.bmp, donde la n es el nmero de nivel del cual es el fondo.
Por otro lado, el archivo datos/plataformas.xml almacena la informacin de las plataformas de todas las fases del juego, con un
formato muy sencillo.
El nico inconveniente de este sistema es que, para crear un nivel, hay que incluir manualmente las coordenadas de comienzo de
cada plataforma, y su anchura. Si tuviramos tiempo de aqu a fin de curso, intentaremos crear un editor de niveles muy simple, pero

que sea efectivo.


Por otra parte, la lista de tareas por hacer a corto plazo, a partir de la revisin 29 de Space Penguin es la siguiente:
Refinar las colisiones del personaje con las plataformas, que an estn 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 funcin (para que as sea ms cmodo, y depender de nicamente una
funcin), 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 documentacin y postearla aqu (fecha lmite: el mircoles 12).
Implementar la condicin de victoria (llegar al final de la fase).
De momento, y con gran satisfaccin, tenemos el placer de mostrar el segundo vdeo de Space Penguin:

Space Penguin: Personaje y Escena

Puede apreciarse en el vdeo la interaccin del personaje con las plataformas (que como hemos dicho, estn an muy verdes), y
algunos movimientos del jugador. Dentro de poco lo tendremos con scroll, y ms pulido, no os lo perdis.
Actualizacin a 8 de mayo, 23:00 horas: Ya est implementado el scroll del escenario, y est ms fino el sistema de carga de niveles.
Comments: Be the first to comment
Space Penguin

Blog de WordPress.com. El tema Sapphire.

Space Penguin
Bitcora del desarrollo del videojuego "Space Penguin"

Avances
Publicado 2 mayo, 2010 por rabbitbodom
Categoras: General
Tags: desarrollo, descripcion, forja, juego, penguin, plataformas, sdl, space, space penguin, videojuego
Informamos de las novedades a dos de mayo:
La clase Jugador est prcticamente definida, exceptuando la parte de las colisiones, que ser lo ltimo que hagamos.
El funcionamiento de la clase es muy sencillo. A cada iteracin del bucle principal, se leen las teclas que hay pulsadas, y se modifica
el llamado estado interno del personaje. Este estado interno se basa en variables booleanas (_corriendo, _saltando, _agachado,
_cayendo), que determinan qu accin se debe ejecutar en la iteracin actual del bucle.
Posteriormente, se realizan los clculos necesarios en base al estado interno del personaje, despus de ser modificado mediante las
pulsaciones de teclas (movimiento horizontal, movimiento vertical, etc.). Por ltimo, y dependiendo una vez ms del estado interno del
personaje, se dibuja el siguiente paso de una animacin u otra (la que corresponda).
De momento, nuestro personaje jugador puede correr hacia izquierda y derecha, saltar tanto en vertical, como en movimiento, y
agacharse.
Documentacin: Para paliar la falta de documentacin en la anterior presentacin de clase, hemos decidido ir pasando todo lo que
tenemos 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.
Descripcin del juego, objetivos, etc. (resumen de la primera entrega, mejor condensado).
Relacin de avances que llevamos hasta la fecha de la presentacin.
Lista de dificultades surgidas.
Dems 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 leern desde un archivo XML, de tal manera que ser muy sencilla la creacin de
nuevos niveles. Haremos un minitutorial.
Y de momento poco ms, en la forja tenis la revisin 19, en la cual tenemos al personaje jugador con todos sus movimientos
posibles (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 rabbitbodom
Categoras: General
Tags: c++, desarrollo, forja, juego, penguin, sdl, space, space penguin, videojuego, youtube
A da de hoy (o ms bien debera decir, a noche de hoy, por aquello de que es la una y media de la maana), tenemos varias
novedades que presentar sobre el proyecto, a saber:
Ya tenemos una versin ejecutable, con un muy verde motor para el juego. Consiste nicamente en el personaje protagonista
movindose a izquierda o derecha, segn 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 lo
que nuestro personaje har durante el desarrollo del juego. De momento slo es un almacn de atributos, pero ms adelante se le
aadirn mtodos, para que no quede la aplicacin con poca consistencia.
Sobre el papel, tenemos ya el diseo de las clases que participarn en el juego, que son Jugador, Bala, Item, Enemigo

(especializada en EnemPatrulla y EnemDisparo) y Plataforma. Para cada una de ellas, excepto Jugador, tendremos un vector que
almacenar los objetos correspondientes. Las plataformas y los enemigos se cargarn desde archivos XML (permitiendo as la
creacin de niveles nuevos por parte del usuario).
Ms cosas. Tenemos, tambin sobre papel, el diseo de todas las acciones que se realizarn en el juego, y un caso de uso (muy
simpln, la verdad), que describe el bucle principal de la aplicacin (aunque hay que actualizarlo, para que se adece a la
implementacin, tal y como est quedando).
Mencionar que hemos utilizado el sistema de animacin que se propone en el wikiSDL (clases animacin, imagen y
control_animacin) , as como la clase Teclado para controlar las pulsaciones.
Lo prximo por implementar, ser perfilar las dems acciones del Jugador aparte del movimiento (salto vertical, salto en movimiento y
disparo), y almacenar dentro de la propia clase Jugador las animaciones correspondientes en un vector, ya que ahora mismo,
disponemos de slo una animacin, y la tenemos fuera de la clase.
Ms tarde, y cuando el personaje est plenamente operativo, aadiremos la interfaz grfica (una zona en la parte baja de la pantalla,
donde indicaremos las vidas que quedan, municin, etc.) y las plataformas. Y despus de que el personaje interacte correctamente
con el escenario (las plataformas), introduciremos los enemigos, las balas, y por ltimo, los objetos.
Incluimos un vdeo de nuestros progresos (el cdigo se puede consultar en la Forja del proyecto)

Space Penguin - Movimiento del person

Comments: Be the first to comment

Forja, sonidos y ms
Publicado 5 abril, 2010 por rabbitbodom
Categoras: General
Tags: desarrollo, forja, penguin, planificacion, sdl, sonido, space, space penguin
Breve actualizacin para comentar que, tras el parn de vacaciones de Semana Santa, ya tenemos listos los efectos de sonido para
Space Penguin. Se encuentran en la forja del proyecto (a partir de la revisin 5), donde ya se ha creado la estructura de directorios
para ir dando forma al juego. Los sonidos se han obtenido, principalmente, de la pgina de recursos HellSoft.
Comentar tambin que el anlisis sobre papel de Space Penguin est listo ya, as pues, vamos cumpliendo la planificacin propuesta
desde el principio. El siguiente paso ser entrar en materia de cdigo.
Esta semana empezaremos con la SDL en clase, as que el desarrollo dar un buen estirn tras este mircoles. Permanezcan
atentos.
Comments: Be the first to comment

Modelos Grficos II
Publicado 25 marzo, 2010 por rabbitbodom
Categoras: Grficos
Tags: desarrollo, Grficos, modelos, penguin, sdl, space, space penguin, videojuego
De la mano de Helkadil, presentamos los modelos grficos definitivos para el protagonista y los dos enemigos genricos, ya
preparados en modo de rejilla (las animaciones se conseguirn en la implementacin mediante las herramientas que proporciona la
librera SDL).

Sin ms dilacin, presentamos la rejilla de sprites del protagonista del juego:

(https://spacepenguinproject.files.wordpress.com/2010/03/pj.png)
ste es el modelo del enemigo que dispara a nuestro hroe, el Gunner (nombre provisional):

(https://spacepenguinproject.files.wordpress.com/2010/03/enemigo-disparo.png)
Y por ltimo, el enemigo que patrullar los permetros sin hacer uso de armas a distancia, a leche limpia, el Tank (de nuevo, nombre
provisional). 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://spacepenguinproject.files.wordpress.com/2010/03/enemigo-sin-disparo.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 Tank
patrulla de tal manera que, cuando llega al final de una plataforma, da media vuelta y contina su patrulla).
Hay que mencionar que la historia est en proceso, pero no ser revelada hasta que nuestro encargado de trasfondo le d las ltimas
pinceladas. Por supuesto, la anunciaremos como es debido.
Nada ms por ahora, prximamente, el resto de los modelos (balas, explosiones y objetos), y tambin los sonidos (la banda sonora
llegar despus).
Comments: Be the first to comment

Modelos Grficos
Publicado 23 marzo, 2010 por rabbitbodom
Categoras: Grficos
Tags: desarrollo, Grficos, modelos, penguin, space, space penguin, videojuego
En este apartado, vamos a presentar los que, por ahora, son los modelos grficos principales de Space Penguin.
Nuestro compaero Helkadil encontr hace poco un material (realizado por Rayg, contacto en innerrayg@gmail.com), en el cual su
autor especifica que se puede hacer uso de l sin autorizacin, a condicin de que se mencione correctamente la autora.
Sin ms prembulos, presentamos a nuestro protagonista:

(https://spacepenguinproject.files.wordpress.com/2010/03/pj1-parado.jpg)
S, sabemos que se parece extraamente al protagonista de la serie de juegos Halo. Pero todo parecido, es mera coincidencia.

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

(https://spacepenguinproject.files.wordpress.com/2010/03/en2-parado.jpg)
Y ste otro, intentar acabar con nuestro hroe nicamente a base golpes fsicos y mordiscos.

(https://spacepenguinproject.files.wordpress.com/2010/03/en2-parado.jpg)
(https://spacepenguinproject.files.wordpress.com/2010/03/en1-parado.jpg)
De momento, eso es todo. A medida que vayamos avanzando con el tema de las rejillas para las animaciones, iremos actualizando. Y
en caso de que decidiramos cambiar algn modelo, dem.
Por lo dems, agradecer a las personas que, como Rayg (el autor de estos modelos), permiten a los dems aprovechar su trabajo de
una manera u otra (en nuestro caso, dndole vida en forma de videojuego).
Comments: Be the first to comment

Planificacin
Publicado 22 marzo, 2010 por rabbitbodom
Categoras: General
Tags: desarrollo, Gantt, juego, penguin, planificacion, planner, space, space penguin, videojuego
Tal y como reza el ttulo de este artculo, vamos a hablar de la planificacin del proyecto.
En clase se nos habl del software Planner (http://live.gnome.org/Planner), para realizar planificaciones de proyectos, diagramas de
Gantt, 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 planificacin bsica, que iremos perfeccionando a medida que el proyecto avance. A da de hoy,
contemplamos acabar el anlisis y diseo de Space Penguin (ya refinado y listo para implementar) despus de Semana Santa, y
despus, comenzar la implementacin del juego, que durara hasta mediados de Junio en principio.
Comentar que vamos con retraso respecto a la eleccin de los modelos grficos y sonidos, esperamos tener algo definitivo antes del
mircoles, de tal manera que la presentacin pueda ser completa.
Y respecto a este asunto, poco ms. Seguiremos informando. Prxima parada, el mircoles en la presentacin de Space Penguin.
Comments: Be the first to comment

Influencias & Referencias


Publicado 20 marzo, 2010 por rabbitbodom
Categoras: General
Tags: ejemplo, juego, penguin, plataformas, run and gun, space, space penguin, youtube
Dejo aqu algunos vdeos sobre videojuegos parecidos a lo que ser Space Penguin, para que el lector que no est familiarizado con
la jerga del sector, pueda tener una idea acertada sobre el proyecto.
Metal Slug:

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.