DESARROLLO


Versiones 0.31 y 0.32: (06-07-2012)
Añadido temporizador a todo el juego. Esto significa que el juego debe funcionar a la misma velocidad en cualquier ordenador.
Creo al astronauta: sus imágenes, que aparezca en una determinada pantalla si él así lo desea, que pueda ser matado con el disparo... simplemente falta que aparezcan los puntos correspondientes y que se mueva a un lado y otro vacilando al jugador.
Hago que al coger vida sumes 0 puntos (que antes daba 5555 porque a mí me daba la gana xD) y ahora aparece el rótulo azul de 1-UP y sube un poquito permaneciendo un poco en pantalla. Es decir, he hecho los marcadores de puntuación, que sirven también para las frutas y la rotura de las bolas, lo único que queda es añadir los gráficos de los puntos, pero he agregado uno de prueba y va bien).
Pongo la animación de bola pequeña destruida. La desactivo, al igual que los marcadores, al pasarme una fase o al morir.
Adiciono el resto de efectos de rotura de bolas, que aparecerán, claro está, cuando un disparo impacte en una bola y la divida en dos.
Añado los gráficos de las bolas hexagonales (de 6 colores diferentes: verde, amarillo, cian, rojo, gris y morado) y de los efectos de sus roturas y destrucción.
Por esto último, veo que me quedan alrededor de 40 colores libres para el resto de cosas: fondos, pájaros, soles, cocodrilos, escaleras, etc., y es cuando caigo en que estoy haciendo en 8 bits (256 colores) un juego de 16 bits (65536 colores). Como de momento sólo sé trabajar con paletas de 8 bits, decido parar otra vez este juego.


Versiones 0.28, 0.29 y 0.30: (23-06-2012)
Creo el logo principal del juego. Nada más iniciar este último, aparece la pantalla de título donde irá el menú principal, y está configurado ahora mismo para que si pulsas ESC abandone el juego, mientras que presionando cualquier otra tecla, empieza a jugar.
Si durante el juego se pulsa ESC, vuelve a la pantalla del título, y si deseas entrar al juego, antes de hacerlo, se reinician todos los datos y se vuelve a empezar por la primera fase, con las vidas correspondientes, 0 puntos, etc.
De momento, limito la aparición de las vidas extras y las estrellas a una por pantalla. Si mueres, puede volver a salir otra vez al volver a cargar la fase.
Cambio variables int por short para que usen menos RAM.
Creo también variables bool y sustituyo algunos shorts por el mismo motivo que el de arriba.
Configuro que se detenga un poco al cargar una fase, viendo las bolas y los datos de la pantalla, y luego ya arranca.
Hago que el disparo no siga subiendo cuando haya muerto el jugador.
Le agrego al juego un fundido gradual entre las diversas transiciones del juego: del menú al juego, del juego al menú, entre vida y vida cuando te matan, entre una fase y otra cuando te la pasas, etc. para que el cambio de unos gráficos a otros no sea tan grande.
Programo que no salga ningún objeto cuando se ha cogido la estrella, ya que se termina la fase y los objetos nunca podrán ser cogidos.
Me ahorro 18 bitmaps que tenía declarados de más cuando empecé a programarlo hace más de dos años. Ahora me sobran porque tengo más idea de las cosas y puedo aprovechar los mismos bitmaps para girarlos o rotarlos.
Arreglo la manera de guardar una captura del juego, que vi que me guardaba la primera captura, y si le apetecía, la segunda, pero más de ahí ya no. Ahora ya puedes guardar hasta 1000.
Hago que el personaje principal pueda cambiar su ropa de color (será una de las opciones a configurar en el menú de elecciones). De momento le tengo puestos 15 colores: azul (defecto jugador 1), naranja (defecto jugador 2), verde, amarillo, rojo, gris, marrón, morado, rosa, verde oscuro, negro, azul oscuro, azul turquesa, verde oliva y vino tinto.


Versiones 0.26 y 0.27: (07-05-2011)
Quito varias líneas de código.
Quito los cristales, que de momento no me sale bien el rebote de la bola en ellos.
Pongo 4 fases, pasando de una a otra cuando no haya bolas en pantalla y terminando el juego al finalizar la cuarta.
Presento título en la pantalla y el número de fase actual en la zona donde se ve el tiempo restante, el número de vidas, etc.
Hago que la puntuación no se pierda de una fase a otra.
El personaje empieza el juego con el arma simple en lugar de con el doble disparo como ocurría hasta ahora.
Quito una vida al ser golpeado sin reiniciar la fase todavía (esto es para cuando permita jugar a dos a la vez). Si solo hay un personaje, directamente sí reinicia la fase.
Al cambiar de fase, el efecto de la estrella y de la protección desaparecen, que según vi, al coger una estrella te pasabas las 4 fases seguidas, y la protección seguía hasta que te dieran, independientemente de cuantas fases avanzaras.
Hago que parpadeen las bolas cuando quede un segundo de reloj de paro (el amarillo).
Cambio la fruta entre fase y fase (uvas, limón, kiwi, etc.) y la manera en que ésta aparece en una fase.
Pongo que el disparo simple, el doble y el gancho empiecen desde el suelo, que antes hacía que aparecieran desde donde apunta la pistola (que sería lo lógico, pero en el juego original aparecen desde el suelo).
Al acabar todas las vidas, se sale, que hasta ahora seguía jugando con -3 vidas y tal.
Al morir vuelve a cargar la fase donde estaba.
Al fenecer, el muñeco sale despedido contra la pared derecha y luego cae (tengo que mejorar el movimiento, pero ya es un avance).
Versión 0.25:
Hago que la pistola pueda disparar hasta 5 tandas de 4 disparos (antes solo era una tanda y hasta que no se destruyeran las 4 balas no podías volver a disparar).
Añado dos teclas de control interno (T, para agregar tiempo a la fase y D, para activar la dinamita automáticamente).
Añado cristales horizontales. Las bolas rebotan bien por arriba y por abajo, pero por los lados no. Me atasco en esto porque pensaba que serían igual las comprobaciones en horizontal que en vertical, pero se ve que no es así xD


Versiones 0.22, 0.23 y 0.24:
Añadido tiempo para pasarse una fase. Eso significa que si no has matado a todas las bolas antes de que se acabe el tiempo, perderás una vida. De momento lo que ocurre es que se acaba el juego y se sale.
Aumentados los tiempos de los relojes normal y de arena. Ahora muestran el tiempo en segundos verdaderos (o eso creo xD).
Vuelvo a cambiar el tiempo de división de bolas de la dinamita. Ahora tarda mucho más en partirlas y evito mejor el problema de que hubiese más de dos bolas en el mismo lugar al mismo tiempo (aunque puede ocurrir todavia eh? Si el azar se encapricha...)
Agrego el objeto "Estrella". Es un objeto que rara vez salía en el modo normal del Super Pang, incluso se presentaba sin partir una bola. En el Panic Mode del juego original aparecía metida en una bola que al botar se transformaba en reloj. Su misión es aniquilar todas las bolas existentes en la pantalla. Y me lo hace bien! xD
Añado también el objeto "Protección": Al cogerla, aparece a tu alrededor una protección que evita que las bolas te maten. Sin embargo si la bola golpea a la protección ésta desaparecerá y tu jugador comenzará a parpadear (esto significa que durante unos instantes las bolas no te podrán dañar) pero pasado un tiempo quedarás indefenso nuevamente.
Al pasarse de fase, ya no dibujo ni las frutas ni los regalos que habían todavía en la fase. Tampoco dibujo la protección si la llevabas puesta ni los disparos si es que había alguno sin impactar en alguna bola.
Versiones 0.16, 0.17, 0.18, 0.19, 0.20 y 0.21:
Añado la dinamita. Con este objeto consigues que todas las bolas se dividan mientras puedan.
Agrego una fruta que cae al matar un número determinado de bolas. (De momento sólo la puede coger el jugador; las armas todavía no).
Añadida la puntuación del jugador (al romper una bola obtienes puntos, también al coger un objeto, una fruta...)
Agregadas las vidas del jugador (se empieza con 3) y añadido el objeto "vida extra".
Arreglado un problema con el array de objetos. Mientras testeaba el juego probando varias opciones algunas veces obtenía el mensaje "shutting down allegro #11". Probablemente fuese porque querían salir más objetos de los 12 que yo pretendía, y accedía a posiciones del array que no tiene. Ahora eso ya no ocurre porque he aumentado el array a 32 (que es el número máximo de objetos -si el azar se vuelve harto caprichoso- que puede haber en la pantalla con más bolas -vamos, la que planeo que sea la ultima xD-).
Quitado "colision!!" y agregado sprite de "golpeado por la bola". El jugador se queda totalmente parado. Para seguir jugando presiona Z y podrás volver a caminar, disparar, etc. Todavía no muere, pero ya es algo mejor que antes xD
También los bordes azules se vuelven rojos al ser el personaje golpeado por las bolas.
Ahora al coger la dinamita las bolas de dividen algo más lento. Antes aparentemente se veía una bola que podían ser 4 ó 5 una encima de otra por salir casi en el mismo lugar al dividir tan rápido la bola. Ahora quedan un poquito más separadas para saber con mejor exactitud cuántas hay.
Arreglo un bug que había que si ibas andando y chocabas con la bola, la animación de golpeado seguía moviéndose. Ahora ya evito que se mueva.
Obligo al juego a no dar más de una vida extra por pantalla.
Empiezo a dar vidas por puntos conseguidos. Posteriormente iré cambiando la puntuación y cuantas más fases haya más vidas extras habrá, pero también el margen entre una y otra será mayor.
Añado dos velocidades más al juego por si las moscas, que he comprobado en otros ordenadores que puede que con solo 3 siga llendo algo rápido.
Al "pasar" de pantalla, ya no muestro como antes los iconos de vidas ni del arma actual del jugador ni los disparos que quedasen en pantalla sin impactar.


Versiones 0.13, 0.14 y 0.15:
Añado los relojes normal y de arena, el primero para parar las bolas, el segundo para ralentizarlas.
Evito que las bolas te golpeen si están paradas, pues menuda gracia que estén quietas y no puedas matarlas y te maten ellas a ti, no? xD
Aumento el tiempo de ralentización de las bolas que tenía en un principio.
Arreglado un problemilla que tenía que si cojía 2 relojes de arena o 2 relojes normales no se sumaba el tiempo del segundo y cuando acabase el primero se acababa el tiempo. Ahora se suma pero no todo.
Arreglado que si algunas bolas estaban en el suelo y se cogía el reloj de arena, las bolas se podían quedar golpeando contra el suelo todo el rato.
El crono del reloj de arena se para si mientras está contando se coge el reloj normal. Al acabar éste, continúa aquél.
Si mientras las bolas están paradas coges relojes de arena, el tiempo de ralentización se irá sumando y empezará a descontar una vez acabado el efecto del reloj normal.
El tiempo del reloj de arena es fijo, mientras que el del reloj normal es aleatorio. En la captura podemos ver abajo a la izquierda cuánto tiempo queda de parálisis o ralentización de las bolas.


Versiones 0.10, 0.11 y 0.12:
Añadido el pincho (disparo normal).
Ahora al pulsar el disparo mientras está el gancho enganchado al techo, el tiempo de desaparición avanza un poco más rápido, al igual que ocurre en el juego original.
Consigo, después de muchos quebraderos de cabeza, el disparo doble.
Logro que caigan los primeros regalos al romper una bola: los 4 iconos de las armas. Estos caen hasta el suelo, puede haber hasta 12 a la vez en la pantalla al mismo tiempo y una vez en el piso parpadearán pasado un tiempo para posteriormente desaparecer. Despues le añadí las colisiones a los iconos y al pasar el player por encima de ellos, cambia de arma automaticamente.
Arreglado un fallo que había en el que si el mismo icono de arma estaba presente dos o más veces en pantalla, todos estos desaparecían al mismo tiempo. Ahora cada uno desaparece cuando le toca, como debe ser.
Versiones 0.07, 0.08 y 0.09:
Arreglado el bote de las bolas. Alguna rebotaba mal en el lado derecho de la pantalla.
Quito 150 lineas de código redundante.
Los disparos de la pistola colisionan con las bolas.
Arreglo la división de las bolas al colisionar un disparo contra ellas. Antes unas bolas sobreescribían a otras o bien se dividían como gremlins mojaos xD Esto es que había veces que incluso me creaba más de 10 bolas extras... Ahora todas se dividen en 2 sin problemas, excepto las últimas que desaparecen, claro está.
Al destruir todas las bolas el muñeco cambia a la animación de "fase completada", y al no haber más fases, el juego te invita a pulsar una tecla para salir.
Consigo dibujar bien por fin todos los fragmentos del gancho.
Arreglo la animación del muñeco, que si estaba pulsada alguna tecla de dirección y mataba a todas las bolas, seguía en la animación de corriendo.
Añado las colisiones con el gancho. Por fin una bola se destruye al tocar en cualquier parte de él.
Y por último, hago que cuando el gancho se ha parado al chocar contra el alto de la pantalla, pasado un tiempo se pone amarillo y después rojo, para finalmente desaparecer.
Versiones 0.03, 0.04, 0.05 y 0.06:
Añadida pistola, con sus 4 disparos independientes. Los disparos se chocan contra la pared y el techo. Contra las bolas todavia no.
Añado iconos de pistola y gancho en la parte inferior de la pantalla para saber que arma tiene el jugador.
Metida mucha programación del gancho pero no me lo acaba de dibujar del todo bien, pero por lo menos el gancho se para al tocar el techo y desaparece pasado un tiempo. (Falta que se ponga amarillo, luego rojo y ya que por fin desaparezca).
Cada bola bota hasta una determinada altura, dependiendo del tipo de bola que sea.
Agrego 6 bolas más de distintos colores, con lo que ahora tengo bolas de hasta 7 colores distintos.
Consigo que al chocar una bola con el personaje ponga en pantalla el mensaje "COLISIÓN!!", que posteriormente quitará una vida al jugador y se volverá a cargar la fase.
Permito cambio de velocidad del juego, pues en mi ordenador iba bien pero en otros iba demasiado rápido, así que ahora hay 3 velocidades distintas (al principio puse 7 pero con 3 he comprobado que donde iba rapidísimo ahora con la velocidad 2 va como tiene que ir).


Versiones 0.01 y 0.02:
Evito que el personaje se salga de la pantalla.
Cargo todos los tamaños distintos de la bola roja y la muestro por pantalla. (Son 5: mínima, pequeña, mediana, grande, bolón).
Consigo que rebote contra el suelo y contra las paredes.
Al llegar a cierta altura la bola se va frenando (gravedad) para luego volver a bajar (hay que pulirlo un poco todavía).
Decido que la resolución del juego sea de 639x480 píxeles (si ponía 640 no me cuadraban los ladrillos xD Quizá sea algo grande).
Añado los bloques del suelo, techo, paredes y esquinas.
Acelero un poco el juego que tenía la sensación de que iba muy lento.
Cargo 6 bolas a la vez y compruebo que cada una va a su bola (nunca mejor dicho).


Versión 0.00:
Cargo las animaciones de parado, disparando y andando del personaje principal.
El personaje se mueve hacia los lados al pulsar las flechas izquierda y derecha.
Comienzo con mi paquete básico: Si pulsas ESC se acaba el juego, con la P pausas el juego y con el 7 guardas una captura de pantalla.